×

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

管理员 管理员 发表于2017-05-12 02:52:50 浏览4335 评论0

抢沙发发表评论

在page里面设了MaintainScrollPositionOnPostback=true后,golgle浏览器并没有效果

在page_load里面调用以下方法

/// <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);
      }
    }


群贤毕至

访客