Zur Navigation

XHTML/HTML und das target Attribut [2]

11 C)-(iLL@

Hier der Vollständigkeit halber ein kleines Script, welches für alle Links, rel-Attribut 'external' ist, das target auf '_blank' setzt.

<script type="text/javascript">
anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
   rel = anchors[i].getAttribute("rel");
   if (rel == "external") {
      target = document.createAttribute("target");
      target.nodeValue="_blank";
      anchors[i].setAttributeNode(target);
   } 
}
</script>
Muss natürlich am Ende eingebunden werden, nachdem alle Links ausgegeben wurden.

Edit: Nach dem Hinweis von Jörg in diesem Thread abgeändert von Klassennamen auf das korrektere rel="external"

01.05.2006 00:07 | geändert: 04.05.2006 13:11

12 Käptn Blaubär

Hallo,

ich würde gerne, jedenfalls bei neuen Projekten, Variante strict verwenden (also ohne target="_blank").

Müßte aber auf Kunden Rücksicht nehmen, die Wert drauf legen, daß bei Klick auf Link ihre Website nicht verschwindet.

Gleichzeitig müßten die Links suchmaschinenfreundlich bleiben.

Zählen bei Google Links, die mit
onclick="window.open(this.href); return false;"
gekennzeichnet sind, hinsichtlich Linkpop und PR-Vererbung?

Oder wären solche Links bei Google genauso wertlos wie Links mit onclick-Attribut und Zählscript?

Konnte leider Matt Cutts nicht erreichen und wäre für gesicherte Antwort hier dankbar.

30.11.2007 21:58

13 Jörg Kruse

Eine gesicherte Antwort kann ich dir nicht geben. Letztes Jahr hat ein Zitat von Matt Cutts die Runde gemacht, welches von vielen SEOs so interpretiert wurde, dass onclick Links generell keine Pagerank vererben, siehe z.B. diesen Blogeintrag von Jojo:

Links mit onclick-Umleitung vererben keinen Pagerank

Allerdings bezog sich MC in dem genannten Zitat auf einen Fall, in welchem der Inhalt von href und onclick divergieren. Ob man die Nichtvererbung auf alle onclick Fälle verallgemeinern kann, halte ich von daher nicht für zwingend gegeben

Alternativ könntest du die Links mit rel="external" kennzeichnen und das in Beitrag 11 aufgeführte Script verwenden

30.11.2007 22:18 | geändert: 30.11.2007 22:25

14 Rudy

Alternativ könntest du die Links mit rel="external" kennzeichnen und das in Beitrag 11 aufgeführte Script verwenden
Ich verwende das Skript in dieser Form übrigens nicht mehr. Ich finde es inzwischen unschön, mit JS eine standardkonforme Seite mit nicht standardkonformen Attributen zu versehen. Ich verwende so wie Jörg im Forum:

<script type="text/javascript">
window.onload = function() {
  anchors = document.getElementsByTagName("a");
  for (var i=0; i<anchors.length; i++) {
    if (anchors[i].getAttribute("rel") == "external") {
       anchors[i].onclick = function() {
         window.open(this.href);
         return false;
       }
    }
  }
}
</script>

30.11.2007 23:03 | geändert: 30.11.2007 23:05

15 Käptn Blaubär

@Jörg, @Rudy, besten Dank.

Ich hatte insgeheim gehofft, daß das vielleicht schon mal einer getestet hat. Muß ich dann wohl selber machen und dann ein halbes Jahr oder noch länger warten, bis die Erkenntnis kommt.

Wenn man solche Verrenkungen machen muß wie in p11 und p14, um der reinen Lehre zu folgen, frage ich mich schon, was die reine Lehre wert ist. Fernab der Realität.

Da werde ich wohl beim target="_blank" bleiben, um auf der sicheren Seite zu sein, und auf die reine Lehre pfeifen.

01.12.2007 20:31

16 Rudy

Das target-Attribut ist in der Tat ein Streitpunkt. Das sollte aber nicht das gesamte XTHML Strict hinfällig machen... Du kannst ja immer noch XHTML transitional verwenden, und target anwenden - mache ich auch oft, wenn ich z.B. iframes brauche. Aber nur wegen target "auf die Lehre pfeifen" ^^ ... es gibt schlimmeres, z.B. Tabellenlayouts, die nicht mal auf HTML loose validieren... Der IE schaltet bei allen XHTML-Arten sowieso in den SCM, sodass die gröbsten Border-Box-Fehler ausbleiben. Wenn Du iframes oder target brauchst, nimm einfach Transitional - und Du kannst immer noch standardkonform bleiben.

