在onbeforeunload函数中使用自定义对话框确认重新加载页面。在对话框弹出之前,执行onbeforeunload函数中的代码。

7

当用户尝试重新加载页面时,我希望显示确认框。我在我的项目中尝试了这种方法,但它没有起作用。我已经创建了一个示例代码,甚至它也不起作用。有人可以告诉我哪里错了吗?我甚至没有得到确认框。我正在使用Chrome 33+。在弹出框之前,我需要在window.onbeforeunload中执行一些代码。

<!DOCTYPE>
<html>
<body>
    <script type="text/javascript">
        window.onbeforeunload = function()
        {
          var r = confirm("Are you sure you want to reload the page.");
          if(r)
          {
            window.location.reload();
          }
          else
          {

          }
        };

    </script>
</body>
</html>

请包含一个JSFIDDLE。 - devqon
你有检查过这个链接吗?https://dev59.com/22kw5IYBdhLWcg3wzd3Z - Bura Chuhadar
尝试这个例子:http://devzone.co.in/show-confirmation-box-page-refresh-page-unload-using-javascript/# - James Black
@JamesBlack 谢谢你,我之前尝试过它并且它是有效的。我只是想知道如何编写函数 window.onbeforeunload。 - Harsha Rama
1个回答

10

这将有效:

 window.onbeforeunload = function ()
 {
     return "";
 };

最近的Chrome版本(可能还有其他一些浏览器)在使用onbeforeunload时,除了返回简单的消息之外,不支持任何其他代码。至少在Chrome中,该函数中的其他代码似乎被忽略了。

以下方法可以解决这个问题。您可以返回与空字符串不同的内容(使其是自定义的),但这将导致重复的问题(您的消息+浏览器提供的消息),但没有什么可以阻止您这样做。

在IE9和最新版本的Chrome中进行了测试。它会启动一个警报框,询问用户是否要重新加载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接