window.open
Não é possível abrir pop-ups de maneira confiável em uma nova guia em todos os navegadores
Navegadores diferentes implementam o comportamento de window.open
maneiras diferentes, especialmente no que diz respeito às preferências do navegador do usuário. Você não pode esperar que o mesmo comportamento window.open
seja verdadeiro em todo o Internet Explorer, Firefox e Chrome, devido às diferentes maneiras pelas quais eles lidam com as preferências do navegador de um usuário.
Por exemplo, os usuários do Internet Explorer (11) podem optar por abrir pop-ups em uma nova janela ou em uma nova guia. Você não pode forçar os usuários do Internet Explorer 11 a abrir pop-ups de uma certa maneira window.open
, como mencionado na resposta de Quentin .
Quanto aos usuários do Firefox (29), o uso window.open(url, '_blank')
depende das preferências da guia do navegador, embora você ainda possa forçá-los a abrir pop-ups em uma nova janela especificando largura e altura (consulte a seção "O que acontece com o Chrome?" Abaixo).
Demonstração
Vá para as configurações do seu navegador e configure-o para abrir pop-ups em uma nova janela.
Internet Explorer (11)
Página de teste
Após configurar o Internet Explorer (11) para abrir pop-ups em uma nova janela, como demonstrado acima, use a seguinte página de teste para testar window.open
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Observe que os pop-ups são abertos em uma nova janela, não em uma nova guia.
Você também pode testar esses trechos acima no Firefox (29) com sua preferência de guia configurada para novas janelas e ver os mesmos resultados.
E o Chrome? Implementa de forma window.open
diferente do Internet Explorer (11) e Firefox (29).
Não tenho 100% de certeza, mas parece que o Chrome (versão 34.0.1847.131 m
) não parece ter nenhuma configuração que o usuário possa usar para escolher se deseja abrir pop-ups ou não em uma nova janela ou em uma nova guia (como Firefox e Internet Explorer ter). Verifiquei a documentação do Chrome para gerenciar pop-ups , mas ela não mencionou nada sobre esse tipo de coisa.
Além disso, mais uma vez, diferentes navegadores parecem implementar o comportamento de maneira window.open
diferente. No Chrome e Firefox, a especificação de largura e altura forçará um pop-up, mesmo quando um usuário configurou o Firefox (29) para abrir novas janelas em uma nova guia (conforme mencionado nas respostas ao JavaScript abertas em uma nova janela, não na guia ) :
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
No entanto, o mesmo trecho de código acima sempre abrirá uma nova guia no Internet Explorer 11 se os usuários definirem guias como suas preferências do navegador, nem mesmo especificar largura e altura forçará uma nova janela pop-up para eles.
Portanto, o comportamento do window.open
Chrome parece ser abrir pop-ups em uma nova guia quando usado em um onclick
evento, abri-los em novas janelas quando usados no console do navegador ( conforme observado por outras pessoas ) e abri-los em novas janelas quando especificado com uma largura e uma altura.
Sumário
Navegadores diferentes implementam o comportamento de maneira window.open
diferente em relação às preferências do navegador dos usuários. Você não pode esperar que o mesmo comportamento window.open
seja verdadeiro em todo o Internet Explorer, Firefox e Chrome, devido às diferentes maneiras pelas quais eles lidam com as preferências do navegador de um usuário.
Leitura Adicional