我想检测一个标签/窗口关闭事件(不包括F5刷新和链接点击事件等),然后显示一个覆盖。我在网上找到了一些答案,是这样的:
endSession: function() {
//customized overlay goes here
},
wireUpEvents: function() {
var self = this;
self.validNavigation = false;
window.onbeforeunload = function() {
if (!self.validNavigation) {
self.endSession();
return "bye"; // Chrome needs a returned string to fire the event
}
}
$('html').bind('keypress', function(e){
if (e.keyCode == 116) {
self.validNavigation = true;
}
});
$('a').bind("click", function(){
self.validNavigation = true;
});
$('form').bind('click', function(){
self.validNavigation = true;
});
$('input[type=submit]').bind('click',function(){
self.validNavigation = true;
});
}
$(document).ready(function() {
wireUpEvents();
});
但我刚刚发现了两件奇怪的事情:
F5无法检测到按键事件,它只能检测到那些数字和字符按键事件。最让我吃惊的是,它的 keyCode == 116 是字符 t 而不是 F5!(好像116是小写t的ascii码)
由于 Chrome 需要一个返回的字符串来触发事件,它总是在触发时显示一个带有字符串的默认弹出窗口,这意味着我无法使用 jqueryui 或其他东西创建我的自定义弹出窗口。如何解决这个问题?