<script>元素
属性
- async:可选。表示应该立即下载脚本。只对外部脚本文件有效。
- charset:可选。字符集。
- crossorigin:可选。配置相关请求的CORS(跨域资源共享)设置。
- "anonymous" 不必设置凭据标志
- "use-credentials" 设置凭据标志,出站请求会包含凭据。
- defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。
- integrity(完整性):可选。允许 比对 接受到的资源和指定的加密签名以验证子资源完整性。
- type:可选。text/javascript。
标签位置
如果将script标签全都放在页面的head标签内,这种目的可以把外部的CSS和JavaScript文件集中放到一起,但是也必须把所有的JavaScript代码都下载、解析、解释完成后,才能开始渲染页面,这会导致白屏问题。所以现在Web应用都会把所有的JavaScript放在body元素的后面。
defer
- 立即下载脚本,但是延迟执行。
- 按照出现的顺序执行,第一个延迟的脚本在第二个延迟的脚本之前执行,且都在DOMContentLoaded事件之前执行。
- 最好只包含一个这样的脚本。
async
- 立即下载脚本,异步执行。
- 不必等到脚本下载和执行后再加载页面。
- 不能保证按照脚本在页面出现的顺序执行。
- 异步脚本不应该在加载期间修改DOM。
- 保证在页面的load事件之前执行。
外部文件
- 可维护性
- 缓存 用到同一个文件,只需下载一次。
<noscript>元素
- 可以指定在浏览器不支持脚本时显示内容。
- 如果浏览器支持并启用脚本,则<noscript>元素中的任何内容都不会被渲染。