当前位置: 首页 > 面试题库 >

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

秦飞航
2023-03-14
问题内容

如何使用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对象并导致事件的窗口/选项卡 之外 ,每个窗口/选项卡都会触发存储事件。

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



 类似资料:
  • 问题内容: 我在Windows Home上使用docker-toolbox。我能够运行jekyll-serv Web服务器图像来查看浏览器上的默认页面,但是当我尝试在VS Code上编辑文件时,刷新浏览器后看不到更改。 知道为什么刷新后看不到更改吗? 复制步骤: 首先,我将git将此存储库克隆到了我的库中(可以在“ cmder”控制台上查看文件)。 然后,我可以使用以下命令运行该图像: 而且我可以

  • 问题内容: 这是哪里来的 当我第一次学习jQuery时,通常会附加如下事件: 在学习了更多关于选择器速度和事件委托的知识之后,我在几个地方读到“ jQuery事件委托将使您的代码更快。” 所以我开始写这样的代码: 这也是复制已过时的.live()事件的行为的推荐方法。这对我来说很重要,因为我的许多站点始终都在动态添加/删除小部件。上面的行为与.live()并不完全一样,因为只有添加到已经存在的容器

  • 问题内容: 我将一些数据存储在localStorage中 我想在我的angularjs应用程序中看到的是,当localStorage中的数据更改时,该应用程序会重新渲染该应用程序,我该怎么做? 问题答案: 有一个角度的localStorage模块: https://github.com/grevory/angular-local- storage 经过进一步考虑,您可能需要将模块更改为在setIt

  • 我研究了一下,但我得到了解决办法: 它给出了错误: 无法加载配置文件。配置文件目录:C:\users\hppav1~1\appdata\local\temp\tmppcuwx3xd Firefox输出:无 当我尝试那个解决方案的时候。 它给出了以下错误: 回溯(最近一次调用):文件“c:/python34/torfirstscript.py”,第10行,在browser=webdriver.fir

  • 本文向大家介绍JS兼容所有浏览器的DOMContentLoaded事件,包括了JS兼容所有浏览器的DOMContentLoaded事件的使用技巧和注意事项,需要的朋友参考一下 使用JavaScript操作dom元素的时候,通常会将获取dom元素的代码放在window.onload=function(){}事件处理函数中,但window.onload事件在某些开始后可能会影响客户体验,因为要等待所有

  • 本文向大家介绍如何使用Firebug调试JavaScript / jQuery事件绑定?,包括了如何使用Firebug调试JavaScript / jQuery事件绑定?的使用技巧和注意事项,需要的朋友参考一下 假设事件处理程序已附加到您的元素。对于例如, 然后,您可以像这样调试它: 对于jQuery 1.3.x 对于jQuery 1.4.x  对于jQuery 1.8.x +