Für einen Link muss ein HREF-Ziel angegeben werden, damit er als verwendbares Anzeigeobjekt verwendet werden kann.
Die meisten Browser analysieren kein erweitertes JavaScript in einem
<A HREF=""
Tag wie:
<A href="JavaScript:var elem = document.getElementById('foo');"
Da das HREF-Tag in den meisten Browsern keine Leerzeichen zulässt oder Leerzeichen in% 20 konvertiert, entspricht das HEX einem Leerzeichen, wodurch Ihr JavaScript für den Interpreter absolut unbrauchbar wird.
Wenn Sie also ein A HREF-Tag zum Ausführen von Inline-JavaScript verwenden möchten, müssen Sie einen gültigen Wert für HREF FIRST angeben, der nicht zu komplex ist (kein Leerzeichen enthält), und dann das JavaScript in einem Ereignisattribut-Tag wie OnClick bereitstellen , OnMouseOver, OnMouseOut usw.
Die typische Antwort lautet:
<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>
Dies funktioniert einwandfrei, aber die Seite springt nach oben, da das Nummernzeichen / Hash-Tag sie dazu auffordert.
Wenn Sie lediglich ein Nummernzeichen / Hash-Tag in einem A HREF-Tag angeben, wird der Stammanker angegeben. Dies ist immer standardmäßig der obere Rand der Seite. Sie können einen anderen Speicherort angeben, indem Sie das NAME-Attribut in einem A HREF-Tag angeben.
<A NAME='middleofpage'></A>
Sie können dann Ihr A HREF-Tag ändern, um zu 'middleofpage' zu springen und das JavaScript im OnClick-Ereignis auszuführen, sobald dies wie folgt geschieht:
<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>
Es wird VIELE Male geben, in denen Sie nicht möchten, dass dieser Link herumspringt, also können Sie zwei Dinge tun:
<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>
Jetzt wird es beim Klicken nirgendwo hingehen, aber es könnte dazu führen, dass sich die Seite aus dem aktuellen Ansichtsfenster neu zentriert. Das ist nicht schön. Was ist der beste Weg, um Inline-Javascript mit einem A HREF bereitzustellen, ohne jedoch die oben genannten Schritte ausführen zu müssen? JavaScript: void (0);
<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>
Dies weist den Browser an, NIRGENDWO zu gehen, aber stattdessen das gültige JavaScript auszuführen: void (0); Funktionieren Sie zuerst im HREF-Tag, da es kein Leerzeichen enthält und nicht als URL analysiert wird. Es wird stattdessen vom Compiler ausgeführt. VOID ist ein Schlüsselwort, das, wenn es mit einem Parameter von 0 angegeben wird, UNDEFINED zurückgibt und keine weiteren Ressourcen verwendet, um einen Rückgabewert zu verarbeiten, der ohne Angabe der 0 auftreten würde (es ist speicherverwaltungs- / leistungsfreundlicher).
Als nächstes wird der OnClick ausgeführt. Die Seite bewegt sich nicht, es passiert nichts in Bezug auf die Anzeige.
javascript:
ist eines der vielen URI-Schemata: en.wikipedia.org/wiki/URI_scheme , likedata:
.