次の関数を使用してタブを開き、まだ開いていないことを確認して、フォーカスを切り替えます。
関数OpenAndReuseOneTabPerURL(url)
{{
var wm = Components.classes ["@ mozilla.org / appshell / window-mediator; 1"]。getService(Components.interfaces.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator( "navigator:browser");
//各ブラウザインスタンスでURLを確認します
var found = false;
while(!found && browserEnumerator.hasMoreElements())
{{
var browserWin = browserEnumerator.getNext();
var tabbrowser = browserWin.gBrowser;
//このブラウザインスタンスの各タブを確認します
var numTabs = tabbrowser.browsers.length;
for(var index = 0; index <numTabs; index ++)
{{
var currentBrowser = tabbrowser.getBrowserAtIndex(index);
if(url == currentBrowser.currentURI.spec)
{{
//URLはすでに開かれています。このタブを選択します。
tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes [index];
// *this*ブラウザウィンドウにフォーカスします
browserWin.focus();
見つかった=true;
壊す;
}
}
}
//URLが開いていません。今すぐ開いてください。
if(!found)
{{
var最近のウィンドウ=wm.getMostRecentWindow( "navigator:browser");
if(recentWindow){
//既存のブラウザウィンドウを使用します
最近のウィンドウ.delayedOpenTab(url、null、null、null、null);
} そうしないと {
//ブラウザウィンドウが開いていないので、新しいウィンドウを開きます。
window.open(url);
}
}
}
次のように使用します。
OpenAndReuseOneTabPerURL("http://yoururl.com");