2011-07-05 9 views
1

私のWebアプリケーションの例外処理コードでは、window.openがnullまたはundefinedを返す場合があります。 これは散発的なもので、Firefox 4.0.1と5.0ではほとんどの場合、Chromeではそれほどではありません。ブラウザのJavaScript:どのような状況でwindow.openがnull/undefinedを返すのですか?

いつ、それが特定のブラウザと関連して発生しますか?

私はIE8とIE9がプロテクトモードで作業しているときにそれを行うことができると聞きました。本当? Firefoxについてはどうですか?オペラ?クロム?サファリ?

重要事項:

  1. window.openでのonclickイベント内に直接 呼び出されます(つまり、最も ブラウザのポップアップブロッカーが 警告表示させると同じように、それは据え置かない れます)。
  2. window.open HTMLコンテンツ私に言って返信しないでください、その後のjavascript
  3. で操作 ある空白のウィンドウ 開き、「なぜ の代わりに(ここで何かを)しないwindow.open? は、あなたが使用しない理由を」これは話題にならないだろうから。
+0

おそらく関連する:http://stackoverflow.com/questions/960293/window-open-returns-undefined-or-null-on-2nd-call – polarblau

答えて

3

私は自分の質問に私が集めることで答えようとします。 もっと発見したらすぐに更新します。

のFirefox:window.openと効果のFirefoxに組み込まれた

ポップアップブロッカーを自動的にブロックすべての非同期呼び出しは、window.openリターンヌル/未定義です。

これを避けるには、window.open呼び出しが同期していて、マウスクリックのような明示的なユーザーアクションから直接発生している必要があります。

非同期イベント(例:XMLHttpRequest)のデータに基づいて開いたウィンドウを変更する必要がある場合は、空のウィンドウを同期して開き、返されたウィンドウオブジェクトをキャッシュし、後で更新することができます。

この「ハック」は、すべてのブラウザで機能します。

関連する問題