Javascript IE localStorage事件未触发
在InternetExplorer9和10中,localStorage实现意外地触发事件(此处的伟大线程:) 有人知道有什么方法可以阻止在internet explorer中启动更改的选项卡上触发Javascript IE localStorage事件未触发,javascript,html,internet-explorer,local-storage,Javascript,Html,Internet Explorer,Local Storage,在InternetExplorer9和10中,localStorage实现意外地触发事件(此处的伟大线程:) 有人知道有什么方法可以阻止在internet explorer中启动更改的选项卡上触发存储事件吗 例如,单击“添加”按钮时,以下内容不应显示警报,但在IE中会显示警报: 小提琴: Chrome本地存储测试 变量句柄存储=函数(){ 警报(“存储事件”); }; window.addEventListener(“存储”,句柄存储,false); 添加 清楚的 编辑: 另一方面,我在这里
存储
事件吗
例如,单击“添加”按钮时,以下内容不应显示警报,但在IE中会显示警报:
小提琴:
Chrome本地存储测试
变量句柄存储=函数(){
警报(“存储事件”);
};
window.addEventListener(“存储”,句柄存储,false);
添加
清楚的
编辑:
另一方面,我在这里打开了一个MS的bug
可能它不会关闭….将脚本更改为以下内容会阻止处理聚焦窗口中的任何存储事件 这并不完全是你所要求的,因为我相信这需要一个浏览器补丁,但它使IE9/10符合规范,同时对其他浏览器(除了全局和侦听器)没有不利影响
var聚焦;
addEventListener('focus',function(){focused=1;},false);
addEventListener('blur',function(){focused=0;},false);
变量句柄存储=函数(e){
如果(!聚焦)
警报(“存储”,重点);
};
window.addEventListener(“存储”,句柄存储,false);
有关更新的一致性行为,请参见
编辑:以下操作也有效,避免了侦听器以运行时检查窗口焦点为代价:
<script type="text/javascript" >
var handle_storage = function (e) {
if(!document.hasFocus())
alert("Storage");
};
window.addEventListener("storage", handle_storage, false);
</script>
变量句柄存储=函数(e){
如果(!document.hasFocus())
警报(“存储”);
};
window.addEventListener(“存储”,句柄存储,false);
@EricLaw感谢您的编辑:)您不需要额外的变量:(我测试过-它与IE9+一起工作,其中出现了存储事件)
<script type="text/javascript" >
var focused;
window.addEventListener('focus', function(){focused=1;}, false);
window.addEventListener('blur', function(){focused=0;}, false);
var handle_storage = function (e) {
if(!focused)
alert("Storage",focused);
};
window.addEventListener("storage", handle_storage, false);
</script>
<script type="text/javascript" >
var handle_storage = function (e) {
if(!document.hasFocus())
alert("Storage");
};
window.addEventListener("storage", handle_storage, false);
</script>