Javascript 如何防止有条件地从页面导航出去?

Javascript 如何防止有条件地从页面导航出去?,javascript,jquery,html,Javascript,Jquery,Html,我正在浏览器中实现一个图表编辑器。 如果用户在编辑器中未保存编辑并尝试导航出去,我想警告用户可能会丢失 但是,如果没有未保存的更改,我不希望用这个问题来打扰用户 我发现我可以通过注册onbeforeunload事件来阻止并询问用户 $(function() { window.onbeforeunload = function () { return "You have unsaved changes..."; } }); 我不知道我应该怎么做才能不显示此对话框,

我正在浏览器中实现一个图表编辑器。 如果用户在编辑器中未保存编辑并尝试导航出去,我想警告用户可能会丢失

但是,如果没有未保存的更改,我不希望用这个问题来打扰用户

我发现我可以通过注册onbeforeunload事件来阻止并询问用户

$(function() {
    window.onbeforeunload = function () {
        return "You have unsaved changes...";
    }
});
我不知道我应该怎么做才能不显示此对话框,如果没有未保存的更改…

要不显示对话框,只需从处理程序返回一个空值。因此,您可以将
return
包装在
if
语句中:

$(function() {
    window.onbeforeunload = function () {
        if(hasUnsavedChanges()) {
            return "You have unsaved changes...";
        }
    }
});
发件人:

当此事件返回非void值时,将提示用户 确认页面卸载


您只需返回
null
值即可不显示任何内容:

$(function() {
    window.onbeforeunload = function () {
        if (anyChanges) {
            return "You have unsaved changes...";
        } else {
            return;
        }
    }
});

else
上,此代码将允许页面以静默方式关闭。

您是否有一些代码检查编辑器状态以查看其是否已保存?此处没有足够的信息提供帮助。你必须跟踪正在更改的内容的状态,或者有办法知道用户编辑了他们正在编辑的内容。有趣的是,有些人完全理解这一点。。。显然,我不是在问如何跟踪我的编辑器状态是否脏。连问题的标题都清楚了这一点。谢谢。(我试图用false或true返回,两者都转换为字符串)我将在时间锁过期后接受此选项