Javascript 异步=“异步”;异步;a<;脚本>;html中的标记,它是什么意思?

Javascript 异步=“异步”;异步;a<;脚本>;html中的标记,它是什么意思?,javascript,html,Javascript,Html,HTML中标记的async=“async”属性,它是什么意思 <script async="async" src="...."></script> 例如,如果在外部脚本(带有src=)上设置了async属性,则支持该属性的浏览器将在后台下载该脚本,而不会阻止页面上的其余内容。只要完成下载,脚本就会执行 正如我在评论中提到的,设置async=true、async=false或async=anything都意味着相同的事情。它们支持异步行为。使脚本非异步的唯一方法是完

HTML中
标记的
async=“async”
属性,它是什么意思

<script async="async" src="...."></script>


例如,如果在外部脚本(带有src=)上设置了async属性,则支持该属性的浏览器将在后台下载该脚本,而不会阻止页面上的其余内容。只要完成下载,脚本就会执行

正如我在评论中提到的,设置async=true、async=false或async=anything都意味着相同的事情。它们支持异步行为。使脚本非异步的唯一方法是完全忽略该属性


似乎也不需要是
async=async
,只需要
async

来自谷歌:

第二种方法是使用属性,其中 适当,这可以防止解析阻塞初始页面 通过延迟加载,直到浏览器的UI线程不忙 还有别的


在XHTML中,因此需要将属性作为属性及其值进行注释,而HTML则不这样做。我喜欢该原则的一致性,因此我总是以以下形式使用该原则:

async="async"
通过这种方式,我可以将文档作为application/xhtml+xml提供

如果您对此不感兴趣,因为您认为将文档作为文本/html提供已经足够了,那么您可以始终使用:

async
只要异步就足够了

您可以同时尝试这两种方法,然后测量页面速度的差异。Like使用单一的物质来做这件事。

它只是简单的意思

  • 异步(或并行)下载外部脚本,而不阻止html解析
  • 下载后的脚本将立即执行,阻止html解析

  • 一个很好的例子

    注意:此属性仅适用于外部脚本(具有src属性的脚本),而不适用于内联脚本。

    包含:

    例如,如果属性存在,则 经典脚本将与解析并行获取,并作为 一旦可用(可能在解析完成之前)。如果
    async
    属性不存在,但
    defer
    属性存在, 然后将并行获取经典脚本,并在 页面已完成解析。如果两个属性都不存在,则 立即获取并计算脚本,阻止解析 直到这些都完成

    例如,如果存在
    async
    属性,则模块 脚本及其所有依赖项将与 解析,模块脚本将在完成后立即进行评估 可用(可能在解析完成之前)。否则 模块脚本及其依赖项将与 解析并在页面完成解析后进行计算。(该
    延迟
    
    属性对模块脚本没有影响。)

    以下示意图总结了所有这些内容:

    由于大多数历史原因,这些属性的确切处理细节有些琐碎,涉及HTML的许多方面。因此,实施需求必然分散在整个规范中。[在HTML规范中描述的]算法描述了此处理的核心,但这些算法引用了HTML、外来内容和XML中脚本开始和结束标记的解析规则、document.write()方法的规则、脚本处理等

    即使指定了
    async
    属性,也可以指定
    defer
    属性,以使仅支持
    defer
    (而不支持
    async
    )的传统Web浏览器退回到
    defer
    行为,而不是默认的阻塞行为


    因此,如果我记得将其设置为
    async
    ,我就不需要将javascript放在页面底部,对吗?第一个链接的锚不再起作用,文档中也没有提到
    async
    。您的答案是信息性的(关于doc/mime类型)但它没有解决我的实际问题:属性
    async
    的作用是什么?很抱歉,我没有谈到这个主题。async是script元素的一个新的HTML5属性。它使浏览器在找到脚本标记时继续解析页面的其余部分,而不是先解析脚本,然后继续解析页面。我发现了一个有趣的教程:不,并非所有情况下都是这样。对于XHTML,作为application/xml+XHTML使用,这是一个致命错误,当您注意到这样的属性时,会导致页面冻结。