2017-02-21 137 views
0

我在asp.net中使用了MaintainScrollPositionOnPostback功能,因此當頁面回傳頁面看起來像停留在同一位置時。但是,當頁面回傳時,它非常明顯。頁面加載到頂部,然後跳轉到之前的位置。有沒有辦法平滑這一點,以便在頁面加載時加載到以前的位置?如何保持滾動位置平滑

+0

您是否考慮過完全消除回發,並使用AJAX代替,以便頁面永遠不會被卸載? – mason

回答

0

您可以創建自己的功能,使滾動到上一個位置平滑。通常情況下,Y位置存儲在隱藏字段__SCROLLPOSITIONY中。但是當你禁用MaintainScrollPositionOnPostback時,這個表單域也會消失。

因此,創建一個您自己的HiddenField並存儲在那裏的位置。然後在回發之後,您可以讀取該值並滾動到該值。

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

我已經測試過這個片斷,只是很快,也許它需要一些更多的調整。