Javascript IE localStorage事件未触发

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); 添加 清楚的 编辑: 另一方面,我在这里

在InternetExplorer9和10中,localStorage实现意外地触发事件(此处的伟大线程:)

有人知道有什么方法可以阻止在internet explorer中启动更改的选项卡上触发
存储
事件吗

例如,单击“添加”按钮时,以下内容不应显示警报,但在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>