您的位置:首页 > 产品设计 > UI/UE

.net 刷新后滚动条不动加MaintainScrollPositionOnPostback=true 兼容gogle问题

2010-09-30 10:59 501 查看
昨天正好解决这个问题,在page里面设了MaintainScrollPositionOnPostback=true后,golgle浏览器并没有效果,正好我同学那有这么个方法,只要在page_load里面调用就ok了,要记录分享一下,呵呵。

/// <summary>
/// 页面回传,保持当前滚动条位置
/// </summary>
/// <param name="page"></param>
public static void RestoreScroll(Page page)
{
//注册一个Hidden Filed
page.ClientScript.RegisterHiddenField("Hidden_AX", "0");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
//当滚动条滚动时将其到页顶的位置保存在Hidden Field中
sb.AppendLine("function getPageScroll() ");
sb.AppendLine("{ ");
sb.AppendLine(" var yScroll; ");
sb.AppendLine(" if (document.documentElement.scrollTop)//符合DTD标准的Page ");
sb.AppendLine(" { ");
sb.AppendLine(" yScroll = document.documentElement.scrollTop; ");
sb.AppendLine(" } ");
sb.AppendLine(" else ");
sb.AppendLine(" { ");
sb.AppendLine(" yScroll = document.body.scrollTop; ");
sb.AppendLine(" } ");
sb.AppendLine(" return yScroll; ");
sb.AppendLine("} ");
sb.AppendLine("function saveScrollPosition() ");
sb.AppendLine("{ ");
sb.AppendLine(" document.getElementById('Hidden_AX').value = getPageScroll();");
sb.AppendLine("} ");
sb.AppendLine("window.onscroll=saveScrollPosition; ");
page.ClientScript.RegisterStartupScript(page.GetType(), "AX", sb.ToString(), true);

//页面加载完后恢复滚动条的位置
if (page.IsPostBack)
{
sb.Remove(0, sb.Length);
sb.AppendLine("function setScrollPosition() ");
sb.AppendLine("{ ");
sb.AppendLine(" window.scrollTo(0," + page.Request["Hidden_AX"] + "); ");
sb.AppendLine("} ");
sb.AppendLine("document.body.onload=setScrollPosition; ");
page.ClientScript.RegisterStartupScript(page.GetType(), "AXzhz", sb.ToString(), true);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