【问题标题】:Identify Click on browser close button for pop up message [duplicate]识别单击浏览器关闭按钮以弹出消息[重复]
【发布时间】:2014-12-02 17:50:41
【问题描述】:

我正在尝试实现在用户尝试关闭浏览器时确认是否“离开页面”的功能。 到现在我已经实现了,

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

} window.onbeforeunload = closeIt;

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

提前致谢。

【问题讨论】:

  • 检查“window.onbeforeunload”,您的 if 语句现在检测页面上的所有事件。
  • @Nerfair,是的,它正在检测页面上的所有事件,这就是我想要避免的并且只针对浏览器关闭事件
  • 你需要 "window.onbeforeunload" ;)
  • @artm 不是我一直在寻找的答案,无论如何感谢您抽出时间来帮助我:)

标签: javascript jquery browser-close


【解决方案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-codes 获取值

【讨论】:

  • 键盘快捷键呢?例如(在 Windows 上)alt+f4ctrl+w
  • 这不会像逻辑状态那样起作用
  • 嗯,这就是我的意思;)只是认为将其包含在答案中是可行的吗?
  • 我认为,我们可以类似地实现按键功能,我们将检测特定值和 window.onbeforeunload = ConfirmLeave;现在时间不多了,但我会在完成后尝试更新它。谢谢你把它捡起来.. :)
  • 更新脚本@Yoshi 再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多