我希望我的插件重新启动 Firefox,并在重新启动时显示一个预定义的网页。
当我通过 重启浏览器时nsIAppStartup.quit()
,我一直在查看的所有选项卡将在重启后重新打开。我试图通过在重新启动之前关闭所有选项卡来手动解决这个问题(请参见下面的代码),但我发现虽然我可以直观地确认所有选项卡都已关闭,但它们将在重新启动后再次出现。
我假设某些会话恢复机制在重新启动后重新创建它们。我发现了一些关于“SessionStore”(、、等)的偏好browser.sessionstore.max_tabs_undo
,browser.sessionstore.resume_from_crash
但切换它们似乎并不能帮助我解决这个问题。
我应该如何确保重新启动后关闭旧选项卡?谢谢!
// get gBrowser reference
var mainWindow = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser");
var gBrowser = mainWindow.gBrowser;
// build a collection of tabs to close
var tabsToClose = [];
for( var i = 0; i < gBrowser.mTabContainer.childNodes.length - 1; i++ ){
tabsToClose.push( gBrowser.mTabContainer.childNodes[i] );
}
// Open homepage in new tab
gBrowser.addTab(DEFAULT_HOMEPAGE);
// Close all tabs except for homepage
for( var i = 0; i < tabsToClose.length; i++ ){
gBrowser.removeTab( tabsToClose[i] );
}
// restart browser
Cc["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);