01.12.2007 22:18 | geändert: 01.12.2007 22:23

17 Käptn Blaubär

Meine Entscheidung liegt zwischen HTML 4.01 transitional (wie bisher) oder HTML 4.01 strict (für neue Projekte). Mit "der reinen Lehre" hatte ich letzteres, also HTML 4.01 strict, gemeint.

Entscheidend sind für für mich (a) Kundenwunsch nach Öffnung der Linkziele in neuen Fenstern, (b) volle Wertigkeit der Links bei Google und (c) die richtige Anzeige auch in IE 6.

Falls (c) nur mit HTML 4.01 strict möglich sein sollte, werde ich mich für eine der in p11 und p14 gezeigten Verrenkungen entscheiden. Sonst bin ich auch mit HTML 4.01 transitional glücklich und zufrieden und brauche keine Verrenkungen zu machen.

Den Test werde ich durchführen, weil's mich interessiert (aber die 20 Euro für 1 Jahr Domain und Webspace ärgern mich schon).

W3C: Profilneurotiker, die solche Regeln auf Kosten der Praktiker festlegen: Wieviel Zeit die Beschäftigung mit dem Thema wohl insgesamt schon gekostet haben mag?

02.12.2007 00:57

18 Rudy

Du kannst HTML 4.01 Transitional nehmen, musst dann aber den Doctype mit URL definieren, damit der IE in den Standards Compliance Mode schaltet.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

W3C: Profilneurotiker, die solche Regeln auf Kosten der Praktiker festlegen: Wieviel Zeit die Beschäftigung mit dem Thema wohl insgesamt schon gekostet haben mag?

W3C sind Idealisten, weniger Profilneurotiker, auch wenn es einem so vorkommen kann. Die Überlegung dahinter: Strict gesprochen ist es nicht Aufgabe der Strukturierungssprache (X)Html, darüber zu bestimmen, ob ein Link ein neues Fenster öffnet oder im selben, sondern die Entscheidung des Users und dessen Möglichkeiten auf dem jeweiligen Medium, in dem die Website angezeigt wird. XHTML weiß nichts vom Client, derjenige, der die Website macht, kann das auch nicht wissen. Dass der Großteil der User auf grafischen Browsern auf PCs arbeiten, ist dabei egal.

Hingegen was eine Skript-Sprache wie JS macht, ist (X)HTML egal. Das ist ein anderer Standard, die Sprache läuft beim Client und kann sich an die dortigen Gegebenheiten anpassen.

02.12.2007 12:03 | geändert: 02.12.2007 12:23

19 Käptn Blaubär

@Rudy,

besten Dank (die 2. Zeile in der DOCTYPE-Angabe hätte ich vielleicht sonst vergessen).

Die Überlegung, die beim W3C dahintersteckt, ist mir schon klar. Aber dann kommt Google mit seinem burschikosen Matt Cutts, der mit seinem saloppen Beitrag Unklarheit stiftet, und die durchschnittlichen Webentwickler stehen im Regen und werden womöglich, ohne daß sie das wollen, zu Linkbetrügern, wenn sie statt target="_blank" inline
onclick="window.open(this.href); return false;"
verwenden.

Aber ich werde das trotz meines Ärgers mal testen und berichten, wenn es so weit ist.

02.12.2007 17:27

20 Rudy

Ich glaube nicht, dass Google maschinell fähig ist, eine nicht inversive JS-Methode wie aus p14 auszuwerten. Ich verwende auch auf Arbeit immer XHTML strict und eben <a href="http://anderedomain.com" rel="external">. Von Kunden habe ich noch keine Klagen gehört (die wissen ja nicht mal, wie man JS ausschaltet), eine Abstrafung wäre mir noch nicht aufgefallen. Wenn Du nichts riskieren willst, verwende p11, das fügt einfach das target hinzu, also kein onclick-Ereignis.

02.12.2007 18:07 | geändert: 02.12.2007 18:16