滚动TextArea中内容到底部的BT方法

简介:
记得很久以前玩聊天室的时候,新的聊天内容被显示出来后,滚动条总是会滚动到聊天内容窗口的底部。不过那种聊天窗口一般都是使用frame/iframe制作的,我们可以使用其document对象的scrollTop属性来滚动窗口。如果使用TextArea来记录递增内容,怎么达到同样的效果呢?

    今天下午一个同事说他的监控日志窗口是使用TextArea来做的,因为日志内容很多,也只有TextArea能保证效率。同时页面脚本还在后台以6Hz的频率在获取新的日志。他希望新的日志append到TextArea里后,TextArea内的内容能滚动到底部,就像我先前说的聊天室的内容显示那样,便于用户察看新增加的日志。当时我主观的想,TextArea可能没有控制滚动条的属性吧,于是查阅了一下MSDN中TextArea方法说明的那部分,发现它有scrollIntoView这个方法,于是很高兴 。可是使用后,发现毫无效果 。这更加使我认为TextArea不能控制其内容的滚动,于是郁闷了一会儿,想出了一个诡异的方法来解决了这个问题,演示如下:
 
   

 

    效果很简单是吧,可是看看代码,是不是真的很是BT呀。代码如下:

< script  language ="javascript" >
var  count  =   20 ;
function  Scroll()
{
    
var  txb  =  document.getElementById('txb');
    txb.value 
=  txb.value  +  '\r\nline '  +  ( ++ count);
    
var  psnObject  =  txb.Span;
    
if  (  ! psnObject )
    
{
        psnObject 
=  document.createElement('SPAN');
        txb.Span 
=  psnObject;
    }

    txb.appendChild(psnObject);
    psnObject.scrollIntoView();
}

</ script >

    由于scrollIntoView方法是滚动控件本身,所以我就添加一个span元素到TextArea底部并让其滚动,效果就达到了 。晚上回来觉得这个实现简直太别扭了,所以又仔细查了查MSDN关于TextArea的部分,结果发现TextArea元素居然有 scrollTop等一系列scroll相关属性!

    于是立即晕了个半死 yun.gif yun.gif yun.gif

    回头再想一下,为什么我一开始不去仔细的查看TextArea的属性呢?因为我觉得既然别人来问我,可能人家已经研究过了,可能实现起来确实有困难。所以在这种想法占主导地位的时候,很容易让自己从另类的角度解决问题,就是使用一些不寻常的方法。上次安装Whidbey的Beta2也是出于了同样的心理,结果使自己搞得很是麻烦。不过这也正好又再次提醒自己,以后解决任何问题,一定要从最基本的解决方案着手,从简到繁,做到事半功倍。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
Element UI之el-tabs的样式修改字体颜色、下划线、选中/未选中
Element UI之el-tabs的样式修改字体颜色、下划线、选中/未选中
3697 0
|
Web App开发 存储
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
758 0
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
|
Java
把javafx项目打包成exe文件详细过程
本文简化了将JavaFX项目打包成exe文件的过程,首先通过Idea将项目打包成jar包,然后使用GraalVM的native-image工具将jar包编译成exe文件,并展示了执行命令和运行结果。
891 0
把javafx项目打包成exe文件详细过程
<select>标记和<option>标签的常用属性
<select>标记和<option>标签的常用属性
609 3
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
1552 0
|
Java Linux Docker
【zookeeper 第二篇章】windows、linux、docker-compose 安装 zookeeper
本文介绍Zookeeper在不同环境下的安装方法。Linux安装需备好JDK,下载并解压Zookeeper后,复制`zoo_sample.cfg`为`zoo.cfg`,最后运行`zkServer.sh start`启动服务。Windows安装类似,通过`zkServer.bat`启动。使用Docker-Compose则需编写配置文件,并通过`docker-compose up -d`后台启动容器。
343 0
|
SQL Java 数据库连接
IDEA插件(MyBatis Log Free)
IDEA插件(MyBatis Log Free)
1191 0
|
数据安全/隐私保护
阿里云企业实名认证怎么操作-如何进行企业实名认证
阿里云企业实名认证共分为四种方式1、通过企业支付宝授权认证。2、通过企业法人支付宝授权认证。 3、通过企业法人扫脸认证。 4、通过企业银行打款方式认证。注意:如果您选择通过企业支付宝认证,您提供的支付宝的主体信息必须为该企业的信息。
12499 3
|
XML SQL Java
springboot 3 下连接 mysql 数据库以及整合 mybatis-plus
在 Springboot 3.x版本下整合 mysql 以及mybatis-plus,并进行简单测试,解决实现过程中所遇到的常见 Bug。
1761 0
springboot 3 下连接 mysql 数据库以及整合 mybatis-plus