typeof(opener)
除了IE之外,所有浏览器都会产生“对象”,尽管该对象为空。 IE只在实际使用window.open或类似方法时执行。我不想这么想,但IE是唯一能做到这一点的浏览器吗?
答案 0 :(得分:2)
“为什么有些浏览器在没有开启时会声明一个开启者对象?”
在JavaScript中,typeof null === "object"
而不是typeof
,请使用直接===
比较。
opener === null; // true
如果IE为您提供undefined
,请使用==
对两者进行测试。
opener == null; // true if null or undefined
答案 1 :(得分:0)
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。
答案 2 :(得分:-1)
Internet Explorer与其他浏览器的做法有很多不同。这只是一个小例子。
好,跨平台,JavaScript需要有许多If-then-else分支的实例(或作为替代try-catch)来处理这些差异。