2010-07-08 8 views
5

değiştirdiğimde en üste kaydırmasını nasıl engellerim Bir textarea'nın daha fazla metin eklediği bir şey yapıyorum. Firefox'ta, textarea kaydırma her seferinde en üste geri döner. Şu anda textarea.scrollTop=1000000; gibi bir şey var, her değiştiğinde geri kaydırmak için, ama yine de çok kısa bir süre için en üste çıkıyor. Bunu durdurmak için herhangi bir yolu var mı? Komut dizisi ile içerik eklemenin sorunudurBir textarea değerini

cevap

0

i şey de, bunu bu sorunu koştu sizin textarea

+0

textarea'ya eklemek için kullandığım kod 'textarea.value + = string' – tmim

+0

"textarea.value = textarea.value + string" işlevini kullanın; '' bir süre önce aynı sorunu yaşadığımı ve yeni içerik ekleme yöntemini değiştirdiğimi biliyorum. ve işe yarıyor ama bunun olduğundan emin değilim. –

2

metni ekleme kodunuzu yapıştırın. IE ve Firefox'ta olur, ancak Opera ve Chrome'da değil.

Ben textarea için " double-buffering" değişikliklerden üstüne anlık sıçramalar gizleme düşündü:

  1. aynı özelliklere ve boyutlara sahip iki textareas oluşturun. Bunlardan sadece biri görülebilir; diğeri gizlidir.
  2. Gizlenen metinle metin ekleyin: [gizli metinlerin değeri] [görünen metinlerin değeri] + [eklenecek metin] olarak ayarlayın. (Textarea otomatik üstüne kayar, ancak bu textarea gizli!)
  3. alt kısmına ilerleyin gizli textarea: gibi yüksek bir tamsayı değeri scrollTop set (-1 >>> 1).
  4. Swap görünür biriyle gizli textarea. Şimdi yeni metin gösteriliyor, zirveye tırmanıyor!

iki yöntemden birini kullanarak Gizli/görünür textareas takas olabilir:

  1. kullanımı mutlak konumlama toggling their visible property ile bağlantılı olarak birbirleri üstüne textareas yerleştirmek.
  2. Swap gerçek DOM unsurları. Bunun yeni bir tür "titreşim" ortaya çıkaracağından emin değilim. Görünen textarea içeren bir div oluşturmak zorunda kalabilirsiniz, böylece sayfanın düzeni değişmeyecektir ...