跨页面保留javascript变量?

IT技术 javascript
2021-01-10 04:28:19

有没有办法可以在各个页面上保留 javascript 变量?假设在 Page AI 中设置window.someVar = 5. 然后我移动到页面 B,通过单击 A 中的一个超链接,并执行类似的操作alert(window.someVar)——我应该得到一个显示 5 的消息框。是否有一种技术可以保持someVar这种状态......?

6个回答

您可以使用窗口的名称window.name来存储信息。这称为JavaScript 会话但它只有在使用相同的窗口/选项卡时才有效。

@AndersonGreen 是的,那是可能的。URI 的片段可通过location.hash.
2021-03-15 04:28:19
@Gumbo是的,但我不知道是否有可能从页面的URL保存和加载会话数据,就像这样:myPage.html#sessionDataGoesHere
2021-03-18 04:28:19
它对我不起作用。浏览器问题sessvars.newObj未定义
2021-03-23 04:28:19
@AndersonGreen 存储绑定到实际窗口/选项卡。如果窗口/选项卡关闭,数据将丢失。如果您正在寻找更持久的解决方案,请查看CMS 的回答Web 存储这样的技术有不同的范围。
2021-03-28 04:28:19
是否可以使用这种技术创建到会话的永久链接,以便会话数据可以存储在页面的 URL 中?
2021-04-02 04:28:19

为了完整起见,还可以查看 HTML5 的本地存储功能和 sessionStorage。这些在所有现代浏览器的最新版本中都得到支持,并且比 cookie 更易于使用且不那么繁琐。

http://www.w3.org/TR/2009/WD-webstorage-20091222/

https://www.w3.org/TR/webstorage/(第二版)

以下是使用 sessionStorage 和 localStorage 设置和获取值的一些示例代码:

 // HTML5 session Storage
 sessionStorage.setItem("variableName","test");
 sessionStorage.getItem("variableName");


//HTML5 local storage 
localStorage.setItem("variableName","Text");
// Receiving the data:
localStorage.getItem("variableName");
2021-03-15 04:28:19
MDN声称 IE8 可以用于 sessionStorage,caniuse声称需要 IE11。
2021-04-06 04:28:19

我建议你看看这个库:

我真的很喜欢它,它支持多种存储后端(从 cookie 到 HTML5 存储、Gears、Flash 等等...),它的使用非常透明,您不必知道或关心使用了哪个后端library 将根据浏览器功能选择正确的存储后端。

它可以存储具有循环/循环引用的对象吗?喜欢弹出window对象?或者,像 HTML5 File API File 对象这样的原生对象?
2021-03-22 04:28:19
它也可以存储大对象吗?例如窗口对象
2021-03-25 04:28:19
@MohsinSheikhKhalid pablotron.org/?cid=1557此链接已过时,无法迁移...请更新链接
2021-03-30 04:28:19
该链接已过时.. 因为它正在迁移.. 您可以更新它吗?@内容管理系统
2021-04-02 04:28:19

是的,使用Cookies但是要小心,不要放太多(我认为有 4kb 的限制)。但是有几个变量是可以的。

如果您需要存储更多,请查看@Annie 在另一个答案中的重要提示。对于小时间数据存储,我会说 Cookies 是最简单的事情。

请注意,cookie 存储在客户端。

cookie 的另一个缺点是它们与域内创建的每个 HTTP 请求一起发送,即使是静态内容,如图像......
2021-04-10 04:28:19

您可以使用 HTML5 存储、闪存存储或 Gears 保留值。道场存储库提供了一个很好的包装这一点。

2021-03-19 04:28:19