让DIV的滚动条自动滚动到最底部
2009-10-03 04:31
399 查看
要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息。
聊天程序是基于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方法模拟点击滚动到锚所在位置
<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>
方法三:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
freedom831215:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<script type="text/javascript" language="javascript">
var text="";
function f()
{
var div11=document.getElementById("div1");
if(text!=div11.innerHTML)
{
text=div11.innerHTML;
div11.scrollTop=div11.scrollHeight;
}
setTimeout("f()",0);
}
function f1()
{
var div11=document.getElementById("div1");
div11.innerHTML+="abc<br>";
}
</script>
</head>
<body bgColor="#FFFFFF" onload="f()" >
<div id="div1" style="overflow:auto;width:300px;height:160px;">
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
</div>
<input id="Button2" type="button" value="button" onclick="f1()"/>
</body>
</html>
聊天程序是基于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方法模拟点击滚动到锚所在位置
<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>
方法三:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
freedom831215:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<script type="text/javascript" language="javascript">
var text="";
function f()
{
var div11=document.getElementById("div1");
if(text!=div11.innerHTML)
{
text=div11.innerHTML;
div11.scrollTop=div11.scrollHeight;
}
setTimeout("f()",0);
}
function f1()
{
var div11=document.getElementById("div1");
div11.innerHTML+="abc<br>";
}
</script>
</head>
<body bgColor="#FFFFFF" onload="f()" >
<div id="div1" style="overflow:auto;width:300px;height:160px;">
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
aaaaa<br>
</div>
<input id="Button2" type="button" value="button" onclick="f1()"/>
</body>
</html>
相关文章推荐
- 让DIV的滚动条自动滚动到最底部 - 4种方法
- 让DIV的滚动条自动滚动到最底部 - 4种方法(第二种好用)
- 让DIV的滚动条自动滚动到最底部 - 3种方法
- 让DIV的滚动条自动滚动到最底部 - 4种方法
- 让DIV的滚动条自动滚动到最底部 总结
- 让DIV的滚动条自动滚动到最底部 - 4种方法
- 让DIV的滚动条自动滚动到最底部的3种方法(推荐)
- 【转载】让DIV的滚动条自动滚动到最底部的3种方法
- DIV的滚动条自动滚动到最底部
- 用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
- WPF ScrollViewer滚动条根据内容自动滚动到底部
- jquery 判断div滚动条是否滚动到底部
- 底部固定,高度自动,跟随滚动条滚动
- 滚动条事件,当页面滚动到距顶部一定高度时某DIV自动隐藏和显示
- DIV自动滚动到最底部
- div内部滚动条滚动到底部和顶部
- 当滚动条滚动到页面底部自动加载增加内容的js代码
- SWT带垂直滚动条的Text自动滚动到底部(比如显示聊天信息)
- js判断滚动条是否已到页面最底部或顶部实例-拓展(逐渐-自动下滑滚动)
- jquery 让div滚动条自动滚动到最下面