本地存储在 IE 中不起作用
Local Storage does not works in IE
我正在使用 Angular 的本地存储,它似乎在 IE 中不起作用。我每次都需要清除浏览器历史记录才能使其正常工作。我正在 IE 10 和 IE 11 中进行测试。是否有任何其他方法可以实现相同的效果??
只要支持 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 回调函数,但在 Internet Explorer 中除外,其中事件对象存储在 window.event。
function handle_storage(e) {
if (!e) { e = window.event; }
}
错误演示:
https://googledrive.com/host/0B8BLd2qPPV7XckcyREs2SUxTODQ/localStorage-test.html
此演示创建了一个名为 "testKey" 的 LocalStorage 测试密钥。然后它启动一个计时器并每秒递增 "testKey" 一次。
您可以打开演示的多个实例。这些其他实例监听 "testKey" 更新的存储事件。
尝试打开几个演示实例,看看效果如何。
现在试试这个。重新开始,打开 IE 到一个空白页面。打开演示并查看 testKey 增量。接下来,打开第二个实例(一个侦听器页面),并设置其复选框以在退出时删除 testKey。关闭此侦听器选项卡。这将删除 testKey,但只是暂时的。原始实例将在一秒钟内重新创建它并继续递增它。等待至少一秒钟以确保重新创建 testKey。 (只需在原始实例中确认 testKey 正在递增)。现在再次打开一个新的侦听器实例,可能*发现它找不到 "testKey",因此它创建另一个 testKey 并启动一个 1sec 间隔计时器来增加它。最后,再打开几个demo实例,看看有多牛逼
*可能吧。通常是第一次。否则重复听众实验几次直到它发生。
用 IE10、IE11 和 Win10 重现
转录自 MS-Connect
我正在使用 Angular 的本地存储,它似乎在 IE 中不起作用。我每次都需要清除浏览器历史记录才能使其正常工作。我正在 IE 10 和 IE 11 中进行测试。是否有任何其他方法可以实现相同的效果??
只要支持 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 回调函数,但在 Internet Explorer 中除外,其中事件对象存储在 window.event。
function handle_storage(e) {
if (!e) { e = window.event; }
}
错误演示:
https://googledrive.com/host/0B8BLd2qPPV7XckcyREs2SUxTODQ/localStorage-test.html
此演示创建了一个名为 "testKey" 的 LocalStorage 测试密钥。然后它启动一个计时器并每秒递增 "testKey" 一次。 您可以打开演示的多个实例。这些其他实例监听 "testKey" 更新的存储事件。 尝试打开几个演示实例,看看效果如何。
现在试试这个。重新开始,打开 IE 到一个空白页面。打开演示并查看 testKey 增量。接下来,打开第二个实例(一个侦听器页面),并设置其复选框以在退出时删除 testKey。关闭此侦听器选项卡。这将删除 testKey,但只是暂时的。原始实例将在一秒钟内重新创建它并继续递增它。等待至少一秒钟以确保重新创建 testKey。 (只需在原始实例中确认 testKey 正在递增)。现在再次打开一个新的侦听器实例,可能*发现它找不到 "testKey",因此它创建另一个 testKey 并启动一个 1sec 间隔计时器来增加它。最后,再打开几个demo实例,看看有多牛逼
*可能吧。通常是第一次。否则重复听众实验几次直到它发生。
用 IE10、IE11 和 Win10 重现
转录自 MS-Connect