JavaScript: location.href para abrir en una nueva ventana / pestaña?


389

Tengo un archivo JavaScript de un desarrollador externo. Tiene un enlace que reemplaza la página actual con el objetivo. Quiero que esta página se abra en una pestaña nueva.

Esto es lo que tengo hasta ahora:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

¿Puede alguien ayudarme?

Respuestas:


932
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
Vale la pena mencionar: el navegador (configuración) decide si se crea una nueva pestaña o ventana .
jAndy

44
@alex Edité esta respuesta para hacer que el bit importante sea legible. Si no aprueba mi formato, ¿puedo sugerir acortar la URL para que el segundo parámetro se ajuste dentro de la región de desplazamiento?
Phrogz

55
@ErickBest Eso es incorrecto. "_blank"garantiza que la ventana / pestaña será nueva. Cualquier otra cosa (además de los otros nombres especiales) está dando a esa ventana el nombre específico, y los enlaces posteriores a ese objetivo reutilizarán la ventana. jsFiddle .
alex

2
Esto solo activa una notificación de bloqueo de ventanas emergentes en los navegadores modernos, no simula un _blankclic de anclaje en absoluto.
Nathan Hornby

22
popup evitado por el navegador.
Jitendra Pancholi

24

Si desea usar location.hrefpara evitar problemas emergentes, puede usar una <a>referencia vacía y luego usar javascript para hacer clic.

algo así como en HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

Luego javascript haga clic de la siguiente manera

document.getElementById("anchorID").click();

13
Tenía la esperanza de esta solución, sin embargo, todavía parece activar el bloqueo de ventanas emergentes (al menos en Chrome). Tengo la sensación de que el navegador es consciente de que es un clic de JavaScript y lo trata de manera diferente.
Nathan Hornby

1
Gracias nathan Tienes toda la razón. Aún recibe un mensaje de bloqueo de ventana emergente. Pensé que lo había curado. En teoría debería haber funcionado. Andrew
Field

2
$("#anchorID")[0].click(); para usar esta solución con jquery.
theBell

1
Lol theBell, no es jQuery si estás accediendo directamente a DOM Element[0]
Andre Figueiredo

7

Puede abrirlo en una nueva ventana con window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Si desea abrirlo en una pestaña nueva, abra la página actual en dos pestañas y luego permita que se ejecute el script para obtener tanto la página actual como la nueva.


6

Pura alternativa de js a window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

Aquí hay un ejemplo de trabajo (los fragmentos de stackoverflow no permiten la apertura)


0

Por ejemplo:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

Ejemplo de trabajo .


Popup evitado por el navegador.
Millar248

1
Significa que tienes un bloque de anuncios o algo más que lo bloquea. El comportamiento predeterminado debería funcionar en condiciones normales
Andrey Seregin

0

También puede abrir una nueva pestaña que llame a un método de acción con parámetros como este:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

¿Se requieren la primera y segunda línea? ¿No funcionará sin las variables reportDatey url?
Aprende por diversión el

Puede eliminar el parámetro (reportDate), pero la url var es importante porque contiene la llamada al método de acción.
Primoshenko
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.