Links XHTML-konform in neuem Fenster öffnen


Picard oder Kirk?

Als ich mein Blog (endlich) auf XHTML umstellen wollte, hatte ich ja wie bereits erwähnt, erst mit der Transitional-Variante angefangen. Das hatte eigentlich nur einen einzigen Grund: Bei XHTML Strict ist in Links kein target-Attribut erlaubt. Ich will mich auch überhaupt nicht auf irgendwelche Diskussionen darüber einlassen, ob man als Webmaster den User bevormunden darf, indem man das Öffnen neuer Fenster erzwingt oder nicht. Dazu gibt es im Web Hunderte, Tausende und Millionen von Meinungen, Threads und Posts, die mich allesamt nicht interessieren. Am Ende bleibt es ja doch eine Frage des Geschmacks – so wie Apple oder PC, Windows oder Unix, Porsche oder Ferrari, Kaffee oder Tee, Picard oder Kirk.

Ich persönlich mag es überhaupt nicht, wenn ich auf einen externen Link klicke und dieser sich nicht in einem neuen Fenster/Tab öffnet, sodaß ich – je nachdem, wie lange ich noch auf der neuen Seite herumklicke – zigmal den „Zurück“-Button betätigen muß, um wieder zur Ursprungsseite zurück zu gelangen.
Dennoch entschied ich mich schließlich doch für XHTML Strict. Um trotzdem die target-Funktionalität beibehalten zu können, habe ich ein JavaScript geschrieben, das ich aus zwei anderen, die ich im Netz fand:“Strict HTML/XHTML and target=”_blank”(Qian Qin)“:http://www.qianqin.de/de/2008/06/11/strict-htmlxhtml-and-target_blank/ :“Open External Links in New Window Automatically(CSS Globe)“:http://cssglobe.com/post/1281/open-external-links-in-new-window-automatically , die mir aber beide nicht hundertprozentig zusagten, zusammengebastelt habe.

Dies ist das Ergebnis:

function externalLinks() {
	if(!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for(var i=0; i

Dieses Script kann man nun einfach in einer Textdatei speichern und diese z. B. externalLinks.js nennen. Dann bindet man sie nach folgendem Muster in den head-Bereich seiner Seite ein:


Von jetzt an verwendet man in seinen Links nicht mehr target="_blank", sondern rel="external". Alle auf diese Weise ausgezeichneten Links werden nun automatisch von unserem JavaScript in einem neuen Fenster geöffnet. (Für Benutzer mit deaktiviertem JavaScript verhalten sie sich einfach wie ganz normale Links und öffnen sich im selben Fenster.)


10 Antworten zu “Links XHTML-konform in neuem Fenster öffnen”

  1. PC, Windows, Porsche (although I don’t care very much about cars in general).
    There is absolutely no way to make me decide between coffee and tea, and the same goes for Picard and Kirk!

    The rest is quite easy: Sean Connery, on back, two pillows, desktop.
    (Reads quite funny if you take it out of its context.)
    I guess I would like a laptop though, if I owned one…

  2. neues Fenster und alte Rechtschreibung, Windoof/Linux/Unix, Audi 80, Milchkaffee und Sisco.
    Aber wie dem auch sei mit den Geschmäckern – tausend Dank für das Script, denn lieber zig Fenster als x-mal zurück-zurück-zurück…
    Grüßles – Rosie

  3. das geht auch knapper. sowohl im JS als auch im markup

    document.observe("dom:loaded", function() {
    	$$('a[rel=ex]').each(function(e){
      		e.onclick = function(){
            	window.open(this.href);
    		return false;   
            }   
    	});
    });
    
  4. Jaaa… Also, ob ich nun „ex“ oder „external“ schreibe – ich bevorzuge eigentlich immer extrem sprechende Bezeichner, von daher wählte ich „external“. Soviel Zeit muß sein. :)

    Und Dein JS ist gut und schön – wenn man ein Framework wie Prototype benutzt. Vielleicht benutzt man ja aber ein anderes – oder gar keins? ;) Sowas soll es tatsächlich noch geben (bei mir beispielsweise). :)

    Trotzdem danke für Deinen Hinweis, ist natürlich eine nette Abkürzung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert