我在某个未命名的供应商文档中看到了此代码示例。它似乎异步加载脚本,然后从它调用一个函数。我意识到 if-undefined 检查将防止出现明显错误,但这不是完全不正确吗?
我相信在 IE8/9 中它会正常工作,但会阻止执行,直到 LOADER_URL 脚本加载并执行;而且我相信在许多其他支持异步属性的浏览器中,这只会导致内联块仅在部分时间执行 if 块内的代码。文档指出“标签是异步的,不会减慢页面的加载速度。”
<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 中它会一直工作。而且由于异步代码调试起来非常有趣……也许它对他们有用……
这是我的怀疑:)