当用户单击主窗口的关闭按钮并要求他们确认时,我想捕捉我的 xulrunner 应用程序的关闭事件。如果他们不确认,我想取消此关闭事件并继续应用程序。
我尝试了 OnClose Event ,但我无法取消它。
我该如何实施?
当用户单击主窗口的关闭按钮并要求他们确认时,我想捕捉我的 xulrunner 应用程序的关闭事件。如果他们不确认,我想取消此关闭事件并继续应用程序。
我尝试了 OnClose Event ,但我无法取消它。
我该如何实施?
您可能想要两种不同的东西:
1) 窗口关闭时提示。您可以使用“关闭”事件,例如:
<!-- Creates an unclosable window -->
<window onclose="return false" ...>
我刚刚检查过它确实有效。
2) 应用程序即将退出时的提示。您可以通过 nsIObserverService(示例)观察退出应用程序请求的通知来做到这一点。
(1) 更接近您的要求,因为当用户按下窗口上的 [X] 按钮时,事件顺序是这样的:
另一方面,如果您仅将检查放在窗口的 onclose 处理程序中,则其他退出应用程序的方式(Win 上的 File-Exit/Mac 上的-Quit)可能会太晚触发它(例如,在关闭其他窗口之后)。此外,如果您的应用程序可以有多个“主”窗口(带有 onclose 逻辑),用户将不得不处理多个确认,这可能是您想要的,也可能不是。
以下是对 Firefox 代码的一些参考(如果我没有遗漏什么,它也应该与您的应用程序一起打包),您可以研究并重用所采用的方法:
对于其他人来说,你也可以这样做
把它放在主窗口中
onclose="if(CheckForClose() == false)return false"
create this javascript function somewhere
function CheckForClose()
{
var result = confirm('Do you want to close?');
return result;
}
对于程序化且符合 DOM 级别 2 的问题,请回答 Nickolay 的评论 (1):
window.addEventListener(
'close', function (event) {
// do stuff...
event.preventDefault();
},
true);