【问题标题】:Turbolinks (classic) firing JS event on page:fetchTurbolinks(经典)在页面上触发 JS 事件:fetch
【发布时间】:2016-12-14 17:46:18
【问题描述】:

我正在构建一个 Rails 4 应用程序并使用 Turbolinks Classic(尚未升级到 Turbolinks 5)。

我想在加载新页面时向我的页面添加一个微调器动画,所以在我的 JS 文件中我添加了:

$(document).on "page:fetch", ->
  $("#main").html("<div class='page-loader-container'><div class='spinner spinner-primary'></div></div>")

#main 是我的应用核心的容器。

这在从一个链接到另一个链接时效果很好; Turbolinks 触发,微调器替换内容,当 Turbolinks 获取新内容时,它会替换所有内容。

但是,当我使用浏览器后退按钮时,会显示微调器,但缓存的 HTML 不会替换页面。

我查看了 Turbolinks 文档以及 jQuery 插件文档,但无法弄清楚。

我要做的只是在 Turbolinks 实际获取新页面时执行我的微调器代码;从缓存加载页面时,我不需要微调器,因为它应该发生得如此之快,用户不需要被通知。

2016-12-14 13:40更新

当我使用Turbolinks.enableProgressBar(); 时,进度条按我的预期工作:它在选择新页面时加载,但在加载缓存页面时根本不显示。我现在正在使用它,它“有效”。

不过,我想深入研究源代码,并了解他们如何处理进度条的事件,因为我认为这些事件与我想用于我的微调器的事件相同。

【问题讨论】:

    标签: jquery browser-cache turbolinks


    【解决方案1】:

    这个 github 页面在他的 README 文件中有一些很好的细节。我想知道这是否会有所帮助,尤其是在页面缓存部分所在的位置:

    https://github.com/turbolinks/turbolinks-classic#page-cache

    我还认为事件表非常整洁。 (页面缓存上方的几个部分)

    【讨论】:

    • @Igroschen:感谢您的回答,但我已经阅读了文档页面,但找不到任何可以解决我的特定问题的内容。我最终可能不得不对元素进行一些花哨的显示/隐藏,而不是替换元素。
    • 是的,我希望那段会有所帮助,但也许去 Turbolinks 5 会有选择。希望你能弄清楚对不起,我无法提供更多帮助
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多