有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,很是不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好的办法就是 在JS中用cookie记录下当前滚动条的位置,而后刷新时读取cookie就能够实现这个功能了。
代码以下:
<script type="text/javascript">
function Trim(strValue)
{
//return strValue.replace(/^s*|s*$/g,"");
return strValue;
}
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.body.scrollTop=GetCookie("scroll")}
}
</script>
而后在html页面中设置<body id=body onscroll=SetCookie("scroll",document.body.scrollTop); onload="scrollback();">就能够在刷新或提交后滚动条的位置保持不变了。javascript
若是很差用,这里修改下:document.body.scrollTop修改成document.documentElement.scrollTophtml
当你用asp.net开发web页面时,你会发现,若是你设置了一个页面,若是里面含有多个Button,并且页面很长。
当你点击Button后PostBack时,页面老是显示在最上面,极其不方便。
但下面这段代码,写帮你解决这个问题。
java
最近写了一个拖动层的HTML页面, 须要获取滚动条当前的位置.web
因而我使用document.body.scrolltop获取y方向滚动的位置...奇怪的事情出现了! 不管滚动条怎么滚动,document.body.scrolltop居然一直都是0!浏览器
对比之前写的一个页面.发现区别很小. 旧页面却没有问题.这就怪了...cookie
我开始一点一点的排除,去掉多于的代码. 直到我去掉文档最顶部的asp.net
页面此时才正常.this
原来是这行东西形成IE没法获取document.body.scrolltop!google
把顶部这两行删掉将能够了.可是为何会这样呢?spa
google一下,发现改为:
就能够了,但页面稍有变化,感受不爽,因而又在google里找,终于解决:
document.body.scrollTop
要改为
document.documentElement.scrollTop
关于js中 document.body.scrollTop 不能返回正确值的缘由
原本是为了经过document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,可是无论滚动条在什么位置老是返回是0,形成这样的缘由和html的头部声明有关,若是头部声明 为:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">,这样确定获得的结果是 0,若是该为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">就能获得正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种
一、var scrollPos;
if (typeof window.pageYOffset != 'undefined') {
scrollPos = window.pageYOffset;
}
else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
scrollPos = document.documentElement.scrollTop;
}
else if (typeof document.body != 'undefined') {
scrollPos = document.body.scrollTop;
}
二、用document.documentElement.scrollTop 替代 document.body.scrollTop
<script language = "JavaScript">
function CheckForm()
{
if (document.myform.keytext.value == "") {
alert("查询关键字没有填写!\n\n请检查!");
document.myform.keytext.focus();
return false;
}
if (document.myform.cl.value == 1)
{
document.myform.action="yqjsj.asp?keytext="+myform.keytext.value;
document.myform.submit();
}
else if (document.myform.cl.value == 2)
{
document.myform.action="sjzz.asp?keytext="+myform.keytext.value;
document.myform.submit();
}
else if (document.myform.cl.value == 3)
{
document.myform.action="gjhc.asp?keytext="+myform.keytext.value;
document.myform.submit();
}
else if (document.myform.cl.value == 4)
{
document.myform.action="jyjqr.asp?keytext="+myform.keytext.value;
document.myform.submit();
}
}
</script>
var oFix = document.getElementById("divfix");
oFix.style.top = document.documentElement.scrollTop + "px";