gpt4 book ai didi

Javascript Async=true 属性

转载 作者:数据小太阳 更新时间:2023-10-29 04:26:23 30 4
gpt4 key购买 nike

我在某个未具名 vendor 的文档中看到此代码示例。它似乎异步加载脚本,然后从中调用函数。我意识到 if-undefined 检查可以防止明显的错误,但这不是完全不正确吗?

我相信在 IE8/9 中它会正常工作,但会阻塞执行,直到加载并执行 LOADER_URL 脚本;而且我相信许多其他支持异步属性的浏览器,这只会导致内联 block 仅在部分时间执行 if block 内的代码。文档指出“标签是异步的,不会减慢页面的加载速度。”

<script type="text/javascript" src="LOADER_URL" async="true"></script>
<script type="text/javascript">
if (typeof (OBJECT_DEFINED_IN_LOADER_URL) != "undefined") { OBJECT_DEFINED_IN_LOADER_URL.Load(false); }
</script>

查看他们的文档的早期版本,它没有 async 属性的建议,也没有提出这种说法。某些技术作家是否犯了一个错误,并在没有在所有浏览器中进行充分测试的情况下说“是的,这会起作用”?在 IE <= 9 中它会一直工作。而且由于异步代码调试起来非常有趣……也许它对他们有用……

这是我的怀疑:)

最佳答案

你的怀疑是正确的。几乎可以保证发布的代码不会在支持异步属性的浏览器中按预期工作。

基本上有 3 种“模式”:

  1. 如果存在 async 属性,则脚本将在可用时异步执行。
  2. 如果不存在 async 属性但存在 defer 属性,则在页面完成解析时执行脚本。
  3. 如果这两个属性都不存在,则在用户代理继续解析页面之前立即获取并执行脚本。

来源:http://www.w3.org/html/wg/drafts/html/master/scripting-1.html

注意:忽略 async 属性值,仅存在该属性就表明脚本应该异步执行。因此,将值设置为 false 仍然与将其设置为 true 相同。

关于Javascript Async=true 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434338/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com