2012-11-09 来源:网络
【实例名称】
通过JS记录滚动条位置
【实例描述】
当页面刷新时窗体中所有的内容会被重新初始化,但一些读书网站为了还原用户刷新前查看的内容,必须记录窗体滚动条的位置。本例介绍如何记录滚动条的位置。
【实例代码】
<HTML> <HEAD> <TITLE> 记录滚动条位置 -学无忧(www.xue51.com)</title> <script language="javascript"> function SetCookie(sName, sValue) { date = new Date(); s = date.getDate(); date.setDate(s+1); //设置cookie的有效期 document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();//创建cookie } function GetCookie(sName) { var aCookie = document.cookie.split("; "); //将cookie中的数据切割成数组,方便遍历 for (var i=0; i < aCookie.length; i++) //遍历cookie中的数据 { var aCrumb = aCookie[i].split("="); //将键和值分开 if (sName == aCrumb[0]) { //判断是否是指定的键 return unescape(aCrumb[1]);} //返回键对应的值 } return null; } function winLoad() { document.body.scrollLeft = GetCookie("scrollLeft"); //获取水平滚动条位置 document.body.scrollTop = GetCookie("scrollTop"); //获取垂直滚动条位置 } function winUnload() { SetCookie("scrollLeft", document.body.scrollLeft) //保存水平滚动条位置 SetCookie("scrollTop", document.body.scrollTop) //保存垂直滚动条位置 } window.onload = winLoad; //加载页面时自动执行获取cookie保存值的方法 window.onunload = winUnload; //关闭页面时自动执行保存cookie的方法 </script> </HEAD> <BODY> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> 测试行,主要为了出线滚动条<p></p> </BODY> </HTML>
【运行效果】
【难点剖析】
本例的重点是如何保存滚动条的位置。页面中的滚动条分为水平滚动条和垂直滚动条。水平滚动条的位置使用“document.body.scrollLeft”获取,垂直滚动条的位置使用“document.body.scrollTop”获取。保存滚动条位置使用的是Cookie,关于Cookie的操作可参考代码中的“SetCookie”和“GetCookie”方法。
【源码下载】
为了JS代码的准确性,请点击:通过JS记录滚动条位置 进行本实例源码下载