Problem bei Suche in ausgewähltem Text

Robert Fischer

Erfahrenes Mitglied
Hallo,

ich habe ein Problem bei der Suche in einem ausgewähltem Text. Hier wird bei einem WYSIWYG-Editor ein Popup geöffnet in welchem gesucht werden soll. Normales Formular mit Eingabefeld für Suchwort ("search_for") im Formular "find_content".

Wenn kein Text ausgewählt wird, dann wird der Inhalt des gesamten WYSIWYG-Feldes durchsucht. Nach Absenden des Formulars wird die untenstehende Funktion gestartet.

Wird ein Ergebnis gefunden soll an diese Stelle gesprungen werden.

Hier der Code:

Code:
var range = window.opener.wysiwyg.document.selection.createRange().text;
var content = window.opener.wysiwyg.document.body.innerHTML;

if (range == "") {
     range = content;
}

function find_next() {
     var search_for = document.find_content.search_for.value;	

     if (search_for) {
         if (range.findText(search_for, 1000000000, matchtype())) {	       range.select();
         }
     }

     // range.findText(search_for);
     // range.select();
     // range.scrollIntoView(true);
}

Das Problem: Es erscheinen Fehlermeldungen wie "Objekt erwartet" oder "Das Objekt unterstützt ... nicht".

Wer hat Rat? Danke!
 
Zuletzt bearbeitet:
Hallo,

also versuchen wir´s mal :) Du verwendest
Code:
var content = window.opener.wysiwyg.document.body.innerHTML;
...
...
if (range.findText(search_for, 1000000000, matchtype()))

Frage: was macht Matchtype() ? Konnte nichts zu dieser Funktion finden. Ich habe in meinem Beispiel dann einfach "2" hergenommen.

Follgende Flags wären möglich:
Code:
Optional. Integer that specifies one or more of the following flags to indicate the type of search: 0 Default. Match partial words. 
1          Match backwards. 
2          Match whole words only. 
4          Match case. 
131072     Match bytes. 
536870912  Match diacritical marks. 
1073741824 Match Kashida character. 
2147483648 Match AlefHamza character.

Ansonsten musst du noch var content = window.opener.wysiwyg.document.body.innerHTML;
in var content = window.opener.wysiwyg.document.body.createTextRange(); umstellen, dann sollte es funktionieren... Beispiel ist im Anhang.

ciao
 

Anhänge

Danke für die Tipps, habe aber mittlerweile schon eine andere Lösung gefunden. Interessant sind aber vor allem die Flags > 4 zu denen ich bisher keine Infos hatte.

matchtype() setzt auch nur die Flags aus den gewählten Funktionen zusammen. Funktionier jetzt alles inkl. Ersetzen / Alles ersetzen - Dialog.
 

Neue Beiträge

Zurück