0

我正在学习如何编写 Firefox 扩展程序。我创建了一个新菜单,当单击菜单项时,我希望在前台打开一个新选项卡,其中包含内容目录中包含的本地文件。

例如:

菜单 -> 项目 1

选择 Item1 后,我希望在前台打开一个新选项卡,其中包含 /myextension/content/content.html 中的内容。

我在哪里可以找到如何做到这一点?


为了清楚起见,我可以让本地文件在新选项卡中打开,我只是不知道如何在新的焦点选项卡中打开。

4

1 回答 1

1

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");

于 2012-09-18T08:30:40.960 回答