JavaScript: location.href pour ouvrir dans une nouvelle fenêtre / un nouvel onglet?


389

J'ai un fichier JavaScript d'un développeur tiers. Il a un lien has qui remplace la page actuelle par la cible. Je veux que cette page soit ouverte dans un nouvel onglet.

Voici ce que j'ai jusqu'à présent:

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

Quelqu'un peut m'aider?

Réponses:


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
A noter: la création d'un nouvel onglet ou d'une nouvelle fenêtre est décidée par le navigateur (paramétrage).
jAndy

4
@alex J'ai édité cette réponse pour rendre le bit important lisible. Si vous n'approuvez pas ma mise en forme, puis-je suggérer de raccourcir l'URL afin que le deuxième paramètre tienne dans la zone de défilement?
Phrogz

5
@ErickBest C'est incorrect. "_blank"garantit que la fenêtre / l'onglet sera nouvelle. Tout le reste (à part les autres noms spéciaux) donne à cette fenêtre le nom spécifique, et les liens ultérieurs vers cette cible réutiliseront la fenêtre. jsFiddle .
alex

2
Cela déclenche simplement une notification de blocage de pop-up dans les navigateurs modernes, ne simule pas du tout un _blankclic d'ancrage.
Nathan Hornby

22
popup empêché par le navigateur.
Jitendra Pancholi

24

Si vous souhaitez utiliser location.hrefpour éviter les problèmes de popup, vous pouvez utiliser une <a>référence vide puis utiliser javascript pour cliquer dessus.

quelque chose comme en HTML

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

Ensuite, javascript cliquez dessus comme suit

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

13
J'espérais pour cette solution, mais elle semble toujours déclencher le blocage des fenêtres contextuelles (au moins dans Chrome). J'ai le sentiment que le navigateur est conscient qu'il s'agit d'un clic javascript et le traite différemment.
Nathan Hornby

1
Merci Nathan. Vous avez tout à fait raison. Vous obtenez toujours un message de blocage contextuel. Je pensais l'avoir guéri. En théorie, cela aurait dû fonctionner. Andrew
andrew field

2
$("#anchorID")[0].click(); d'utiliser cette solution avec jquery.
theBell

1
Lol theBell, ce n'est pas jQuery si vous accédez directement à DOM Element[0]
Andre Figueiredo

7

Vous pouvez l'ouvrir dans une nouvelle fenêtre avec window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Si vous souhaitez l'ouvrir dans un nouvel onglet, ouvrez la page en cours dans deux onglets, puis laissez le script s'exécuter pour que la page en cours et la nouvelle page soient obtenues.


6

Pure js alternative à window.open

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

voici un exemple de travail (les extraits de stackoverflow ne permettent pas d'ouvrir)


0

Par exemple:

    $(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();

    });

Exemple de travail .


Popup empêché par le navigateur.
Millar248

1
Cela signifie que vous avez un bloc publicitaire ou quelque chose d'autre qui le bloque. Le comportement par défaut devrait fonctionner dans des conditions normales
Andrey Seregin

0

Vous pouvez également ouvrir un nouvel onglet appelant une méthode d'action avec un paramètre comme celui-ci:

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

La première et la deuxième ligne sont-elles nécessaires? Cela ne fonctionnera-t-il pas sans les variables reportDateet url?
Learn for Fun

Vous pouvez supprimer le paramètre (reportDate), mais la var url est importante car elle contient l'appel à la méthode d'action.
Primoshenko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.