我正在尝试在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函数) ?或者还有另一种方法可以做我想做的事情吗?
答案 0 :(得分:2)
由于IE7以来的错误,您无法以编程方式取消HTA中的窗口关闭。这取决于浏览器,并且无法使用Quirks模式进行更改。
但是,您可以在关闭之前执行所需的任何同步代码。在实践中,保存更改的唯一方法是显示一个确认框,询问&#34;退出前保存更改?&#34;,因为您已经完成了。如果用户点击&#34;确定&#34;,保存并关闭窗口,否则只需关闭。
从onbeforeunload
处理程序返回一个字符串将打开一个本机确认框,显示返回的文本,并询问用户是否要继续,或离开当前页面。这不是一个非常优雅的解决方案。
答案 1 :(得分:0)
来自OnBeforeUnload的帮助。
window.event.returnValue = false;
True / False或导致出现对话框的任何字符串。