-1

我需要关闭窗口显示警报框,但在我的代码中每次都会使用 onbeforeunload 函数询问自动警报框。

<script type="text/javascript">
    window.onbeforeunload = function(evt) {
        var message = 'Are you sure you want to leave?';
        if (typeof evt == 'undefined') {
            evt = window.event;
        }       
        if (evt) {
            evt.returnValue = message;
        }
        return message;
    } 
</script>


<form action="test.php">
    <input name="sample" type="submit" value="submit" />
</form>
4

2 回答 2

0

我想你愿意只显示一次信息。全局变量是非常不可取的,但这可以解决问题。

<script type="text/javascript">
        var alertWasShown = false;
        window.onbeforeunload = function(evt) {
            if (alertWasShown)
                return;
            var message = 'Are you sure you want to leave?';
            if (typeof evt == 'undefined') {
                evt = window.event;
            }       
            if (evt) {
                evt.returnValue = message;
            }
            alertWasShown = true;
            return message;
        } 
    </script>
于 2013-08-12T07:45:15.577 回答
0

那是因为您form实际上是在离开页面....您onbeforeunload只需要在需要条件变量时停止 or 触发。

您的代码示例:

脚本

   var response = true; // true by default

   window.onbeforeunload = function(evt) {
      if(response){
         var message = 'Are you sure you want to leave?';
         if (typeof evt == 'undefined') {
            evt = window.event;
         }       
         if (evt) {
            evt.returnValue = message;
         }
         return message;
      }
   }

   function validateForm(){
      // form validation process...
      response = false;
   }

HTML

<form action="test.php" onsubmit="validateForm()">
   <input name="sample" type="submit" value="submit" />
</form>
于 2013-08-12T08:50:30.303 回答