localStorage事件侦听器不会在Chrome中为本地文件触发

我需要在更改localStorage时收到通知。 此代码在Firefox 24中运行良好,但在Chrome 29(或30)或IE 10中不起作用。它也适用于实时服务器,但在我使用本地文件进行测试时( file:/// ) 。

这是代码:

    Index   $(document).ready(function() { $('#submit').click(function() { console.log('Clicked'); if($('#username').val() != "") localStorage.setItem('someItem', 'someValue'); }); $(window).bind('storage', function(e) { alert('change'); }); });     Click me 

这在Chrome中有什么问题? 我根据需要打开两个标签。

它只会在“其他”选项卡/窗口中触发事件,但不会在更改数据的情况下触发(这在您的问题中有点不清楚,所以如果我误解,请纠正我)。

当在与本地存储区域相关联的存储对象x上​​调用setItem(),removeItem()和clear()方法时,如果方法执行了某些操作,则在Window对象的localStorage属性的Storage对象的每个Document对象中都是如果与x相同的存储区域相关联,则必须触发存储事件,如下所述。

来源W3C

根据评论更新以完成答案:

如果页面由于安全原因从文件协议( file:/// )运行,则某些浏览器会有限制。

在Chrome中,您可以通过提供参数--allow-file-access-from-files来覆盖它:

 chrome.exe --allow-file-access-from-files 

我不确定你是否可以和其他浏览器做类似的事情。 我建议使用本地服务器(例如Mongoose )进行测试,以免在实时场景中遇到任何意外。