window.open
No se pueden abrir ventanas emergentes de manera confiable en una pestaña nueva en todos los navegadores
Los diferentes navegadores implementan el comportamiento de window.open
diferentes maneras, especialmente con respecto a las preferencias del navegador de un usuario. No puede esperar que el mismo comportamiento window.open
sea verdadero en todo Internet Explorer, Firefox y Chrome, debido a las diferentes formas en que manejan las preferencias del navegador de un usuario.
Por ejemplo, los usuarios de Internet Explorer (11) pueden elegir abrir ventanas emergentes en una nueva ventana o una nueva pestaña, no se puede obligar a los usuarios de Internet Explorer 11 a abrir ventanas emergentes de una determinada manera window.open
, como se alude en la respuesta de Quentin .
En cuanto a los usuarios de Firefox (29), el uso window.open(url, '_blank')
depende de las preferencias de pestañas de su navegador, aunque aún puede obligarlos a abrir ventanas emergentes en una nueva ventana especificando un ancho y una altura (consulte la sección "¿Qué pasa con Chrome?" A continuación).
Demostración
Vaya a la configuración de su navegador y configúrelo para abrir ventanas emergentes en una nueva ventana.
Internet Explorer (11)
Página de prueba
Después de configurar Internet Explorer (11) para abrir ventanas emergentes en una nueva ventana como se demostró anteriormente, use la siguiente página de prueba para probar 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 las ventanas emergentes se abren en una nueva ventana, no en una nueva pestaña.
También puede probar esos fragmentos anteriores en Firefox (29) con su preferencia de pestaña establecida en nuevas ventanas y ver los mismos resultados.
¿Qué hay de Chrome? Se implementa de manera window.open
diferente a Internet Explorer (11) y Firefox (29).
No estoy 100% seguro, pero parece que Chrome (versión 34.0.1847.131 m
) no parece tener ninguna configuración que el usuario pueda usar para elegir abrir o no las ventanas emergentes en una nueva ventana o una nueva pestaña (como Firefox e Internet Explorer) tener). Revisé la documentación de Chrome para administrar ventanas emergentes , pero no mencionó nada sobre ese tipo de cosas.
Además, una vez más, diferentes navegadores parecen implementar el comportamiento de manera window.open
diferente. En Chrome y Firefox, especificar un ancho y alto forzará una ventana emergente, incluso cuando un usuario haya configurado Firefox (29) para abrir nuevas ventanas en una nueva pestaña (como se menciona en las respuestas a JavaScript abierto en una nueva ventana, no en una pestaña ) :
<!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>
Sin embargo, el mismo fragmento de código anterior siempre abrirá una nueva pestaña en Internet Explorer 11 si los usuarios configuran pestañas como preferencias de su navegador, ni siquiera especificando un ancho y una altura forzará una nueva ventana emergente para ellos.
Por lo tanto, el comportamiento de window.open
en Chrome parece ser abrir ventanas emergentes en una nueva pestaña cuando se usa en un onclick
evento, abrirlas en ventanas nuevas cuando se usan desde la consola del navegador ( como lo han señalado otras personas ) y abrirlas en ventanas nuevas cuando especificado con un ancho y una altura.
Resumen
Los diferentes navegadores implementan el comportamiento de manera window.open
diferente con respecto a las preferencias del navegador de los usuarios. No puede esperar que el mismo comportamiento window.open
sea verdadero en todo Internet Explorer, Firefox y Chrome, debido a las diferentes formas en que manejan las preferencias del navegador de un usuario.
Lectura adicional