web-dev-qa-db-fra.com

Comment ouvrir une URL dans un nouvel onglet en utilisant JavaScript ou jQuery?

Comment ouvrir une URL dans un nouvel onglet au lieu d'une nouvelle fenêtre par programme?

244
Midhuna

Utilisez window.open():

var win = window.open('http://stackoverflow.com/', '_blank');
if (win) {
    //Browser has allowed it to be opened
    win.focus();
} else {
    //Browser has blocked it
    alert('Please allow popups for this website');
}

Selon l’implémentation des navigateurs, cela fonctionnera

Vous ne pouvez rien faire pour le faire ouvrir dans une fenêtre plutôt que dans un onglet.

401
FabianCook

C'est aussi simple que cela.

window.open('_link is here_', 'name'); 

Description de la fonction:

name est un nom de la fenêtre. Les noms suivants sont supportés:

  • _blank - L'URL est chargée dans un nouvel onglet. C'est la valeur par défaut.
  • _parent - L'URL est chargée dans le cadre parent
  • _self - L'URL remplace la page actuelle
  • _top - L'URL remplace tout jeu de cadres pouvant être chargé.
147
JaiSat

si vous voulez ouvrir tous les liens sur un nouvel onglet, essayez d'utiliser ce jquery

$(document).on('click', 'a', function(e){ 
    e.preventDefault(); 
    var url = $(this).attr('href'); 
    window.open(url, '_blank');
});
57
Lafif Astahdziq
 var url = "http://www.example.com";
 window.open(url, '_blank');
36
codebreaker

Vous pouvez facilement créer un nouvel onglet. faire comme ce qui suit:

function newTab() {
     var form = document.createElement("form");
     form.method = "GET";
     form.action = "http://www.example.com";
     form.target = "_blank";
     document.body.appendChild(form);
     form.submit();
}
26
Koffy

Je sais que votre question ne précise pas si vous essayez d'ouvrir toutes les balises dans une nouvelle fenêtre ou uniquement les liens externes.

Mais si vous souhaitez uniquement que des liens externes s'ouvrent dans un nouvel onglet, vous pouvez le faire:

$( 'a[href^="http://"]' ).attr( 'target','_blank' )
$( 'a[href^="https://"]' ).attr( 'target','_blank' )
12
Daniel Falabella