如何在异步加载清单文件后加载页面javascript

时间:2016-03-07 15:15:43

标签: javascript ruby-on-rails asynchronous

我正在尝试将我的应用转换为异步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>

1 个答案:

答案 0 :(得分:13)

您的方法是正确的但是我建议将Async限制为仅用于生产,因为在开发中Sprockets还没有将所有文件连接起来。

<%= javascript_include_tag "application", async: Rails.env.production?, onload: 'pageScripts()' %>