保持HTA窗口不会关闭VBScript或Javascript

时间:2014-12-30 21:28:12

标签: javascript vbscript hta

我正在尝试在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函数) ?或者还有另一种方法可以做我想做的事情吗?

2 个答案:

答案 0 :(得分:2)

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

但是,您可以在关闭之前执行所需的任何同步代码。在实践中,保存更改的唯一方法是显示一个确认框,询问&#34;退出前保存更改?&#34;,因为您已经完成了。如果用户点击&#34;确定&#34;,保存并关闭窗口,否则只需关闭。

onbeforeunload处理程序返回一个字符串将打开一个本机确认框,显示返回的文本,并询问用户是否要继续,或离开当前页面。这不是一个非常优雅的解决方案。

答案 1 :(得分:0)

来自OnBeforeUnload的帮助。

window.event.returnValue = false;  

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