jquery加载异步和就绪功能不起作用

Sta*_*ski 2 javascript jquery load document-ready async-await

为了优化我的文档的负载,我使用像这样加载jquery异步

<script async type="text/javascript" src="js/jquery-1.12.3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后我使用jquery调用脚本:

<script type="text/javascript">
    jQuery(document).ready(function() {
    App.init();
    OwlCarousel.initOwlCarousel();
    FancyBox.initFancybox();
    StyleSwitcher.initStyleSwitcher();

    });
</script>
Run Code Online (Sandbox Code Playgroud)

它返回我没有定义jquery.

我不知道我应该使用什么,我虽然.readyfunction会等到所有文件都被加载后再调用它.

对于boostrap库来说,它告诉我没有定义jquery.

我试过要求脚本最后加载,但它仍然无法正常工作.

任何帮助将不胜感激.

And*_*rey 9

由于jquery脚本是异步jquery加载的,因此在脚本执行时不会加载.因此,您需要通过订阅load事件来等待它加载,如下所示:

<script async id="jquery" type="text/javascript" src="https://code.jquery.com/jquery-2.2.3.js"></script>
Then I call a script using jquery :

<script type="text/javascript">
  document.getElementById('jquery').addEventListener('load', function () {
    App.init();
    OwlCarousel.initOwlCarousel();
    FancyBox.initFancybox();
    StyleSwitcher.initStyleSwitcher();
  });
</script>
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么有人想做这样的事情.

为了优化页面加载速度,最好将所有javascript放在正文的末尾,这样首先加载内容,如果同步加载脚本,脚本不会延迟页面呈现事件.

  • 这是不正确的 - 身体末端的JS将在内容加载后_start_加载,这导致'uncanny valley':页面看起来已加载但在JS加载之前没有任何效果.这在特定的背景下可能是可取的,但它并不总是更好.同时,`<head>`中的`<script async ...`在你的内容加载时立即开始在后台下载 - 如果你想让内容快速交互,那么它就是一个更好的模式. (2认同)

小智 5

Question Script Tag - async & defer可以很好地解决您的问题。

简而言之,当其他脚本依赖它时,您无法异步加载 jQuery 或其他库,而没有一些额外的异步处理来执行依赖库的脚本。