将脚本更改为以下内容可防止处理焦点窗口中的任何存储事件。
这并不完全是您所要求的,因为我相信这需要对浏览器进行补丁,但它会导致 IE 9/10 符合规范,同时对其他浏览器(全局和侦听器除外)没有不利影响。
<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>
See 这把小提琴 http://jsfiddle.net/MKFLs/7/以获得更新的、一致的行为。
编辑:以下方法也可以工作并避免侦听器,但以运行时检查窗口焦点为代价:
<script type="text/javascript" >
var handle_storage = function (e) {
if(!document.hasFocus())
alert("Storage");
};
window.addEventListener("storage", handle_storage, false);
</script>