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();
});
しかし、私はちょうど2つの奇妙なことを見つけました:
F5キープレスイベントは検出できません。検出できるのは、それらの数字と文字のキープレスイベントのみです。そして、私が最も驚いたのは、keyCode == 116を持つのはF5ではなく文字tであるということです!(116は小文字のtのASCIIコードのようです)
Chromeはイベントを発生させるために返される文字列を必要とするため、発生時に常に文字列を含むデフォルトのポップアップが表示されます。つまり、jqueryuiなどを使用してカスタマイズしたポップアップを作成することはできません。これを修正する方法は?