我正在尝试将我的应用转换为异步javascript加载:
<%= javascript_include_tag "application", async: true %>
问题是在异步加载Jquery之前,正在运行任何特定于页面的脚本。在加载application.js清单文件之前,我该如何推迟这些文件。
我尝试在$(window).load(function(){});
中包装我的页面js,但这没有帮助。我仍然看到以下错误:
Uncaught ReferenceError: $ is not defined
更新:
这似乎对我有用,但我希望有人确认这是正确的做法:
<%= javascript_include_tag "application", async: true, onload: 'pageScripts()' %>
然后页面脚本如:
<script>
function pageScripts() {
// do something
}
</script>
答案 0 :(得分:13)
您的方法是正确的但是我建议将Async限制为仅用于生产,因为在开发中Sprockets还没有将所有文件连接起来。
<%= javascript_include_tag "application", async: Rails.env.production?, onload: 'pageScripts()' %>