2009-10-21 54 views
12

讓我說我有兩頁。其中一個包含iframe中的另一個。如果您在父頁面上訂閱了onbeforeunload事件,則當iframe處於焦點時關閉標籤頁時,此事件不會觸發。我想這是一個錯誤寫在這裏: Google Chrome issues谷歌鉻onbeforeunload與iframe的錯誤行爲

但我提到,例如,谷歌文檔處理這種情況。誰能給我一個解決方案? 重要提示我沒有對iframe內容的實際訪問,因爲它是第三方html編輯器(所見即所得)。

+0

您是否嘗試訂閱iframes onbeforeunload事件? – barkmadley 2009-10-24 02:49:25

+0

是的。但是,它沒有任何影響。 – Vetragon 2009-10-28 07:51:43

+0

任何人都有這方面的更新? – Chris 2010-09-24 13:39:52

回答

4

我知道這是一個老問題,但只是爲了幫助人們誰是未來這裏通過搜索:

bug是fixed by now here

由於chrome 10的問題應該修復。

有一個related bug though here

因此,簡而言之,如果你仍然不能火「onbeforeunload」在框架上,它可能是由於通過JavaScript喜歡在內容改變document.opendocument.writedocument.close

0

下面的代碼將在所有的工作瀏覽器

if (typeof window.addEventListener != 'undefined') { 
    window.addEventListener('beforeunload', test, false); 
} 
else if (typeof document.addEventListener != 'undefined') { 
    document.addEventListener('beforeunload', test, false); 
} 
else if (typeof window.attachEvent != 'undefined') { 
    window.attachEvent('onbeforeunload', test); 
} 

else { 
    if (typeof window.onbeforeunload == 'function') { 
     window.onbeforeunload = function() { 
      test(); 
     }; 
    } 
    else { 
     window.onbeforeunload = test; 
    } 
} 

function test(){ alert('working');} 

試試這個曾經...

+3

這對最近的Chrome版本仍然無效(只是嘗試了18.0)。 – 2012-05-13 12:20:59

+1

仍然沒有工作對我來說無論是在Chrome V40 – spyter 2015-02-03 14:40:35

0

你也可以嘗試改變iframe的網址爲 「about:空白」,例如:

$("#myFrameId")[0].src = "about:blank"; 

它強制使用chrome「乾淨地」關閉iframe中包含的窗口。

僅舉:如果你想關閉只是你的iframe,但不是父窗口,你得給鉻足夠的時間來執行你連接到「onbeforeunload」的處理程序。