让DIV的滚动条自动滚动到最底部的3种方法(推荐)


Posted in Javascript onSeptember 24, 2016

要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息。

聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条。

但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用 document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页 面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。

网上关于这个问题的资料很少,连CSDN上也说没有办法。

不死心,后来查DHTML手册得知DIV有个doScroll方法可以用来模拟滚动条点击,但很令人失望,到了我这里又是完全失效,难道又不被XHTML支持?

最后终于被我找到三种控制DIV内容滚动的方法:

方法一:

使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置

<script language="javascript1.2" type="text/javascript">
function onGetMessage(context) 
{
msg.innerHTML+=context;
msg_end.click(); 
} 
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;"></div>
<div><a id="msg_end" name="1" href="#1"> </a></div>
</div>

方法二:

利用DIV的scrollIntoView方法,将最底端滚动到可视位置 [list=1]<script

language="javascript1.2"
type="text/javascript">
function onGetMessage(context) 
{
msg.innerHTML+=context;
msg_end.scrollIntoView(); 
} 
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;"></div>
<div id="msg_end" style="height:0px; overflow:hidden"></div>
</div>

方法三:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="滚动条, scrollbar, 页面底部, 聊天窗口, " />
<meta name="description" content="有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最 下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。" />
<title>将滚动条(scrollbar)保持在最底部的方法 - 滚动条, scrollbar, 页面底部, 聊天窗口, </title>
</head>
<body>
<div id="example">
<h3 id="example_title">将滚动条(scrollbar)保持在最底部的方法</h3>
<div id="example_main">
<!--************************************* 实例代码开始 *************************************-->
<script type="text/javascript">
function add()
{
var now = new Date();
var div = document.getElementById('scrolldIV');
div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />';
div.scrollTop = div.scrollHeight;
}
</script>
<span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />

<div id="scrolldIV" style="overflow:auto; height: 100px; width: 400px; border: 1px solid #999;">
</div>
<input type="button" value="插入一行" onclick="add();">
<!--************************************* 实例代码结束 *************************************-->
</div>
</div>
</body>
</html>

以上就是小编为大家带来的让DIV的滚动条自动滚动到最底部的3种方法(推荐)的全部内容了,希望对大家有所帮助,多多支持三水点靠木~

Javascript 相关文章推荐
ext 同步和异步示例代码
Sep 18 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
Jan 11 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
Web安全测试之XSS实例讲解
Aug 15 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
Mar 27 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
js实现图片实时时钟
Jan 15 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 Javascript
浅谈js常用内置方法和对象
Sep 24 #Javascript
js原生跨域_用script标签的简单实现
Sep 24 #Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 #Javascript
用js实现简单算法的实例代码
Sep 24 #Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 #Javascript
AngularJS实现星星等级评分功能
Sep 24 #Javascript
完美的js div拖拽实例代码
Sep 24 #Javascript
You might like
php实现图片局部打马赛克的方法
2015/02/11 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
快速入门Vue
2016/12/19 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
Python作用域用法实例详解
2016/03/15 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python实现拼图小游戏
2020/02/22 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android