对于这个问题,我在将一个函数绑定到Chrome 8.0.552.224中的Storage对象的change事件时得到了一个奇怪的结果.
考试:
<!DOCTYPE html>
<html>
<head>
<title>Chrome localStorage Test</title>
<script type="text/javascript" >
var handle_storage = function () {
alert('storage event');
};
window.addEventListener("storage", handle_storage, false);
</script>
</head>
<body>
<button id="add" onclick="localStorage.setItem('a','test')">Add</button>
<button id="clear" onclick="localStorage.clear()">Clear</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我会在第二个选项卡和第二个窗口上显示一个警告框,但不会在调用该事件的选项卡上显示(我点击了).据我所知,我应该看到三个警告框(每个标签打开一个).
这是一个错误吗?有其他人得到这种行为吗?如果不是你在运行什么版本?或者我刚刚完全错了?
我在窗口DOM-Object中添加了一个eventListener,并希望跟踪对localStorage所做的更改.
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script language="JavaScript"><!--
window.addEventListener('storage', storageEventHandler, false);
function storageEventHandler(evt){
console.log("oldValue: " + evt.oldValue );
console.log("storage event called key: " + evt.key );
console.log("newValue: " + evt.newValue );
}
$(document).ready(function(event) {
$('#link1').click(function(event){
event.preventDefault();
localStorage.setItem('page', 2000);
console.log(localStorage.getItem('page'));
});
$('#link2').click(function(event){
event.preventDefault();
localStorage.setItem('page', 998);
console.log(localStorage.getItem('page'));
});
});
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
不知何故,即使在单击link1或link2时更改了localStorage值,也永远不会调用storageEventHandler.任何帮助深表感谢.
有没有办法检测HTML5 localStorage中的任何更改,然后如果确实有任何更改,则调用某些函数?我将某些密钥存储为名称为"e1","e2","e3"等等......
我想检测是否删除或添加了任何键,然后在有任何更改时触发某些功能...
从许多来源,我发现本地存储事件仅在未发起更改的窗口/选项卡中触发.
我的问题是,有什么办法可以从同一个窗口检测到变化吗?或者可能覆盖强制事件在同一窗口/选项卡中触发的功能?
不包括该选项似乎不切实际,但我找不到办法.
谢谢
我有一个经常更改的全局变量。假设它存储在中window.something。在反应中,我需要将此更改反映到组件及其状态中。
示例代码:
class Example extends React.Component {
constructor(props) {
super(props);
this.state = { something: '1'}
}
render() {
return (
<div>
<input value={window.something}
onChange={event => {this.setState({'something': event.target.value})}}
/>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,该值仅是第一次设置,并且随着变量的更新而没有变化。
我正在尝试使用 Angular 4 访问 localStorage 并使用 Observables 查找 localStorage 值的变化:
这是我一直在研究的代码:
userNameObservable: Observable<string>;
userName: String = '';
ngOnInit() {
this.userNameObservable = Observable.create(
Observable.of(localStorage.getItem('profileName'))
);
this.userNameObservable.subscribe((name: String) => {
this.userName = name;
})
}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误ERROR TypeError: this._subscribe is not a function。我该如何解决?有没有更好更有效的方法来查找 localStorage 中的更改?