Turbolinks加载事件不适用于页面刷新

Obr*_*ios 7 javascript ruby-on-rails turbolinks

像这样的Javascript代码

document.addEventListener("turbolinks:load", function() {
  $("p#hide_if_js").hide();
});
Run Code Online (Sandbox Code Playgroud)

当我在页面之间单击或使用浏览器后退按钮时,turbolinks可以正常工作。但是,当我刷新页面时,未加载javascript代码。如果我刷新几次,则什么也没有发生,但是,如果我单击指向其他背面的链接并单击返回页面,则将加载javascript代码。

看起来turbolinks:load在大多数事件上都起作用,但是页面重新加载却没有。该文档说,它“在初始页面加载时触发一次,并在每次访问Turbolinks之后触发”。怎么了?

我正在使用jquery.turbolinks gem和关联的兼容性代码。

Obr*_*ios 5

uzaif评论的帮助下,以下工作有效

  ready = ->
    if $('body').attr('data-loaded') == 'T'
      return
    # code goes here
    $('body').attr('data-loaded','T')
  $(document).ready(ready)
  $(document).on('turbolinks:load', ready)
Run Code Online (Sandbox Code Playgroud)

这些$('body').attr('data-loaded')行是为了防止代码加载两次。

这种方法使用事件委托,正如 turbolinks 说明所推荐的那样。目前尚不清楚为什么仍然需要使用 ,$(document).ready(ready)因为turbolink:load旨在涵盖这一点。