本地存储在IE中不起作用

时间:2015-04-24 05:42:25

标签: internet-explorer local-storage

我正在使用Angular的本地存储,它似乎在IE中不起作用。我需要每次都清除浏览器历史记录以使其工作。我正在IE 10和IE 11中测试。还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

支持localStorage对象的所有地方都支持存储事件,其中包括Internet Explorer 8. IE 8不支持W3C标准的addEventListener(尽管最终会在IE 9中添加)。因此,要挂钩存储事件,您需要检查浏览器支持哪种事件机制。 (如果您之前已经使用其他事件完成了此操作,则可以跳到本节末尾。捕获存储事件与您遇到的每个其他事件的工作方式相同。如果您更喜欢使用jQuery或其他一些JavaScript库要注册您的事件处理程序,您也可以使用存储事件来执行此操作。)

if (window.addEventListener) {
  window.addEventListener("storage", handle_storage, false);
} else {
  window.attachEvent("onstorage", handle_storage);
};

将使用StorageEvent对象调用handle_storage回调函数,但在事件对象存储在window.event中的Internet Explorer中除外。

function handle_storage(e) {
  if (!e) { e = window.event; }
}

来自:http://diveintohtml5.info/storage.html

答案 1 :(得分:0)

错误演示:
https://googledrive.com/host/0B8BLd2qPPV7XckcyREs2SUxTODQ/localStorage-test.html

此演示创建名为" testKey"的LocalStorage测试密钥。然后它启动一个计时器并递增" testKey"每秒一次。 您可以打开演示的多个实例。这些其他实例侦听存储事件以更新" testKey"。 尝试打开演示的几个实例,看看它的效果很好。

现在尝试一下。开始新鲜,打开IE到空白页面。打开演示并查看testKey增量。接下来,打开第二个实例(侦听器页面),并设置其复选框以在退出时删除testKey。关闭此侦听器选项卡。这将删除testKey,但只是暂时。原始实例将在一秒钟内重新创建它并继续递增它。等待至少一秒钟以确保重新创建testKey。 (只是在原始实例中确认testKey正在递增)。现在再次打开一个新的侦听器实例,可能*发现它无法找到" testKey",因此它会创建另一个testKey并启动1秒间隔计时器来递增它。最后,打开几个演示实例,看看它是如何搞砸的。

*可能。通常是第一次。否则重复听众实验几次,直到它发生。

使用IE10,IE11和Win10重新编译


MS-Connect转载

相关问题