使用以下函數可以檢測用戶按下了哪個按鈕 刷新按鈕或關閉按鈕?如果不是有另一種方式?JavaScript beforeunload檢測刷新與關閉
$(window).bind('beforeunload', function(event) {
return 'pls save ur work';
});
使用以下函數可以檢測用戶按下了哪個按鈕 刷新按鈕或關閉按鈕?如果不是有另一種方式?JavaScript beforeunload檢測刷新與關閉
$(window).bind('beforeunload', function(event) {
return 'pls save ur work';
});
簡單的答案是否定的 - 瀏覽器的安全模型不允許你明確的用戶選擇什麼樣的方式離開你的頁面(刷新/關閉/內部鏈接/外部鏈接)檢測。
detect refresh browser for unload/beforeunload when browser closed
這是可能的 - 使用Cookie - 當用戶加載您的頁面是否以前在同一個會議上該網站查詢 - 例如檢測,如果他們已經刷新 - 但他們刷新不前:
Detect Browser Refresh in Javascript
Check if page gets reloaded or refreshed in Javascript
的部分和不完善的做法是,以檢測他們是否按「F5」或「Ctrl鍵+ R」或在頁面卸載之前的「Cmd + R」(用於刷新的鍵盤快捷鍵)。這將檢測到一些刷新,但不是用戶實際點擊刷新按鈕的位置。
(function($) {
var refreshKeyPressed = false;
var modifierPressed = false;
var f5key = 116;
var rkey = 82;
var modkey = [17, 224, 91, 93];
// Check for refresh keys
$(document).bind(
'keydown',
function(evt) {
// Check for refresh
if (evt.which == f5key || window.modifierPressed && evt.which == rkey) {
refreshKeyPressed = true;
}
// Check for modifier
if (modkey.indexOf(evt.which) >= 0) {
modifierPressed = true;
}
}
);
// Check for refresh keys
$(document).bind(
'keyup',
function(evt) {
// Check undo keys
if (evt.which == f5key || evt.which == rkey) {
refreshKeyPressed = false;
}
// Check for modifier
if (modkey.indexOf(evt.which) >= 0) {
modifierPressed = false;
}
}
);
$(window).bind('beforeunload', function(event) {
var message = "not refreshed";
if (refreshKeyPressed) {
message = "refreshed";
}
event.returnValue = message;
return message;
});
}(jQuery));
您也可以檢測當點擊某條鏈路的目標是否是在同一地點或不: How can I detect when the user is leaving my site, not just going to a different page?