如何捕捉xulrunners关闭事件并取消它?

时间:2009-09-29 08:59:08

标签: event-handling xul xulrunner

当用户点击主窗口的关闭按钮并要求他们确认时,我想抓住我的xulrunner应用程序的关闭事件。如果他们没有确认,我想取消此关闭事件并继续申请。

我尝试过OnClose Event,但我无法取消它。

我该如何实现?

3 个答案:

答案 0 :(得分:3)

您可能需要两种不同的东西:

1)窗口关闭时提示。您可以使用“关闭”事件,例如:

<!-- Creates an unclosable window -->
<window onclose="return false" ...>

我刚检查过它确实有效。

2)提示应用程序何时退出。您可以通过nsIObserverService(quit-application-requested)观察example通知来执行此操作。

(1)更接近你的要求,因为当用户按下窗口上的[X]按钮时,事件的顺序如下:

  1. “close”事件被分派到窗口
  2. 如果没有阻止它,窗口关闭
  3. 如果没有窗口,并且它不是Mac OS X,则应用程序开始关闭,退出应用程序请求被发送。
  4. 如果没有观察者拒绝退出请求,则关闭进行。
  5. 另一方面,如果您将支票单独放在窗口的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);