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

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

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

您可以使用 "global variable"(我把它放在引号中是因为我不确定它在 Javascript 中的实际名称)。但基本上你可以在你的 javascript 文件之一中创建一个对象并从中写入 to/read。

类似

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

并根据需要在该对象中创建尽可能多的变量。一个函数会像

一样访问它
function(param) {
    var firstData = data.first;
}

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

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

var myData = {
  'foo': 'bar',
  'foz': 'baz'
};

window.name = JSON.stringify(myData);

你可以读回来:

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

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

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