我在我的 rails 4 应用程序中使用无限滚动。
当我滚动列表时,代码会自动更新 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);
这是一个 hack,试图让在 rails 3 中工作的东西在 rails 4 中工作......
它似乎工作,但它不干净并且有一些问题。
主要问题是没有提醒滚动位置。单击后退按钮时,我回到页面顶部。
有没有办法做这个清洁剂。理想情况下,而不是做 window.history.replaceState 我想做 Turbolinks.replaceState(newUrl) 或类似的东西。
但如果我能找到一种方法来记住滚动位置,那就太好了。
谢谢!