Bio: Wir basteln uns eine JavaScript-Suche für Webseiten

Beitrag lesen

Sup!

<prolog>
Ich erfreue mich ja eines gewissen Bekanntheitsgrades, man könnte sagen, ich bin möglicherweise der Schrecken der Newbies, die Geissel der armen Hilfesuchenden... neulich hat Stefan irgendwann mal gepostet, man solle doch bitte hin und wieder Kompetenz beweisen... *hust*

Also, mit dem Gedanken, ein wenig Kompetenz zu beweisen, im Hinterkopf, setzte ich mich vor den PC. Von meinem nicht ganz entspiegelten Monitor viel mein Blick auf meinen wunderbaren Körper... spontan hatte ich keine Lust mehr zum Kompetenz-Beweisen... EHM... aber trotz dieser Ablenkung machte ich mich schliessich ans Werk. So bastelte ich mal eben kurz so eine Art JavaScript-Suche für Webseiten. Wollte ja neulich jemand haben. Natürlich sucht diese Suchmaschine nur in der Webseite, wo sie eingebaut ist, wegen der Sicherheit etc. Aber vielleicht kann man auch in Frames auf der gleiche Domain suchen. Nur benutze ich keine Frames ;-)
</prolog>

Man baut das Script in eine Webseite ein, und wenn das Suchwort in der Seite - ausserhalb eines Script- oder Head-Bereichs - auftaucht, dann wird das Eltern-Element umgefärbt. Das ist verdammt doof, wenn das Eltern-Element das Body-Element ist, sonst geht es eigentlich ganz gut.
Man könnte das sicher noch verbessern, und evtl. so Divs um das gefundene Wort basteln - aber da sollen sich dann mal andere beweisen... man verzeihe übrigens den schlecht formatierten Quelltext:

<html><head>
<title>bla</title>
<script type="text/javascript">
/* (C) 2002 by Peter "Bio" Asemann */
/* Copying and modification permitted without permission */
glob = new Array();

function seek(giver)
{
var d = giver;
var a;
/* alert ("v"+d.nodeValue+"t"+d.nodeType+"n"+d.nodeName); */
if (d.nodeValue && d.nodeName == "#text" )
{
 glob.push(d.nodeValue);
}
if (d.hasChildNodes && d.nodeName !="SCRIPT" &&d.nodeName !="HEAD")
{
for (a=0; a<d.childNodes.length;a=a + 1)
 {
  seek(d.childNodes.item(a));
 }
return true;
}
}

function gofind(wort)
{
while (glob.length > 0)
{
var popped=glob.pop();
 if (popped.search(wort) != -1) {alert("Gefunden!"+wort)}
}
}
</script>
</head>
<body>
Super Toller Suchtext<br>
Ich habe mich vertan!
<form name="box">
<input type="text" value="suchwort" name="suchwort">
<input type="button" value="Seek!" onClick="seek(document);gofind(document.box.suchwort.value);" />
</form>
<ol>
Gut, dass wir darueber geredet haben.
<li>Suchen Sie nach Waschmaschinen!</li>
<li>Mooren bohren ungeschoren an den Toren</li>
</ol>
</body>
</html>

Man sollte nach "Waschmaschinen" und nach "Suchtext" suchen - dann siehet man, wie gut bzw. schlecht das funktioniert.

Getestet ist das mit Mozilla 0.9.8. Ob minderwertige Browser wie der IE funzen, interessiert mich nicht.

Gruesse,

Bio