Turbolinks 多次加载 Javascript
Posted
技术标签:
【中文标题】Turbolinks 多次加载 Javascript【英文标题】:Turbolinks loads Javascript multiple times 【发布时间】:2017-01-14 02:05:01 【问题描述】:我使用的是 Turbolinks 2.5.3,主页底部有一个脚本标签。
<script>
$(document).ready(function()
alert('hello');
);
</script>
对于网站上的每个页面,我运行以下 JS:
Turbolinks.pagesCached(0);
如果我访问主页,警报会出现一次。如果我按后退按钮,然后按浏览器上的前进按钮,主页将加载,现在出现两个警报。如果我再次重复此过程,将出现三个警报。
这是我的问题:
为什么当我明确告诉 Turbolinks 不要缓存页面时,它会缓存页面。它是否与 Turbolinks 转换文档就绪事件侦听器有关?如何解决这个问题,让它每次只加载一次?
【问题讨论】:
你为什么在每个页面上都使用pagesCached(0)
?
【参考方案1】:
在加载时使用它
$(document).on('ready page:load', function()
https://github.com/turbolinks/turbolinks-classic#events
【讨论】:
抱歉,这仍然会导致表单多次加载。 不,同样的结果。警报加载两次。【参考方案2】:使用turbolinks:load
<script>
$(document).on('turbolinks:load',function()
alert('hello');
);
</script>
【讨论】:
很遗憾,此代码根本没有显示警报。 这对于 turbolinks 5 是准确的,但对于 2.5.3 则不准确【参考方案3】:试试这样的
<script>
$(document).ready(function()
if (alert('hello'))
else
alert('hello');
);
</script>
【讨论】:
这不是一个可行的解决方案,因为alert('hello')
实际上并没有在我的代码中使用。为了简单起见,我添加了它。以上是关于Turbolinks 多次加载 Javascript的主要内容,如果未能解决你的问题,请参考以下文章
jQuery-turbolinks - link_to 确认:在 Rails 中多次弹出
在加载 <script> 标记之前等待 turbolinks 加载