Pergunta

Eu estou tentando "forçar" o Safari ou o IE7 para abrir uma nova página usando uma nova guia .

programaticamente Quero dizer algo como:

window.open('page.html','newtaborsomething');
Foi útil?

Solução

Você não pode controlar diretamente isso, porque é uma opção controlado por usuários do Internet Explorer.

páginas de abertura usando Window.open com um nome diferente janela irá abrir em uma nova janela do navegador como um pop-up, ou Abrir em uma nova aba, se o usuário configurou o navegador para fazê-lo.

Outras dicas

Você pode, no Firefox funciona, adicione o atributo target = "_ newtab" para a â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, eu concordo parcialmente com Sam. Você não deve forçar usuário para novas páginas abertas ou nova aba sem mostrar-lhes uma dica sobre o que vai acontecer antes clicar no link.

Deixe-me saber se ele funciona em outro navegador também (eu não tenho a chance de experimentá-lo em outro navegador que o Firefox no momento).

Edit: referência adicional para o IE7 Talvez este link pode ser útil
http: // social. msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

Aqueles de vocês tentando usar o seguinte:

window.open('page.html', '_newtab');

realmente deve olhar para o método window.open.

Tudo o que você está fazendo é dizer ao navegador para abrir uma nova janela com o nome "_newtab" e page.html carga para ele. Cada nova página você carregar será carregado nessa janela. No entanto, se um usuário tem o seu conjunto navegador para abrir novas páginas em novas abas em vez de novas janelas, ele vai abrir uma guia. Independentemente disso, é usando o mesmo nome para a janela ou aba.

Se você quiser páginas diferentes para abrir em diferentes janelas ou abas que você vai ter que mudar o nome da nova janela / aba para algo diferente, como:

window.open('page2.html', '_newtab2');

Claro que o nome para a nova janela / aba poderia ser qualquer nome como Página1, Página2, page3, etc., em vez de _newtab2.

É até o usuário se querem utilizar novas abas ou janelas novas, não é o negócio do desenvolvedor para modificar esse comportamento. Eu não acho que você pode fazê-lo.

Pet implicância minha - Eu odeio quando sites de me forçar para abrir em uma nova janela / aba - Sou perfeitamente capaz de tomar essa decisão por mim mesmo. Particularmente quando eles fazem isso em javascript -. Que é 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ó irá 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 de uso I com jQuery:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

Isto é útil para distinguir entre os eventos de clique de um pai em uma criança. Usando esse método, você não desencadear evento de clique do pai.

Se você quiser você pode usar esse método, que é um pouco hacky, mas iria oferecer 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 funciona 100%

window.open('http://www.google.com/','_newtab' + Date.now());

Isso pode funcionar se você pode chamar um arquivo de lote (eu uso o PHP com XP SP2 e IE8 ... você pode tentar IE7, não sei). Use o seguinte (ou similar) 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 extensivamente testada. Para usar isso em um arquivo de lote regulares (CMD.exe), você provavelmente precisará ter uma janela já aberta. Apenas compartilhar algo que eu tropecei. Editadas para esclarecimentos.

<a href="http://www.google.com/" target="_self">New Tab Example</a>

Obras em IE7.

Saudações,

Glenn

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top