我正在学习如何编写 Firefox 扩展程序。我创建了一个新菜单,当单击菜单项时,我希望在前台打开一个新选项卡,其中包含内容目录中包含的本地文件。
例如:
菜单 -> 项目 1
选择 Item1 后,我希望在前台打开一个新选项卡,其中包含 /myextension/content/content.html 中的内容。
我在哪里可以找到如何做到这一点?
为了清楚起见,我可以让本地文件在新选项卡中打开,我只是不知道如何在新的焦点选项卡中打开。
我正在学习如何编写 Firefox 扩展程序。我创建了一个新菜单,当单击菜单项时,我希望在前台打开一个新选项卡,其中包含内容目录中包含的本地文件。
例如:
菜单 -> 项目 1
选择 Item1 后,我希望在前台打开一个新选项卡,其中包含 /myextension/content/content.html 中的内容。
我在哪里可以找到如何做到这一点?
为了清楚起见,我可以让本地文件在新选项卡中打开,我只是不知道如何在新的焦点选项卡中打开。
I use the following function to open a tab, make sure it hasn't already been opened and switch focus to it:
function OpenAndReuseOneTabPerURL(url)
{
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator("navigator:browser");
// Check each browser instance for our URL
var found = false;
while (!found && browserEnumerator.hasMoreElements())
{
var browserWin = browserEnumerator.getNext();
var tabbrowser = browserWin.gBrowser;
// Check each tab of this browser instance
var numTabs = tabbrowser.browsers.length;
for (var index = 0; index < numTabs; index++)
{
var currentBrowser = tabbrowser.getBrowserAtIndex(index);
if (url == currentBrowser.currentURI.spec)
{
// The URL is already opened. Select this tab.
tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index];
// Focus *this* browser-window
browserWin.focus();
found = true;
break;
}
}
}
// Our URL isn't open. Open it now.
if (!found)
{
var recentWindow = wm.getMostRecentWindow("navigator:browser");
if (recentWindow) {
// Use an existing browser window
recentWindow.delayedOpenTab(url, null, null, null, null);
} else {
// No browser windows are open, so open a new one.
window.open(url);
}
}
}
Use it like:
OpenAndReuseOneTabPerURL("http://yoururl.com");