2
typeof(opener)

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

4

3 回答 3

2

“为什么有些浏览器在没有打开器对象的情况下声明一个?”

在 JavaScript 中,typeof null === "object"

代替typeof,使用直接===比较。

opener === null; // true

如果 IE 是给你undefined的,那么使用==来测试两者。

opener == null; // true if null or undefined
于 2013-03-04T21:34:07.127 回答
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。

于 2013-03-04T21:34:20.830 回答
-1

与其他浏览器相比,Internet Explorer 做的很多事情都不同。这只是一个小例子。

好的、跨平台的 JavaScript 将需要有许多 If-then-else 分支的实例(或作为替代的 try-catch)来处理这些差异。

于 2013-03-04T21:45:45.700 回答