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

发布于 2024-08-16 19:33:51 字数 318 浏览 10 评论 0原文

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

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

有什么方法可以将滚动条设置回文本框的底部吗?

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

I'm working on a Firefox extension, and I have created a multiline text box. When the user presses a button, I add text to the textbox by using (Javascript) TextBoxElement.value += "More Text";

The problem with this code, is that whenever more text is added, the textbox scrolls all the way to the top. With much testing, I haven't figured out how to make it scroll all the way to the bottom again. For some reason the scrollTop property is always 0, and setting it doesn't effect the scroll bar.

Is there any ways I can set the scroll bar back to the bottom of the text box?

My extension's purpose is to embed a small chat box. I'm using a textbox to store the chat history. Maybe using a textbox isn't the most efficient way, so any other suggestions would be great as well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饮惑 2024-08-23 19:33:51

Chatzilla 上的某人帮助我解决了这个问题。谢谢你!

不管怎样,解决方案如下:

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

Someone on Chatzilla helped me out on this one. Thank You!

Anyway, here is the solution:

var TextBoxElement = <TextBoxElement>;
var ti = document.getAnonymousNodes(TextBoxElement)[0].childNodes[0];
    ti.scrollTop=ti.scrollHeight;
眸中客 2024-08-23 19:33:51

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

这是示例代码:

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

The another solution is to move caret to the end of textbox content. Caret is controlled with selectionStart and selectionEnd properties (which can be set or get).

Here is the sample code:

var TextBoxElement = document.getElementById("myTextboxId");
var pos = TextBoxElement.value.length;
TextBoxElement.selectionStart = pos;
TextBoxElement.selectionEnd = pos;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文