Im Googlehagel
Alternativen zum Marktfhrer
------------------------------------------
c't 10/06, S. 176 (heb)

Bookmarklets.htm	Suchmaschinen-JavaScript-URLs als html-Datei


Bookmarklets fr Suchmaschinen

Die folgenden URLs bieten einen Schnellzugang zu Suchmaschinen. Sie werden einfach (beginnend mit "javascript:")
als Lesezeichen gespeichert. Beim Aufruf versuchen sie, markierten Text im Browserfenster einzulesen; ist kein Text 
markiert, erscheint ein Eingabefeld mit dem Text "Suche:". Anschlieend befragt das Skript die gewhlte Suchmaschine 
zum eingegebenen oder markierten Suchbegriff; die Treffer erscheinen in einem neuen Fenster.

Mgliche Probleme:

Bitte achten Sie darauf, dass JavaScript aktiviert ist. Eventuell kann ein restriktiver Popup-Blocker Probleme bereiten. Die Skripte wurden unter Firefox 1.5, Opera 8.5 und Internet Explorer 6 getestet.


Yahoo (nur deutschsprachige Treffer)
javascript:n='yahoo_de';url='http://de.search.yahoo.com/search?ei=UTF-8&p=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Yahoo (international)
javascript:n='yahoo';url='http://de.search.yahoo.com/search?ei=UTF-8&meta=0&p=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

MSN (nur deutschsprachige Treffer)
javascript:n='msn_de';url='http://search.msn.de:80/results.aspx?lf=1&q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

MSN (international)
javascript:n='msn';url='http://search.msn.de:80/results.aspx?q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Ask (nur deutschsprachige Treffer)
javascript:n='ask_de';url='http://de.ask.com/web?dm=lang&q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Ask (international)
javascript:n='ask';url='http://de.ask.com/web?dm=all&q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Google (nur deutschsprachige Treffer)
javascript:n='google_de';url='http://www.google.de/search?hl=de&meta=lr%3Dlang_de&q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Google (international)
javascript:n='google';url='http://www.google.de/search?hl=de&q=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Clusty
javascript:n='clusty';url='http://clusty.com/search?query=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Web.de
javascript:n='webde';url='http://suche.web.de/search/web/?su=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}

Seekport
javascript:n='seekport';url='http://seekport.de/q?query=';Q='';d=document;if(d.getSelection)Q=d.getSelection();else%20if(d.selection)Q=d.selection.createRange().text;if(Q=='')Q=prompt('Suche:','');if(Q){U='';cc=String.fromCharCode;for(n=0;n<Q.length;n++){c=Q.charCodeAt(n);if(c<128)U+=cc(c);else%20if((c>127)&&(c<2048)){U+=cc((c>>6)|192);U+=cc((c&63)|128)}else{U+=cc((c>>12)|224);U+=cc(((c>>6)&63)|128);U+=cc((c&63)|128)}}void(open(url+escape(U),n))}


Technische Hinweise:

Variable "n" bezeichnet den spteren Fensternamen, "url" die Adresse der Suchmaschine, "Q" den Suchstring.
Bis auf diese beiden Variablen sind alle Bookmarklets identisch.
Im Test hat sich herausgestellt, dass IE6 mit Skripten ber 500 Zeichen in der URL Probleme hat
(obwohl die URL-Obergrenze laut http://support.microsoft.com/default.aspx?scid=kb;en-us;Q208427 bei
2.083 Zeichen liegt) - dies als Hinweis fr eigene Modifikationen.
Mit document.getSelection() versucht das Skript, mit Standard-JavaScript markierten Text einzulesen; auf
window.getSelection() habe ich verzichtet, weil nicht alle Browser damit zurechtkommen. Beherrscht der
Browser nicht die Standardsyntax, versucht es das Skript mit der Internet-Explorer-Syntax document.selection.
Konnte kein Text aus der Markierung gelesen werden, fragt prompt() den Anwender nach einem Suchbegriff.
Enthlt danach die Variable Q einen Suchbegriff, wandelt das Skript den String in UTF-8 um, damit Umlaute
korrekt kodiert werden. Da es dafr seltsamerweise keine eingebaute JavaScript-Funktion gibt, wurde ein Skript
aus SelfHTML eingebaut: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm. Das Skript durchluft
Q Zeichen fr Zeichen, wandelt den String mit Hilfe von Bit-Verschiebungen um und schreibt ihn in die Variable U.
Schlielich ruft eine open-Funktion das Suchmaschinenfenster auf. Ihr werden die URL der Suchmaschine zusammen
mit dem URL-kodierten UTF-8-Suchstring bergeben sowie als zweiten Parameter der Fenstername n. Die open-Funktion
steckt in einem void-Operator, der den Rckgabewert von open unterdrckt.
