Antje Hofmann: JavaScript als Protokoll vs onClick

Beitrag lesen

Hallo,

Die einen notieren
<a href="javascript:funktion()">...</a>
also nutzen sie JavaScript als Protokoll.

dieser Weg verursacht sehr oft den unschönen Sanduhr-Effekt und das ist mehr als störend

Die anderen notieren
<a href="#" onClick="funktion()">...</a>
gehen also ueber einen Eventhandler.

diese Notation ist ein veraltetes Überbleibsel. Es war notwendig, um beispielsweise Browser wie den Netscape 4 zu unterstützen. Da heute alle modernen Browser Click-Eventhandler in den meisten Elementen unterstützen, ist dieses Verfahren überflüssig geworden.

solche Aufgabenstellungen können beispielsweise so gelöst werden:

<span onclick="funktion()" class="linkclass">Beschreibungstext</span>

.linkclass {cursor:pointer;}

Browser die onclick im Span-Tag verstehen, verstehen im Regelfall auch cursor:pointer
Das ist übrigens eine sehr bequeme Methode, veraltete Browser auszuschließen bzw. man kann diese Klassen-Eigenschaft auch mit JS setzen.

Ich persoenlich finde das Protokoll den saubereren Weg, in der Statuszeile sieht der Anwender was passieren wird und es gibt nicht dieses komischen Verweis auf einen leeren Anker. Doch unter den Mozilla Entwicklern gibt es Leute die das "Protokoll JavaScript" verfluchen, jetzt frage hier unter denen die sich auskennen, was ist der reinere/bessere/sauberere Weg?

:-) je nach Aufgabenstellung

Das Pseudoprotokoll JavaScript macht dann Sinn, wenn man beispielsweise auf Click eine Seite völlig neu mit JS erstellen möchte.

statt
<a href="javascript:x()">neue Seite zaubern</a>

function x() {
 document.open();
 document.write("dein Inhalt");
 document.close();
}

enthält die Funktion nur noch:

function x() {
 return "dein Inhalt";
}

Das ist schneller als document.write() und weniger fehleranfällig.

<a href="seite.html" onclick="window.open(this.href,'neuesFenster');return false;"> ...</a>

macht Sinn, wenn man z.B. alternative Inhalte anbieten möchte.

<a href="#" onclick="funktion();return false"> ... </a>

macht Sinn, wenn man noch für Netscape 4 schreiben muss, in allen anderen Fällen ist das blanker Unsinn und zeugt davon, dass der Entwickler noch an alten Gewohnheiten festhält bzw. was deutlich häufiger ist, nicht weiß, dass es auch anders geht.

Möchtest du wirklich sauber arbeiten, dann wähle keiner deiner Möglichkeiten, sondern gebe bei Bedarf dem Tagelement oder als Alternative einem Span-Element das Attribut onclick. Und wenn du wirklich Wert auf eine aussagekräftige Statuszeile legst, dann hindert dich niemand daran, dem Element zusätzlich die Eventhandler onmouseover und onmouseout zu verpassen. Da kannst du ganz gezielt eine Statusinformation setzen.

Auf alle Fälle ist "JavaScript-Anwendung: Bildergalerie" deutlich aussagekräftiger als javascript:Funktion();

Viele Grüße

Antje