IE 下,window 和 self 的不全等
现象
请在 IE 下的非 iframe 页面中运行以下代码:
alert(window === window.top); // 1 alert(self === window.top); // 2 alert(self === window); // 3 alert(window == window.top); // 4 alert(typeof self === typeof window); // 5 alert(self == window); // 6
分析
上面第 5 和第 6 行的结果都为 true. 按照 ECMA-262 的定义,按理说 self === window 应该为 true.
然而测试结果告诉我们:在 IE 下,不是这样!
结论
IE 下,top, self, parent 和对应的 window 并不全等。涉及到这些值,用 === 比较时,要谨慎。
原因没想明白。就如 IE 下一些诡异的 CSS Hack 一样,要真弄明白,也许只能去找比尔盖茨要一份 IE 的源码了。
幸运的 jQuery 和倒霉的 YUI
jQuery 1.3.2 模拟 DOMReady 的代码中 阅读全文 »
