【问题标题】:Rails: Turbolinks back to top of pageRails:Turbolinks回到页面顶部
【发布时间】:2013-12-16 06:32:57
【问题描述】:

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

我试过了

$ ->
    window.scrollTo 0,0

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

【问题讨论】:

    标签: javascript jquery ruby-on-rails turbolinks


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      原因是 Turbolink 替换了 DOM 元素而不刷新页面,因此您的滚动保持在同一位置。

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

      试试这个:

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

      【讨论】:

      • @user2805279:您应该提供更多信息。你的脚本在哪里调用?你的 gemfile 中有所有这些 gem 吗?:gem 'jquery-rails'gem 'turbolinks'gem 'jquery-turbolinks'
      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 2016-02-24
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        • 2020-10-09
        相关资源
        最近更新 更多