Javascript Firefox重启

时间:2016-04-27 00:10:35

标签: javascript firefox

我从Firefox 38升级到46并且此脚本无法正常工作,因为它意味着它应该关闭并重新启动Firefox,但在升级之后它只会关闭。

const nsIAppStartup = Components.interfaces.nsIAppStartup;

// Notify all windows that an application quit has been requested.
var os = Components.classes["@mozilla.org/observer-service;1"]
    .getService(Components.interfaces.nsIObserverService);
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
    .createInstance(Components.interfaces.nsISupportsPRBool);
os.notifyObservers(cancelQuit, "quit-application-requested", null);

// Something aborted the quit process. 
if (cancelQuit.data)
    return;

// Notify all windows that an application quit has been granted.
os.notifyObservers(null, "quit-application-granted", null);

// Enumerate all windows and call shutdown handlers
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
    .getService(Components.interfaces.nsIWindowMediator);
var windows = wm.getEnumerator(null);
while (windows.hasMoreElements()) {
    var win = windows.getNext();
    if (("tryToClose" in win) && !win.tryToClose())
        return;
}
Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup)
    .quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);

1 个答案:

答案 0 :(得分:0)

Firefox 45中引入了一个错误,它破坏了一些用途 quit-application-granted,负责通知观察员(例如插件或 脚本)浏览器将关闭。

它应该在48及以上修复。有关详细信息,请参阅:

使用修复程序进行变更设置:

  

我们之前关闭了窗户,以改善感知关机   表现,但我们最终处于一个我们可能会错过的状态   每个大多数标签的最后约2秒的会话活动   窗口。这是因为我们正在删除会话更新   消息监听器和解决刷新Promises一次   为窗口触发的domwindowclosed通知。

     

隐藏窗口可让我们正确等待消息。

     

还有什么,我们甚至没有收集窗口状态   我们已经满脸通红,所以我们总是失踪了(最坏的情况   case)每个窗口约2秒的会话状态。这个地址   这一点。

     

- Bug 1284687 - Hide windows on shutdown while persisting session instead of closing them