我有一個問題,我有一個javascript
功能,我想在瀏覽器關閉時使用,我如何檢測a browser is being closed
?我如何檢測瀏覽器選項卡刷新或關閉使用javascript
我已經取得了一些研究,我得到了解決辦法像onunload
或beforeunload
但是當我重新加載頁面正在執行兩種功能,有沒有辦法,我能區分重載和瀏覽器/標籤關閉任何解決方案。
我有一個問題,我有一個javascript
功能,我想在瀏覽器關閉時使用,我如何檢測a browser is being closed
?我如何檢測瀏覽器選項卡刷新或關閉使用javascript
我已經取得了一些研究,我得到了解決辦法像onunload
或beforeunload
但是當我重新加載頁面正在執行兩種功能,有沒有辦法,我能區分重載和瀏覽器/標籤關閉任何解決方案。
答案是,
</head>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
var validNavigation = false;
function endSession() {
// Browser or broswer tab is closed
// Do sth here ...
alert("bye");
}
function wireUpEvents() {
/*
* For a list of events that triggers onbeforeunload on IE
* check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
*/
window.onbeforeunload = function() {
if (!validNavigation) {
endSession();
}
}
// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
// Attach the event click for all links in the page
$("a").bind("click", function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$("form").bind("submit", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function() {
validNavigation = true;
});
}
// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
wireUpEvents();
});
</script>
</head>
<body>
<h1>Eureka!</h1>
<a href="http://www.google.com">Google</a>
<a href="http://www.yahoo.com">Yahoo</a>
</body>
</html>
如果用戶點擊刷新圖標刷新瀏覽器選項卡會怎麼樣? – Vardan
實際上並沒有解決原始問題,因爲它不會區分關閉窗口和重新加載窗口,儘管這是一次勇敢的努力。 – macguru2000
不,你不知道,HTML頁面不是瀏覽器的「所有者」,你只有有限的信息訪問權限,而且這些信息不在其中。
用戶離開你的頁面時,可以知道,但你可以不知道爲什麼,因爲這不關你的...
然後當瀏覽器選項卡關閉時如何加載一些功能? –
@lord_linus,加載什麼?瀏覽器選項卡已關閉...?! – gdoron
我有一個函數可以從數據庫中刪除一些行(我正在使用這個函數來使用ajax的javascript函數),當用戶註銷或者關閉瀏覽器時,我想執行這個函數。 –
gdoron是正確的,你不能確定用戶爲什麼/怎麼樣了離開頁面'。 在極端情況下,如果瀏覽器的CLOSE按鈕被點擊並讓警報觸發,您可以確定mousedown事件。 但是,這可能需要跟蹤mousedown事件的X和Y,這不是一個很好的做事方式。我不認爲你能夠準確地確定一個標籤是否關閉。
AFAIK你不能區分這些。 – alex
也許如果你解釋當瀏覽器關閉時你的功能會做什麼,那麼有人可以提供一個更好的替代解決方案? – ddtpoison777
實際上我有一個javascript函數,當用戶點擊註銷操作後,在用戶註銷後從數據庫中刪除了一些行,我想在用戶關閉瀏覽器時調用相同的函數。 –