Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在asp.net中异步回发后,如何在嵌套主机中保持滚动位置?_Javascript_Jquery_Asp.net_Master Pages_Browser Scrollbars - Fatal编程技术网

Javascript 在asp.net中异步回发后,如何在嵌套主机中保持滚动位置?

Javascript 在asp.net中异步回发后,如何在嵌套主机中保持滚动位置?,javascript,jquery,asp.net,master-pages,browser-scrollbars,Javascript,Jquery,Asp.net,Master Pages,Browser Scrollbars,我有一个嵌套母版的子页,这意味着两个母版页从另一个母版页继承,并且在该子页中,我只有所有用户控件 所以在我的例子中,我必须在用户控件列表框的异步回发之后保持子页面的滚动位置 我试过: MaintainScrollPositionOnPostback="true" 使用in-page指令和js代码 <script type="text/javascript" > var xPos, yPos; var prm = Sys.WebForms.PageReq

我有一个嵌套母版的子页,这意味着两个母版页从另一个母版页继承,并且在该子页中,我只有所有用户控件

所以在我的例子中,我必须在用户控件列表框的异步回发之后保持子页面的滚动位置

我试过:

MaintainScrollPositionOnPostback="true" 
使用in-page指令和js代码

<script type="text/javascript" >
       var xPos, yPos;
       var prm = Sys.WebForms.PageRequestManager.getInstance();
       prm.add_beginRequest(BeginRequestHandler);
       prm.add_endRequest(EndRequestHandler);
       function BeginRequestHandler(sender, args) {
           xPos = document.getElementById("<%=Panel1.ClientID %>").scrollLeft;
           yPos = document.getElementById("<%=Panel1.ClientID %>").scrollTop;
       }
       function EndRequestHandler(sender, args) {
           document.getElementById("<%=Panel1.ClientID %>").scrollLeft = xPos;
           document.getElementById("<%=Panel1.ClientID %>").scrollTop = yPos;
       }
</script>

var xPos,yPos;
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
函数BeginRequestHandler(发送方,参数){
xPos=document.getElementById(“”);
yPos=document.getElementById(“”).scrollTop;
}
函数EndRequestHandler(发送方,参数){
document.getElementById(“”).scrollLeft=xPos;
document.getElementById(“”).scrollTop=yPos;
}
对于panel、div和update panel.这些都是完全失败的,为什么呢?因为如果子页面得到回发,则意味着相关母版页也会回发..但我不知道如何保持滚动位置

请尽快帮助我

谢谢各位,假设我有一个

<asp:hiddenfield id="hid" runat="server"/>     
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(BeginRequestHandler);
        prm.add_endRequest(EndRequestHandler);
        function BeginRequestHandler(sender, args) {
        xPos = document.getElementById("<%=Panel1.ClientID %>").scrollLeft;
        yPos = document.getElementById("<%=Panel1.ClientID %>").scrollTop;
        var h = document.getElementById("<%=hid.ClientID %>");
        h.value = xPos.toString() + "_" + yPos.toString();  
        }
        function EndRequestHandler(sender, args) {
        var val = document.getElementById("<%=hid.ClientID %>").value.split('_');
        xPos = parseFloat(val[0]);
        yPos = parseFloat(val[1]);
        document.getElementById("<%=Panel1.ClientID %>").scrollLeft = xPos;
        document.getElementById("<%=Panel1.ClientID %>").scrollTop = yPos;
    }
</ asp:hiddenfield>

var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
函数BeginRequestHandler(发送方,参数){
xPos=document.getElementById(“”);
yPos=document.getElementById(“”).scrollTop;
var h=document.getElementById(“”);
h、 value=xPos.toString()+“”+yPos.toString();
}
函数EndRequestHandler(发送方,参数){
var val=document.getElementById(“”).value.split(“”);
xPos=parseFloat(val[0]);
yPos=parseFloat(val[1]);
document.getElementById(“”).scrollLeft=xPos;
document.getElementById(“”).scrollTop=yPos;
}

如果您喜欢客户端代码和jQuery,请感谢:

$(document).ready(function () {
    $(window).on('beforeunload', function () {
        document.cookie = "keepscroll=" + $(window).scrollTop();
    });
    var cs = document.cookie ? document.cookie.split(';') : [];
    var i = 0, cslen = cs.length;
    for (; i < cs.length; i++) {
        var c = cs[i].split('=');
        if (c[0].trim() == "keepscroll") {
            $(window).scrollTop(parseInt(c[1]));
            break;
        }
    }
});
$(文档).ready(函数(){
$(窗口).on('beforeunload',函数(){
document.cookie=“keepscroll=“+$(窗口).scrollTop();
});
var cs=document.cookie?document.cookie.split(“;”):[];
var i=0,cslen=cs.长度;
对于(;i
如果您只喜欢客户端代码:

window.onbeforeunload = function () {
    document.cookie = "keepscroll=" + document.body.scrollTop;
};
var keepscroll = window.setTimeout(function () {
    var cs = document.cookie ? document.cookie.split(';') : [];
    var i = 0, cslen = cs.length;
    for (; i < cs.length; i++) {
        var c = cs[i].split('=');
        if (c[0].trim() == "keepscroll") {
            window.scrollTo(0, parseInt(c[1]));
            break;
        }
    }
    window.clearTimeout(keepscroll);
    keepscroll = null;
}, 100);
window.onbeforeunload=函数(){
document.cookie=“keepscroll=“+document.body.scrollTop;
};
var keepscroll=window.setTimeout(函数(){
var cs=document.cookie?document.cookie.split(“;”):[];
var i=0,cslen=cs.长度;
对于(;i
尽快帮我。。不要点菜。你应该问我,请帮帮我