让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 相关文章推荐
javascript attachEvent绑定多个事件执行顺序问题
Oct 20 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
AngularJS入门教程之过滤器详解
Aug 19 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 Javascript
详解React-Todos入门例子
Nov 08 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
微信小程序定位当前城市的方法
Jul 19 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 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中this,self,parent的区别详解
2013/06/08 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
原生js实现分页效果
2020/09/23 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
关于python3中setup.py小概念解析
2019/08/22 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
Linux文件系统类型
2012/02/15 面试题
教师评优的个人自我评价分享
2013/09/19 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
白莲教口号
2014/06/18 职场文书
学前班教学反思
2016/02/24 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python