2

OnBeforeUnload で関数を呼び出して、true/false を返しています。ブラウザを閉じようとすると、ブラウザに「このページから移動してもよろしいですか」というメッセージが表示され、その下に「True/False」と書かれています。

コードは次のようなものです:-

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

JavaScript 関数は次のとおりです。

function unlockOperationon()
{
    return true;
}
4

1 に答える 1

2

unlockOperationonMain メソッドから「True/False」文字列を返す必要があります。の目的は、onbeforeunload意味のあるメッセージをユーザーに尋ねることであり、このメッセージのハンドラーはそのメッセージを取得するために使用されます。たとえば、ハンドラーから次の文字列を返す場合があります。「このページの未保存の変更はすべて失われます。」

このコメントで提案されたアイデアの実装は次のとおりです。

<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>
于 2012-10-17T08:29:37.373 に答える