昨天正好解决这个问题,在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.οnscrοll=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.οnlοad=setScrollPosition; ");
page.ClientScript.RegisterStartupScript(page.GetType(), "AXzhz", sb.ToString(), true);
}
}