识别单击浏览器关闭按钮以弹出消息

时间:2014-10-08 06:41:33

标签: javascript jquery browser-close

我正在尝试实现该功能,以确认每当用户尝试关闭浏览器时是否“离开页面”。 截至目前我已实施,

function closeIt(e) {    
// For IE and Firefox prior to version 4
if (e) {
    e.returnValue = 'Sure?';
}

} window.onbeforeunload = closeIt;

这适用于关闭浏览器,但适用于页面中的所有链接,因为有条件来识别导致onbeforeunload事件的原因。 任何人都可以帮我识别它们。

提前致谢。

1 个答案:

答案 0 :(得分:0)

参考各种文章,做一些试验和错误,最终开发出这个想法,这对我来说非常适合我希望它发生的方式。逻辑很简单它实现也很简单。想法是检测通过关闭浏览器触发的卸载事件。在这种情况下,鼠标将离开窗口,指出关闭(' X')按钮。

$(window).on('mouseover', (function () {
    window.onbeforeunload = null;
}));


$(window).on('mouseout', (function () {
    window.onbeforeunload = ConfirmLeave;
}));

function ConfirmLeave() {
    return "";
}

//Edit start
var prevKey=""       
    $(document).keydown(function (e) {            
        if (e.key=="F5") {
            window.onbeforeunload = ConfirmLeave;
        }
        else if (e.key.toUpperCase() == "W" && prevKey == "CONTROL") {                
            window.onbeforeunload = ConfirmLeave;   
        }
        else if (e.key.toUpperCase() == "R" && prevKey == "CONTROL") {
            window.onbeforeunload = ConfirmLeave;
        }
        else if (e.key.toUpperCase() == "F4" && (prevKey == "ALT" || prevKey == "CONTROL")) {
            window.onbeforeunload = ConfirmLeave;
        }
        prevKey = e.key.toUpperCase();
//Edit End

ConfirmLeave函数会弹出默认消息,如果需要自定义消息,则返回要显示的文本而不是空字符串。

请注意,e.key在某些版本的chrome中返回undefined,因此最好使用e.keyCode获取键值,并参考http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes获取值