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

Script Schrift vergrößern

Hallo wollte gerade das Script für die Schriftvergrößerung testen, aber irgendwie bekomme ich das nicht hin. Habe eine Joomla Website und dort die ... » mehr

von Gast am Donnerstag, 22. April 2010 13:32 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 22. April 2010 18:05 von alm

Hallo, damit kann man nicht allzu viel anfangen. Soviel ich weiss kann es zuweilen Probleme mit Tabellen-Layouts geben. Dort werden die ... » mehr

Javascript Schriftengröße: Problem bei URL-Übergabe im IE8

Hallo, ich hab eben das Javascript zur Schriftengröße eingebaut, klappt auch wunderbar auf Firefox, aber der IE 8 hat folgendes Problem: - wenn ich ... » mehr

von horst1234 am Dienstag, 23. Februar 2010 13:06 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Dienstag, 23. Februar 2010 14:07 von horst1234

Ich hab das charset im Header geändert (wie in der beispiel.html), und schon klappt es ... » mehr

Dynamisches einfügen von Zeilen in eine Spalte

Hallo, ich möchte gerne eine Zeile zwischen zwei andere Zeilen einfügen. Leider klappt folgender Versuch noch nicht so richtig. Vielleicht kann mir ... » mehr

von Bluecaspar am Mittwoch, 10. Februar 2010 18:09 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Donnerstag, 11. Februar 2010 10:37 von Bluecaspar

Ja genau, das war der Fehler. Vielen Dank Alex. Hier der korrigierte Code: <html> <head> <title> Test ... » mehr

Fenster in Frame erzeugen

Hallo, ich würde gerne ein Fenster in einer Webseite erzeugen. Das Fenster sollte dabei auf ein Frame begrenzt sein, sich also nicht aus diesen ... » mehr

von Bluecaspar am Dienstag, 9. Februar 2010 13:57 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Mittwoch, 10. Februar 2010 09:32 von Bluecaspar

Ja hervorragend, dass ist genau das was ich möchte. Danke ... » mehr

Problem: Kombination mit Lightbox 2

Hallo, ich bin gerade dabei die Galerie mit der Lightbox 2 zu verknüpfen, da ich die Bilder im Vollformat gerne in diesem schicken aufpoppenden ... » mehr

von GoPeter am Montag, 16. November 2009 23:38 in JavaScript - bisher 16 Antworten
Letzter Beitrag: Mittwoch, 18. November 2009 00:32 von GoPeter

Soo...hat lange gedauert...aber jetzt ist es endlich ... » mehr



¬ Insolvenzrecht