2015-04-07 55 views
0

我用window.onbeforeunload(),當用戶導航離開該頁面,並能正常工作時顯示一個警告,如何魔鬼window.onbeforeunload警報時,定時器已逾時

jQuery(window).bind('beforeunload', function (e) { 
     var message = "Attention:"; 
     e.returnValue = message; 
     return message; 
    }); 

在的一個在我的項目中的視圖我已經使用了一個計時器。問題是,當計時器超時時,將顯示一條警告,並且後面跟着window.onbeforeunload()警報。

我只想要定時器警報,而不是在定時器超時時都顯示。

我該如何做到這一點?

+1

這是瀏覽器的行爲爲'beforeunload'戒備狀態被激發。您可以通過再次使用'unbind()'然後'bind()'來覆蓋它。 –

+0

謝謝,請舉例說明。 – sumedha

+1

http://stackoverflow.com/q/17250308/3639582 –

回答

0

由於Shaunak評論之前,您應該解除綁定你的 「硬編碼」 beforeunload函數定義:

jQuery(window).unbind(); 

,然後重新定義它:

jQuery(window).bind('beforeunload', function (e) { 
     var message = "Attention:"; 
     e.returnValue = message; 
     return message; 
    }); 
+0

是的,這可行,但爲什麼當它做'$(window).off('beforeunload');'或'window.onbeforeunload = null'時,它工作 – sumedha

+0

嘗試: '$(document).ready(function(){ $(window).off('beforeunload',function(){}); });'' – kiks73

0

unbind一個事件,你需要原來的參考處理程序。

請看下面。

var func = function(e) { 
 
    var message = "Attention:"; 
 
    e.returnValue = message; 
 
    return message; 
 
}; 
 

 
jQuery(window).bind('beforeunload', func); 
 

 
// Unbind 'beforeunload' after 10 seconds 
 
setTimeout(function() { 
 
    jQuery(window).unbind('beforeunload', func); 
 
    alert('beforeunload unbound'); 
 
}, 10000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>