【问题标题】:How do I stop a textarea from scrolling to the top whenever I change its value每当我更改其值时,如何阻止文本区域滚动到顶部
【发布时间】:2010-07-08 10:49:43
【问题描述】:

我正在制作一些东西,其中 textarea 附加了越来越多的文本。在 Firefox 中,textarea 每次都会向上滚动到顶部。 我目前有类似textarea.scrollTop=1000000; 的东西,可以在每次更改时向下滚动,但它仍然会在很短的时间内上升到顶部。 有没有办法阻止它这样做?

【问题讨论】:

    标签: javascript firefox textarea


    【解决方案1】:

    我也遇到了这个问题。它发生在 IE 和 Firefox 中,但不会发生在 Opera 和 Chrome 中。

    我想通过对文本区域的“double-buffering”更改来隐藏瞬时跳转到顶部:

    1. 创建两个具有完全相同属性和尺寸的文本区域。只有其中一个是可见的;另一个是隐藏的。
    2. 将文本附加到隐藏文本区域:将[隐藏文本区域的值]设置为[可见文本区域的值]+[要附加的文本]。 (textarea会自动滚动到顶部,但是这个textarea是隐藏的!)
    3. 将隐藏的文本区域滚动到底部:将 scrollTop 设置为高整数值,例如 (-1 >>> 1)。
    4. 将隐藏的文本区域与可见的交换。现在显示了新文本,没有跳到顶部!

    您可以使用以下两种方法之一交换隐藏/可见文本区域:

    1. 结合toggling their visible property,使用绝对定位将文本区域相互叠加。
    2. 交换实际的 DOM 元素。我不确定这是否会引入一种新型的“闪烁”。您可能必须创建一个 div 来包含可见的 textarea,这样页面的布局就不会不断变化...

    【讨论】:

      【解决方案2】:

      我是通过脚本添加内容的问题,粘贴将文本附加到文本区域的代码

      【讨论】:

      • 我用来添加到 textarea 的代码是textarea.value+=string
      • 尝试使用textarea.value = textarea.value + string;,我知道前段时间我遇到了同样的问题,我改变了添加新内容的方法。它成功了,但我不确定是不是这样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多