如何使用jQuery将函数绑定到HTML5 localStorage更改事件?
$(function () {
$(window).bind('storage', function (e) {
alert('storage changed');
});
localStorage.setItem('a', 'test');
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以上但警报没有显示.
更新:它适用于Firefox 3.6,但它在Chrome 8或IE 8中不起作用,所以问题应该更多'如何使用jQuery绑定到所有浏览器的localStorage更改事件?'
我有一个单页应用程序,我需要对本地存储中的每个更改做出反应,它看起来像:
MyComponent {
someFuncWhichIsCalledEveryTimeWhenLocalStorageChanges() {
console.log('local storage changed!);
}
funcThatChangesLocalStorage() {
localstorage.setItem('key',val);
localstorage.getItem('key')
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用 localstorage 事件:
window.addEventListener('storage', function(event){
...
});
Run Code Online (Sandbox Code Playgroud)
但这不起作用......所以我正在考虑使用Observable<>,只是不知道如何正确实现它。
当localStorage myCart数组发生任何变化时,如何立即更新购物车页面数据?下面是我的代码
const [cart, setCart] = React.useState([])
React.useEffect(() => {
setCart(JSON.parse(localStorage.getItem('myCart')) || [])
}, [])
Run Code Online (Sandbox Code Playgroud)
在cart被更新时,页面重新加载,但不是在新项目中添加或更新任何现有的项目!
我怎样才能做到这一点,cart如果对“localStorage”进行任何更改,它会立即更新?
提前致谢。
我正在尝试实现我所希望的一个简单的“查看会话存储中的键并在它更改时更新它”的场景,但 Observables 真的让我失望了。
message$ = new Observable(observer => {
observer.next(window.sessionStorage.getItem('message'));
});
ngOnInit() {
this.message$.subscribe();
}
Run Code Online (Sandbox Code Playgroud)
并且 message$ 绑定到 HTML,非常简单:
<p id="message">{{message$ | async}}</p>
Run Code Online (Sandbox Code Playgroud)
在Observable将输出文本到HTML是否已存在存储在“消息”的价值,但如果有关于初始化没有消息,然后将其添加,或消息值确实存在,更新,没有任何反应。我显然做错了什么,我很感激有知识的人的洞察力Observables。