Jump to Navigation

Striktes HTML/XHTML und target=”_blank”

Um es kurz zu halten: ES GIBT KEIN target=”_blank”! Es ist kein gültiges “Strict HTML” oder “Strict XHTML”. Es gibt eine große Diskussion im Web zu diesem Thema und ehrlich gesagt, interessiert mich diese nicht besonders. Ich sehe Gründe für Links in neuen Fenstern und ich will gültiges strikes XHTML nutzen. Wie als geht das? Ganz einfach, per Javascript. Ich hab mir schnell ein Javascript geschrieben, dass automatisch externe Links, sowie Links zu PDFs und Werbung erkennt und diese in einem neuen Fenster öffnet.Wenn man will, dass es einen speziellen Link auch in einem neuem Fenster öffnet, muss man nur rel="external" als Attribut vom Link hinzufügen. Beispiel:

<a href="http://www.junny.de/" rel="external">Junny's Blog</a>

Leute ohne Javascript oder Leute, die Javascript deaktiviert haben, sehen ganz normale Links, aber Leute mit Javascript bekommen einfach neue Fenster geöffnet. Das Script “Open In New Window” (oinw.js) gibt’s hier.

Einbinden kann man es ganz normal wie jede andere Javascript-Datei:

<script type="text/javascript" src="oinw.js"></script>

3 Responses to “Striktes HTML/XHTML und target=”_blank””

  1. cybercake:

    Good idea. However it is the new-window functions in JS should be banned, not the ‘_blank’, with which a new window is opened only by clicking on the link and this acts also as the user expects.

  2. Frieder:

    Hallo Qian,
    zu diesem Thema gibt es wirklich reichlich Abhandlungen im Netz.
    In meinem letzten Projekt in dem ich “jQuery” eingebunden habe (für Navi etc.) habe ich alle links die auf externe Seiten verweisen mittels einer kleinen Funktion in einer neuen Seite (_blank)geöffnet.
    //*******Funktion öffnet alle links die nicht mit “http://localhost” anfaengt in einem neuen Fenster ***********
    $(“a:not([href^='http://localhost'])”).click(function() {
    window.open($(this).attr(“href”), “newWin”);
    return false;
    }
    );
    ***********************************
    ‘localhost’ muß natürlich ersetzt werden durch URL auf der die Seite gehostet ist. Wie gesagt, funktioniert nur im Zusammenhang mit jQuery.
    Gruß aus Stuttgart

  3. Edde:

    Hi Qian,
    Wonderful solution! Thanks! All _blanks are gone!

    There seems to be an issue with IE7:
    In the footer of all pages I include a “Valid XHTML” link to http://validator.w3.org/check?uri=referer
    Of course this link opens in a new window and validates the page – thanks to you – as XHTML 1.0 Strict.

    Clicking the link in IE7 generates an error: w3.org claims the page can’t be validated because no headers were sent.
    This error occurs only in IE – Firefox, Google Chrome and Safari work fine. Also, IE DOES open the link in a new window, so that part of the script works fine.

    Probably IE is, once again, not sticking to web standards, but I thought you might want to know.

    Thanks again for this nice solution,

    Edde