2
typeof(opener)

オブジェクトは null ですが、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のオブジェクトになるプリミティブ型の 1 つです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 と評価されるため、truey チェックを行う場合は問題ありません。

于 2013-03-04T21:34:20.830 に答える
-1

Internet Explorer は、他のブラウザーとは異なる多くのことを行います。これはほんの一例です。

優れたクロスプラットフォームの JavaScript では、これらの違いに対処するために、If-then-else 分岐 (または代替の try-catch として) のインスタンスを多数持つ必要があります。

于 2013-03-04T21:45:45.700 に答える