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 中,数据属性有时有效,有时无效。在我使用控制台查询元素的数据属性后,它们开始工作。
我想要 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 中,数据属性有时有效,有时无效。在我使用控制台查询元素的数据属性后,它们开始工作。