Kurz gesagt, JavaScript.
Der strenge Doctype wird lose als "streng Dokumentinhalt" und nicht als Verhalten, das das Zielattribut definiert, betrachtet. Es geht davon aus, dass der Benutzer entscheiden wird und vollständige Kontrolle darüber hat, wie Links in seinem Browser geöffnet werden.
Die Lösung besteht darin, JavaScript zu verwenden, um zu definieren, wie Verknüpfungen geöffnet werden. Sie können eine Klasse oder ein anderes Attribut verwenden, um eine JS-Bibliothek zu haben, sie zu zwingen, in einem neuen Fenster zu öffnen:
<a href="test.php" rel="external">my link</a>
So Ihr Skript könnte wie folgt aussehen:
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") == "external")
anchor.target = "_blank";
}
}
window.onload = externalLinks;
Das ist noch einfacher in jQuery:
$(function(){
$('a[rel=external]').attr('target', '_blank');
});
Weiß jemand, WARUM das Attribut "Ziel" kein Teil des strengen DOCTYPE ist? Persönlich bevorzuge ich HTML5, das immer noch dieses Attribut hat, aber ich bin nur neugierig ... –