我想要2个javascript方法来访问某些数据,而不将这些数据作为参数传递给任何方法。基本上我想要一种方法来设置数据,而另一种方法是使用浏览器中已有的对象来使用该数据,我希望该解决方案能够与Safari,Firefox,Chrome和IE8 +以及iOS和Android浏览器一起使用。我认为会话存储在iOS上不起作用。这是对的吗?会话存储的缺点是什么。我试图将数据附加到事件对象,但它在firefox和IE中不起作用。
答案 0 :(得分:1)
虽然sessionStorage
适用于iOS,但您可以执行以下操作以获得旧版支持。您可以使用window.name
。它贯穿整个会话(即直到浏览器选项卡关闭):
var myData = {
'foo': 'bar',
'foz': 'baz'
};
window.name = JSON.stringify(myData);
你可以读回来:
var myData = JSON.parse(window.name);
这当然需要来自浏览器的JSON支持,这使得非常旧的浏览器不在范围内。
答案 1 :(得分:0)
你可以使用“全局变量”(我把它放在引号中,因为我不确定它在Javascript中实际调用了什么)。但基本上你可以在你的一个javascript文件中创建一个对象并写入/读取它。
像
这样的东西var data = { first: "first", second: "second" }
并根据需要在该对象中生成尽可能多的变量。函数会像
一样访问它function(param) {
var firstData = data.first;
}
或者我猜使用cookie更接近您所描述的自己的解决方案,但如果您只需要在Javascript方法之间传递数据,这似乎有些过分。
答案 2 :(得分:0)
我选择了数据属性而不是上面提到的方法,它们对我来说很好。 IE9和IE8提出了一些我需要解决的问题。在IE9& IE8数据属性有时工作,有时不工作。在我使用控制台查询元素的数据属性后,它们开始工作。