Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 URLSearchParams 实现动态生成内容的分享链接_创想鸟

使用 URLSearchParams 实现动态生成内容的分享链接

使用 urlsearchparams 实现动态生成内容的分享链接

本文介绍了如何通过 URLSearchParams 解决动态生成内容的网页分享问题。通过将 ID 作为 URL 参数传递,使得分享的链接能够准确地在其他设备上重现相同的内容。文章详细讲解了如何在 HTML 中构建带参数的链接,以及如何在 JavaScript 中解析 URL 参数并用于动态内容生成。

问题背景

在动态生成内容的 Web 应用中,例如根据 JSON 数据动态生成房产列表,通常会遇到分享链接的问题。简单来说,如果详情页的内容依赖于本地存储(localStorage)或其他客户端数据,那么直接分享 details.html 这样的链接,在其他设备上无法正确显示,因为目标设备没有相应的本地数据。

解决方案:URLSearchParams

解决此问题的关键在于将必要的信息(例如,房产 ID)嵌入到 URL 中,使其成为一个可分享的、包含所有必要信息的链接。URLSearchParams 是一个强大的 JavaScript API,用于处理 URL 查询字符串。

1. 构建带参数的链接

首先,在生成列表的 HTML 代码中,修改详情链接的生成方式,将房产 ID 作为 URL 参数 id 的值:

这里,${num} 代表房产的唯一 ID。生成的链接类似于 property.html?id=123。

2. 解析 URL 参数

在详情页 property.html 中,使用 URLSearchParams 来提取 URL 中的 id 参数:

// 获取当前 URLlet url = window.location;// 创建 URLSearchParams 对象let params = new URLSearchParams(url.search);// 获取 id 参数的值let id = params.get('id');console.log(`房产 ID 是: ${id}`);// 使用 id 来获取并显示房产详情fetch('./database/houses.json') .then(res => res.json()) .then(json => {    for(let value of json){        if (id == value.num){            addDetailedElement(grid, value);            addheadElement(head,value);        }    }});

这段代码首先获取当前页面的 URL,然后创建一个 URLSearchParams 对象,并使用 get(‘id’) 方法来提取 id 参数的值。最后,使用这个 id 值从 JSON 数据中检索并显示相应的房产详情。

3. 修改 detailsClick 函数 (可选)

如果之前的代码使用了 detailsClick 函数将 ID 存储到 localStorage 中,可以移除这个函数,因为现在 ID 直接从 URL 中获取。 如果仍需兼容旧的 URL,可以在获取 ID 时优先从 URL 获取,如果 URL 中没有 ID,再从 localStorage 获取。

let url = window.location;let params = new URLSearchParams(url.search);let id = params.get('id');if (!id) {  id = localStorage.getItem("idIndex");}

完整示例

以下是一个完整的示例,展示了如何使用 URLSearchParams 实现动态生成内容的分享链接:

index.html (列表页)

  房产列表  
const grid = document.getElementById('grid'); function addElement(appendIn, value) { let div = document.createElement('div'); div.className = "box"; let { num, fokep, utcanev, kerulet, ar, kepekszama, ingtipus, ingallapot, negyzetmeter } = value; div.innerHTML = `

${kepekszama}

${ingtipus}${ingallapot}

@@##@@

${utcanev}

${kerulet} Kerület

${ar} M Forint

${negyzetmeter} m2

<a href="property.html?id=${num}" class="btn num" target="_blank" rel="noopener noreferrer" style="text-align:center;" data-filter="${num}">Részletek</a> `; appendIn.appendChild(div); } fetch('./database/houses.json') .then(res => res.json()) .then(json => { for (let value of json) { addElement(grid, value) } });

property.html (详情页)

  房产详情    
