首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >希望外接程序重新启动Firefox并显示新页,但是所有旧选项卡都会显示出来。

希望外接程序重新启动Firefox并显示新页,但是所有旧选项卡都会显示出来。
EN

Stack Overflow用户
提问于 2013-07-26 19:39:05
回答 1查看 190关注 0票数 0

我希望我的插件重新启动Firefox,并在重新启动时显示一个预定义的网页。

当我通过nsIAppStartup.quit()重新启动浏览器时,我所查看的所有选项卡都将在重新启动后重新打开。我试图通过重新启动之前关闭所有选项卡来手动处理这个问题(请参阅下面的代码),但我发现,虽然我可以直观地确认所有选项卡都关闭了,但在重新启动之后,它们将再次出现。

我假设某些会话恢复机制在重新启动后会重新创建它们。我发现了一些关于"SessionStore“(browser.sessionstore.max_tabs_undobrowser.sessionstore.resume_from_crash等)的首选项,但是切换它们似乎无助于解决这个问题。

如何确保旧选项卡在重新启动后关闭?谢谢!

代码语言:javascript
复制
// 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);   

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-27 21:39:52

我稍微修改了您的代码,并提出了以下解决方案:

代码语言:javascript
复制
var Cc = Components.classes;
var Ci = Components.interfaces;

var pref = Cc["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefService);
pref.setBoolPref("browser.tabs.warnOnCloseOtherTabs",false);

var mainWindow = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser");
var gBrowser = mainWindow.gBrowser;

var newTab = gBrowser.addTab("www.google.com");

// Easier solution than having two loops to identify the open tabs
gBrowser.removeAllTabsBut(newTab);

var nsIAppStartup = Ci.nsIAppStartup; // You were missing this part on your question
Cc["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);

您需要更改的首选项是browser.tabs.warnOnCloseOtherTabs,因此在关闭多个选项卡时不会收到警告。我没碰过的另一家芝士店。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17889652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档