Javascript 如何检测选项卡/窗口关闭事件,然后使用jqueryui显示自定义覆盖?

Javascript 如何检测选项卡/窗口关闭事件,然后使用jqueryui显示自定义覆盖?,javascript,jquery,html,browser,dom-events,Javascript,Jquery,Html,Browser,Dom Events,我想检测一个选项卡/窗口关闭事件,不包括F5刷新和链接单击事件等,然后显示覆盖。我在网上找到了如下答案: endSession: function() { //customized overlay goes here }, wireUpEvents: function() { var self = this; self.validNavigation = false; window.onbeforeunlo

我想检测一个选项卡/窗口关闭事件,不包括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按键事件,它只能检测那些数字和字符按键事件。最让我吃惊的是,它是字符t而不是F5,它的keyCode==116!似乎116是小写字母t的ascii码

由于Chrome需要一个返回的字符串来触发事件,因此在触发事件时,它总是显示一个默认弹出窗口,其中包含该字符串,这意味着我无法使用jqueryui或其他东西创建自定义弹出窗口。如何解决这个问题


我也有同样的问题。你找到解决办法了吗?