0

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

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

} window.onbeforeunload = closeIt;

这适用于关闭浏览器,但也适用于页面中的所有链接,因为有条件确定导致 onbeforeunload 事件的原因。谁能帮我识别它们。

提前致谢。

4

1 回答 1

-1

参考各种文章并进行了一些试验和错误,最终开发了这个想法,它对我来说非常完美,就像我希望它发生的方式一样。逻辑也很简单,它实现了这个想法是检测关闭浏览器触发的卸载事件。在这种情况下,鼠标将离开窗口,指向关闭('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 函数将给出弹出的默认消息,如果需要自定义消息,则返回要显示的文本而不是空字符串。

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

于 2014-10-09T10:07:32.677 回答