2014-11-25 81 views
0

出於某種原因,下面的卸載事件函數中的代碼在加載時立即運行,而不是等待卸載。爲什麼?爲什麼這個jquery卸載事件在加載後立即執行?

這裏有一個的jsfiddle這樣你就可以在行動中看到它:http://jsfiddle.net/dillydadally/hsj8xqtx/

HTML:

<input type="button" value="Click me" id="btn"/> 

的JavaScript:

$('#btn').click(function() { 
    var popup = window.open('http://www.stackoverflow.com', 'Window Unload Test', 'width=500,height=500'); 

    $(popup).unload(function() { 
     console.log("here"); 
    }); 
}); 

回答

1

發生這種情況,因爲當你第一次創建窗口它的位置其實是關於:空白。然後在你指定的URL被請求時卸載。

如果您將卸載處理程序更改爲console.log(popup.document.location.href),您會看到它仍然是:空白。

爲了緩解這種情況,您可能希望在附加卸載處理程序之前等待內容加載。

+0

您有關於如何等待內容加載的代碼建議嗎?如果我把一個加載事件處理程序放在同一個地方,它什麼都不做。如果我執行setTimeout,我不能保證窗口完成加載。 – dallin 2014-11-25 01:10:05

相關問題