Динамически прокрутки в textarea в

У меня есть элемент textarea html на моей странице, который перезагружается через ajax. Весь textarea возвращается каждый раз не только его содержание, и содержание растет с течением времени. Вместе с textarea я возвращаю следующий фрагмент javascript:

<script type="text/javascript" >

var textArea = document.getElementById('outputTextResultsArea');
textArea.scrollTop = textArea.scrollHeight;
</script>

в firefox 3.0.7 это помещает полосу прокрутки в нижней части textArea, что позволяет мне видеть последние выходные данные. Однако в IE 7 я вижу другое поведение. Полоса прокрутки перемещается вниз с содержимым по назначению, но как только содержимое больше высоты текстового поля, полоса прокрутки больше не перемещается вниз. Кажется, что IE запоминает исходную высоту прокрутки элемента, а не новую высоту.

Я использую переходный doctype xhtml, если это помогает. Также, если это может быть достигнуто с помощью jQuery это было бы нормально, как у меня есть доступ к этому.

спасибо заранее

Нил

4 ответов


как быстрый Хак вы можете просто сделать это:

textArea.scrollTop = 99999;

другой вариант-попробовать его в таймер:

setTimeout(function()
{
    var textArea = document.getElementById('outputTextResultsArea');
    textArea.scrollTop = textArea.scrollHeight;
}, 10);

используя jQuery, $("textarea").scrollHeight (99999) отлично работает в Firefox и Chrome, но не в IE. Похоже, что он устанавливает максимальное количество строк в текстовом поле, тогда как scrollHeight должен быть количеством пикселей. (Удивительное шоу отличная работа IE). Это, кажется, работает, хотя:

      $("textarea").scrollTop(99999)
      $("textarea").scrollTop($("textarea").scrollTop()*12)

Я думаю, что это предполагает высоту шрифта 12px. Мне хотелось бы найти более надежный/простой способ сделать это.


вместо использования тайм-аута, вызовите эту функцию на каждом ответе AJAX-при условии, что вы можете настроить его.

это освободит ваш браузер от ненужных тайм-аутов.


Я закончил использовать это для Internet Explorer:

textArea.createTextRange().scrollIntoView(false);

и это для других браузеров:

textArea.scrollTop = textArea.scrollHeight;