2015-03-03 122 views
2

這是我的場景: 用戶開始編輯帖子,上傳照片,但隨後他關閉瀏覽器或跳轉到其他頁面。在關閉瀏覽器頁面之前捕獲頁面

我希望能夠刪除上傳的照片並警告用戶後果。

我知道有一個功能window.onbeforeunload 但我不知道我是否得到正確

window.onbeforeunload = askExit; 
function askExit(){ 
     return "Are you sure you want to exit this page?"; 

} 

現在,我該如何捕捉按鈕按下「離開這個頁面」 這樣我就可以發射第二個功能來清理會話,照片等?

+2

'window.onunload = function(){console.log(「unloaded」); }'當「離開此頁面」被點擊,頁面卸載。但要小心,一切(dom,ajax調用等)都將被清除。 – 2015-03-03 02:37:23

+1

另請參閱此問題的答案。它使用jQuery,但原理是一樣的。 http://stackoverflow.com/questions/11057224/jquery-prompt-to-save-data-onbeforeunload/11057949#11057949 – Jamey 2015-03-03 02:43:06

回答

1

那麼,從理論上講,you can't

爲beforeunload的主要目的是對於像允許用戶選擇保存更改他們的更改將丟失之前。

但是,您可以技術上帶着幾分onfocus/onunload巫術的做到這一點:

var isFromUnloadDialog = false; 

window.addEventListener("beforeunload", function() { 
    isFromUnloadDialog = true; 
    return "Are you sure you want to exit this page?"; 
}); 

window.addEventListener("focus", function() { 
    if (isFromUnloadDialog) { 
    // User canceled the unload 
    isFromUnloadDialog = false; 
    } 
}); 

window.addEventListener("unload", function() { 
    // User didn't cancel the unload; clean up 
}); 

This也可能是值得一讀,如果你沒有在它採取一看已經。