javascript window.location en nueva pestaña

124

Estoy desviando al usuario a alguna URL, window.locationpero esta URL se abre en la misma pestaña del navegador. Quiero que esté abierto en una pestaña nueva. ¿Puedo hacerlo con window.location? ¿Existe otra forma de realizar esta acción?

Muhammad Imran Tariq
fuente
¿Es window.locationun requisito? ¿O se pueden ofrecer otras soluciones JS?
Khez
@Khez: se pueden ofrecer otros JS.
Muhammad Imran Tariq

Respuestas:

28

No creo que haya una forma de hacer esto, a menos que esté escribiendo una extensión de navegador. Puede intentar usar window.openy esperar que el usuario tenga su navegador configurado para abrir nuevas ventanas en nuevas pestañas.

Ian Oxley
fuente
442
window.open('https://support.wwf.org.uk', '_blank');

El segundo parámetro es lo que hace que se abra en una nueva ventana. No olvide leer el artículo informativo de Jakob Nielsen :)

Shane Reustle
fuente
10
pero ¿qué pasa si su navegador ha bloqueado la configuración en la ventana emergente? esto no funcionará.
pregmatch
@Alex meh ... no es realmente la respuesta "correcta". Al intentar esto en Firefox, donde evito las ventanas emergentes, este código falla.
TARKUS
Trabajé desde mi marcador en Edge 84.
Ryan Rodemoyer
14

Esto me funciona en Chrome 53. No lo he probado en ningún otro lugar:

function navigate(href, newTab) {
   var a = document.createElement('a');
   a.href = href;
   if (newTab) {
      a.setAttribute('target', '_blank');
   }
   a.click();
}
rodrigo-silveira
fuente
6

con jQuery es aún más fácil y también funciona en Chrome

$('#your-button').on('click', function(){
       $('<a href="https://www.some-page.com" target="blank"></a>')[0].click();    
})
relieve.melone
fuente
6

Incluso puedes usar

window.open('https://support.wwf.org.uk', "_blank") || window.location.replace('https://support.wwf.org.uk');

Esto lo abrirá en la misma pestaña si la ventana emergente está bloqueada.

Fanis Mahmalat
fuente
Increíble lógica OR
Hammad Sajid
1
¡Gracias! Esto funcionó muy bien.
thenomadicmann