2008-11-23 58 views
14

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

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

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

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

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

回答

9

浏览各地后,我发现,我不得不更换这个上面的代码:

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

我会注意到的一件事是,您可能需要创建一个处理此功能的JavaScript函数,以防万一您希望将其用于整个扩展中的其他点击事件! – Alex 2010-10-20 13:01:52

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

从您可以使用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/" /> 
+0

你从哪里得到这个方法的信息?我一直在徒劳地寻找一些关于在FF扩展中可以用Javascript做什么的实际文档。 – Zarkonnen 2009-10-27 18:54:26

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。

相关问题