16

好吧,正如标题所说的或多或少。我在 Rails 应用程序中使用 gem Turbolinks,但“浏览器返回”按钮有点问题。我的 javascripts 工作正常,直到我在浏览器中单击返回,然后它停止工作。如果我单击应用程序中的链接或重新加载页面,它会再次开始工作。

蚂蚁想法如何解决这个问题?

4

4 回答 4

26

jquery-turbolinks gem 不再支持Turbolinks 5 ,因此该解决方案现在已被弃用。

如果您想禁用 turbolinks-caching,只需将此元添加到您的页面;

<meta name="turbolinks-cache-control" content="no-cache">
于 2016-07-05T21:26:25.273 回答
23

Turbolinks Classic 的两种解决方案:

将缓存设置为 0,以便使用 HTML5 历史记录不缓存任何页面。

Turbolinks.pagesCached(0);

另一种解决方案是监听“page:restore”事件并调用您的初始化方法。后一种解决方案性能更高。

document.addEventListener("page:restore", function() {
  app.init();
});
于 2013-07-23T23:19:41.863 回答
3

您可以在下一个turbolinks 问题讨论中找到答案。对我来说,下一个解决方案有效 - 使用下一个删除由 JS 初始化的元素(在我的情况下选择下拉列表):

document.addEventListener("turbolinks:before-cache", function() {
    $('.chosen-select').chosen('destroy');
})
于 2017-08-11T18:11:40.990 回答
1

而不是像以前的一些答案中详述的那样在整个应用程序中完全禁用turbolinks-caching(使 turbolinks 集成非常无用),您可以仅对给您带来 JS 麻烦的页面部分禁用 turbolinks

<div id="div_using_JS_functions" data-turbolinks='false'>
 .
 .
 .
</div>
于 2019-05-17T08:38:25.820 回答