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?

iamjonesy
la source

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.
);
alex
la source
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();
champ andrew
la source
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.

user616639
la source
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)

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


la source
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');
Primochenko
la source
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