Search code examples
javascripthtmlfirefoxfirefox-addonsidebar

Firefox sidebar extension link loaded into a new browser tab. How-To?


I have a friefox sidebar extension. If its opened by clicking on the toolbar icon I load it with a webpage ( that I have authored ). Now, if the user clicks on the link on the webpage ( thats loaded into the sidebar ) I want the linked webpage to open up in a new tab of the main window. I tried with this in my webpage markup:

<a target="_content" href="http://www.google.com">Google</a>

But the link opens up in the tab that has focus and not in a new tab.

Please help.

Thanks.


Solution

  • Actually, there is no way to load a webpage ( whose link was in another webpage loaded into the sidebar extension ) onto a new tab in the browser. The only way is to use javascript. That has to execute under privileged conditions ( meaning as part of an extension ) like below:

    gBrowser.addTab("http://www.google.com/");
    

    EDIT:

    The above technique of adding a browser tab did not work in this case. According to this article code running in the sidebar does not have access to the main window. So first up I got access to the browser window before using gBrowser. Here is the code taken from the website that I used and works properly:

    var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    .getInterface(Components.interfaces.nsIWebNavigation)
    .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
    .rootTreeItem
    .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    .getInterface(Components.interfaces.nsIDOMWindow);
    

    After I got access to the browser window I accessed gBrowser through the getBrowser function like below:

    mainWindow.getBrowser().addTab("http://www.google.com/");
    

    The opens up a new tab in the main window browser.