我有一個頁面,不允許用戶通過單擊瀏覽器刷新按鈕或按F5來刷新頁面。所以我想模擬'表單重新提交'以顯示提示信息。如何在用戶嘗試刷新瀏覽器時獲取「確認表單重新提交」
有人可以指導我實施它的方法嗎?
是否有任何跨瀏覽器的解決方案可用於此?
我有一個頁面,不允許用戶通過單擊瀏覽器刷新按鈕或按F5來刷新頁面。所以我想模擬'表單重新提交'以顯示提示信息。如何在用戶嘗試刷新瀏覽器時獲取「確認表單重新提交」
有人可以指導我實施它的方法嗎?
是否有任何跨瀏覽器的解決方案可用於此?
要刷新沒有得到及時的頁面必須使用HTTP GET
使窗體已提取有method="GET"
代替method="POST"
(和修復服務器處理這個變化apropriate工作)
或者緩存在提交表單後立即使用HTTP代碼303
重定向到會話中的發佈數據並重定向到顯示頁面。
如果您想要提示,請將用戶訪問頁面的鏈接mzke放入POST表單上的提交按鈕。如果用戶使用GET請求到達,則向其提供一個帶有JavaScript的頁面,該頁面會提交將其轉換爲POST請求的表單。
你想要的是傾聽beforeunload
事件並拋出一個確認框。
編輯:既然你已經在註釋中規定的另一個答案that you need to support Mobile Safari(其犯規支持beforeunload
你可以嘗試像jquery.AreYouSure
每the discussion on this page庫,它支持移動Safari瀏覽器,雖然我還沒有使用它自己
注意,有些瀏覽器會忽略confirm
調用您提供的文本,並顯示它們的默認文字。有更深入的方式來解決這一點,但這個提示對話框。
$(window).on("beforeunload", function() {
return confirm("Do you really want to close?");
});
@ user44858我更新了我的答案,並提供了一個支持移動Safari的選項 – DelightedD0D
您是如何設法禁用所有功能的?
對於瀏覽器按鈕,cross-compatible per MDN:
window.onbeforeunload = function() {
return "Data will be lost if you refresh the page. Are you sure?";
};
對於按鍵:
window.addEventListener("keyup", checkForRefresh, false);
var checkForRefresh = function(event) {
if (event.keyCode == 116) {
alert("Data will be lost if you refresh the page. Are you sure?");
}
};
擊鍵可能需要填充工具IE8的,但他們提供它在docs。
你知道「window.addEventListener」的原因嗎?我看到鏈接文檔中的建議,但我沒有看到爲什麼需要它的任何解釋。 – DelightedD0D
我覺得很奇怪,我沒有看到'window.onkeyup = function(event){...'的任何例子。它看起來像'window.onkeyup'只能引用一個函數,而不是自己調用一個匿名函數。所以,無論如何你必須調用一個不同的函數,爲什麼不使用事件監聽器。 'window.onkeyup'的文檔非常少,所以我也不能爲了兼容性的原因推薦它。 – Adam
我嘗試了onbeforeunload(),但它在Mobile Safari上不起作用。我發現一個網站在這個功能上運行得非常好:https://internet-banking.dbs.com.sg/IB/Welcome。但不知道他們是如何實現它的 – user44858
從其他disccussion:
有2個辦法用來拍攝這裏的人:
方法1:使用AJAX +重定向 使用JQuery或類似的東西這樣你張貼在後臺表單到Page2,而用戶仍然看到page1顯示。成功發佈後,您將瀏覽器重定向到Page2。
方法2:郵政+重定向到自我
這是在論壇上的常用技術。 Page1上的表單將數據發佈到第2頁,第2頁處理數據並完成需要完成的工作,然後它自己進行HTTP重定向。通過這種方式,瀏覽器記得的最後一個「動作」是第2頁上的一個簡單GET,所以表單不會在F5上重新提交。
你可以參考這樣的回答:https://stackoverflow.com/a/3968038/1853444
一個Javascript提示 – Jhecht
你寫的Web應用程序,還是別人寫的應用程序,你使用它? – jww
'$(窗口)。在( 'beforeunload',函數(){ 回報 '您確定要離開嗎?'; });' –