好吧,正如标题所说的或多或少。我在 Rails 应用程序中使用 gem Turbolinks,但“浏览器返回”按钮有点问题。我的 javascripts 工作正常,直到我在浏览器中单击返回,然后它停止工作。如果我单击应用程序中的链接或重新加载页面,它会再次开始工作。
蚂蚁想法如何解决这个问题?
好吧,正如标题所说的或多或少。我在 Rails 应用程序中使用 gem Turbolinks,但“浏览器返回”按钮有点问题。我的 javascripts 工作正常,直到我在浏览器中单击返回,然后它停止工作。如果我单击应用程序中的链接或重新加载页面,它会再次开始工作。
蚂蚁想法如何解决这个问题?
jquery-turbolinks gem 不再支持Turbolinks 5 ,因此该解决方案现在已被弃用。
如果您想禁用 turbolinks-caching,只需将此元添加到您的页面;
<meta name="turbolinks-cache-control" content="no-cache">
Turbolinks Classic 的两种解决方案:
将缓存设置为 0,以便使用 HTML5 历史记录不缓存任何页面。
Turbolinks.pagesCached(0);
另一种解决方案是监听“page:restore”事件并调用您的初始化方法。后一种解决方案性能更高。
document.addEventListener("page:restore", function() {
app.init();
});
您可以在下一个turbolinks 问题讨论中找到答案。对我来说,下一个解决方案有效 - 使用下一个删除由 JS 初始化的元素(在我的情况下选择下拉列表):
document.addEventListener("turbolinks:before-cache", function() {
$('.chosen-select').chosen('destroy');
})
而不是像以前的一些答案中详述的那样在整个应用程序中完全禁用turbolinks-caching
(使 turbolinks 集成非常无用),您可以仅对给您带来 JS 麻烦的页面部分禁用 turbolinks
<div id="div_using_JS_functions" data-turbolinks='false'>
.
.
.
</div>