Hallo,
ich habe ein Script, welches mit recht komplexen regulären Ausdrücken eine Seite nach Glossarbegriffen durchsucht und gefundene Begriffe durch DFN-Nodes ersetzt.
Das funktioniert an sich mittlerweile tadellos.
Leider habe ich das Ganze während der Entwicklung nur mit 5, 6 Glossarbegriffen getestet. Jetzt mußte ich aber bei einem Probelauf mit der kompletten Glossarliste (80 Begriffe) feststellen, daß meine Anwendung den Browser und den kompletten Rechner bei umfangreicheren Seiten für 1 Minute und mehr komplett auslastet und damit lahmlegt.
Ich habe den Eindruck, daß die Gesamtzeit etwas kürzer ist, d.h. die Performance etwas besser, wenn ich zwischendurch Test-Alerts ausgebe und damit das Script immer wieder unterbreche.
Frage 1 dazu: haltet Ihr das für plausibel, oder bilde ich mir das ein?
Nun bin ich auf den Gedanken gekommen, eine Art "Drossel" in meine Glossarfunktion einzubauen, die - wie die Test-Alerts - die Programmausführung bzw. die Schleifendurchläufe ein wenig bremst.
Mit setTimeout() und setInterval() komme ich nicht weiter, da es sich um eine rekursive Funktion handelt, die noch dazu ein Objekt als Parameter erwartet.
Grundsätzlich in aller Kürze Folgendes zu meinem Ansatz:
Mein Script basiert hauptsächlich auf einer rekursiven Funktion, die sich, beginnend bei einem bestimmten Knoten (einem DIV mit der id "content"), durch dessen Unterelemente hangelt und jeden Textknoten in einer for-Schleife, die über einen Array mit den Glossarbegriffen iteriert, nach den Glossarbegriffen durchsucht (mittels exec()).
Vermutlich stoße ich mit diesem Script schlicht und einfach an die Grenzen der Leistungsfähigkeit von Browsern.
Aber vielleicht habt Ihr ja Anregungen?
Thanx und ciao,
Andreas