我正在Rails 4上构建一个新站点。我注意到当从一个页面浏览到另一个页面时,Rails (Puma)返回304,而不是modified。到目前一切尚好。问题是,当发生这种情况时,加载的页面上的所有jQuery绑定似乎都没有被挂钩。因此,所有页面事件都不起作用(按钮单击等)。这里不涉及ajax,只是正常的页面加载。
如果我在浏览器中重新加载页面,服务器将返回200OK,并且所有绑定都已正确加载。如果我将JS代码粘贴到控制台上,所有绑定都会正确挂钩。这仅仅是服务器返回304时的初始页面加载,没有设置绑定。
我的直觉告诉我,jQuery没有触发“页面加载”事件,因此没有在页面上运行任何Javascript。但我不确定。
发布于 2014-01-20 11:02:47
多亏了mu short的提示(参见对问题的评论),我在这里找到了答案:Holder.js doesn't work with turbolinks
基本上,它的意思是不使用以下代码来初始化页面上的脚本……
$ ->
# CoffeeScript code here
..。建议使用以下选项:
$(document).bind 'page:change', ->
# CoffeeScript code here
绑定page:change事件而不是默认的“page onload”事件可以确保在服务器为HTML请求返回304时运行代码。
https://stackoverflow.com/questions/21219357
复制相似问题