让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 相关文章推荐
页面中iframe相互传值传参
Dec 13 Javascript
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
May 23 Javascript
JS实现往下不断流动网页背景的方法
Feb 27 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
浅谈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函数(简单整理)
2010/04/30 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
应届生煤化工求职信
2013/10/21 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
师德师风演讲稿
2014/05/05 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript