Rails布局中的事件监听器?

时间:2014-09-13 20:17:37

标签: javascript ruby-on-rails-4

我有一个关于在rails 4布局中绑定javascript事件监听器的问题。基本上我在整个脚本(https://gist.github.com/dsulli99/5d8309046e5ec1ae55dd)内嵌,至少是为了让事情运行起来。

整个脚本正在我的布局的<body>标记内,我在我的应用程序中为每个页面使用相同的布局。

我的问题是这个;看来,当我点击链接以使用相同的布局渲染任何其他视图时,实际上并不执行。它只会在以下情况下执行:

1)第一次呈现使用该布局的视图或 2)如果我实际上点击了我的broswer上的'reload'。

我希望由于这是整个脚本在每次加载页面时执行的主体的一部分(即如果我点击使用link_to构建的链接)。是否有人能够告诉我为什么布局本身内嵌的javascript不会加载实现特定布局的每个页面?感谢您抽出宝贵时间帮助我。

谢谢,

1 个答案:

答案 0 :(得分:1)

除非您已将其删除,否则默认的Rails 4 Gemfile包含Turbolinks。它是一个JS库,它拦截GET请求并将<body>替换为XHR的结果到GET请求的位置。这意味着第一个页面之后的任何页面都有no window.onload event

您的代码依赖于window.onload,但它永远不会到来。同样收听page:load,这是Turbolinks在加载后发生的事件。