Asp.net “;MaintainScrollPositionPostback=&x201D;真“”;不适用于谷歌浏览器

Asp.net “;MaintainScrollPositionPostback=&x201D;真“”;不适用于谷歌浏览器,asp.net,vb.net,cross-browser,master-pages,webusercontrols,Asp.net,Vb.net,Cross Browser,Master Pages,Webusercontrols,Web.config级别=>pages MaintaintScrollPositionOnPostback=“true”/> 页面级别=> 代码级别=>Page.maintaintScrollPositionOnPostback=true 浏览器级别=>Browser id=“Chrome”parentID=“Safari1Plus”> 能力> 功能名称=“支持维护CrollPositionOnPostBack”值=“true”/> 能力> 浏览器> 上述4种方式中的任何一种都不适用于googl

Web.config级别=>pages MaintaintScrollPositionOnPostback=“true”/>

  • 页面级别=>

  • 代码级别=>Page.maintaintScrollPositionOnPostback=true

  • 浏览器级别=>Browser id=“Chrome”parentID=“Safari1Plus”> 能力> 功能名称=“支持维护CrollPositionOnPostBack”值=“true”/> 能力> 浏览器>


  • 上述4种方式中的任何一种都不适用于google chrome。它与firefox配合得很好。请提供任何解决方案。

    您可以将此代码段添加到ASP.NET页面/母版页(需要jQuery):

    
    $(函数(){
    var f=$(“#”)型;
    window.onload=函数(){
    var position=parseInt(f.val());
    如果(!isNaN(位置)){
    $(窗口)。滚动顶部(位置);
    }
    };
    window.onscroll=函数(){
    var position=$(window.scrollTop();
    f、 val(位置);
    };
    });
    
    我也面临同样的问题。我找到了一个Javascript解决方案

    
    window.onload=函数(){
    var scrollY=parseInt(“”);
    如果(!isNaN(滚动)){
    滚动到(0,滚动);
    }
    };
    window.onscroll=函数(){
    var scrollY=document.body.scrollTop;
    如果(滚动==0){
    if(window.pageYOffset){
    scrollY=window.pageYOffset;
    }
    否则{
    scrollY=(document.body.parentElement)?document.body.parentElement.scrollTop:0;
    }
    }
    如果(滚动>0){
    var input=document.getElementById(“滚动”);
    如果(输入==null){
    输入=document.createElement(“输入”);
    setAttribute(“类型”、“隐藏”);
    setAttribute(“id”,“scrollY”);
    setAttribute(“名称”、“滚动”);
    document.forms[0]。appendChild(输入);
    }
    input.value=滚动;
    }
    };
    


    我希望这能对你有所帮助。

    无论我做了什么尝试,我都无法让PostBack为我工作。基于Darkseal的回答和Eirik H的评论,我尝试了以下代码,这些代码对我来说很有用。这只有在页面上有ASP.NET脚本管理器(即MicrosoftAjax.js)时才有效。您还需要将JQuery添加到页面中。将以下代码添加到asp:ScriptManager标记下面的.aspx文件中

    <asp:HiddenField runat="server" ID="hfPosition" Value="" />
    <script type="text/javascript">
        $(function () {
            var positionField = $("#<%=hfPosition.ClientID%>");
            window.onscroll = function () {
                var position = $(window).scrollTop();
                positionField.val(position);
            };
        });
    
        function pageLoad() {
            var positionField = $("#<%=hfPosition.ClientID%>");
            var position = parseInt(positionField.val());
            if (!isNaN(position)) {
                $(window).scrollTop(position);
            }
        };
    </script>
    
    
    $(函数(){
    变量位置字段=$(“#”);
    window.onscroll=函数(){
    var position=$(window.scrollTop();
    positionField.val(位置);
    };
    });
    函数pageLoad(){
    变量位置字段=$(“#”);
    var position=parseInt(positionField.val());
    如果(!isNaN(位置)){
    $(窗口)。滚动顶部(位置);
    }
    };
    
    基本上,我们将滚动位置保持在名为hfPosition的隐藏字段的值内。每当滚动页面时,该值都会更新。然后,当发生回发时,将自动调用pageLoad(),并获取hfPosition的值并滚动到该值

    包括ScriptManager和JQuery,我的最后一段代码如下所示:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <script src="../Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
    <asp:HiddenField runat="server" ID="hfPosition" Value="" />
    <script type="text/javascript">
        $(function () {
            var positionField = $("#<%=hfPosition.ClientID%>");
            window.onscroll = function () {
                var position = $(window).scrollTop();
                positionField.val(position);
            };
        });
    
        function pageLoad() {
            var positionField = $("#<%=hfPosition.ClientID%>");
            var position = parseInt(positionField.val());
            if (!isNaN(position)) {
                $(window).scrollTop(position);
            }
        };
    </script>/>
    
    
    $(函数(){
    变量位置字段=$(“#”);
    window.onscroll=函数(){
    var position=$(window.scrollTop();
    positionField.val(位置);
    };
    });
    函数pageLoad(){
    变量位置字段=$(“#”);
    var position=parseInt(positionField.val());
    如果(!isNaN(位置)){
    $(窗口)。滚动顶部(位置);
    }
    };
    />
    
    您必须实现自己的方法。对于现在(或以后)访问此网站的人来说,至少Google Chrome支持页面级添加。对于通过ajax调用来寻求解决方案的人来说,window.onload将不会运行,因此滚动不会发生。相反,我建议使用特殊的asp.net函数pageLoad<代码>函数pageLoad(){var position=parseInt(f.val());if(!isNaN(position)){$(window).scrollTop(position);}}}
    <asp:HiddenField runat="server" ID="hfPosition" Value="" />
    <script type="text/javascript">
        $(function () {
            var positionField = $("#<%=hfPosition.ClientID%>");
            window.onscroll = function () {
                var position = $(window).scrollTop();
                positionField.val(position);
            };
        });
    
        function pageLoad() {
            var positionField = $("#<%=hfPosition.ClientID%>");
            var position = parseInt(positionField.val());
            if (!isNaN(position)) {
                $(window).scrollTop(position);
            }
        };
    </script>
    
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <script src="../Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
    <asp:HiddenField runat="server" ID="hfPosition" Value="" />
    <script type="text/javascript">
        $(function () {
            var positionField = $("#<%=hfPosition.ClientID%>");
            window.onscroll = function () {
                var position = $(window).scrollTop();
                positionField.val(position);
            };
        });
    
        function pageLoad() {
            var positionField = $("#<%=hfPosition.ClientID%>");
            var position = parseInt(positionField.val());
            if (!isNaN(position)) {
                $(window).scrollTop(position);
            }
        };
    </script>/>