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

时间:2010-09-21 06:57:37

标签: javascript internet-explorer onbeforeunload

如何通过单击关闭按钮或页面刷新或通常导致onbeforeunload导致的事件来确定是否导致onbeforeunload?

这是一个片段:

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

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

请帮帮我。

4 个答案:

答案 0 :(得分:5)

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

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


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

function ConfirmLeave() {
    return "";
}

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

看看这是否有帮助,:))

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我搜索了类似的东西,但结果空手而归。 所以我尝试做对立

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

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)
   });

这对我有用,但仍有一些事件未得到处理。 我正在寻找那些。 如果有人对它们有所了解,请分享。