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

本文介绍了如何通过 URLSearchParams 解决动态生成内容的网页分享问题。通过将 ID 作为 URL 参数传递,使得分享的链接能够准确地在其他设备上重现相同的内容。文章详细讲解了如何在 HTML 中构建带参数的链接,以及如何在 J*aScript 中解析 URL 参数并用于动态内容生成。
问题背景
在动态生成内容的 Web 应用中,例如根据 JSON 数据动态生成房产列表,通常会遇到分享链接的问题。简单来说,如果详情页的内容依赖于本地存储(localStorage)或其他客户端数据,那么直接分享 details.html 这样的链接,在其他设备上无法正确显示,因为目标设备没有相应的本地数据。
解决方案:URLSearchParams
解决此问题的关键在于将必要的信息(例如,房产 ID)嵌入到 URL 中,使其成为一个可分享的、包含所有必要信息的链接。URLSearchParams 是一个强大的 J*aScript API,用于处理 URL 查询字符串。
1. 构建带参数的链接
首先,在生成列表的 HTML 代码中,修改详情链接的生成方式,将房产 ID 作为 URL 参数 id 的值:
<a href="property.html?id=${num}" class="btn num" target="_blank" rel="noopener noreferrer" style="text-align:center;" data-filter="${num}">Részletek</a>这里,${num} 代表房产的唯一 ID。生成的链接类似于 property.html?id=123。
2. 解析 URL 参数
在详情页 property.html 中,使用 URLSearchParams 来提取 URL 中的 id 参数:
// 获取当前 URL
let 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 实现动态生成内容的分享链接:
野羊分类信息系统
===更新说明==解决了无法登陆后台的问题!完善了部分功能修复了一个BUG..修改静态模版说明:本系统的首页 和 内容页 不支持动态显示,需要生成HTML(实为.asp文件)模版文件存放在temp目录下index.html为首页模版show.html为内容页模版......=============2007 - 10 - 20 ===========注:1*使用前请务必修改 inc/conn.as
0
查看详情
index.html (列表页)
房产列表 <script> 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 = ` <div class="thumb"> <p class="total-images"><i class="far fa-image"></i><span>${kepekszama}</span></p> <p class="type"><span>${ingtipus}</span><span>${ingallapot}</span></p> @@##@@ </div> <h3 class="name">${utcanev}</h3> <p class="location"><i class="fas fa-map-marker-alt"></i><span class="category">${kerulet}</span> Kerület</p> <div class="flex" style="justify-content:center; align-items:center"> <p><span class="price">${ar}</span><i"> M Forint</i></p> <p><i class="fas fa-maximize"></i><span>${negyzetmeter} m2</span></p> </div> <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) } }); </script>
property.html (详情页)
<!DOCTYPE html>
<html>
<head>
<title>房产详情</title>
</head>
<body>
<div id="head"></div>
<div id="grid"></div>
<script>
const grid = document.getElementById('grid');
const head = document.getElementById('head');
function addDetailedElement(appendIn, value) {
// 实现房产详情的显示逻辑
appendIn.innerHTML = `<p>详细信息: ${JSON.stringify(value)}</p>`;
}
function addheadElement(appendIn, value) {
appendIn.innerHTML = `<h1>房产: ${value.utcanev}</h1>`;
}
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);
}
}
});
</script>
</body>
</html>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 实现动态生成内容的分享链接的详细内容,更多请关注其它相关文章!
# 可以使用
# 网站建设语言html5
# 重庆百度关键词快速排名
# 东莞网站推广怎么做
# 优化网站平台设计案例
# 大良网站智能推广价格
# rwd自适应网站建设
# 营销推广类网站搭建
# 淘宝小二给推广营销
# 雨花台seo网址优化
# 吉林响应式网站建设建设
# 有哪些
# 放在
# 如何实现
# 如何用
# 首页
# javascript
# 详情页
# 如何使用
# 是一个
# 信息系统
# win
# ai
# app
# 编码
# seo
# go
# json
# js
# html
# java
# excel
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
ArrayList与LinkedList操作复杂度详解:遍历与修改
b站赚钱渠道_b站收益来源
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
抖音极速版最新版本 抖音极速版官方下载地址
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
我的世界官方游戏入口 我的世界官网平台直达链接
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
c++中为什么推荐使用using替代typedef_c++现代化类型别名
2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示
如何有效阻止外部脚本意外修改内联样式的高度属性
Win11怎么开启高性能模式_Windows 11电源计划优化设置
Golang如何使用net/url解析URL_Golang URL解析与处理方法
Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】
必由学官方平台入口 必由学在线课堂登录地址
Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
AO3官方在线访问地址 Archive of Our Own最新镜像合集
微信网页版登录教程_微信网页版登录入口在哪
192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台
文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
Animex动漫社网入口地址 Animex动漫社网正版在线入口
Golang如何测试channel通信行为_Golang channel通信测试与分析方法
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
Angular Material 垂直步进器:实现底部到顶部排序的教程
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
在J*a中如何隐藏复杂性_使用门面模式组织对象交互
Angular中单选按钮的正确使用与常见陷阱解析
c++如何使用Meson构建系统_c++比CMake更快的构建工具
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
windows10怎么关闭系统提示音_windows10彻底静音设置方法
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
163邮箱登录密码 163邮箱忘记密码找回
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
Lar*el递归关系中排除子孙节点的策略
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
如何仅使用CSS更改登录界面背景图像图标的颜色
CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
12306选座怎么选到临时改签座_12306改签选座策略与步骤


2025-10-07
浏览次数:次
返回列表