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

标签 javascript ruby-on-rails turbolinks

像这样的 Javascript 代码

document.addEventListener("turbolinks:load", function() {
  $("p#hide_if_js").hide();
});

当我在页面之间单击或使用浏览器后退按钮时,turbolinks 工作正常。但是,当我刷新页面时,javascript 代码没有加载。如果我刷新几次,什么也没有发生,但如果我点击一个链接到不同的返回并点击返回页面,javascript 代码现在被加载。

看起来 turbolinks:load 对大多数事件有效,但对页面重新加载无效。文档说它“在初始页面加载时触发一次,并在每次 Turbolinks 访问后触发”。出了什么问题?

我正在使用 jquery.turbolinks gem 和相关的 compatibility代码。

最佳答案

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 说明的建议,此方法使用事件委托(delegate)。目前尚不清楚为什么仍然需要使用 $(document).ready(ready),因为 turbolink:load 旨在涵盖这一点。

关于javascript - Turbolinks 加载事件不适用于页面刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421496/

相关文章:

css - 如何自定义使用 simple_form gem 创建的设计登录和注册表单?

javascript - 具有 jQuery 引用格式的 A4 论文式两列 CSS

javascript - 我可以在 HTML 文档中运行 Nodejs JavaScript 脚本吗?

ruby-on-rails - Rails ActiveRecord 关系 - 避免编写 .blank?检查

javascript - 如何在 Rails 6 中禁用 TurboLinks?

javascript 在渲染的 js 部分中不可用

javascript - 如何在 Rails 4 中通过 Turbolinks 使用页面/查看特定的 Javascript?

javascript - 如何将表情符号字符写入文本区域

javascript - BIgQuery UDF Javascript可在Web UI中使用,但不能嵌入

ruby-on-rails - 获取访问 token !在 Google API 中—— "Missing authorization code."