Skip to content

XTHML strict-konformes Öffnen in neuem Fenster

In XTHML 1.0 strict und XTHML 1.1 ist das Attribut target für a-Elemente – Links – nicht mehr erlaubt.

Was tun, wenn man trotzdem einen Link in einem neuen Fenster aufmachen will?

Man verwendet JavaScript!

Der Link sieht dann z.B. so aus:
<a href="http://www.gungfu.de/facts/" rel="extern" >DenkZEIT</a>

Mit dem rel-Attribut gibt man an, in welcher Beziehung der Inhalt der Seite hinter dem Link zum Inhalt der verlinkenden Seite steht. Der Attributinhalt kann beliebig sein. Vorstellbar wären z.B. auch next oder previous.

Jetzt das JavaScript:

function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "extern")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;

In allen as mit der Beziehung ‘extern’ wird das target-Attribut DOM-seitig auf den Wert _blank gesetzt. Somit wird der Link in einem neuen Fenster geöffnet.

Cool ist dabei, dass man es dem Link kaum nicht anmerkt. Das rel-Attribut kann ja auch anderen Zwecken dienen.

Alternativen

Man könnte den Link noch so gestalten:
<a href="http://www.gungfu.de/facts/" onclick="window.open(this.href); return false;">DenkZEIT</a>

Das ist aber bei weitem nicht so schön, wie die oben beschriebene Lösung. Finde ich. Warum dürfte klar sein.

Die ‘schöne’ Lösung wird ausführlicher im Artikel New-Window Links in a Standards-Compliant World auf sitepoint beschrieben.


Nachtrag

Wie ich gerade in Links in new windows (target=”blank”) considered harmful von Anne gelernt habe, ist die oben beschriebene Lösung gar nicht soo gut:

Es wird JavaScript verwendet, um in einem XHTML-konformen Dokument ein Attribut einzufügen, dass es in XHTML gar nicht mehr gibt (bzw. geben sollte – deprecated). Es könnte einen Browser geben, der dieses Attribut daher nicht mehr unterstützt – zur Zeit aber wohl eher nicht.

Eine JavaScript-mäßigerere Lösung mit windows.open wird, laut Anne, jedoch noch weniger unterstützt, als die mit dem Attribut.

Prinzipiell sollte man von dem Öffnen von Links in separaten Fenstern/Tabs aber Abstand nehmen, weil das weder sonderlich ‘accessible’ noch ‘usable’ ist.

Der back-Button im geöffneten Fenster ‘funktioniert’ auch nicht mehr.

Post a Comment

Your email is never published nor shared. Required fields are marked *