0

アドオンで Firefox を再起動し、再起動時に事前定義された Web ページを表示したいです。

経由でブラウザを再起動すると、表示しnsIAppStartup.quit()ていたすべてのタブが再起動後に再び開かれます。再起動する前にすべてのタブを閉じることで手動でこれに対処しようとしましたが (以下のコードを参照)、すべてのタブが閉じていることを視覚的に確認できますが、再起動後に再び表示されることがわかりました。

再起動後に、いくつかのセッション復元メカニズムがそれらを再作成していると思います。「SessionStore」( 、 など) に関するいくつかの設定を見つけましbrowser.sessionstore.max_tabs_undobrowser.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);   

4

1 に答える 1

1

私はあなたのコードを少し変更し、この解決策を思いつきました:

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、複数のタブを閉じるときに警告が表示されないようにすることです。私が触れなかった他のセッションストア設定。

それが役に立てば幸い。

于 2013-07-27T21:39:52.467 に答える