molily: Variablen statt Links?

Beitrag lesen

Wie meine Vorredner sagten, ist JavaScript nicht die geeignete Technik, um solche Informationen zentral auszulagern und mehrfach einzubinden. Ich möchte aber dennoch erklären, warum es zu diesem Verhalten kommt:

<a href="javascript:location.href = linkinnofact;">- innovation factory</a>
Wenn ich aber z.B. auf "Sternwarte" klicke (was sich auf der gleichen Seite befindet), wird das Ziel nur ganz kurz angezeigt und verschwindet dann grad wieder, dafür wird der Variableninhalt angezeigt.

Wenn du <a href="javascript:JavaScript-Ausdruck"> notierst, so wird der Ausdruck ausgeführt. Jeder Ausdruck hat eine Ergebnis. Das Ergebnis der Wertzuweisung ist der zugewiesene Wert. Wenn das Ergebnis etwas anderes als »undefined« ist, dann stellt der Browser dieses Ergebnis anstelle des aktuellen Dokuments dar. Beispiel:

<a href="javascript:'Bla!'">Zeigt »Bla!«</a>

Man muss bei der Verwendung von href="javascript:..." verhindern, dass der Ausdruck das Ergebnis undefined hat. Das geht mit dem <http://de.selfhtml.org/javascript/sprache/operatoren.htm#void@title=unären Operator void>, mit dem jeder beliebige Wert zu undefined »umgebogen« wird:

<a href="javascript:void 'Bla!'">Nichts passiert</a>

Bei einer Wertzuweisung entsprechend:

<a href="javascript:void(location.href = 'adresse.html')">Nichts passiert</a>

Doch wie gesagt geht man dieser Problematik am besten aus dem Weg, indem man auf href="javascript:" möglichst verzichtet - und die Funktionalität von Hyperlinks auch nicht von JavaScript abhängig macht.

Mathias