我在rails 4应用程序中使用无限滚动。
滚动列表时,代码会自动更新网址:
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);
这是一个试图获得在rails 3中工作的东西在rails 4中工作的黑客......
它似乎有用,但它不干净并且有一些问题。
主要问题是不提醒滚动位置。单击后退按钮时,我会回到页面顶部。
有没有办法做到这一点清洁。理想情况下,而不是做window.history.replaceState我想做Turbolinks.replaceState(newUrl)或类似的东西。
但如果我能找到一种方法来记住滚动位置,那就已经很棒了。
谢谢!
答案 0 :(得分:1)
手动触发Turbolinks访问
您可以使用Turbolinks.visit(路径)通过Turbolinks转到URL。
https://github.com/rails/turbolinks#triggering-a-turbolinks-visit-manually