前几天需要做个滚动条定位功能 网上查些资料总结如下
基本原理就是使用cookie保存滚动条的位置 刷新后读取cookie
前台代码
<body id="mybody" οnscrοll="SetCookie('scroll',getObject('mybody').scrollTop)" οnclick="scrollback()" > <SCRIPT LANGUAGE="JavaScript" src="../JScript.js" type="text/jscript"> </SCRIPT>
JScript.js
function Trim(strValue)
{
return strValue.replace(/^/s*|/s*$/g,"");
}
function SetCookie(sName, sValue)
{
document.cookie = sName + "=" + escape(sValue);
}
function GetCookie(sName)
{
var aCookie = document.cookie.split(";");
for (var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (sName == Trim(aCrumb[0]))
{
return unescape(aCrumb[1]);
}
}
return null;
}
function scrollback()
{
if (GetCookie("scroll")!=null){document.all("mybody").scrollTop=GetCookie("scroll")}
}
function getObject(id)
{
if(document.getElementById)
{
return document.getElementById(id);
}
else if(document.all)
{
return document.all[id];
}
else if(document.layers)
{
return document.layers[id];
}
}
function xmlhttp()
{
var A=null;
try
{
A=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
A=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
if (typeof XMLHttpRequest != "undefined" );
{
A=new XMLHttpRequest();
}
}
}
return A;
}
单只是这些客户端代码还够 在中的page_Load中还需加入 this.SmartNavigation = true;但在VS2005中SmartNavigation 属性以被MaintainScrollPositionOnPostBack 取代
使用SmartNavigation
两种方式个有优缺点 SmartNavigation ,JScript.js文件和this.SmartNavigation = true都需要而去页面不存在刷新问题
VS2005中若使用 Page.MaintainScrollPositionOnPostBack = true; 则只需这一句可以定位了 但当数据较多时刷新问题很严重