【问题标题】:localStorage object is undefined in IElocalStorage 对象在 IE 中未定义
【发布时间】:2011-03-24 10:49:31
【问题描述】:

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

【问题讨论】:

  • 您是否在本地 HTML 文件上使用文件 file:// 协议进行测试?
  • 在平台预览版的开发工具控制台中输入 localStorage 对我在 http 网站上有效
  • @Akexandre Jasmin 哦,你是对的,我忘了它不起作用。谢谢。
  • 好的。我写了一个答案来解释这个问题。你可能想接受它。

标签: javascript local-storage internet-explorer-9


【解决方案1】:

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

localStorage 仅在 HTTP 网站上可用。这在 IE9 开发预览版中没有改变。

【讨论】:

  • @AJ。谢谢。我怀疑这是问题所在,但仍然想知道在 IE 中测试时出了什么问题。我开始在一个网络应用程序中运行我的测试页面,它在 IE、FF 和 Chrome 上运行良好。
【解决方案2】:

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...");
}

【讨论】:

  • 太好了,这行得通!在我的机器上,即使没有更改“安全”选项卡等中的任何内容。请注意:如果您在严格模式下执行代码,此代码会引发 Variable undefined in strict mode 错误。解决,在非压缩模式下重写(if (!localStorage) { .... })
【解决方案3】:

尝试像这样打开文件

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

【讨论】:

  • 我认为这行不通。至少不能让它在 IE11 中工作。啊,好吧,使用猫鼬网络服务器,它足够小,然后localSTorage可以工作。
  • @daylight 如果您还将file://127.0.0.1 添加到受信任的站点列表中,它会起作用。
  • 在 IE11 上,这似乎不起作用。我无法使用file://127.0.0.1/... 访问本地文件。我已将 file://127.0.0.1 添加到 IE 受信任的站点列表中。
  • 在 IE11 上为我工作
猜你喜欢
  • 1970-01-01
  • 2019-01-05
  • 2018-02-14
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多