Hi Michael, Hi Andi!
Das war ne ganz schön harte Nuss! Der Teufel steckte wie immer im Detail!
Dank Andi's Hinweisen hab ich's geschafft, aber ganz ohne Rekursion und komplizierte Regexen! Hier der Code:
setTimeout(function(){
var $wort_liste = {
'die' : 'xxx',
'der' : 'yyy',
'das' : 'zzz',
'den' : 'nnn',
'des' : 'sss',
};
var $text_nodes = jQuery("#dokuwiki__content").find(":not(iframe)").contents().filter(function () {
return this.nodeType === Node.TEXT_NODE;
});
$text_nodes.each(function(){
str = this.nodeValue;
if ( str.trim() != '' ){
jQuery.each($wort_liste,function(key,val){
regex_key = new RegExp(key, 'g');
str = str.replace(regex_key,val);
});
this.nodeValue = str;
}
});
}, 50);
Zum Testen habe ich übrigens die hier enthaltene Wortliste erstellt, um die Ergebnisse auch auf bestehenden Wikiseiten sehen zu können. Zum Testen habe ich dann die Javascript-Funktion der Shortkeys-Browser-Erweiterung genutzt und dort einfach den Code, siehe oben, 1:1 reinkopiert. Die Einrichtung dieses Add-ons hatte ich hier im Forum mal ausführlich beschrieben. Das war schon lustig, die Wortersetzung direkt auf der offiziellen Startseite von DokuWiki testen zu können und dann damit durch das ganze Wiki zu browsen. (Man muss dann halt nach dem Laden der jeweiligen Seite immer noch den Shortcut drücken.) Also, es funktioniert auch in der /dokuwiki/conf/userscript.js
wie gewünscht. Und ich habe wieder viel gelernt!
Falls es jemanden interessiert, hier sind die HTML-Hintergründe, von denen Andi sprach, offiziell auch nochmal dargestellt.
LG, Christian