为什么有些浏览器在没有开启对象时会声明它?

时间:2013-03-04 21:27:21

标签: javascript internet-explorer google-chrome firefox opera

typeof(opener)

除了IE之外,所有浏览器都会产生“对象”,尽管该对象为空。 IE只在实际使用window.open或类似方法时执行。我不想这么想,但IE是唯一能做到这一点的浏览器吗?

3 个答案:

答案 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)来处理这些差异。