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

Letzte Posts aus unserem Forum

Probleme mit iphone

Hallo, ich habe ein Problem bei der Darstellung einer Webseite. In allen Browsern hat das bisher bestens funktioniert außer beim iPhone und iPad, wo ... » mehr

von Finlay am Dienstag, 10. Juli 2012 19:45 in JavaScript - noch nicht beantwortet

Stream musik

Hallo, ich bin auf der Suche nach einem Script, mit dem ich einen Leser für Audio-Spuren in eine Html-Webseite einfügen kann. Ich brauche dabei ... » mehr

von Finlay am Sonntag, 22. Januar 2012 22:52 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Dienstag, 8. Mai 2012 16:04 von maharadja

ich habe das mal mit jplayer probiert und bei mir gings ... » mehr

Byte Array PDF im Browser anzeigen

Hallo, ich bekomme von einem Webservice ein PDF als Byte Array. Mit einem JsonP Request habe ich das Byte Array so wie es ist (als Array von Bytes) ... » mehr

von TiloS am Mittwoch, 11. April 2012 17:37 in JavaScript - noch nicht beantwortet

Überbelnd effect in javascript gallerie

ich habe hier einie gallerie die funktioniert problem los aber hat noch kein über belnd effect jedoch würde ich diesen gerne einfügen aber ich habe ... » mehr

von faebe am Freitag, 20. Januar 2012 20:19 in JavaScript - noch nicht beantwortet

XML per JavaScript verarbeiten - IE

Hallo! Vielen Dank für das super kommentierte Script-Beispiel zur Weiterverarbeitung von XML-Dateien per JavaScript: ... » mehr

von gn0me am Freitag, 11. März 2011 19:03 in JavaScript - noch nicht beantwortet


¬ Insolvenzrecht