2017-02-21 4 views
0

Ich benutze die MaintainScrollPositionOnPostback-Funktion in asp.net, so dass die, wenn die Seite Beiträge zurück die Seite sieht aus wie es in der gleichen Position blieb. Wenn die Seite jedoch zurückschlägt, ist sie sehr auffällig. Die Seite wird oben geladen und springt dann an die Stelle, an der sie vorher war. Gibt es eine Möglichkeit, dies zu glätten, so dass beim Laden der Seite in die vorherige Position geladen wird?wie zu machen pflegen Scroll-Position glatt

+0

Haben Sie erwogen, Postbacks vollständig zu entfernen und stattdessen AJAX zu verwenden, damit die Seite nie wirklich entladen wird? – mason

Antwort

0

Sie können eine eigene Funktion erstellen, um das Scrollen zur vorherigen Position zu erleichtern. Normalerweise wird die Y-Position im versteckten Feld __SCROLLPOSITIONY gespeichert. Aber wenn Sie MaintainScrollPositionOnPostback deaktivieren, wird dieses Formularfeld ebenfalls verschwinden.

So erstellen Sie eine HiddenField eigene und speichern Sie die Position dort. Nach einem PostBack können Sie diesen Wert lesen und zu ihm blättern.

<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> 

Ich habe dieses Schnipsel nur schnell getestet, vielleicht braucht es noch ein paar Optimierungen.