2017-03-17 50 views
-2

編輯:這個問題是不同的,因爲我要求在2017年瀏覽器的解決方案。另一個問題與多年前的瀏覽器有關。也沒有解決辦法。必須有某種解決辦法,這就是我所要求的。的Html - beforeunload - 跨瀏覽器

我添加一個事件監聽器:

addEventListener("beforeunload", MyBeforeUnload, false); 

我有功能:

function MyBeforeUnload() { 
    if(!g_IsSaved) { 
     return "You have not saved your data. If you leave this page without saving, your data will be lost."; 
    }else { 
    // Do not return anything if ok to leave 
    } 
} 

這觸發並顯示在IE中的警告消息。

它觸發功能,正確返回字符串,但在Chrome中,邊緣或Firefox瀏覽器右上角的關閉與[x]按鈕瀏覽器的時候不火的警告消息。

是否有可能獲得2017年這方面的工作的跨瀏覽器?

+1

什麼都沒有改變。另請參見http://stackoverflow.com/q/11317573/215552,http://stackoverflow.com/q/4683221/215552,http://stackoverflow.com/q/38879742/215552,HTTP://計算器。 com/q/1921941/215552 –

+0

邁克的第二條評論中的第一個鏈接有一個特別好的答案,爲什麼這是不可能的。 – BSMP

+0

問題是一樣的,即使答案改變了。我們想要更新現有問題的答案(如果它們可以更新),而不是產生問題的新副本。 –

回答

0

嘗試使用它就像它應該在跨瀏覽器的工作

window.addEventListener("beforeunload", function(e) { 
    var confirmationMessage = "You have not saved your data. If you leave this page without saving, your data will be lost."; 

    if (!g_IsSaved) { 
     (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
     return confirmationMessage; //Webkit, Safari, Chrome etc. 
    } else { 
     // Do not return anything if ok to leave 
    } 
}); 


而Chrome已經決定取消在onbeforeunload對話框中設置的自定義消息,以避免欺騙活動的能力

從2016年2月18日起,請參見bug report.

onbeforeunload對話框用於第2在現代網上發現:
1.防止用戶無意中丟失數據。
2.欺詐用戶。自上次幾次這個被問

+0

感謝您的想法,但這似乎停止即使IE瀏覽器工作。 – Rewind

+1

的Chrome已經決定取消在'onbeforeunload'對話框中設置的自定義消息,以避免欺騙活動和防止用戶不小心丟失數據的能力。 –