9
votes

Liens externes ouverts dans un nouvel onglet sans JQuery

Quelle est la meilleure façon d'ouvrir tous les liens externes (URL qui ne correspondent pas au domaine actuel) dans un nouvel onglet à l'aide de JavaScript, sans utiliser jQuery?

Voici la jQuery que je suis actuel en utilisant: xxx


0 commentaires

4 Réponses :


0
votes

Ajouter une cible = "_ vide" à la balise. Vous pouvez le faire dans le pré-processeur (par exemple PHP) ou dans une JS lors de l'événement surcharge.


1 commentaires

Cherchez-vous un moyen de faire ce qui précède en JavaScript mais sans utiliser jQuery? Si oui, avez-vous une autre bibliothèque, ou doit-il être un JS simple?



0
votes
    var externalLinks = function(){
      var anchors = document.getElementsByTagName('a');
      var length = anchors.length;
      for(var i=0; i<length;i++){
        var href = anchor[i].href;
        if(href.indexOf('http://sample.com/') || href.indexOf('http://www.sample.com/')){
          return;
        }
        else{
          anchor[i].target='_blank';
        }
      }
    };

6 commentaires

Est-ce que cela n'utilise-t-il pas .Avoir () fonction?


Il a utilisé et ajoutez la cible = "_ vide", puis l'utilisateur clique sur elle va sur le lien comme nouvel onglet / fenêtre


Comme je dis, votre solution n'utilise-t-elle pas la fonction de JQuery ()? Ma question spécifique aucune utilisation de jQuery.


Il suffit de remplacer le chacun avec cliquez sur.


Stackoverflow.com/Questtions/10273890 / ... Essayez cela, pas de soucis de me donner un score négatif.


Déjà vu cette réponse et ce n'était pas un équivalent non-jquery de mon script de jQuery.



21
votes

Pure JS:

function externalLinks() {
  for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) {
    var b = c[a];
    b.getAttribute("href") && b.hostname !== location.hostname && (b.target = "_blank")
  }
}
;
externalLinks();


0 commentaires