2008-11-23 8 views
14

Estoy creando una extensión de Firefox ... ¿cuál sería el javascript para abrir una URL en la pestaña actual desde un elemento de menú?Abrir una URL en la pestaña/ventana actual desde una extensión de Firefox

p. Ej. en mi archivo overlay.xul tengo la siguiente línea:

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

pero en firefox, cuando hago clic en el elemento de menú, se abre la URL, pero se atornilla hasta el diseño completo del navegador.

¿Cuál es la forma correcta de hacerlo?

Respuesta

9

Después de navegar alrededor, me encontré con que tenía para reemplazar el código anterior con esto:

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

Una cosa que destacaría es que podría querer crear una función de JavaScript que maneje esto, ¡en caso de que quiera usarla para otros eventos de clics en toda su extensión! – Alex

1

Llame a este JS funciones en su 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); 
} 
9

Desde un elemento de menú que puede utilizar openUILinkIn. Funciona como:

openUILinkIn(url, where); 

donde puede ser: pestaña, la corriente, la ventana (y algunas otras opciones rara vez utilizados)

Si desea comportarse de manera diferente sobre la base de lo que el teclado modificadores de un usuario está presionando, se puede usar otra función whereToOpenLink, que devuelve tab/actual/window en función de las preferencias y modificadores de los usuarios.

openUILinkIn(url, whereToOpenLink(event)); 

Así que utilizo:

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

Si no está en el contexto de un elemento de menú es posible que desee echa un vistazo a otra incorporado XBL que añade la vinculación y la apertura de una etiqueta HREF:

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

¿De dónde sacaste la información de este método? He estado buscando en vano documentación sobre lo que puedes hacer con Javascript en una extensión FF. – Zarkonnen

+0

@Zark https://developer.mozilla.org/ es el mejor lugar, aunque puede ser difícil encontrar el camino al principio. Mantener https://developer.mozilla.org/es/Code_snippets marcado como favorito siempre es bueno. – MatrixFrog

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');"/> 

Abrir URL en una nueva pestaña.

Cuestiones relacionadas