2010-11-03 49 views
1

如何禁用鏈接的onbeforeunload?禁用鏈接的onbeforeunload

var show = true; 

function showWindow(){ 
    if(show){  
     alert('Hi'); 
     return "Hi Again"; 
    } 
} 


$('a').click(function(){ 

    show = false; 

}); 


window.onbeforeunload = showWindow; 

這是我,但是當我點擊

按鈕代碼的 '一' 元素在其上還表示:

<button type="submit" class="submitBtn"><span>Open Account</span></button> 

回答

10

而不是

show = false; 

window.onbeforeunload = null; 

這將簡單地從事件中解除功能。

+1

不錯,所以適用於鏈接 - 但對於按鈕它沒有。 – dzm 2010-11-03 04:21:03

+0

嘗試在您的jquery點擊事件處理程序中添加alert()作爲第一行代碼。如果您的「hi」警報在您的新警報出現之前出現,這意味着onbeforeunload事件在您的按鈕點擊處理程序觸發之前觸發。是這樣嗎? – JustcallmeDrago 2010-11-03 04:24:23

+0

沒錯,它在按鈕點擊處理程序之前觸發了onbeforeunload。 – dzm 2010-11-03 04:25:29

3

使用下面的代碼來解除綁定事件:

javascript:window.onbeforeunload=function(){null} 
8

我只是碰到了同樣的問題,發現了一個很簡單的解決辦法:

$("a").mousedown(function() { 
    $(window).unbind(); 
}); 

這將只需點擊之前刪除onbeforeunload事件事件被觸發。

+1

不知道爲什麼,但這是唯一對我有用的解決方案。我正在研究WordPress中的自定義帖子類型,當用戶點擊WP'更新'按鈕時需要做一些處理,然後用JS提交表單。我曾嘗試'window.onbeforeunload = null;'但沒有奏效。這樣做。謝謝! – cmpreshn 2015-05-13 20:53:59

+1

由於'mousedown'在beforeunload之前運行,並且在它之後運行'click'。我仍然建議使用JustcallmeDrago解決方案,同時用'mousedown'替換鏈接'click'事件 – oriadam 2015-06-30 14:08:43