Javascript 动态滚动文本区域

Javascript 动态滚动文本区域,javascript,ajax,xhtml,textarea,Javascript,Ajax,Xhtml,Textarea,我的页面上有一个textarea html元素,可以通过ajax重新加载。每次都会返回整个textarea,而不仅仅是它的内容,而且内容会随着时间的推移而增长。与textarea一起,我返回以下javascript片段: <script type="text/javascript" > var textArea = document.getElementById('outputTextResultsArea'); textArea.scrollTop = textArea.scro

我的页面上有一个textarea html元素,可以通过ajax重新加载。每次都会返回整个textarea,而不仅仅是它的内容,而且内容会随着时间的推移而增长。与textarea一起,我返回以下javascript片段:

<script type="text/javascript" >

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

var textArea=document.getElementById('OutputExtresUltsArea');
textArea.scrollTop=textArea.scrollHeight;
在firefox 3.0.7中,它将滚动条放在文本区域的底部,允许我查看最新的输出。然而,在IE7中,我看到了不同的行为。滚动条按预期随内容向下移动,但一旦内容大于文本区域高度,滚动条就不再向下移动。IE似乎记住了元素的原始滚动高度,而不是新高度

如果有帮助的话,我正在使用xhtml过渡doctype。另外,如果可以通过jQuery实现这一点,那将很好,因为我可以访问它

提前谢谢


尼尔

作为一名快速黑客,您可以这样做:

textArea.scrollTop = 99999;
另一个选项是在计时器中尝试:

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

不要使用超时,而是在每个AJAX响应上调用该函数——只要您可以调整它

这将使您的浏览器免于不必要的超时。

使用jQuery,$(“textarea”)。scrollHeight(99999)在Firefox和Chrome上非常有效,但在IE上却没有。它似乎将它设置为textarea中的最大行数,而scrollHeight应该是像素数。(真棒的表演,很棒的工作)。但这似乎是可行的:

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

我认为这是假设字体高度为12px。我很想找到一种更强大/更直接的方法来实现这一点。

我最终将此用于Internet Explorer:

textArea.createTextRange().scrollIntoView(false);
这适用于其他浏览器:

textArea.scrollTop = textArea.scrollHeight;

要在示例中使用like textarea,请为您的textarea命名为“id=LiveTextArea

然后添加javascript的按钮(LiveTextArea是id名称):

LiveTextArea.scrollTop=LiveTextArea.scrollHeight

所以看起来:

var textArea=document.getElementById('OutputExtresUltsArea')

textArea.scrollTop=textArea.scrollHeight


现在,文本区域将在任何新条目上动态滚动插入符号。

谢谢,这确实有效!如果有其他建议,我会把这个问题留待讨论。我认为他已经在这么做了,否则它在Firefox中就不起作用了