繁体   English   中英

如何识别onbeforeunload是由单击关闭按钮引起的

[英]how to identify onbeforeunload was caused by clicking close button

如何确定onbeforeunload是由单击关闭按钮或页面刷新引起的,还是一般由onbeforeunload引起的事件?

这是一个片段:

window.onbeforeunload = function( e ){
    if( !e ) e = window.event;

    // insert code to determine which is the source of the event
}

请帮我。

通过参考各种文章并进行一些试验和错误,最终提出了这个想法,该想法对我来说非常合适,就像我希望它发生的方式一样。 逻辑也很容易实现,其思想是检测关闭浏览器触发的卸载事件。 在这种情况下,鼠标将不在窗口外,指向Close('X')按钮。

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


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

function ConfirmLeave() {
    return "";
}

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

看看是否有帮助,:)

据我所知,无法确定导致onbeforeunload 当窗口即将关闭时,无论是关闭浏览器还是其他方式,都会触发该事件。

如果按下关闭按钮,则e.clientY值为负。 对于其他可能的来源,我怀疑是否有解决方案。

window.onbeforeunload = function() {
   var e = window.event;
   alert(e.clientX + " / " + e.clientY);
}

我搜索了类似的内容,但最终空手而归。 所以我尝试做相反的

我们可以识别所有事件,但浏览器事件除外。 请参阅下面的(未经测试的)代码段。

var target = $( e.target );
if(!target.is("a, :button, :submit, :input, .btn, .bulkFormButton")){
//Your code for browser events)
}
   $("form").submit(function () {
             //Your code for browser events)
   });

这对我有用,但仍有一些未处理的事件。 我正在寻找那些。 如果有人对他们有想法,请分享。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM