1

我想检测一个标签/窗口关闭事件(不包括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();
    });

但我刚刚发现了两件奇怪的事情:

  1. F5无法检测到按键事件,它只能检测到那些数字和字符按键事件。最让我吃惊的是,它的 keyCode == 116 是字符 t 而不是 F5!(好像116是小写t的ascii码)

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

4

0 回答 0