一尘不染

如何为所有浏览器使用jQuery绑定到localStorage更改事件?

html

如何使用jQuery将函数绑定到HTML5 localStorage更改事件?

$(function () {

  $(window).bind('storage', function (e) {
    alert('storage changed');
  });

  localStorage.setItem('a', 'test');

});

我已经尝试了上述方法,但没有显示警报。

更新 :它可以在Firefox 3.6中运行,但不能在Chrome8或IE8中运行,因此问题应该更多是“如何在所有浏览器上使用jQuery绑定到localStorage更改事件?”


阅读 406

收藏
2020-05-10

共1个答案

一尘不染

事实证明,这实际上是正确的,并且我误解了规范

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

换句话说, 除了 更新localStorage对象并导致事件的窗口/选项卡 之外 ,每个窗口/选项卡都会触发存储事件。

因此事件没有被触发,因为我只打开了一个窗口/选项卡。如果将上面的代码放在一个页面中,然后在两个选项卡中打开该页面,则会在第二个选项卡中触发该事件。

2020-05-10