JavaScript Void-Operator

Mit Hilfe von JavaScript Void, einem speziellen JavaScript-Operator, ist es möglich, einen von einer JavaScript-Anweisung gelieferten Rückgabewert zu unterdrücken. Anstelle des normalerweise geflieferten Rückgabewertes liefert der Void-Operator immer den Wert "undefined". In manchen Fällen führt das Liefern eines Rückgabewertes durch einen JavaScript-Befehl zu unerwünschten Nebeneffekten.

Eine im HREF-Attribut eines Links aufgerufene JavaScript-Funktion (oder auch eine andere JavaScript-Anweisung) muss stets "undefined" zurückliefern. Ist dies nicht der Fall, so lädt der Browser bestenfalls die Seite erneut, was in diesem Fall nicht gewollt ist und zu unnötiger Belastung des Webservers führt. Noch schlimmer ist es allerdings, wenn die Seite durch den Rückgabewert der JavaScript-Anweisung überschrieben wird – der ursprünglich angezeigte Seiteninhalt verschwindet dadurch und der Besucher wird leicht irritiert sein.

Dies ist insbesondere dann der Fall, wenn es sich bei dem zu implementierenden JavaScript-Script um ein sogenanntes Bookmarklet handelt. Bookmarkets sind JavaScript-Programme, die als Bookmarks abgespeichert werden. Ein Bookmarklet wird also – anders als normaler JavaScript-Code, der im HTML-Dokument gespeichert oder zumindest mit diesem verknüpft ist – meist lokal als Bookmark gespeichert. Eingeleitet wird ein solches Bookmarket durch das Pseudoprotokoll "javascript:". Auf diese Angabe folgt dann der, nach Anklicken des Bookmarks, auszuführe JavaScript-Code.

Da die verschiedenen Browser zur Speicherung von Bookmarks bestimmte Obergrenzen bezüglich der Länge der URL haben, ist ein Bookmarklet-Entlwickler dazu angehalten sich bei der Implementierung seines Bookmarklets kurz zu fassen. Es besteht aber auch die Möglichkeit diese jeweiligen Restriktionen zu umgehen, indem nicht das eigentliche Script als Bookmark gespeichert wird, sondern nur ein Verweis auf eine extern gespeicherte Script-Datei, die vom Browser geladen wird. Die JavaScript-Datei kann dabei nicht nur im Filesystem des lokalen Rechners oder Netzwerks liegen, sondern auch unter irgendeiner URL im Web gespeichert sein.

Normalerweise sind Bookmarklets nicht besonders umfangreich und mit Hilfe weniger JavaScript-Befehle implementiert. Dennoch stellen sie erweiterte Funktionalitäten zur Verfügung, die für den jeweiligen Zweck oft recht praktisch sind. So kann mit Hilfe von Bookmarklets beispielsweise der Inhalt der angezeigten Seite angepasst oder gar um zusätzliche Informationen bereichert werden.

JavaScript Void Beispiel

Im Beispiel unten wird ein Link definiert der, nachdem er angeklickt wurde, nach dem Verstreichen von einer Sekunde eine Dialogbox anzeigt, in welcher der Name der Browseranwendung ausgegeben wird. Die dafür benötigten Informationen werden aus dem Navigator-Objekt gewonnen. Mit setTimeout, wird der zeitverzögerte Aufruf der Dialogbox eingeleitet. SetTimeout ist, ebenso wie die Alert-Box eine Methode des vordefinierten JavaScript-Objekts Window. Als Rückgabewert liefert setTimeout eine ID, die dazu verwendet werden kann, das Timeout vorzeitig zu beenden.

Genau hier liegt allerdings das Problem. Wird die Methode setTimeout() ohne den Void-Operator notiert, so führt dies dazu, dass das aktuelle HTML-Dokument durch den von der Methode gelieferten Rückgabewert überschrieben wird. Der gewünschte Effekt wird so verfehlt.

Im zweiten Link dieses Beispiels wird einfaches ein Bookmarklet implementiert, welches Sie sich auch als lokalen Bookmark speichern können. Sinn des Bookmarklets ist es, eine Suche beim Suchmaschinenbetreiber Yahoo! durchzuführen. Dabei wird zunächst ein Eingabedialog angezeigt, welcher zur Eingabe einer Suchphrase auffordert. Nach der Eingabe wird (durch das Target-Attribut in einem neuen Browserfenster) direkt die HTML-Seite mit den gefundenen Suchergebnissen angezeigt. Dazu wird einfach über die href-Eigenschaft des JavaScript-Objekts Location die entsprechend durch das Bookmarklet zusammengestellte URL aufgerufen. Der Vorteil hierbei ist, dass nicht erst die Seite des Suchmaschinenbetreibers aufgerufen werden muss, sondern direkt das Suchergebnis zur Verfügung steht.

<a href="javascript:void(window.setTimeout ('alert(navigator.appName)', 1000))" title="">Name der Browseranwendung</a><br>
<a href="javascript:void(q=prompt('Suchphrase:',''));if(q)location.href='http://de.search.yahoo.com/search/de?p='+escape(q)" target="_blank" title="">Suchen bei Yahoo</a>

Name der Browseranwendung
Suchen bei Yahoo



¬ Insolvenzrecht