2011-07-05 91 views
1

我的web應用程序的異常處理代碼有時會報告該window.open返回null或undefined。 這是零星的,我發現它大多數情況下發生在Firefox 4.0.1和5.0以及Chrome的較小程度。In-browser-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和效果是window.open返回空/未定義。

爲了避免這種情況,window.open調用必須是同步的,並且必須直接從明確的用戶操作(如鼠標單擊)發起。

如果您需要根據來自異步事件(例如:XMLHttpRequest)的數據修改打開的窗口,則可以同步打開一個空窗口,緩存返回的窗口對象,並且稍後進行更新。

這個「黑客」適用於所有瀏覽器。

相關問題