Rails:Turbolinks返回页面顶部

时间:2013-12-16 06:32:57

标签: javascript jquery ruby-on-rails turbolinks

我正在使用turbolinks作为轨道;每当我点击链接时,页面都会向下滚动到上一页的滚动位置。我想要加载所有页面,使其不向下滚动(停留在页面顶部)。我不需要turbolinks来记住我之前的滚动位置。那么如何强制页面加载顶部的滚动位置(0,0)?

我试过

$ ->
    window.scrollTo 0,0

但我可能没有约束这个权利。

3 个答案:

答案 0 :(得分:1)

您可能正在使用旧版本的turbolinks。这个问题是fixed

尝试更新您的Gemfile以使用更新的版本。我使用'1.1.1'时遇到了同样的问题,但在切换到'2.2.3'之后就解决了。

答案 1 :(得分:0)

原因是Turbolink取代了DOM元素而没有刷新页面,所以你的滚动停留在同一个位置。

要进行更改,您需要观察Turbolinks发出的事件,表明页面加载已完成,然后开始滚动操作。

试试这个:

$ ->
  $(document).on 'page:load', ->
    window.scrollTo 0, 0

答案 2 :(得分:0)

我在 Rails 6 中遇到了同样的问题,并通过添加解决了

document.addEventListener("turbolinks:load", function() {
    window.scrollTo(0,0)
});

在 application.html.erb 的 <script> 标签下。

这基本上是将EventListener添加到DOM,每当turbolinks加载时,它会自动滚动到页面顶部。