const grid = document.getElementById('grid'); const head = document.getElementById('head'); function addDetailedElement(appendIn, value) { // 实现房产详情的显示逻辑 appendIn.innerHTML = `

详细信息: ${JSON.stringify(value)}

`; } function addheadElement(appendIn, value) { appendIn.innerHTML = `

房产: ${value.utcanev}

`; } let url = window.location; let params = new URLSearchParams(url.search); let id = params.get('id'); fetch('./database/houses.json') .then(res => res.json()) .then(json => { for(let value of json){ if (id == value.num){ addDetailedElement(grid, value); addheadElement(head,value); } } });

database/houses.json (示例数据)

[  {    "num": "1",    "fokep": "image1.jpg",    "utcanev": "Example Street 1",    "kerulet": "District 1",    "ar": "100",    "kepekszama": "5",    "ingtipus": "Apartment",    "ingallapot": "Good",    "negyzetmeter": "50"  },  {    "num": "2",    "fokep": "image2.jpg",    "utcanev": "Example Street 2",    "kerulet": "District 2",    "ar": "200",    "kepekszama": "10",    "ingtipus": "House",    "ingallapot": "Excellent",    "negyzetmeter": "100"  }]

注意事项

确保 URL 参数的名称(例如 id)在整个应用中保持一致。对 URL 参数进行适当的编码,以防止特殊字符引起的问题。考虑在服务器端进行 URL 重写,以使链接更具可读性和 SEO 友好性。

总结

通过使用 URLSearchParams,我们可以轻松地将动态生成内容的网页链接分享给他人,确保在不同的设备上都能正确显示相同的内容。这种方法简单、有效,并且易于实现,是解决动态内容分享问题的理想方案。

使用 URLSearchParams 实现动态生成内容的分享链接

以上就是使用 URLSearchParams 实现动态生成内容的分享链接的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1527269.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
深入理解React Router v6:解决Route组件不渲染内容的问题
上一篇 2025年12月20日 19:16:45
实现页面多处独立库存计数器:使用Web Components的解决方案
下一篇 2025年12月20日 19:16:53

相关推荐

  • win10平板模式下屏幕键盘不自动弹出怎么办_恢复屏幕键盘自动弹出的技巧

    1、检查平板电脑模式设置,确保登录和使用时均启用平板模式并重启;2、在设备→输入中开启“不处于平板模式且未连接键盘时显示触摸键盘”;3、通过注册表编辑器创建InitialKeyboardIndicators值为2(十六进制)以强制启用键盘指示器;4、手动显示触摸键盘按钮并测试各应用兼容性,排查特定软…

    2026年9月21日
    000
  • 钉钉视频通话模糊怎么办 钉钉视频清晰度调整与网络优化方法

    视频模糊主因是网络、设备或设置问题。先优化Wi-Fi并关后台应用,再清洁镜头、调光线和物理对焦,最后开高清模式、更新钉钉版本或换高清设备,多数可改善。 钉钉视频通话模糊,通常不是单一原因导致的,而是网络、设备或软件设置共同影响的结果。想要快速改善画面质量,可以从以下几个方面着手排查和优化。 检查并优…

    2026年9月21日
    000
  • deepseek下载速度优化_从deepseek下载速度优化官网获取

    deepseek下载速度优化入口在官网https://www.deepseek.com,进入后可通过设置调整响应模式、使用智能路由和数据压缩技术提升速度。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ deepseek下载速度优化入口地址在…

    2026年9月21日
    000
  • Linux如何设置目录的执行权限

    目录的执行权限是访问其内容的“钥匙”,使用chmod命令可通过符号或八进制模式设置,常见权限为755(所有者rwx,组和其他用户rx),递归设置时推荐结合find命令分别处理文件和目录,避免误加执行权限。 在Linux中,设置目录的执行权限( x )并非意味着你可以“运行”这个目录,而是赋予了你进入…

    2026年9月21日
    000
  • 纯白颜值、双模切换:“纯白小金刚”技嘉M27UP ICE显示器登场

    纯白颜值、双模切换:“纯白小金刚”技嘉M27UP ICE显示器登场纯白颜值、双模切换:“纯白小金刚”技嘉M27UP ICE显示器登场纯白颜值、双模切换:“纯白小金刚”技嘉M27UP ICE显示器登场纯白颜值、双模切换:“纯白小金刚”技嘉M27UP ICE显示器登场

    在电竞DIY领域深耕多年的技嘉,始终致力于满足玩家对高颜值与个性化外设的追求。为助力用户打造一体化的纯白主题电竞空间,品牌全新推出了专为此场景设计的M27UP ICE显示器。这款产品定位于两千元左右价位,凭借出众的纯白外观、卓越性能与超高性价比,被玩家们亲切称为“纯白小金刚”。如果你正想入手一台兼具…

    2026年9月21日 • 用户投稿
    000
  • Java多线程API调用中Future.get()返回null的解决方案

    本文旨在解决%ignore_a_1%api调用中`future.get()`方法返回`null`的常见问题。当使用`callable`和`executorservice`并发执行api请求并尝试获取结果时,如果流读取逻辑不当,可能导致获取到的数据为空。文章将详细解释问题根源,并提供使用`string…

    2026年9月21日
    000
  • VSCode的自动保存功能如何开启?

    在VSCode中开启自动保存需进入“文件”→“首选项”→“设置”,搜索auto save并选择Files: Auto Save模式,可选afterDelay、onFocusChange或onWindowChange,其中afterDelay可设置延迟时间如1000毫秒,启用后状态栏显示保存状态以确认…

    2026年9月21日
    000
  • 交管12123处理非本人车辆违章怎么办_交管12123处理非本人车辆违章攻略

    可通过“交管12123”APP处理非本人名下车辆的交通违法,但需先完成备案。备案方式有两种:一是扫码备案,由车主生成二维码后驾驶人扫描并提交信息;二是短信验证备案,输入车牌号、发动机号后六位,系统向车主手机发送验证码,输入后完成备案。备案成功后,进入APP【更多】→【违法处理】,选择已备案车辆,查看…

    2026年9月21日
    000
  • 升级后如何检查兼容性

    检查兼容性是升级后确保系统稳定的关键,需先确认硬件配置与驱动支持,再验证软件运行及业务流程正常,最后通过系统日志排查潜在错误,逐步排除风险。 系统或软件升级后,检查兼容性是确保各项功能正常运行的关键步骤。直接进入实际使用前,花时间验证兼容性可以避免数据丢失、服务中断等问题。 检查硬件和驱动支持 某些…

    2026年9月21日
    000
  • windows怎么解决蓝屏问题_windows蓝屏故障排查与修复方法

    蓝屏问题通常由驱动冲突、硬件故障或系统文件损坏引起,需记录错误代码并进入安全模式排查;通过设备管理器检查驱动、使用SFC和DISM修复系统文件,并运行内存与硬盘检测工具确认硬件健康,必要时清洁硬件接触点。 如果您在使用Windows系统时遇到电脑突然黑屏并显示蓝色错误界面,这通常意味着系统遇到了无法…

    2026年9月21日
    000
  • mysql如何排查排序异常

    排查MySQL排序异常需先确认ORDER BY是否生效,检查子查询、UNION及应用层逻辑是否覆盖排序;通过EXPLAIN分析是否使用索引排序,避免Using filesort;确保字段类型、字符集和排序规则(collation)符合预期,处理NULL值和大小写敏感性;关注sort_buffer_s…

    2026年9月21日
    000
  • 即梦AI运镜控制怎么控制_即梦AI视频镜头移动技巧详解

    掌握即梦AI运镜需四步:一、用“镜头缓慢推进”等预设提示词生成标准运动;二、通过动效画板框选主体并绘制运动路径;三、设置首尾帧引导转场,实现穿越或循环效果;四、结合“希区柯克式变焦”“时间冻结环绕”等高级技巧增强视觉表现。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee…

    2026年9月21日
    000
  • windows怎么查看电脑型号_Windows查看电脑硬件型号方法

    通过系统信息工具查看:按Win+R输入msinfo32,查找“系统型号”获取电脑型号;2. 使用命令提示符执行wmic csproduct get name查询型号;3. 在Windows 11设置中进入“系统-关于”,查看“设备规格”下的“设备型号”;4. 利用PowerShell运行Get-Wm…

    2026年9月21日
    100
  • .com网站安全维护_保障.com网站稳定的措施

    答案:保障.com网站稳定需加强安全防护、定期备份、实时监控和应急准备。部署防火墙、更新系统、使用HTTPS、限制端口;制定自动备份并异地存储,定期恢复测试;利用监控工具检测可用性与异常流量,优化加载速度;建立应急流程,严格权限管理,定期演练。细节执行到位才能确保长期安全稳定运行。 确保.com网站…

    2026年9月21日
    100
  • 哔哩哔哩怎么设置点赞和投币记录为私密_哔哩哔哩点赞投币隐私设置

    1、进入哔哩哔哩App个人主页,点击头像进入个人空间,通过右上角菜单进入设置;2、开启“隐藏我的点赞”功能,防止他人查看点赞记录;3、在隐私权限设置中关闭“展示投币动态”,限制投币行为的公开显示;4、手动检查并删除或隐藏历史动态中的互动记录,确保过往点赞与投币不被他人可见。 如果您希望在使用哔哩哔哩…

    2026年9月21日
    100
  • 三星电视携手京东开启艺术视听盛典以科技美学重塑家居生活新模式

    三星电视携手京东开启艺术视听盛典以科技美学重塑家居生活新模式三星电视携手京东开启艺术视听盛典以科技美学重塑家居生活新模式三星电视携手京东开启艺术视听盛典以科技美学重塑家居生活新模式三星电视携手京东开启艺术视听盛典以科技美学重塑家居生活新模式

    随着消费理念升级与需求日益多样化,电视已不再仅仅是观看节目和影音娱乐的工具,而是逐渐演变为承载家居美学、传递情感温度、连接智慧生活的艺术载体。在这一变革浪潮中,三星率先引领艺术电视领域的创新风向,theframe画壁艺术电视与theserif画境艺术电视成功打破科技与艺术之间的界限,将电视升华为可观…

    2026年9月21日 • 用户投稿
    100
  • 如何在Weka中处理向量属性:ARFF格式的限制与解决方案

    本文探讨了weka中arff格式对直接向量属性表示的限制,并提供了两种主要解决方案。对于时间序列数据,建议利用weka的内置时间序列分析功能。对于非时间序列数据,核心在于通过特征工程(如使用addexpression、multifilter等)将向量拆解并转换为可被weka有效处理的独立特征,以揭示…

    2026年9月21日
    000
  • 哪些Docker扩展能让你在VSCode内轻松管理容器?

    Docker官方扩展是VSCode中管理容器的核心工具,提供容器、镜像、卷、网络的可视化操作,结合Remote-Containers可实现容器内开发,辅以YAML、GitLens等扩展提升效率,需确保本地Docker daemon运行。 在 VSCode 中管理 Docker 容器,最核心的扩展是 …

    2026年9月21日
    000
  • windows10如何解决“找不到恢复环境”的问题_windows10恢复环境修复方法

    首先启用恢复环境,若失败则修复BCD引导配置,最后检查并恢复Winre.wim文件以解决“找不到恢复环境”问题。 如果您尝试在Windows 10系统中使用“重置此电脑”或“高级启动”功能,但收到“找不到恢复环境”的提示,则可能是由于恢复环境被禁用、引导配置错误或核心文件丢失。以下是解决此问题的步骤…

    2026年9月21日
    200
  • PostgreSQL地理位置数据按距离排序的最佳实践:数据库层优化策略

    在处理大量地理位置数据并按距离排序时,将排序逻辑下推至数据库层(如postgresql)是更优的选择。这种方法能有效减少应用层的数据传输和内存消耗,充分利用数据库的计算能力,从而提升整体性能和资源利用率,而非在spring boot应用服务层进行排序。 1. 地理位置排序的需求与挑战 在现代Web应…

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信