Я использую бесконечную прокрутку в своих рельсах 4 приложения.turbolinks изменить url вручную
код автоматически обновляет URL, когда я прокручиваю список:
var loading = false;
$(function() {
function nearBottomOfPage() {
return $(window).scrollTop() > $(document).height() - $(window).height() - 200;
}
$(window).scroll(function(){
if (loading || $(".infinite-scroll").length == 0) {
return;
}
if(nearBottomOfPage()) {
loading=true;
var qstring = parseInt(getParameterByName('page'));
if(isNaN(qstring)) {qstring = 1;}
qstring++
updateQueryString('page',qstring);
var url = $(".infinite-scroll").data("update-url")
var q_string = window.location.search
if(url.indexOf("?") != -1) {
q_string = q_string.replace("?","&")
}
url = url + q_string
$.ajax({
url: url,
type: 'get',
dataType: 'script',
success: function() {
$(window).sausage('draw');
loading=false;
}
});
}
});
$(window).sausage();
});
Функция updateQuerystring заменяет состояние следующим образом:
window.history.replaceState({turbolinks: true, position: Date.now()}, document.title, new_url);
Это хак, чтобы попытаться получить что-то, что работал в рельсах 3 для работы в рельсах 4 ...
Кажется, что это работает, но оно не является чистым и имеет некоторые проблемы.
Основная проблема заключается в том, что положение прокрутки не напомнено. При нажатии кнопки «Назад» я вернусь в начало страницы.
Есть ли способ сделать это чище. В идеале вместо этого window.history.replaceState я бы хотел сделать Turbolinks.replaceState (newUrl) или что-то в этом роде.
Но если бы я мог найти способ запомнить положение прокрутки, было бы здорово уже.
Спасибо!