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

Dir*_*oer 8 javascript jquery onbeforeunload onunload

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

见Facebook: Facebook卸载图片

最不显眼的方法是什么?我首先声明了一些脚本,并且神奇地总是有效.

我想的是:

function showCustomDialog()
{
    [...]
}

var unfinished = true;

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

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

有没有更好的,非突兀的方式?

额外的注意事项 - 他们也让它适用于后退按钮.

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

use*_*738 0

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

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

           //your dialog goes here

      });
});
Run Code Online (Sandbox Code Playgroud)