13

我正在创建一个 Firefox 扩展...从菜单项在当前选项卡中打开 URL 的 javascript 是什么?

例如,在我的 overlay.xul 文件中,我有以下行:

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

但在 Firefox 中,当我单击菜单项时,它会打开 URL,但会破坏浏览器的整个布局。

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

4

4 回答 4

9

浏览了一圈后,我发现我必须将上面的代码替换为:

<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/>
于 2008-11-23T16:32:12.907 回答
8

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

openUILinkIn(url, where);

哪里可以是:选项卡、当前、窗口(以及其他一些很少使用的选项)

如果您想根据用户按下的键盘修饰符做出不同的行为,您可以使用另一个函数whereToOpenLink,它根据用户的偏好和修饰符返回选项卡/当前/窗口。

openUILinkIn(url, whereToOpenLink(event));

因此我使用:

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

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

<label value="google" class="text-link" href="http://google.com/" />
于 2009-05-30T23:02:00.443 回答
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');"/>

在新标签页中打开 URL。

于 2010-12-29T03:20:48.683 回答
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);
}
于 2009-04-07T09:33:14.453 回答