2014-10-08 71 views
0

在做了一些有趣的异步阅读后,我找不到任何有关如果您首先有一个常规脚本标记,然后是一个与异步应该发生的信息。混合html5 <脚本异步>与非异步<script>标签

我试过一个快速测试,它似乎做了我希望的事情:如果我先放置一个非异步标记,它似乎总是在稍后的异步归因标记之前加载它。下面是我与测试代码:

的test.html:

<!doctype html> 
<html> 
    <head><title>test</title></head> 
    <body> 
     <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
     <script src="test.js" async></script> 
    </body> 
</html> 

test.js:

alert(window.jQuery); 

在每一种情况下,它似乎jQuery是加载。也许我在测试中错过了一些东西。它是否正确?我可以将依赖关系放入非异步标记,然后使用异步依赖项吗?这样做特别有利吗?

有没有什么问题?如果你有一些异步然后是非异步会发生什么? async'd js会先加载吗?

回答

1

非异步脚本标签页的块处理。浏览器可能会向前看并在执行jquery之前加载test.js,但浏览器无法处理该脚本,因为它不知道jquery对页面做了什么(document.writeln,更改窗口对象..)。

所以,是的,它会工作。

这样做会使加载页面更快一点,因为两个脚本之一可以异步加载。它可能不会匹配优化异步加载程序的启动时间。

2

这里的问题我可以回答。我很久以前并不十分确定它。

  1. 第一个脚本是同步加载的。这意味着它将一直持续到文件完全加载,然后进入下一行。

  2. 取决于您何时需要加载此文件。如果必须在加载页面之前加载它,则不应该对该文件使用异步。

  3. 异步会同时加载一个非异步。如果你最后有两个非asyncs。这两个非asyncs将加载同步。 (DUH)

  4. 异步会在该行上加载。

通过它我指的是读者