Firefox XUL 文本框:如何滚动到底部?

Posted

技术标签:

【中文标题】Firefox XUL 文本框:如何滚动到底部?【英文标题】:Firefox XUL textbox: How to scroll to the bottom? 【发布时间】:2010-12-31 22:27:25 【问题描述】:

我正在开发一个 Firefox 扩展,并且创建了一个多行文本框。当用户按下按钮时,我使用 (javascript) TextBoxElement.value += "More Text";

将文本添加到文本框

这段代码的问题在于,每当添加更多文本时,文本框都会一直滚动到顶部。经过大量测试,我还没有弄清楚如何让它再次滚动到底部。由于某种原因,scrollTop 属性始终为 0,并且设置它不会影响滚动条。

有什么方法可以让滚动条回到文本框的底部?

我的扩展程序的目的是嵌入一个小型聊天框。我正在使用文本框来存储聊天记录。也许使用文本框不是最有效的方式,所以任何其他建议也很好。

【问题讨论】:

【参考方案1】:

另一种解决方案是将插入符号移到文本框内容的末尾。 Caret 由selectionStartselectionEnd 属性控制(可以设置或获取)。

这里是示例代码:

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

【讨论】:

【参考方案2】:

Chatzilla 上有人帮我解决了这个问题。谢谢!

无论如何,这里是解决方案:

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

【讨论】:

以上是关于Firefox XUL 文本框:如何滚动到底部?的主要内容,如果未能解决你的问题,请参考以下文章

自动滚动文本框到底部

如何将 RichTextBox 滚动到底部?

ExtJS,无法将我的文本区域滚动到底部

当新数据写入富文本框时,它会滚动到底部

更新时如何让文本区域保持滚动到底部

追加文本时如何防止文本框自动滚动?