如何使用jQuery将函数绑定到HTML5 localStorage更改事件?
$(function () { $(window).bind('storage', function (e) { alert('storage changed'); }); localStorage.setItem('a', 'test'); });
我已经尝试了上述方法,但没有显示警报。
更新 :它可以在Firefox 3.6中运行,但不能在Chrome8或IE8中运行,因此问题应该更多是“如何在所有浏览器上使用jQuery绑定到localStorage更改事件?”
事实证明,这实际上是正确的,并且我误解了规范
当在与本地存储区域相关联的存储对象x上调用setItem(),removeItem()和clear()方法时,如果这些方法执行了某些操作,则在其Window对象的localStorage属性的Storage对象为的每个Document对象中与x以外的同一存储区域关联的存储事件必须被触发
换句话说, 除了 更新localStorage对象并导致事件的窗口/选项卡 之外 ,每个窗口/选项卡都会触发存储事件。
localStorage
因此事件没有被触发,因为我只打开了一个窗口/选项卡。如果将上面的代码放在一个页面中,然后在两个选项卡中打开该页面,则会在第二个选项卡中触发该事件。