考虑下面的顶级javascript代码:
if (this.window === window)
alert('same');
else
alert('different'); // alerts: different 为什么this.window和window不是严格相等的?我还在表达式的rhs上尝试了'this‘,并得到了相同的结果。
发布于 2010-11-15 06:26:16
在Internet Explorer (我测试的是8.0.7600)中,不带限定符的this实际上解析为全局窗口对象。在我尝试过的所有其他浏览器中(Chrome、火狐、Opera),在这种情况下使用的都是this.window === window --当然,还有this === window。
在IE中尝试此操作以验证:
if (this === window)
alert('same');
else
alert('different');发布于 2010-11-15 07:07:48
看起来好像超文本标记语言元素不像parentNode那样包含指向其父窗口的指针。因此,当this不是window对象时,this.window将返回undefined。
window对象似乎能够引用它自己,可能是因为它是唯一一个足够高的节点来“看到”它自己。因此,window == window.window.window.window等等。
浏览器之间的特性似乎与每个浏览器实现DOM结构的方式有关,特别是它们如何在顶层解释this。
考虑到单个HTML元素不能用.window引用它们的父窗口,我真的看不出使用this.window有什么意义,尽管我希望在这里被证明是错误的。
如果您正在处理涉及跨两个不同窗口操作对象的代码,我建议您将新窗口分配给一个变量,例如var newWin = window.open(...),然后使用此变量引用新对象。
发布于 2010-11-15 06:17:36
在这里工作。
http://jsfiddle.net/rygar/DQYdk/
https://stackoverflow.com/questions/4180013
复制相似问题