2010-08-27 4 views
3

ASP.NET 2.0 имеет следующее свойство MaintainScrollPositionOnPostBack, и его можно использовать для поддержания позиции браузера в ответном сообщении. Может ли это быть достигнуто с помощью jQuery, и если да, то как? Я прочитал несколько статей с упоминанием, что MaintainScrollPositionOnPostBack не работает в некоторых браузерах, таких как Chrome/Safari и т.д.Есть ли способ реализовать функциональность MaintainScrollPositionOnPostBack в jQuery

ответ

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();}); 

Это будет работать только для обратной передачи. Если вам нужно всегда иметь такое же положение экрана, мы можем играть с печеньем :)

+0

Я изменил эту строку: ** $ (window) .scroll (curPosition); ** использовать ** функцию scrollTop **, и это отлично поработало. Благодаря! –

Смежные вопросы