【发布时间】: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