如果我在Rails中使用Turbolinks,则单击浏览器中的“返回”将禁用我的javascript代码

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

ant想法如何解决这个问题?

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

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

 

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'); })