我正在使用onbeforeunload
事件在關閉頁面執行操作。
我不希望事件發生在Refresh
/F5的情況下。防止在刷新/ F5中發生OnBeforeUnload()事件
有沒有辦法或其他事件來做到這一點?
我正在使用onbeforeunload
事件在關閉頁面執行操作。
我不希望事件發生在Refresh
/F5的情況下。防止在刷新/ F5中發生OnBeforeUnload()事件
有沒有辦法或其他事件來做到這一點?
不幸的是onbeforeunload
事件在瀏覽器中偵聽頁面狀態。去另一個頁面以及刷新將改變頁面狀態,意味着onbeforeunload
將被觸發。
所以我認爲這是不可能只捕獲刷新。
但是,如果您要通過JavaScript來監聽並阻止Keypress
,那麼就可以實現。
刷新可以通過F5和按Ctrl[R鍵來完成,所以你的目標是阻止這些行爲。
使用jQuery .keydown()你可以檢測這些鍵碼:
對於按Ctrl[R
$(document).keydown(function (e) {
if (e.keyCode == 65 && e.ctrlKey) {
e.preventDefault();
}
});
對於F5
$(document).keydown(function (e) {
if (e.which || e.keyCode) == 116) {
e.preventDefault();
}
});
我想補充一個信息提示onbeforeunload,所以我的解決辦法是這樣的一個:
$(document).ready(function(){
window.onbeforeunload = PopIt;
$("a").click(function(){ window.onbeforeunload = UnPopIt; });
$(document).keydown(function(e){
if ((e.keyCode == 82 && e.ctrlKey) || (e.keyCode == 116)) {
window.onbeforeunload = UnPopIt;
}
});
});
function PopIt() { return "My message before leaving"; }
function UnPopIt() { /* nothing to return */ }
三線($( 「A」)點擊...)爲避免顯示警報在網頁的各個部分之間進行導航時。
我不想趕上頁面刷新。我希望頁面刷新不會觸發事件。 – Refael
看我更新的答案。 – zur4ik
點擊刷新圖標怎麼樣? – Refael