包含异步javascript文件有什么区别?

时间:2013-03-12 11:36:59

标签: javascript html html5 dom asynchronous

例如,google +会提供以下代码:

<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>

但为什么不呢:

<script async src="https://apis.google.com/js/plusone.js"></script>

2 个答案:

答案 0 :(得分:3)

所有浏览器

async and its cousin defer都不是supported。 (例如,IE直到IE10才得到它们。)第一种方法永远是异步的,第二种方法不会出现在不支持async的浏览器上。

第一个始终是异步的原因是script元素动态地添加到DOM中,就像不支持文档的解析和呈现一样,而<script>标记在HTML中内联内容执行(禁止asyncdefer的使用和支持。

答案 1 :(得分:0)

有很好的解释:Which browsers support <script async="async" />?

是的,现在大多数浏览器都支持异步,但通常您需要100%保证您的代码有效,然后您需要使用第一个表单