typeof(opener)
在除 IE 之外的所有浏览器中产生“对象”,尽管对象为空。IE 仅在实际使用 window.open 或类似方法时才会这样做。我不想这样想,但 IE 是唯一能做到这一点的浏览器吗?
typeof(opener)
在除 IE 之外的所有浏览器中产生“对象”,尽管对象为空。IE 仅在实际使用 window.open 或类似方法时才会这样做。我不想这样想,但 IE 是唯一能做到这一点的浏览器吗?
“为什么有些浏览器在没有打开器对象的情况下声明一个?”
在 JavaScript 中,typeof null === "object"
代替typeof
,使用直接===
比较。
opener === null; // true
如果 IE 是给你undefined
的,那么使用==
来测试两者。
opener == null; // true if null or undefined
window.opener
一片空白。null
是导致对象带有 的原始类型之一typeof
。控制台输出 Chrome:
> window.opener
null
> typeof null
"object"
> typeof window.opener
"object"
控制台输出 IE9:
>> window.opener
>> typeof window.opener
"undefined"
所以看起来 Chrome/Firefox 将它初始化为 null 并且 IE 没有定义它开始。但是,当您进行真实检查时,这并不重要,因为 null 和 undefined 将评估为 false。
与其他浏览器相比,Internet Explorer 做的很多事情都不同。这只是一个小例子。
好的、跨平台的 JavaScript 将需要有许多 If-then-else 分支的实例(或作为替代的 try-catch)来处理这些差异。