Turbolinks 加载事件不适用于页面刷新
Turbolinks load event not working on with page refresh
Javascript 这样的代码
document.addEventListener("turbolinks:load", function() {
$("p#hide_if_js").hide();
});
当我在页面之间单击或使用浏览器后退按钮时, 使用 turbolinks 时工作正常。但是,当我刷新页面时,没有加载 javascript 代码。如果我刷新几次,什么也没有发生,但是如果我点击 link 到不同的后退并点击返回页面,javascript 代码现在被加载。
看起来 turbolinks:load 正在处理大多数事件,但不是页面重新加载。文档说它 'fires once on the initial page load and again after every Turbolinks visit'。出了什么问题?
我正在使用 jquery.turbolinks gem 和关联的 compatibility 代码。
你可以这样使用
document.addEventListener('load turbolinks:load',function() {
//Your code
});
等效咖啡码
document.addEventListener 'load turbolinks:load', ->
#Your code
return
在 uzaif's 评论的帮助下,以下内容有效
ready = ->
if $('body').attr('data-loaded') == 'T'
return
# code goes here
$('body').attr('data-loaded','T')
$(document).ready(ready)
$(document).on('turbolinks:load', ready)
$('body').attr('data-loaded')
行是为了防止代码加载两次。
按照 turbolinks 说明的建议,此方法使用事件委托。目前尚不清楚为什么仍然需要使用 $(document).ready(ready)
,因为 turbolink:load
旨在涵盖这一点。
$(document).on('turbolinks:load', function() {
// enter code here
});
Javascript 这样的代码
document.addEventListener("turbolinks:load", function() {
$("p#hide_if_js").hide();
});
当我在页面之间单击或使用浏览器后退按钮时,使用 turbolinks 时工作正常。但是,当我刷新页面时,没有加载 javascript 代码。如果我刷新几次,什么也没有发生,但是如果我点击 link 到不同的后退并点击返回页面,javascript 代码现在被加载。
看起来 turbolinks:load 正在处理大多数事件,但不是页面重新加载。文档说它 'fires once on the initial page load and again after every Turbolinks visit'。出了什么问题?
我正在使用 jquery.turbolinks gem 和关联的 compatibility 代码。
你可以这样使用
document.addEventListener('load turbolinks:load',function() {
//Your code
});
等效咖啡码
document.addEventListener 'load turbolinks:load', ->
#Your code
return
在 uzaif's 评论的帮助下,以下内容有效
ready = ->
if $('body').attr('data-loaded') == 'T'
return
# code goes here
$('body').attr('data-loaded','T')
$(document).ready(ready)
$(document).on('turbolinks:load', ready)
$('body').attr('data-loaded')
行是为了防止代码加载两次。
按照 turbolinks 说明的建议,此方法使用事件委托。目前尚不清楚为什么仍然需要使用 $(document).ready(ready)
,因为 turbolink:load
旨在涵盖这一点。
$(document).on('turbolinks:load', function() {
// enter code here
});