javascript - 有什么理由不使用异步脚本元素吗?

标签 javascript html asynchronous

尽管继续采用 script 元素的 async 属性,但仍然有人建议将脚本放置在不带 async 属性的文档底部。如果避免 document.write ,使用异步时是否有任何可能的陷阱?

例如,如果我加载一个包含在 jQuery 的 $(document).ready(...) 中的脚本,在添加异步时是否有可能遇到任何负面影响属性?我可以在所有此类脚本上可靠地指定异步吗?

最佳答案

如果您的脚本依赖于以特定顺序运行,则无法使用异步。这通常意味着他们相互依赖。

最近发生在我身上的一个例子是使用 Google 的 PrettyPrint 语法突出显示库。您包含该库,然后调用 prettyPrint() 将语法突出显示应用于相关 block 。

<script src='http://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.js' type='text/javascript'></script>
<script type='text/javascript'>prettyPrint();</script>

因此,如果您的所有脚本都包装在 $(document).ready 中,那么它们很可能非常适合使用 async。不过,您应该问的问题是您是否可以合并所有文件,这样您只需要提出一个请求。

<小时/>

defer 属性与 async 类似,但会等到 HTML 解析完毕,然后按照脚本在 HTML 文件中出现的顺序运行脚本。如果 prettyPrint() 的调用是外部的而不是内联的,那么这在上述情况下是有效的,因为我不认为它适用于内联脚本。

关于javascript - 有什么理由不使用异步脚本元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915819/

相关文章:

javascript - 在循环点中在 Canvas 上绘图已关闭

javascript - nodeJS 设计模式打破 async.waterfall 或 promise.then.then

javascript - javascript 富文本编辑器的替代品

javascript - 如何将div设置为背景?

javascript - 具有空值的 localeCompare 数组

javascript - double forEach 到 double for 循环

html - CSS 悬停过渡 - 如何消除延迟?

html - 使用 HTML5 Canvas 动画作为背景

android - 将可运行对象发布到使该 View 无效的 View 有时不起作用

javascript - 使用 Facebook Javascript API 将用户注销并重新登录