当用户尝试离开页面而不保存时,创建确认JavaScript

时间:2017-07-13 16:36:34

标签: javascript modal-dialog confirm

我试图这样做,以便如果用户对页面进行更改然后尝试离开页面而不保存,则会出现一个弹出消息,其中显示“确定”按钮(没有“取消”按钮)。单击“确定”按钮,关闭消息。用户必须单击“保存”按钮,否则他们将继续收到消息,禁止他们离开页面,直到单击“保存”按钮。离开页面,我的意思是让他们不能导航到网站中的另一个标签或菜单项...如果他们点击页面上的任何其他链接,它会给他们弹出窗口。他们可以随时离开现场。

我在想我需要JavaScript模式对话框来摆脱取消按钮,但我对实现有点不确定。

目前,我使用的是r = confirm(见下文),但它有取消按钮,如果用户单击“确定”,则会为用户提供离开页面的选项。我不希望他们在没有点击“保存”按钮的情况下离开页面,或者他们必须关闭整个窗口。

非常感谢任何帮助/解释,因为我对此非常陌生。谢谢。

if (typeof unsaved != 'undefined') {
if (unsaved == true) {
var r = confirm("Please click Update. Unsaved changes will be lost.");
if (r == false) {
     saveNeeded = "true";
     }
     else { saveNeeded = "false"; }
 }
}

1 个答案:

答案 0 :(得分:0)

看看onBeforeUnload

您将无法强迫用户留在网站上,但是当他们试图关闭窗口时,它会提供一个带有“离开”和“保持”按钮的弹出窗口。所有主要的Web浏览器都允许用户随意离开任何网页,您可以做的最多就是警告他们。 onBeforeUnload可能是最好的跨浏览器解决方案,让用户有机会留在网站上并在离开前保存他们的更改。

<script language="JavaScript">
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        return "Please click Update. Unsaved changes will be lost.";
    }
</script>

尝试将用户锁定到您的网站而不选择离开是非常不好的做法,这就是为什么任何主要的Web浏览器都不支持它的原因。如果您必须强迫用户做某事(并且您有权作为公司或其他人),那么您应该使用其他平台或将自定义插件写入用户的Web浏览器。但是对于一般用途,你无法锁定他们的浏览器。