Liebe Selfer,
ich ergänze mit Javascript Inhalt in einer Textarea. Nach dieser Ergänzung "verrutscht" mir der Inhalt dieser Textarea an den Anfang, was bei längeren Inhalten extrem störend wird. Wie erreiche ich,
dass entweder
a) der Browser (MSIE>4, NS>4.x, opera egal) _nicht_ zurückscrollt,
oder
b) ich per Javascript wieder vor zur Position des Cursors scrolle?
Einen ersten ernüchternden Eindruck aus dem Archiv habe ich schon ("... es geht wohl nicht!"), aber auch einen Hinweis, wie man das mit MSIE4+ schaffen könnte.
Der Artikel ist hier zu finden. Da dort aber document.all verwendet wird, hier eine kleine Abwandlung:
----------------------------------------------------------------------------
<HTML><HEAD><TITLE>TextArea scrolling in IE4+</TITLE>
<SCRIPT>
function scrollToTop (element) { element.scrollTop = 0; }
function scrollToBottom (element) { element.scrollTop = element.scrollHeight; }
function setCaretToStart (input) {
if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.select();
}
}
function setCaretToEnd (input) {
if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(false);
range.select();
}
}
</SCRIPT>
<SCRIPT>var i = 3;</SCRIPT>
</HEAD>
<BODY>
<INPUT TYPE="button" VALUE="addLine and scroll to bottom" ONCLICK="document.getElementById('aTextArea').value += '\n' + i++ + ': Kibology'; scrollToBottom(document.getElementById('aTextArea'));">
<INPUT TYPE="button" VALUE="addLine and set caret to end" ONCLICK="document.getElementById('aTextArea').value += '\n' + i++ + ': Kibology'; setCaretToEnd(document.getElementById('aTextArea'));">
<BR>
<INPUT TYPE="button" VALUE="scroll to top" ONCLICK="scrollToTop(document.getElementById('aTextArea'));">
<INPUT TYPE="button" VALUE="scroll to bottom" ONCLICK="scrollToBottom(document.getElementById('aTextArea'));">
<BR>
<INPUT TYPE="button" VALUE="set caret to start" ONCLICK="setCaretToStart(document.getElementById('aTextArea'));">
<INPUT TYPE="button" VALUE="set caret to end" ONCLICK="setCaretToEnd(document.getElementById('aTextArea'));">
<BR>
<TEXTAREA ID="aTextArea" ROWS="3" COLS="20" WRAP="soft">1: Kibology
2: Kibology</TEXTAREA>
</BODY>
</HTML>
----------------------------------------------------------------------------
Mein Firefox macht (noch) nicht das, was der MSIE (schon) tut... Gibt es wirklich keine Lösung?
Liebe Grüße aus Ellwangen,
Felix Riesterer.