本地存储活动获胜'不要在铬中燃烧
Local Storage event won't fire in Chrome
我正在尝试添加一个事件侦听器,每当本地存储中的数据发生更改时,该侦听器就会启动。我在ComponentDidMount方法中添加了监听器,如下所示:
componentDidMount() {
window.addEventListener('storage', function(event) {
console.log("Event");
}
);
但该事件似乎从未在Chrome中启动(它在Firefox中启动)。我试过用两个标签、两个窗口等。我遗漏了什么吗?我认为Chrome能够支持本地存储功能。
如果您使用本地文件进行测试,Chrome默认情况下会阻止本地文件(file:///*
)相互"对话",作为一种安全措施。您可以通过使用--allow-file-access-from-files
标志启动Chrome来禁用此限制:
chrome.exe --allow-file-access-from-files
现在,存储事件应该可以像预期的那样处理本地文件。
我刚刚在研究同样的问题,当通过脚本设置document.domain时,发现Chrome中存在一个错误:https://bugs.chromium.org/p/chromium/issues/detail?id=136356
在这种情况下,会设置localStorage,但不会触发该事件。
您可以始终使用像localDataStorage这样的实用程序来处理此问题,其中每当键值发生更改时,都会在同一窗口/选项卡中触发事件,例如由set或remove方法所做的事件。您还可以使用它透明地设置/获取以下任何"类型":数组、布尔值、日期、浮点值、整数、Null、对象或字符串。
[免责声明]我是实用程序[/免责声明]的作者
实例化实用程序后,以下代码段将允许您监视事件:
function localStorageChangeEvents( e ) {
console.log(
"timestamp: " + e.detail.timestamp + " (" + new Date( e.detail.timestamp ) + ")" + "'n" +
"key: " + e.detail.key + "'n" +
"old value: " + e.detail.oldval + "'n" +
"new value: " + e.detail.newval + "'n"
);
};
document.addEventListener(
"localDataStorage"
, localStorageChangeEvents
, false
);
相关文章:
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- Ember.js-接口状态应该存储在哪里
- 如何解雇“;铁局部存储负载”;事件
- 本地存储中的字符串到字节数组转换
- 从jQuery调用存储在Variable中的函数
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 将数据存储在javascript数组中以供进一步使用
- 在页面卸载时写入HTML5 FileSystem API存储
- 加载存储在IndexedDB中的HTML页面
- 在字符串中查找所有图像 src URL 并存储在数组中
- 如何从C#代码背后调用本地存储的javascript函数
- 在ListView中添加JSON数组中存储的图像-ReactNative
- 将数据存储到元素中
- 使用ajax下载与存储名称不同名称的文件
- 本地存储活动获胜'不要在铬中燃烧