哪些浏览器支持<script async =“ async” />?


196

2009年12月1日,Google宣布支持异步Google Analytics(分析)跟踪

异步跟踪是通过使用<script>标签的async指令来实现的。

哪些浏览器支持async指令(<script async="async" />),以及从哪个版本开始?


1
恰好在您链接到的页面上:“ Firefox 3.6是第一个正式提供对该功能的支持的浏览器” FWIW是HTML5功能,正在迅速获得越来越好的支持。

51
HTML5规范说async =“ true”是非法的。作为布尔HTML属性,该属性的存在表示“ true”,而该属性的缺失表示“ false”。如果存在该属性,则该属性的唯一有效值为“”和“异步”。
乔尔·穆勒

这是对该属性html5demo.braincracking.org/demo/async.php的实时测试。

3
这应该是一个书签,以便经常检查对这个问题感兴趣的任何人:en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29
Pumpkinthehead 2012年

Answers:


162

由Google指定的异步支持通过以下两个部分实现:

  • 使用网页上的脚本(脚本由google提供)将<script>标记写到DOM。

  • 该脚本具有async =“ true”属性,以向兼容的浏览器发出信号,表明它可以继续呈现页面。

第一部分在不支持<script async..标签的浏览器上工作,允许它们使用“ hack”(虽然相当可靠)加载异步,并且还允许渲染页面而无需等待ga.js的检索。

第二部分仅影响了解异步html属性的兼容浏览器

  • FF 3.6+
  • FF for Android所有版本
  • IE 10+(从预览版2开始)
  • 铬8+
  • Chrome For Android所有版本
  • Safari 5.0+
  • iOS Safari 5.0以上版本
  • Android Browser 3.0+(蜂窝状)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini (自8.0版起)

指定异步的“ html5适当”方法是使用 <script async src="...",而不是<script async="true"。但是,最初,浏览器不支持此语法,也不支持在引用的元素上设置script属性。如果需要,列表会更改:

  • FF 4+
  • IE 10+(预览版2及更高版本)
  • 铬12+
  • Chrome for Android 32+
  • Safari 5.1+
  • 没有android版本

34
我不确定您是否甚至需要async =“ true”,您可以只写'async'
vsync

4
因此,如果我像Google那样生成脚本标签,那将是正确的:var s = document.createElement('script'); s.async ='true'; s.async = true; (google就是这样)或s.async ='async'; ?
托比

8
@Tobias:您正在混合HTML布尔属性和相应的DOM元素属性:HTML属性(存在于标记中,当使用显式设置属性时setAttribute,不建议使用)应该只是存在或设置为空字符串或本身(defer="defer",在编写符合XHTML的文档时尤其重要);使用JavaScript动态设置元素的属性时,应使用s.async = true
Marcel Korpel

39
@vsync:甚至不应该这样true;要么asyncasync=""async="async"
Marcel Korpel

4
请注意,该帖子链接在问题集中async="true"。这不是做正确的方式,现在,但它是这样做的唯一的广泛支持的方式。例如,支持IE10p2 async="true"但不支持IE10p2async="async"
Philip Rieck

60

确实,这个问题有两个部分。

  1. 问:哪些浏览器支持标记中脚本标签上的“异步”属性?

    答:IE10p2 +,Chrome 11 +,Safari 5 +,Firefox 3.6+

  2. 问:哪些浏览器支持在动态创建的脚本元素上为JavaScript中的“ async” 属性定义行为的新规范?

    答:IE10p2 +,Chrome 12 +,Safari 5.1 +,Firefox 4+

至于Opera,他们即将发布支持两种异步的版本。我一直在与他们紧密合作,并且应该很快就会发布(我希望!)。

有关有序异步(也称为“ async = false”)的更多信息,请参见:http : //wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

另外,要测试浏览器是否支持新的动态异步属性行为,请执行以下操作:http : //test.getify.com/test-async/




1

async目前由主流浏览器的所有最新版本的支持。现在大多数浏览器都支持它。

您可以在以下MDN网站上跟踪哪些浏览器支持异步(和延迟):https :
//developer.mozilla.org/en-US/docs/HTML/Element/script


尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会无效。- 评论
迈克尔·加斯基尔

@MichaelGaskill这够了吗?您要我链接到Philip的答案吗?
brunoais

0

刚刚查看了使用Google Analytics(分析)的此页面的DOM(document.scripts [1] .attributes)。我可以告诉你,谷歌正在使用async =“”。

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.