我遇到一个问题,与目前默认的turbolinks推荐的加载事件有关:
document.addEventListener('turbolinks:load', function() {
…
});
发生的情况是,当页面加载时,在Safari上不会触发此操作。因此,我将
Turbolinks.dispatch(“turbolinks:load”);
添加到 application.js
中。它似乎工作正常。但是在Chrome上,它会自动触发,因此最终发生的是 turbolinks:load
事件双重触发。我的第一个解决方法是仅在非Chrome浏览器上触发 turbolinks:load
。但不知何故,即使在Chrome上,有些视图也无法自动触发 turbolinks:load
。所以我最后找到的解决方案是使用:$(document).on('ready turbolinks:load', function() {
…
});
这似乎解决了所有问题,因为它在第一次页面加载或重新加载时以及我点击链接时触发。它也可以在Chrome和Safari中触发。
是否有更好的处理方法?
文档说第一版是正确的,但情况似乎不是这样。
我错过了什么吗?
(注意:对我来说,使用jQuery并不是不利因素,我知道我可以使用几个document.addEventListener
来实现这个功能)
async
? - Dom Christie