Javascript 如何在浏览器选项卡之间检测特定localStorage变量的内容何时更改?

Javascript 如何在浏览器选项卡之间检测特定localStorage变量的内容何时更改?,javascript,browser,tabs,bind,local-storage,Javascript,Browser,Tabs,Bind,Local Storage,我想在同一个域的同一浏览器中的两个不同选项卡之间进行通信 当在第二个选项卡中触发特定事件时,我使用Javascript更改localstorage变量值。我想在第一个选项卡上检测此更改。变量名为status,值从0更改为1 我在考虑一个可能的解决方案,我认为在第一个选项卡上使用计时器会起作用,但我也认为一定有更好的方法 您知道是否有任何方法可以在不使用计时器的情况下检测状态变量值的变化 非常感谢 肯定有更好的方法-使用内置在本地存储机制中的事件。当您在tab2中更新localstorage时,t

我想在同一个域的同一浏览器中的两个不同选项卡之间进行通信

当在第二个选项卡中触发特定事件时,我使用Javascript更改localstorage变量值。我想在第一个选项卡上检测此更改。变量名为status,值从0更改为1

我在考虑一个可能的解决方案,我认为在第一个选项卡上使用计时器会起作用,但我也认为一定有更好的方法

您知道是否有任何方法可以在不使用计时器的情况下检测状态变量值的变化


非常感谢

肯定有更好的方法-使用内置在本地存储机制中的事件。当您在tab2中更新localstorage时,tab1将获得一个更新事件,您可以将该事件用作从localstorage读取新值的信号

有关详细信息,请参阅:


肯定有更好的方法——使用内置在本地存储机制中的事件。当您在tab2中更新localstorage时,tab1将获得一个更新事件,您可以将该事件用作从localstorage读取新值的信号

有关详细信息,请参阅:


似乎存储事件应该提供您所需的内容

存储事件的HTML规范 说:

存储区域更改时触发存储事件,如所述 在前两节中,针对会话存储,针对本地存储

发生这种情况时,用户代理必须将任务排队以触发事件 名称为storage,不冒泡且不可取消, 在每个窗口对象上使用StorageEvent接口 文档对象具有受影响的存储对象

注意最后一条,所有有权访问存储的窗口都应被通知任何更改

但是,请注意规范前一节中的以下条款:

当在上调用setItem、removeItem和clear方法时 与会话存储区域关联的存储对象x,如果 方法做了一些事情,然后在每个文档对象中 对象的sessionStorage属性的存储对象与 同一存储区域(x除外)必须触发存储事件,如下所示 如下所述


因此,引发更改的文档不会发出警报。

似乎存储事件应该提供您所需的内容

存储事件的HTML规范 说:

存储区域更改时触发存储事件,如所述 在前两节中,针对会话存储,针对本地存储

发生这种情况时,用户代理必须将任务排队以触发事件 名称为storage,不冒泡且不可取消, 在每个窗口对象上使用StorageEvent接口 文档对象具有受影响的存储对象

注意最后一条,所有有权访问存储的窗口都应被通知任何更改

但是,请注意规范前一节中的以下条款:

当在上调用setItem、removeItem和clear方法时 与会话存储区域关联的存储对象x,如果 方法做了一些事情,然后在每个文档对象中 对象的sessionStorage属性的存储对象与 同一存储区域(x除外)必须触发存储事件,如下所示 如下所述


因此引发更改的文档不会被提醒。

与其从tab2中提取,为什么不将更改推到tab1?@grampage因为我是从paypal无法控制的外部页面到达tab2的,所以,根据paypal值,我决定是否更改状态值。@Russ非常感谢您的拼写更正。英语不是我的母语:明白了。我猜interval是你唯一的选择,但我不能肯定地回答。与其从tab2中提取,为什么不将更改推到tab1?@Grampage,因为我从paypal无法控制的外部页面到达tab2,根据paypal值,我决定是否更改状态值。@Russ非常感谢您的拼写更正。英语不是我的母语:明白了。我猜时间间隔是你唯一的选择,但我不能肯定地回答。