如何在不同HTML页面的two.js中调用first.js的变量?
跨页面共享first.js变量到two.js的方法
方法1:用localStorage做持久化存储
- 逻辑:localStorage是浏览器提供的持久化存储容器,同域名下的页面都能访问,数据会一直保留直到主动删除。
- 操作步骤:
- 在first.js里把要共享的变量存进去:
// first.js(对应第一个页面) const mySharedVar = "来自first.js的内容"; // 复杂类型(对象、数组)要转成JSON字符串,简单字符串可直接存 localStorage.setItem("savedData", JSON.stringify(mySharedVar)); - 在two.js里读取存储的内容:
// two.js(对应第二个页面) const getSharedVar = JSON.parse(localStorage.getItem("savedData")); console.log(getSharedVar); // 输出:来自first.js的内容
- 在first.js里把要共享的变量存进去:
方法2:用sessionStorage做会话级临时存储
- 逻辑:和localStorage用法几乎一样,但数据只在当前浏览器会话有效,关闭标签页或浏览器后自动清除,适合临时传值。
- 操作步骤:
- first.js存入数据:
// first.js const tempData = { id: 123, status: "active" }; sessionStorage.setItem("tempSaved", JSON.stringify(tempData)); - two.js读取数据:
// two.js const getTempData = JSON.parse(sessionStorage.getItem("tempSaved")); console.log(getTempData.id); // 输出:123
- first.js存入数据:
方法3:跳转时通过URL参数传递
- 逻辑:如果是从第一个页面跳转到第二个页面,可以把变量拼到URL参数里,two.js从URL里解析出来。
- 操作步骤:
- first.js里触发跳转并拼接参数:
// first.js const jumpVar = "跳转时带过来的变量"; // 对参数编码避免特殊字符乱码 const encodedVar = encodeURIComponent(jumpVar); window.location.href = `second.html?share=${encodedVar}`; - two.js里解析URL参数:
// two.js const urlParams = new URLSearchParams(window.location.search); const getJumpVar = decodeURIComponent(urlParams.get("share")); console.log(getJumpVar); // 输出:跳转时带过来的变量
- first.js里触发跳转并拼接参数:
- 注意:这种方式只适合少量简单数据,敏感数据别用,因为参数会暴露在URL里。
方法4:用Cookie传递小数据
- 逻辑:Cookie是浏览器存储的小数据片段,可设置有效期,同域名页面都能访问,适合存极小量数据。
- 操作步骤:
- first.js设置Cookie:
// first.js const cookieData = "Cookie里的内容"; // 设置路径为根目录,让所有页面都能访问 document.cookie = `sharedCookie=${encodeURIComponent(cookieData)}; path=/`; - two.js读取Cookie:
// two.js function getCookie(cookieName) { const cookieStr = `; ${document.cookie}`; const cookieParts = cookieStr.split(`; ${cookieName}=`); if (cookieParts.length === 2) return decodeURIComponent(cookieParts.pop().split(';').shift()); } const getCookieData = getCookie("sharedCookie"); console.log(getCookieData); // 输出:Cookie里的内容
- first.js设置Cookie:
- 注意:Cookie单条大小限制约4KB,不适合存大内容。
内容的提问来源于stack exchange,提问作者Rayzel
相关产品推荐
相关产品推荐

