在Firefox扩展中打开当前选项卡/窗口中的URL

时间:2008-11-23 15:35:21

标签: javascript firefox xul

我正在创建一个Firefox扩展...在menuitem的当前标签中打开URL的javascript是什么?

e.g。在我的overlay.xul文件中,我有以下一行:

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

但在firefox中,当我点击菜单项时,它会打开URL,但它会搞砸浏览器的整个布局。

这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:9)

浏览后,我发现我必须用以下代码替换上面的代码:

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

答案 1 :(得分:8)

从菜单项中,您可以使用 openUILinkIn 。它的工作方式如下:

openUILinkIn(url, where);

其中可以是:tab,current,window(以及其他一些很少使用的选项)

如果您希望根据用户按下的键盘修改器采取不同的行为,您可以使用另一个功能 whereToOpenLink ,它会根据用户首选项和修饰符返回标签/当前/窗口。

openUILinkIn(url, whereToOpenLink(event));

因此我使用:

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

如果您不在menuitem的上下文中,您可能需要查看另一个内置XBL,它为标签添加链接和打开HREF:

<label value="google" class="text-link" href="http://google.com/" />

答案 2 :(得分: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');"/>

在新标签页中打开网址。

答案 3 :(得分:1)

在您的命令

上调用此JS函数
//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);
}