您的位置:首页 > 其它

DIV的滚动条自动滚动到最底部

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

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

网上有资料介绍说通过设置scrollTop属性来控制滚动条位置,具体可参见: http://hi.baidu.com/chen1345789/blog/item/de727bfb45587b176d22eba1.html
但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。

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

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

最后终于被我找到三种控制DIV内容滚动的方法:
方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置 [list=1][*]<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>
[/list]

方法二:
利用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>
[/list]

方法三:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: