2010-07-08 3 views
5

Ich mache etwas, wo ein Textfeld immer mehr Text angehängt wird. In Firefox, scrollt das Textfeld jedes Mal bis zum Anfang zurück. Ich habe zZ so etwas wie textarea.scrollTop=1000000;, um es jedes Mal zurück zu scrollen, wenn es sich ändert, aber es geht immer noch für eine sehr kurze Zeit nach oben. Gibt es eine Möglichkeit, damit aufzuhören?Wie halte ich ein Textarea vom Scrollen nach oben, wenn ich den Wert ändere

Antwort

0

i Ding, das Problem der Addition der Inhalte über das Skript ist, fügen Sie den Code, der Text zu Ihrem Textfeld anhängen

+0

den Code, den ich zu TextArea- hinzufügen verwenden ist 'textarea.value + = string' – tmim

+0

Versuch benutze 'textarea.value = textarea.value + string;', ich weiß, dass ich vor einiger Zeit das gleiche Problem hatte und die Methode zum Hinzufügen von neuem Inhalt geändert habe. und es funktioniert, aber ich bin mir nicht sicher, dass das das ist. –

2

ich in dieses Problem lief auch. Es passiert in IE und Firefox, aber nicht in Opera und Chrome.

Ich dachte an die momentanen Sprünge nach oben durch „double-buffering“ Änderungen an den Text versteckt:

  1. zwei Textfelder erstellen mit den exakt gleichen Eigenschaften und Abmessungen. Nur einer von diesen ist sichtbar; der andere ist versteckt.
  2. Text an die ausgeblendete Textfläche anhängen: setze [den Wert der verborgenen Textfläche] auf [den Wert der sichtbaren Textfläche] + [Text anhängen]. (Der Textbereich scrollt automatisch nach oben, aber dieser Textbereich ist ausgeblendet!)
  3. Scrollen Sie den versteckten Textbereich nach unten: Setzen Sie scrollTop auf einen hohen Ganzzahlwert wie (-1 >>> 1).
  4. Tauschen Sie das versteckte Textfeld mit dem sichtbaren aus. Jetzt wird der neue Text angezeigt, ohne nach oben zu springen!

Sie können die versteckten/sichtbaren Textbereiche tauschen durch eine von zwei Methoden:

  1. Verwenden absolute Positionierung der Textbereiche auf der jeweils anderen mit toggling their visible property in Verbindung zu setzen.
  2. Tauschen Sie die tatsächlichen DOM-Elemente. Ich bin nicht sicher, ob dies eine neue Art von "Flackern" einführt. Sie können ein div erstellen müssen, um das sichtbare Textfeld zu enthalten, um das Layout der Seite nicht gewechselt halten ...
Verwandte Themen