Firefox扩展,从菜单中打开新前台选项卡中的本地文件

时间:2012-09-18 02:50:07

标签: firefox firefox-addon xul

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

例如:

MENU - >项目1

当选择Item1时,我想在前台打开一个新标签,其中包含/myextension/content/content.html中的内容。

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


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

1 个答案:

答案 0 :(得分:1)

我使用以下功能打开一个标签,确保它尚未打开并将焦点切换到它:

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

        }

    }

}

使用它像:

OpenAndReuseOneTabPerURL("http://yoururl.com");