实现自定义'beforeunload'对话框最不引人注目的方法是什么?

时间:2015-03-10 16:26:28

标签: javascript jquery onbeforeunload onunload

我正在谈论一个风格化的对话框,而不是默认的' beforeunload'无法设置样式的对话框。

见Facebook: Facebook unload image

最不引人注目的方法是什么?我首先声明了一些脚本,并且神奇地总是有效。

我想到的是:

function showCustomDialog()
{
    [...]
}

var unfinished = true;

$('a').click(function()
{
    if ( unfinished )
    {
        window.showCustomDialog( { originalUrl: $(this).attr('href') } );
        return false;
    }
}

但是我担心这会破坏一些情况,即<a>元素用于触发JS行为,或者JavaScript触发window.location.href更改。

是否有更好的,非突兀的方式?

额外注意 - 他们也让它用于后退按钮。

额外注意 - 显然,当它们无法控制时,它们会回到默认对话框。

1 个答案:

答案 0 :(得分:0)

我认为主要的问题是,你无法预测DOM中的每一个变化,所以你可以轻松刷新每个mousemove事件(智能手机的触摸事件等),如下所示:

$(document).off('mousemove').mousemove(function(){
      $('a').off('click').click(function(e){
           e.preventDefault();

           //your dialog goes here

      });
});