replace( )
doob
- javascript
Hallo Leute,
ich arbeite gerade an einem Javascript und experimentiere mit der Funktion replace().
( http://de.selfhtml.org/javascript/objekte/string.htm#replace )
Das SelfHTML-Beispiel funktioniert so ja auch ganz prima.
Nun habe ich allerdings festgestellt, das mein Firefox (1.5.0.12) eine Fehlermeldung ausspuckt, sobald ich Variabeln einsetze...
vormals.replace is not a function
Im Explorer funktioniert alles einwandfrei.
In meiner Funktion soll Text, der vorher selektiert wurde, gegen Text, den ich im Aufruf übergebe, ausgetauscht werden.
die Funktion:
function mach_was(arg) {
if (window.getSelection) {
var stext = window.getSelection();
} else if (document.getSelection) {
var stext = document.getSelection();
} else if (document.selection) {
var stext = document.selection.createRange().text;
}
alert(stext);
vormals = stext;
var jetzt = vormals.replace(stext, arg);
alert(jetzt);
}
der Aufruf:
<input type="button" value="zeigen" onmousedown="mach_was('blabla');">
Wäre schön wenn mir jemand sagen könnte, ob dies grundsätzlich im FF (1.5.0.12) nicht funktioniert bzw. ob es andere Lösungsansätze gibt bzw. ob ich irgendetwas übersehen habe.
hAVE pHUN
doob
Hallo,
Wäre schön wenn mir jemand sagen könnte, ob dies grundsätzlich im FF (1.5.0.12) nicht funktioniert bzw. ob es andere Lösungsansätze gibt bzw. ob ich irgendetwas übersehen habe.
kommt drauf an, wie dein 'stext' aussieht.
replace() erwartet als 1. Parameter einen <http://de.selfhtml.org/javascript/objekte/regexp.htm@title=regulären Ausdruck>
alert( "abc".replace("abc","12"));
wird ersetzt.
var jetzt = vormals.replace(stext, arg);
kann Probleme machen, weil einzelne Zeichen von 'stext' als Sonderzeichen eines regulären Ausdrucks aufgefasst werden. Die müsstest du maskieren.
Die Arbeit ist aber schon getan. Suche hier im Archiv nach "toRegExpString"
Gruß plan_B
Hallo,
ich habe jetzt herausgefunden, das es gar nicht am "replace" lag...
Ich habe das Ganze über Ajax steuern wollen und FF hat offenbar irgendwie ein Problem damit, denn im IE und im Opera hat das alles funktioniert...
Ich habe jetzt eine reine JS-Lösung geschrieben und damit geht es in allen relevanten Browsern... ;-)
@ plan_B
Vielen Dank für Deinen Lösungsansatz!
Der von Dir genannte Thread ist sehr interessant...
Für meine Zwecke war das jetzt nicht relevant, aber ich habe mir den Code mal herauskopiert, irgendwann stolpere ich sicherlich noch einmal über ein ähnliches Problem, dann kann ich den gleich einsetzen... ;-)
hAVE pHUN
doob