代码之家  ›  专栏  ›  技术社区  ›  Ranjith

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

  •  1
  • Ranjith  · 技术社区  · 15 年前

    当用户单击主窗口的关闭按钮并请求确认时,我想捕获Xulrunner应用程序的关闭事件。如果他们不确认,我想取消此关闭事件并继续应用程序。

    我试过一次失败,但没能取消。

    我如何实现这一点?

    3 回复  |  直到 13 年前
        1
  •  3
  •   Nickolay    15 年前

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

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

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

    我刚检查过,它确实起作用了。

    2)当应用程序即将退出时提示。你可以通过观察 quit-application-requested 通过nsiObserver服务通知( example )

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

    1. “Close”事件被发送到窗口
    2. 如果没有什么阻碍,窗户就会关上。
    3. 如果没有窗口,而且不是Mac OS X,应用程序将开始关闭,请求的退出应用程序将被发送。
    4. 如果没有观察者拒绝退出请求,关闭将继续进行。

    另一方面,如果您只在窗口的onclose处理程序中进行检查,则退出应用程序的其他方法(在win/quit-on mac上退出文件)可能会触发它太晚(例如在关闭其他窗口之后)。此外,如果您的应用程序可以有多个“主”窗口(带有onclose逻辑),那么用户将不得不处理多个确认,这可能是您想要的,也可能不是您想要的。

    这里有一些对firefox代码的引用(如果我没有遗漏一些东西,它也应该与您的应用程序打包在一起),您可以研究和重用所采用的方法:

        2
  •  1
  •   Sean Vieira    14 年前

    对于其他人来说,你也可以这样做

    把这个放在主窗口

    onclose="if(CheckForClose() == false)return false"
    
    
    create this javascript function somewhere
    
    function CheckForClose()
       {
             var result = confirm('Do you want to close?');         
    
             return result;
       }
    
        3
  •  0
  •   foudfou    13 年前

    对于一个程序化的、与DOM级别2兼容的问题,请回答Nickolay的意见(1):

    window.addEventListener(
      'close', function (event) {
        // do stuff...
        event.preventDefault();
      },
      true);
    
    推荐文章