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?

iamjonesy
fuente

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.
);
alex
fuente
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();
Andrew Field
fuente
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.

usuario616639
fuente
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)

Kamil Kiełczewski
fuente
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 .


fuente
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');
Primoshenko
fuente
¿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