【问题标题】:Showing Return value of function "True/false" on OnBeforeUnload在 OnBeforeUnload 上显示函数“True/false”的返回值
【发布时间】:2019-08-01 05:50:57
【问题描述】:

我在 OnBeforeUnload 上调用一个函数并返回真/假。当我要关闭浏览器时,浏览器会显示消息“您确定要离开此页面吗?”,下面写着“真/假”。

代码是这样的:-

<body   onbeforeunload="javascript:return unlockOperationon()">
</body>

而 JavaScript 函数是:-

function unlockOperationon()
{
    return true;
}

【问题讨论】:

  • 当我关闭浏览器时,我必须执行一些服务器端功能。如果这些服务器端功能出现任何异常,我必须显示“操作不成功”的警报消息,在这种情况下不应关闭浏览器。否则关闭浏览器。

标签: javascript c# asp.net dom-events


【解决方案1】:

您需要从 unlockOperationonMain 方法返回“True/False”字符串。 onbeforeunload 的目的是向用户询问有意义的消息,以便该消息的处理程序用于获取该消息。例如,您可以从处理程序返回此字符串:“此页面上所有未保存的更改都将丢失。”

这是this comment中提出的想法的实现:

<script runat="server" >
     [System.Web.Services.WebMethod]
     public static string GetBeforeUnloadMessage()
     {
          return DateTime.Now.Second < 30 ? "Please, stay with us at least for a few seconds." : null;
     }
</script>
<head runat="server">
     <title></title>
     <script src="Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
     <script type="text/javascript">
          function checkServerBeforeUnload() {
               var result = null;
               $.ajax({
                    url: location.href + "/GetBeforeUnloadMessage",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: false,
                    success: function (response) {
                         result = response.d;
                    }
               });

               if (result) {
                    return result;
               }
          }
     </script>
</head>
<body onbeforeunload="return checkServerBeforeUnload()">
     <form id="form1" runat="server">
     <div>
          Page rendered at:
          <%= DateTime.Now.ToString("HH:mm:ss") %>
          <asp:Button runat="server" Text="Click Me" />
     </div>
     </form>
</body>
</html>

【讨论】:

  • 只是一个额外的说明,没有什么与你的答案相矛盾的:网页不会告诉用户用户不能关闭它们。他们只会通知用户为什么用户可能不想关闭它们,但如果用户仍然想关闭网页,它将被关闭,没有也不应该有任何方法来阻止它。
  • 当我关闭浏览器时,我必须执行一些服务器端功能。如果这些服务器端功能出现任何异常,我必须显示“操作不成功”的警报消息,在这种情况下不应关闭浏览器。否则关闭浏览器。
  • @Devesh,你不能阻止用户关闭浏览器。只是处理它。如果您需要在用户关闭浏览器之前进行一些服务器端检查,您可以对服务器进行同步异步调用,执行您需要的检查,如果您认为不应该关闭浏览器,则返回消息以解释用户为什么他必须留在此页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多