【问题标题】:Rails turbolinks issues with window.onloadRails turbolinks 与 window.onload 相关的问题
【发布时间】:2016-02-06 19:55:46
【问题描述】:

我有带有baguetteBox 库的rails 应用程序,用于图像弹出效果,但它只有在页面刷新后才能正常工作。 我知道这是因为 turbolinks,所以我安装了 jquery-turbolinks gem,但它仍然无法正常工作。 //要求 jquery.turbolinks 在正确的位置。

  //
  //= require jquery
  //= require jquery.turbolinks
  //= require jquery_ujs
  //= require baguetteBox.min
  //= require turbolinks
  //= require_tree .

我在显示视图底部有这段代码

<script>
   window.onload = function() {
   baguetteBox.run('.step_div');
   };
</script>

初始化脚本。

有什么想法吗?

【问题讨论】:

    标签: javascript jquery ruby-on-rails turbolinks


    【解决方案1】:

    您需要为 turbolink 触发稍微不同的事情:

    var myFunc = function() {
      baguetteBox.run('.step_div');
    };
    
    $(document).ready(myFunc);
    $(document).on('page:load', myFunc); // Classic Turbolinks
    $(document).on('turbolinks:load', myFunc); // Turbolinks 5
    

    这样,您的函数将在标准页面就绪触发器上被调用,并且当 turbolinks 将页面加载到内存中而没有实际的页面刷新时。 显然,您只需要为您正在使用的适当版本的 turbolinks 包含 turbolinks 事件触发器。

    在这里查看由 turbolinks 5 触发的其他事件:https://github.com/turbolinks/turbolinks#full-list-of-events

    对于原始的 turbolinks,文档在这里: https://github.com/rails/turbolinks/#events

    【讨论】:

    • 感谢您的链接,我赞成。你有更多关于 Turbolinks5 的参考资料吗?
    • 除了链接存储库中可用的文档和源代码之外,没有什么超级有用的了。我相信它将与 Rails 5 一起发布。
    • 谢谢,我看了 - 看起来主要的变化是钩子,所以我必须留意。感谢您的提醒,我学到了一些 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多