讓DIV的捲軸自動滾動到最底部 – 4種方法

來源:互聯網
上載者:User

要製作一個線上聊天的程式,在做最後的修飾時,需要對獲得的資訊即時滾動以保證使用者總能看到最新訊息。

聊天程式是基於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">&nbsp</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>

方法4:
這個比較複雜也比較靈活一點,就是利用DIV+JS+圖片構造一個捲軸,當然了圖片是怎麼好看怎麼用了。
主要部分就是外層的DIV加個overflow:hidden屬性,通過js代碼調整內層DIV的margin-left和margin-top來控制內容的滾動,由於上面兩種方法已經可以滿足需求,所以這種方法沒具體做深究,有興趣的可以試一下

 

分享到: QQ空間 新浪微博 人人網 開心網 更多

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.