Pergunta

Estou criando uma extensão do Firefox... qual seria o javascript para abrir uma URL na aba atual a partir de um item de menu?

por exemplo.no meu arquivo overlay.xul eu tenho a seguinte linha:

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

mas no firefox, quando clico no item de menu, ele abre a URL, mas bagunça todo o layout do navegador.

Qual é a maneira correta de fazer isso?

Foi útil?

Solução

Depois de navegar ao redor, eu descobri que eu tinha para substituir o código acima com este:

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

Outras dicas

De um item de menu você pode usar openUILinkIn.Funciona como:

openUILinkIn(url, where);

onde pode estar:guia, atual, janela (e algumas outras opções raramente usadas)

Se você quiser se comportar de maneira diferente com base nos modificadores de teclado que um usuário está pressionando, você pode usar outra função ondeToOpenLink, que retorna guia/atual/janela com base nas preferências e modificadores do usuário.

openUILinkIn(url, whereToOpenLink(event));

Assim eu uso:

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

Se você não estiver no contexto de um item de menu, talvez queira verificar outro XBL integrado que adiciona links e abertura de HREFs para um rótulo:

<label value="google" class="text-link" href="http://google.com/" />
<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 em nova guia.

Chamar esta função JS em seu comando

//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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top