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

本文介绍了在.NET应用中设置MaintainScrollPositionOnPostback=true后,谷歌浏览器未能保持滚动条位置的问题及其解决方法。通过在Page_Load中调用RestoreScroll方法,动态注册JavaScript代码来保存和恢复滚动位置,实现跨浏览器的滚动条位置保持功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天正好解决这个问题,在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);
        }
    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值