Estou tentando "forçar" o Safari ou o IE7 a abrir uma nova página usando uma nova guia .
Programaticamente, quero dizer algo como:
window.open('page.html','newtaborsomething');
Estou tentando "forçar" o Safari ou o IE7 a abrir uma nova página usando uma nova guia .
Programaticamente, quero dizer algo como:
window.open('page.html','newtaborsomething');
Respostas:
Você não pode controlar isso diretamente, porque é uma opção controlada pelos usuários do Internet Explorer.
A abertura de páginas usando Window.open com um nome de janela diferente abrirá em uma nova janela do navegador como um pop-up OU abrirá em uma nova guia, se o usuário configurou o navegador para fazer isso.
Você pode, no Firefox funcionar, adicionar o atributo target = "_ newtab" à âncora para forçar a abertura de uma nova guia.
<a href="some url" target="_newtab">content of the anchor</a>
Em javascript você pode usar
window.open('page.html','_newtab');
Dito isso, concordo parcialmente com Sam. Você não deve forçar o usuário a abrir novas páginas ou uma nova guia sem mostrar a eles uma dica sobre o que vai acontecer antes de clicarem no link.
Deixe-me saber se ele funciona em outro navegador (não tenho a chance de experimentá-lo em outro navegador além do Firefox no momento).
Editar: referência adicionada para ie7 Talvez este link possa ser útil
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/
Aqueles de vocês que estão tentando usar o seguinte:
window.open('page.html', '_newtab');
deve realmente olhar para o método window.open.
Tudo o que você está fazendo é dizer ao navegador para abrir uma nova janela NOMEADA "_newtab" e carregar page.html nela. Cada nova página que você carregar será carregada nessa janela. No entanto, se um usuário tiver seu navegador configurado para abrir novas páginas em novas guias em vez de novas janelas, ele abrirá uma guia. Independentemente disso, está usando o mesmo nome para a janela ou guia.
Se desejar que páginas diferentes sejam abertas em janelas ou guias diferentes, você terá que alterar o NOME da nova janela / guia para algo diferente, como:
window.open('page2.html', '_newtab2');
Obviamente, o nome da nova janela / guia pode ser qualquer nome como página1, página2, página3, etc. em vez de _newtab2.
Cabe ao usuário decidir se deseja usar novas guias ou novas janelas, não é tarefa do desenvolvedor modificar esse comportamento. Eu não acho que você pode fazer isso.
Minha implicância - odeio quando os sites me forçam a abrir em uma nova janela / guia - sou perfeitamente capaz de tomar essa decisão sozinho. Particularmente quando eles fazem isso em javascript - isso é realmente inútil.
Você já experimentou como
var open_link = window.open('','_blank');
open_link.location="somepage.html";
Eu descobri no Chrome,
window.open('page.html','_newtab')
só funcionará uma vez.
Você pode usar:
window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));
Para abrir várias novas guias.
O código que uso com jQuery:
$("a.btn_external").click(function() {
url_to_open = $(this).attr("href");
window.open(url_to_open, '_blank');
return false;
});
Isso é útil para distinguir entre os eventos de clique de um pai em um filho. Usando este método, você não dispara o evento de clique do pai.
<a href="page.html" target="_blank">foo</a>
Isso funciona 100%
window.open('http://www.google.com/','_newtab' + Date.now());
Se você quiser, pode usar este método, que é um pouco hacky, mas oferece a funcionalidade desejada:
jQuery('<a/>', {
id: 'foo',
href: 'http://google.com',
title: 'Become a Googler',
rel: 'external',
text: 'Go to Google!',
target:'_blank',
style:'display:none;'
}).appendTo('#mySelector');
$('#foo').click()
Isso pode funcionar se você puder chamar um arquivo em lote (eu uso php com XP sp2 e IE8 ... você pode tentar o IE7, não sei). Use o seguinte (ou semelhante) em seu arquivo .bat para abrir o Windows: Iniciar "" C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com". Não há espaço entre as aspas e C: \ Progr ... etc. Em algum ponto, isso pode começar a abrir novas janelas (ou seja, target = "_ blank") em vez de novas guias, mas funciona até certo ponto; não amplamente testado. Para usar isso em um arquivo de lote normal (CMD.exe), você provavelmente precisa ter uma janela já aberta. Apenas compartilhando algo que encontrei. EDITADO para esclarecimentos.
<a href="http://www.google.com/" target="_self">New Tab Example</a>
Funciona no IE7.
Saudações,
Glenn