2010-01-03 1 views
0

Я работаю над расширением Firefox, и я создал многострочное текстовое поле. Когда пользователь нажимает кнопку, я добавляю текст в текстовое поле, используя (Javascript) TextBoxElement.value + = «Больше текста»;Текстовое окно Firefox XUL: как прокрутить до конца?

Проблема с этим кодом заключается в том, что всякий раз, когда добавляется текст, текстовое поле прокручивается до самого верха. С большим количеством тестов я не понял, как заставить его прокручиваться до самого конца. По какой-то причине свойство scrollTop всегда равно 0, и установка его не влияет на полосу прокрутки.

Есть ли способы установить полосу прокрутки в нижней части текстового поля?

Целью моего расширения является встраивание небольшого окна чата. Я использую текстовое поле для хранения истории чата. Возможно, использование текстового поля не является самым эффективным способом, поэтому любые другие предложения также будут отличными.

ответ

1

Кто-то на Chatzilla помог мне на этом. Спасибо!

Во всяком случае, вот решение:

var TextBoxElement = <TextBoxElement>; 
var ti = document.getAnonymousNodes(TextBoxElement)[0].childNodes[0]; 
    ti.scrollTop=ti.scrollHeight; 
0

Другое решение переместить каретку в конец содержимого текстового поля. Caret контролируется selectionStart и selectionEnd свойствами (которые можно установить или получить).

Вот пример кода:

var TextBoxElement = document.getElementById("myTextboxId"); 
var pos = TextBoxElement.value.length; 
TextBoxElement.selectionStart = pos; 
TextBoxElement.selectionEnd = pos;