Abrindo um URL na guia/janela atual de uma extensão do Firefox
-
10-07-2019 - |
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?
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);
}