2015-11-22 2 views
0

Проблема, возникающая у меня, заключается в том, когда элемент получает добавление к списку, браузер пытается автоматически прокручивать элемент в поле зрения, что вызывает очень заметный переход.Непрерывно добавлять элементы к списку, не влияя на положение прокрутки

Я проверяю, если пользователь 100px от верхней части дока:

var scrollTop = function() { 
    var scrollPos = $(window).scrollTop(), 
     direction = window.direction == 'up', 
     history = session.lastSessionEntry(); 

    if (direction && scrollPos < 100) { 
     if (history > 1) { 
     getPreviousPage(); 
     } else { 
     prependHero(); 
     } 
    } 
    }; 

Тогда предыдущая страница либо загружена из LocalStorage или API:

var getPreviousPage = function() { 
    var page = session.lastSessionEntry() - 1, 
     cached = isCached([localStorage.getItem(page)]); 

    if (cached) { 
     renderResponse('prepend', localStorage.getItem(page)); 
    } else { 
     $.ajax({ 
     url: '/collections/paginated_collection/?collection_name='+ settings.collection_name +'&page='+ page +'&results_per_page=' + settings.results_per_page, 
     success: function (response, xhr) { 
      renderResponse('prepend', response); 
     }, 
     }); 
    } 
    }; 

Наконец, страница отображается в DOM:

var renderResponse = function(method, response) { 
    var el = $('<div></div>'), 
     output = el.html(response), 
     page = output.find('section').attr('data-section'); 

    if (!$('section[data-section="'+ page +'"]').length && response != 'undefined') { 

     if (method == 'append') 
     settings.render_outlet.append(response); 
     else 
     settings.render_outlet.prepend(response); 

     clearLoader(); 

    } else { 
     return 
    } 
    }; 

Было бы здорово, если бы вы смогли добиться чего-то подобного без холста, очевидно:

http://engineering.flipboard.com/2015/02/mobile-web/

Я знаю, что это трудно, чтобы помочь без функционального кода, но если кто-то может упасть некоторые теоретические знания на меня или просто вообще мне точку в правильном направлении, я бы очень Аппетит его.

Заранее спасибо.

ответ

-1

Я обнаружил, что могу предотвратить некоторые действия по умолчанию, используя preventDefault(). Это контроллер событий jQuery. Проверьте это: http://api.jquery.com/event.preventdefault/ Надеюсь, что это поможет: D

+0

К сожалению, поведение прокрутки по умолчанию невозможно предотвратить. – macksol

+0

@macksol Как насчет сохранения положения прокрутки в URL-адресе, а затем восстановления его на загрузке страницы? – Tek

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