Opening a URL in current tab/window from a Firefox Extension
Asked Answered
B

4

13

I am creating a Firefox Extension...what would be the javascript to open a URL in the current tab from a menuitem?

e.g. in my overlay.xul file i have the following line:

<menuitem label="Visit homepage" oncommand="window.location='http://www.somepage.com'"/>

but in firefox, when i click on the menu item, it opens the URL but it screws up the entire layout of the browser.

What's the correct way to do this?

Babby answered 23/11, 2008 at 15:35 Comment(0)
B
9

After browsing around, I found that I had to replace the above code with this:

<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/>
Babby answered 23/11, 2008 at 16:32 Comment(1)
One thing I'd note is you might want to create a JavaScript function that handles this, just in case you want to use it for other click events throughout your extension!Deandreadeane
B
8

From a menuitem you can use openUILinkIn. It works like:

openUILinkIn(url, where);

where can be: tab, current, window (and a few other seldom used options)

If you want to behave differently based on what keyboard modifiers a user is pressing, you can use another function whereToOpenLink, which returns tab/current/window based on the users preferences and modifiers.

openUILinkIn(url, whereToOpenLink(event));

Thus I use:

<menuitem label="Visit homepage" 
          oncommand="openUILinkIn('http://example.com/', whereToOpenLink(event))"/>

If you aren't in the context of a menuitem you might want to check out another built-in XBL that adds linking and opening HREFs for a label:

<label value="google" class="text-link" href="http://google.com/" />
Branching answered 30/5, 2009 at 23:2 Comment(2)
Where did you get the information this method from? I've been searching in vain for some actual documentation on what you can do with Javascript in a FF extension.Afterburner
@Zark developer.mozilla.org is the best place, though it can be tough to find your way around at first. Keeping developer.mozilla.org/en/Code_snippets bookmarked is always good.Fungal
C
2
<menuitem label="Visit Report Site" oncommand="var win = Components.classes['@mozilla.org/appshell/window-mediator;1']
.getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow('navigator:browser'); win.openUILinkIn('http://www.google.com', 'tab');"/>

Open URL in new tab.

Certification answered 29/12, 2010 at 3:20 Comment(0)
A
1

Call this JS functions on your commmand

//open a url current window:
function openUrl(url) {
content.wrappedJSObject.location = url;
newTabBrowser = gBrowser.selectedBrowser;
newTabBrowser.addEventListener("load", highlight, true);
}

//new tab
function openUrlNewTab(url) {
var win = Components.classes['@mozilla.org/appshell/window-mediator;1']
            .getService(Components.interfaces.nsIWindowMediator)
            .getMostRecentWindow('navigator:browser');
win.gBrowser.selectedTab = win.gBrowser.addTab(url);
}
Aleda answered 7/4, 2009 at 9:33 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.