我正在尋找一種簡單而有效的方式來獲得瀏覽器垂直滾動條的位置並將其保存到ASP頁面中的會話變量中。堅持瀏覽器滾動位置
我想要做的是當用戶更改頁面我已將滾動位置存儲在會話變量中,以便當用戶返回頁面時頁面將滾動到其最後位置。
有沒有辦法做到這一點?我見過堅持滾動位置上回傳,但沒有還沒有做什麼,我試圖做:(
如果任何人都可以點我在正確的方向ID感激的例子
編輯:
好吧,所以根據下面的例子,我注意到,當用戶點擊我的GridView中的一行時,他們導航到下一頁,但我的事件處理程序永遠不會被觸發。 這使我懷疑滾動位置不是保存,我猜表格沒有被提交)
我的事件處理程序看起來像:
Protected Sub save(ByVal sender As Object, ByVal e As EventArgs) Handles ScrollPosition.ValueChanged
Session.Add("ScrollPosition", ScrollPosition.Value)
End Sub
我想這是最容易使用ValueChanged事件搶值,放入會話
下一頁我的腳本....我想它的基礎上做我對Jquery的知識非常有限!
<script type="text/javascript">
$(function() {
//Retrieve and use the existing scroll position from the hidden field
var scrollPosition = $('#<%= ScrollPosition.ClientID %>').val();
$(window).scrollTop(scrollPosition);
/*
//Handle the main forms submit event and store the scroll position
$('#<%= form1.ClientID %>').submit(function() {
var currentScrollPosition = $(window).scrollTop();
$('#<%= ScrollPosition.ClientID %>').val(currentScrollPosition);
});
*/
});
$(document).ready(function() {
$("#gvTickets").click(function() {
var currentScrollPosition = $(window).scrollTop();
$('#<%= ScrollPosition.ClientID %>').val(currentScrollPosition);
})
});
</script>
劇本背後的想法是,當點擊gvTickets行時滾動位置將被存儲應觸發我的價值,改變了事件處理程序
我沒有得到任何錯誤,但我也不是得到所期望的行爲:(在我的網頁加載
我也有:
如果沒有的IsPostBack然後
If (Session("ScrollPosition") = Nothing) Then
ScrollPosition.Value = 0
Session("ScrollPosition") = 0
Else
ScrollPosition.Value = Session("ScrollPosition")
End If
感謝您的回覆,它給了我一個開始的地方,即時通訊還不完全,儘管如此,我已經根據您的回答更新了我的原始帖子。 – Purplegoldfish
乾杯,這種方法看起來更好,但我仍然不會調用ScrollPosition.ValueChanged的事件處理函數。我不知道爲什麼這是真的發生,因爲我也沒有錯誤:( – Purplegoldfish
其原因可能是因爲隱藏的字段正在(js)代碼中更新,而不是生成引發更改的服務器端事件所需的關鍵事件。我不確定這是存儲滾動位置的最佳方法,但是由於隱藏字段的更新頻率,每當頁面回傳(在頁面加載事件中)時,爲什麼不在會話中存儲滾動位置? – jdavies