如何检查 Javascript 脚本是否已异步加载(Async)或是否存在异步属性?

Ang*_*gas 5 html javascript dom asynchronous callback

我想知道是否存在一种方便的方法来检查脚本(在执行时)是否已异步加载。

例如脚本标签:

<script async type="text/javascript" src="js/async.js"></script>
Run Code Online (Sandbox Code Playgroud)

脚本async.js:

if (_condition_to_check_if_this_has_been_loaded_async) { console.log("async: true") }
Run Code Online (Sandbox Code Playgroud)

Gre*_*Ros 4

除非您想要IE兼容性,否则此问题的正确答案是使用鲜为人知但广泛支持的document.currentScript属性。

此属性返回HTMLScriptElement当前正在执行的脚本的 的(如果脚本不在标记中/是回调或类似的,则返回任何内容),它告诉您它是否具有 /async属性defer等。

MDN 示例甚至引用了这个确切的用例:

if (document.currentScript.async) {
  console.log("Executing asynchronously");
} else {
  console.log("Executing synchronously");
}
Run Code Online (Sandbox Code Playgroud)