localStorage对象在IE中未定义。

34

我在我的JS应用程序中使用localStorage,想知道为什么IE9声称localStorage == undefined。据我所知,IE8支持它,有没有办法使它在新版本中工作?


10
你是在使用本地HTML文件并使用file://协议进行测试吗? - Alex Jasmin
在平台预览的 http 网站上,在 Dev 工具控制台中键入 localStorage 对我有效。 - Alex Jasmin
@Akexandre Jasmin,哦,你说得对,我忘了它不起作用。谢谢。 - Mikulas Dite
好的。我写了一个解释问题的答案。你可能想要接受它。 - Alex Jasmin
3个回答

61

您是在本地HTML文件上进行测试吗?即file:/// URL?

localStorage仅适用于HTTP网站。 在IE9 Dev Preview中没有改变。


@AJ。谢谢。我怀疑这可能是问题所在,但在测试IE时仍然想知道出了什么问题。当我从一个网络应用程序中运行我的测试页面时,它可以在IE、FF和Chrome上正常工作。 - Stonetip

20

IE 11可以使用

您只需要将file://127.0.0.1添加到安全选项卡下的受信任区域中(注意:确保未选中https复选框),并将此行添加到脚本顶部,根据您的代码情况可能不需要添加,除非遇到无法连接到互联网的情况。

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));

if (typeof(Storage) != "undefined") {
    // Store
    localStorage.setItem("lastname", "Smith");
    // Retrieve
    alert(localStorage.getItem("lastname"));
} else {
    alert("Sorry, your browser does not support Web Storage...");
}

太好了,这个可行!在我的机器上甚至不需要更改安全选项卡等任何内容。一个注意点:如果你在严格模式下执行代码,这段代码会抛出“变量在严格模式下未定义”的错误。为了解决这个问题,请以非压缩模式重写代码(if (!localStorage) { .... })。 - webketje

6

尝试用以下方式打开文件

file://127.0.0.1/c$/pathtofile/file.html


我认为那不起作用。至少在IE11中无法使其工作。啊,好吧,使用mongoose web服务器,它足够小,然后localStorage可以正常工作。 - raddevus
3
如果您将file://127.0.0.1添加到受信任站点列表中,它就能够正常工作。 - grammar31
在IE11上,这似乎不起作用。我无法使用file://127.0.0.1/...访问本地文件。我已将file://127.0.0.1添加到IE受信任站点列表中。 - Daryl McCullough
在IE11上对我有效。 - Captain Sensible

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接