Chrome 的 localStorage 实现的错误?很好地解释了规范,以及它在 Opera 和 IE9 中的行为方式有何不同。
但是,现在呢?
这真的会弄乱我的代码(任何代码),它依赖于实现在浏览器上的一种方式,当它是另一种方式时。
如何测试以了解事件是否在调用它的窗口上触发?
我唯一能想到的是使用 setTimeout() 来等待并查看事件是否在调用它的窗口中触发,如果没有,则执行某些操作。但是,当存储事件被快速连续调用时,这可能会产生一些可怕的错误。
在我的情况下,我需要为所有窗口触发事件,而不是所有窗口,而是调用它的窗口。在按照规范正确实现它的 Chrome 中,这只是在添加到 localStorage.setItem() 之后添加一个额外函数的问题,但是在 IE、Firefox3.6 和 Opera 中,它会有效地执行两次。我也可以有基于浏览器的不同代码,但我应该测试兼容性而不是浏览器版本。
有没有办法“修补”所有具有 localStorage 支持的浏览器,以使事件在所有浏览器上都以相同的方式处理?