1

私はasp.net 4.0 iis 7.5 microsoft Visual Studio 2010を使用しています

私が欲しいのは、非同期ポストバックが発生したときにページ全体(ブラウザー)のスクロール位置(divまたはパネルではなく)を保持することです(パネルの更新)

これどうやってするの

実際には、このようにポストバック後にdivスクロールバーの位置を保持できる機能がありました

       <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('Main').scrollLeft;
            yPos = document.getElementById('Main').scrollTop;
        }
        function EndRequestHandler(sender, args) {
            document.getElementById('Main').scrollLeft = xPos;
            document.getElementById('Main').scrollTop = yPos;
        }
    </script>

bu私はdocument.getElementByIdで取得する値を取得するためのブラウザスクロールバーIDを見つけることができませんでした

答えてくれてありがとう

4

3 に答える 3

1

asp.netには、@pageディレクティブプロパティと呼ばれるプロパティがありますMaintainScrollPositionOnPostBack

これが役立つことを願っています

于 2010-10-16T10:13:20.650 に答える
0

クライアントの方法でそれを行うことができます:

$(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;
        }
    }
});

あなたがjQueryの友人でない場合は、次のようなことを試すことができます:

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);
于 2014-12-08T20:45:20.517 に答える