2

我有以下代码,如果用户刷新了运行良好的页面,它将警告用户。

但是,当用户单击按钮或可能只是 href='#' 甚至是我的网站更改的 url 时,他们也会收到警告。我怎样才能只在他们尝试刷新浏览器时显示此警报?

谢谢

window.onbeforeunload = function (e) {
    e = e || window.event;

    // For IE and Firefox prior to version 4
    if (e) {
        e.returnValue = 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
    }

    // For Safari
    return 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
};
4

1 回答 1

2

概念解决方案(在 jQuery 中):

var going_away = true;
$("a").click(function()
{
// if it's local link - $(this).attr('href').indexOf("#") == 0 || $(this).attr('href').indexOf("/") == 0
   going_away = false;
});

$("form").submit(function()
{
// if it's local action - $(this).attr('action').indexOf("/") == 0
   going_away = false;
});

window.onbeforeunload = function (e) {
   if (going_away)
       window.confirm(...)
}

编辑:当然,条件的前提是针对传出链接,因此我们可能应该检查 http 或其他区分本地链接和传出链接的方式。

于 2013-10-24T16:32:29.877 回答