Siramon: & (JAVASCRIPT) XHTML strict und "target"

Beitrag lesen

Hallo Torsten,

XHTML strict und das Attribut "target" vertragen sich wirklich nicht, das hast du richtig erkannt. Ohne Javascript hast du keine Möglichkeit dem User vorzuschreiben ein neues Fenster zu öffnen.

Mit Javascript geht das folgendermassen: (fürs Archiv und für Dich *g*)

<a
    href="http://www.heise.de"
    |   onclick="return !(window.open(this.href,''));"
    |   |    >heise</a>
    |   |
   [1] [2]

[1] Die URL ganz normal im Attribut "href" definieren, in unserem Beispiel: http://www.heise.de

[2] "onclick" ist ein Event-Handler und erwartet Javascript/VBScript/JScript (ist das vollständig?). Nehmen wir Javascript und betrachten wir die Funktion ganz zu innerst:

window.open(this.href,'') (--> http://de.selfhtml.org/javascript/objekte/window.htm#open)

Erster Paramter: URL, in unserem Fall --> this.href
'this' greift auf das jeweilige DOM-Objekt (hier: Anchor-Tag) zu, und 'this.href' zeigt demnach auf das "href"-Attribut in diesem Anchor-Tag.

Zweiter Paramter: Target, in unserem Fall --> '', eben "blank/nix/nada" ;-)

Rückgabe: Die Methode "open" gibt hier eine Referenz auf das geöffnete window-Objekt zurück, darum ist "!(window.open(url, target))" FALSE wenn das Fenster nicht korrekt geöffnet wurde.

Warum jetzt aber der "return"-Befehl im "onclick"-Attribut?

<a href="http://www.heise.de" onclick="retrun false;">heise</a> [3]
<a href="http://www.heise.de" onclick="retrun true;">heise</a> [4]

Bei aktiviertem Javascript wird bei [3] nichts passieren, bei [4] wird der Browser zu heise.de navigieren. Ist Javascript deaktiviert führt und der Browser in beiden Fällen zu Heise.

Übersetzt auf das obige Beispiel [2] heisst das: Wenn das Fenster korrekt geöffnet wurde (via "onclick") wird FALSE zurückgegeben ("return false") und der href wird nicht ausgeführt. Wird das Öffnen des neuen Fensters durch Script-Fehler oder Popup-Blocker o.ä. verhindert, öffnet der Browser heise.de im alten Fenster. Ist Javascript ausgeschaltet wird der Event-Handler "onclick" überhaupt nicht beachtet und die Seite öffnet sich im alten Frame.

Viel Spass damit ;-)

Grüsse
Siramon,
     ja der Penner aus Nr. 14