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