ASP.NET 2.0具有以下属性MaintainScrollPositionOnPostBack,它可用于维护回发后的浏览器位置。这可以使用jQuery实现,如果是的话怎么样? 我读过一些文章,提到MaintainScrollPositionOnPostBack在Chrome / Safari等浏览器中不起作用。
答案 0 :(得分:3)
创建ASP隐藏输入字段以存储回发中的位置,将该字段的ClientID传递到下面的代码中:
// client id of the hidden input field
var hiddenInputId = '<%= _myHiddenInputField.ClientID %>';
// store the current scroll position into the input
function storeScrollPosition(){
$('#'+hiddenInputId)[0].value = scrollPosition();
}
// load the value out of the input and scroll the page
function loadScrollPosition(){
var curPosition = $('#'+hiddenInputId)[0].value;
if (curPosition > 0)
$(window).scroll(curPosition);
}
// determine the scroll position (cross browser code)
function scrollPosition() {
var n_result = window.pageYOffset ?
window.pageYOffset : 0;
var n_docel = document.documentElement ?
document.documentElement.scrollTop : 0;
var n_body = document.body ?
document.body.scrollTop : 0;
if (n_docel && (!n_result || (n_result > n_docel)))
n_result = n_docel;
return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
// on load of the page, load the previous scroll position
$(document).ready(function(){loadScrollPosition();});
// on scroll of the page, update the input field
$(window).scroll(function(){storeScrollPosition();});
这仅适用于回发。如果您需要始终拥有相同的屏幕位置,我们可以使用cookies:)