要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息。
聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条。
但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用 document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页 面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。
网上关于这个问题的资料很少,连CSDN上也说没有办法。
不死心,后来查DHTML手册得知DIV有个doScroll方法可以用来模拟滚动条点击,但很令人失望,到了我这里又是完全失效,难道又不被XHTML支持?
最后终于被我找到三种控制DIV内容滚动的方法:
方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置
1
2
3
4
5
6
7
8
9
10
11
|
<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
1
2
3
4
5
6
7
8
9
10
11
12
|
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> |
方法三:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <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种方法(推荐)的全部内容了,希望对大家有所帮助,多多支持脚本之家~
https://www.jb51.net/article/93425.htm
Comments | NOTHING