2008-11-23 98 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。

相關問題