html5会话存储的替代方案是什么?(不是本地存储)

What are the alternatives to html5 session storage?(not local storage)

本文关键字:存储 是什么 会话 方案 html5      更新时间:2023-09-26

我希望 2 个 javascript 方法来访问某些数据,而无需将此数据作为参数传递给任何方法。基本上,我希望一种方法来设置数据,而另一种方法是使用浏览器中已有的对象来使用这些数据,我希望该解决方案适用于Safari,Firefox,Chrome和IE8 +以及iOS和Android浏览器。我相信会话存储在iOS上不起作用。正确吗?会话存储的缺点是什么。我尝试将数据附加到事件对象,但它在火狐和 IE 中不起作用。

尽管sessionStorage可用于 iOS,但您可以执行以下操作以获得旧版支持。您可以使用window.name .它在整个会话中存在(即直到浏览器选项卡关闭):

var myData = {
  'foo': 'bar',
  'foz': 'baz'
};
window.name = JSON.stringify(myData);

你可以回读一下:

var myData = JSON.parse(window.name);

这当然需要浏览器的 JSON 支持,这使得非常旧的浏览器不在范围之内。

你可以使用"全局变量"(我把它放在引号里,因为我不确定它在 Javascript 中实际叫什么)。但基本上你可以在一个javascript文件中创建一个对象,然后写入/读取它。

类似的东西

var data = { first: "first", second: "second" }

并根据需要在该对象中创建任意数量的变量。一个函数会像

function(param) {
    var firstData = data.first;
}

或者我想使用 cookie 更接近您描述的您自己的解决方案,但如果您只需要在 Javascript 方法之间传递数据,这似乎有点矫枉过正。

我选择了数据属性而不是上面提到的方法,它们对我来说工作正常。IE9和IE8提出了一些我需要解决的问题。在IE9和IE8中,数据属性有时有效,有时无效。使用控制台查询元素的数据属性后,它们开始工作。