Ich habe eine javascript-Funktion, mit der man Text (Newcode) in ein textarea-Feld namens message (innerhalb der Form theform) einfügen kann.
var selectedText = "";
function getActiveText (msg)
{
selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();
if (msg.createTextRange)
msg.caretPos = document.selection.createRange().duplicate();
return true;
}
function AddText (NewCode, theform) {
if (theform.message.createTextRange && theform.message.caretPos) {
var caretPos = theform.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
} else theform.message.value+=NewCode
setfocus(theform);
}
Die Form ist vereinfacht wie folgt aufgebaut:
<form>
<textarea name="message" rows=15 cols=60 wrap="soft" onChange=getActiveText(this) onclick=getActiveText(this) onFocus=getActiveText(this)></textarea>
</form>
<a href="#" onclick="JavaScript:AddText ('xyz', document.message);">xyz einfügen</a>
Der Link fügt über die Funktion einen beliebigen Text in das Feld AN DER AKTUELLEN CURSORPOSITION ein. Die Cursorposition bleibt erhalten.
Und nun mein Problem:
Wieso geht das unter MS Internet Explorer, aber NICHT unter Mozilla?! Dort wird der Text immer am Ende des Textfeldes eingefügt.
Und was muss ich machen, dass es mit jedem Browser geht?
var selectedText = "";
function getActiveText (msg)
{
selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();
if (msg.createTextRange)
msg.caretPos = document.selection.createRange().duplicate();
return true;
}
function AddText (NewCode, theform) {
if (theform.message.createTextRange && theform.message.caretPos) {
var caretPos = theform.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
} else theform.message.value+=NewCode
setfocus(theform);
}
Die Form ist vereinfacht wie folgt aufgebaut:
<form>
<textarea name="message" rows=15 cols=60 wrap="soft" onChange=getActiveText(this) onclick=getActiveText(this) onFocus=getActiveText(this)></textarea>
</form>
<a href="#" onclick="JavaScript:AddText ('xyz', document.message);">xyz einfügen</a>
Der Link fügt über die Funktion einen beliebigen Text in das Feld AN DER AKTUELLEN CURSORPOSITION ein. Die Cursorposition bleibt erhalten.
Und nun mein Problem:
Wieso geht das unter MS Internet Explorer, aber NICHT unter Mozilla?! Dort wird der Text immer am Ende des Textfeldes eingefügt.
Und was muss ich machen, dass es mit jedem Browser geht?
Kommentar