Hallo,
(...) Dieser Vorabtest ist natürlich dann ein entsprechend einfacher und schneller RegExp. Und nur wenn dieser Ausdruck matcht, wird der eigentliche komplexe Ausdruck angewendet.
Das Ganze sieht dann so aus:
for(k=0; k<glossary.length; k++) {
var tmpRegExp = new RegExp(glossary[k]["term"], "ig");
Sehe ich es richtig, dass du bei jedem Bearbeiten eines Knotens für alle Wörter im Glossar immer neue RegExp-Objekte erzeugst? Wieso erstellst du sie nicht alle einmal am Anfang und hängst sie an das Objekt-Arrayelement an, so wie beim term-(String)Objekt, sodass du immer wieder darauf zugreifen kannst?
if(!tmpRegExp.test(parentObj.childNodes[i].nodeValue)) continue;
Wenn du nur Wörter finden willst, wird der Ausdruck wohl nicht mehr als /Wort/ beinhalten. Dann würde auch indexOf() ausreichen und du bräuchtest auch für den folgenden Schritt keine regulären Ausdrücke.
var matched = glossary[k]["regexp"].exec(parentObj.childNodes[i].nodeValue);
Mathias