2011-01-12 90 views
2

我正在使用onbeforeunload函數在用戶關閉瀏覽器窗口之前提醒用戶。目前,如果我們關閉瀏覽器的任何選項卡,就會調用警報。頁面關閉後發出javascript警報問題

我只需要這個功能是:

1)警報之前,只有當我們的標籤正試圖關閉,即當我們嘗試關閉其他標籤此警報將不會顯示。

2)應顯示,當我們試圖關閉使用關閉按鈕右上側角整個瀏覽器..

下面的代碼工作與jQuery,TH,我現在面臨的Mozilla Firefox是唯一的問題,如果該頁面中存在任何鏈接(如href到www.google.com),它將顯示警報...在這種情況下,也是不需要的。這個工作在IE瀏覽器,我使用Mozilla 3.6

請幫助.....

下面的代碼

<html> 
<script src="jquery.js"></script> 
<script> 
$(function() { 
    $(window).bind("beforeunload", function(e) { 
     return "Are you sure?" 
    }); 
    }); 

</script> 

<body> 
hiiiiii 


</body> 

</html> 
+0

你已經問了我這個問題。除了onbeforeunload之外,不存在另一個替代函數。 – 2011-01-12 10:17:53

+0

嗯...我也試過在Firefox 3.6xxxx中的代碼,它的工作方式與預期的一樣...也許還有其他特定的問題w /您正在使用的瀏覽器......嗯。 – 2011-01-12 10:19:15

回答

2

不幸的是,沒有在event object(目前還沒有)的任何信息。所以你不知道用戶如何離開你的頁面。但是你可以解決這個問題。例如,你想允許所有的external links離開你的網站,你添加一些布爾標誌。

var allowunload = false; 


$('a').bind('click', function() { 
    allowunload = true; 
}); 

...而在beforeunload事件檢查認爲:

$(window).bind('beforeunload', function(e) { 
    if(!allowunload) 
     return 'sure?'; 
}); 

在操作中查看:http://www.jsfiddle.net/4yUqL/41/

0

你可以嘗試以下方法:

$("a").click(function(){ 
    $(window).unbind('beforeunload'); 
}); 
$(window).bind('beforeunload', function(e) { 
    return 'sure?'; 
}); 

這如果用戶點擊錨點將解除事件綁定。不過,如果錨點不會重定向到其他頁面,而是會執行一些JavaScript功能,那麼它的副作用很小。