Javascript 赢得本地存储事件';不要用铬来点火

Javascript 赢得本地存储事件';不要用铬来点火,javascript,google-chrome,local-storage,Javascript,Google Chrome,Local Storage,我正在尝试添加一个事件侦听器,该侦听器在本地存储中的数据发生更改时触发。我在ComponentDidMount方法中添加了侦听器,如下所示: componentDidMount() { window.addEventListener('storage', function(event) { console.log("Event"); } ); 但这一事件似乎从未在Chrome中触发(它在Firefox中触发)。我试过用两个标签,两个窗口,等等。我是否遗漏了什么?我认为C

我正在尝试添加一个事件侦听器,该侦听器在本地存储中的数据发生更改时触发。我在ComponentDidMount方法中添加了侦听器,如下所示:

componentDidMount() {
  window.addEventListener('storage', function(event) {
    console.log("Event");
    }
  );

但这一事件似乎从未在Chrome中触发(它在Firefox中触发)。我试过用两个标签,两个窗口,等等。我是否遗漏了什么?我认为Chrome能够支持本地存储功能

我刚刚研究了同样的问题,在通过脚本设置document.domain时发现Chrome中存在一个bug:


在这种情况下,localStorage会被设置,但不会触发事件。

您始终可以使用类似的实用程序来处理此问题,每当键值发生更改(如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
);

如果您使用本地文件进行测试,作为安全措施,Chrome会在默认情况下防止本地文件(
文件://*
)相互“交谈”。您可以通过使用
--允许从文件访问文件
标志启动Chrome来禁用此限制:

chrome.exe --allow-file-access-from-files
现在,存储事件应该可以像预期的那样处理本地文件。

表明这是mozilla的一项功能,MDN不知道其他浏览器是否支持它——它只是mozilla tooMy版本的Chrome(51.0.2704.103)中的最新版本,在从单独的选项卡进行更改时触发事件。你能提供一个例子演示它没有发生吗?可能重复的