2017-02-21 8 views
0

Я использую функцию MaintainScrollPositionOnPostback в asp.net, поэтому, когда страница отправляет назад страницу, похоже, что она осталась в том же положении. Однако, когда страница возвращается, это очень заметно. Страница загружается вверху, а затем прыгает вниз до того места, которое было раньше. Есть ли способ сгладить это, чтобы при загрузке страницы она загружалась в предыдущую позицию?Как сделать сохранение положения прокрутки гладкой

+0

Вы считали, что полностью отказываетесь от обратных передач и используете AJAX, чтобы страница никогда не была разгружена? – mason

ответ

0

Вы можете создать свою собственную функцию, чтобы сделать прокрутку на предыдущую позицию гладкой. Обычно Y-позиция сохраняется в скрытом поле __SCROLLPOSITIONY. Но когда вы отключите MaintainScrollPositionOnPostback, это поле формы также исчезнет.

Сделайте правильный выбор: HiddenField и напишите его. Затем после PostBack вы можете прочитать это значение и прокрутить к нему.

<asp:HiddenField ID="HiddenField1" runat="server" /> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('html,body').animate({ 
      scrollTop: $("#<%= HiddenField1.ClientID %>").val() 
     }); 
    }); 

    $(document).mousemove(function (e) { 
     $("#<%= HiddenField1.ClientID %>").val(e.pageY) 
    }); 
</script> 

Я тестировал этот фрагмент только быстро, возможно, ему нужна еще одна настройка.