2012-10-20 13 views
8

Wie öffne ich alle externen Links (URLs, die nicht mit der aktuellen Domain übereinstimmen) auf einem neuen Tab mit JavaScript, ohne jQuery zu verwenden?Externe Links in einem neuen Tab ohne jQuery öffnen

Hier ist die jQuery Ich bin Strom mit:

// Open external links in new tab 
$('a[href^=http]').click(function() { 
    var a = new RegExp('/' + window.location.host + '/'); 
    if (!a.test(this.href)) { 
     window.open(this.href); 
     return false; 
    } 
}); 

Antwort

16

reine 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

Perfekt, danke! – AlecRust

0

ein Ziel hinzufügen = "_ blank" mit dem Tag. Sie könnten dies während des Onload-Ereignisses im Vorprozessor (z. B. PHP) oder in einem JS tun.

+0

geklärte Frage. – AlecRust

+0

Suchen Sie nach einer Möglichkeit, das oben genannte in JavaScript auszuführen, ohne jQuery zu verwenden? Wenn ja, haben Sie eine andere Bibliothek, oder muss es einfach JS sein? –

+0

Plain JS wenn möglich. – AlecRust

0
 $("a[href^=http]").each(function(){ 
      if(this.href.indexOf(location.hostname) == -1) { 
      $(this).attr({ 
       target: "_blank", 
       title: "Opens in a new window" 
      }); 
      } 
     }) 

Dieses Skript sollte für Sie arbeiten.

UPDATE: versuchen, diese Geige http://jsfiddle.net/sameerast/GuT2y/

JS Version

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'; 
     } 
     } 
    }; 
+0

Verwendet das nicht die Funktion [.each()] (http://api.jquery.com/jQuery.each/) von jQuery? – AlecRust

+0

Es verwendet und fügen Sie das Ziel = "_ blank", dann klicken Benutzer auf den Link als neue Registerkarte/Fenster –

+0

Wie ich sage, verwendet Ihre Lösung nicht jQuery. Each() -Funktion? Meine Frage hat keine Verwendung von jQuery angegeben. – AlecRust

Verwandte Themen