Javascript 侦听/观察-使用store.js更改本地存储

Javascript 侦听/观察-使用store.js更改本地存储,javascript,html,events,local-storage,Javascript,Html,Events,Local Storage,我正在使用(JS库)管理本地存储 我想做的事 将client的值保存在浏览器的一个选项卡中的localStorage中,然后当值更改时,我想听听更改的值 问题 下面的代码在浏览器的同一个选项卡中工作,但当我选中另一个选项卡时,没有触发任何更改事件 store.set('client'{ “名称”:Math.random() }); $('#mybtn1')。单击(函数(){ store.set('client'{ “名称”:Math.random() }); }); store.observe

我正在使用(JS库)管理本地存储

我想做的事

client
的值保存在浏览器的一个选项卡中的
localStorage
中,然后当值更改时,我想听听更改的值

问题

下面的代码在浏览器的同一个选项卡中工作,但当我选中另一个选项卡时,没有触发任何更改事件

store.set('client'{
“名称”:Math.random()
});
$('#mybtn1')。单击(函数(){
store.set('client'{
“名称”:Math.random()
});
});
store.observe('client',函数(val,oldVal){
console.log('changed');
console.log(store.get('client');
});


单击
我在store.js中遇到了类似的问题,因此我最终使用纯本地存储和事件侦听器方法来实现这个问题

以下是正在工作的JSFIDLE:

说明:

这利用了Web存储API

您可以使用调用创建新的localStorage键值对

localStorage.setItem("current_tenant", "Tenant1");
现在,只要更改此存储,就会触发
StorageEvent
。此事件仅发送到其他窗口

每当对存储对象进行更改时,都会触发StorageEvent(请注意,会话存储更改不会触发此事件)。这在进行更改的同一页面上不起作用-它实际上是域上使用存储的其他页面同步所做更改的一种方式。其他域上的页面无法访问相同的存储对象。资料来源:

然后,您可以在此存储上添加事件侦听器,并使用事件属性、
oldValue
newValue
例如


将您的示例转换为,这里是结合了
storeJS
StorageEvent

的解决方案。您的方法将触发本地存储中任何更改的更改事件。我正在寻找具体的关键变化。示例
client
值更改。是的,确实如此。您可以使用事件的“key”属性筛选出所需的键