Saltar al contenido

javascript: abre una URL en una nueva pestaña (y no en una nueva ventana)

septiembre 25, 2021
apple touch icon@2

Diferentes navegadores implementan el comportamiento de window.open de diferentes formas, especialmente con respecto a las preferencias del navegador de un usuario. No puede esperar el mismo comportamiento para window.open sea ​​cierto 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 puede obligar a los usuarios de Internet Explorer 11 a abrir ventanas emergentes de una determinada manera a través de window.open, como se menciona en la respuesta de Quentin.

En cuanto a los usuarios de Firefox (29), utilizando window.open(url, '_blank') depende de las preferencias de pestañas de su navegador, aunque puede obligarlos a abrir ventanas emergentes en una nueva ventana especificando un ancho y un alto (consulte la sección «¿Qué pasa con Chrome?» a continuación).

Vaya a la configuración de su navegador y configúrelo para abrir ventanas emergentes en una nueva ventana.

Explorador de Internet (11)

Cuadro de diálogo de configuración de Internet Explorer 1

Cuadro de diálogo de configuración de la pestaña de Internet Explorer

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 se abren las ventanas emergentes en una nueva ventana, no en una nueva pestaña.

También puede probar esos fragmentos de arriba en Firefox (29) con su preferencia de pestaña configurada para nuevas ventanas, y ver los mismos resultados.

No estoy 100% seguro, pero parece Chrome (versión 34.0.1847.131 m) no parece tener ninguna configuración que el usuario pueda usar para elegir si abrir o no ventanas emergentes en una nueva ventana o una nueva pestaña (como lo tienen Firefox e Internet Explorer). lo comprobé la documentación de Chrome para administrar ventanas emergentes, pero no mencionó nada sobre ese tipo de cosas.

También, una vez más, diferentes navegadores parecen implementar el comportamiento de window.open diferentemente. En Chrome y Firefox, especificar un ancho y alto forzará una ventana emergente, incluso cuando un usuario ha configurado Firefox (29) para abrir nuevas ventanas en una nueva pestaña (como se menciona en las respuestas a JavaScript se abre 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 establecen pestañas como preferencias de su navegador, ni siquiera especificar un ancho y alto forzará una nueva ventana emergente para ellos.

Entonces el comportamiento de window.open en Chrome parece ser abrir ventanas emergentes en una nueva pestaña cuando se usa en una onclick evento, para abrirlos en nuevas ventanas cuando se usan desde la consola del navegador (como lo notaron otras personas), y para abrirlos en nuevas ventanas cuando se especifiquen con un ancho y un alto.

Diferentes navegadores implementan el comportamiento de window.open de manera diferente con respecto a las preferencias del navegador de los usuarios. No puede esperar el mismo comportamiento para window.open sea ​​cierto en todo Internet Explorer, Firefox y Chrome, debido a las diferentes formas en que manejan las preferencias del navegador de un usuario.

close