【问题标题】:Keeping an HTA window from closing in VBScript or Javascript防止 HTA 窗口在 VBScript 或 Javascript 中关闭
【发布时间】:2014-12-31 14:53:04
【问题描述】:

我正在尝试在 HTA 中创建一个对话框,询问用户是否要在关闭前保存。这是我的代码:

<script type="text/vbscript">
     Function exit(text)
     exit = MsgBox(text, vbYesNoCancel, "Dialog box")
     End Function
</script>
<script type="text/javascript">
     window.onbeforeunload = function(){
          var x = exit("Do you want to save?");
          if(x == 6){     //Yes
               save();
          }
          else if(x == 2){     //Cancel
               //Here I want to keep the window from closing
          }
     }
</script>

注意:我已经在 javascript 中声明了 save() 函数,但我不会在这里发布它,因为它很复杂,而且它在代码中占用的空间比这个问题中真正重要的空间要多得多。

如果用户单击取消,是否有任何方法可以防止窗口关闭(我直接在代码中插入的 Javascript 函数或我在 VBScript 部分中声明并在 Javascript 部分中调用的 VBScript 函数) ?还是有其他方法可以做我想做的事?

【问题讨论】:

    标签: javascript vbscript hta


    【解决方案1】:

    由于 IE7 以来的一个错误,您无法以编程方式取消 HTA 中的窗口关闭。这取决于浏览器,无法通过 Quirks 模式进行更改。

    但是,您可以在关闭之前执行任何您需要的同步代码。实际上,保存更改的唯一方法是显示一个确认框,询问“退出前保存更改?”,就像您已经完成的那样。如果用户点击“确定”,则保存并关闭窗口,否则直接关闭。

    onbeforeunload 处理程序返回一个字符串将打开一个本机确认框,其中显示返回的文本,并询问用户是想留下来还是离开当前页面。不过,这不是很优雅的解决方案。

    【讨论】:

      【解决方案2】:

      来自 OnBeforeUnload 的帮助。

      window.event.returnValue = false;  
      

      True/False 或任何导致对话框出现的字符串。

      【讨论】:

      • 它不会阻止窗口关闭,它会询问“你真的要离开这个页面吗?假的”。
      最近更新 更多