HTML script 元素的十大关键属性详解
在网页中引入 JavaScript 的核心方式是使用 <script> 标签。该标签由 Netscape 创造,其语义分类取决于所在位置:置于 <head> 内时属于元数据类型,出现在 <body>、<section> 等容器中则为短语内容。
1. async
仅适用于外部脚本文件,用于指示浏览器异步下载并立即执行脚本,不影响页面其余部分的加载流程。多个带 async 的脚本执行顺序不可控,因此不建议用于有依赖关系的脚本。
<script async src="https://cdn.example.com/app.js"></script>
2. charset
指定外部脚本所用字符编码,如 UTF-8 或 ISO-8859-1。不过该属性已不再推荐使用,现代浏览器通常能自动识别编码,且 W3C 规范中已将其移除。
<script src="utils.js" charset="UTF-8"></script>
3. crossorigin
控制跨域请求时是否携带凭据(如 cookies)。可选值包括:anonymous(不发送凭据)、use-credentials(发送凭据)。
<script src="https://external.com/script.js" crossorigin="anonymous"></script>
4. defer
标记脚本应在文档解析完成后才执行,但下载过程不受阻塞。多个带有 defer 的脚本按出现顺序执行,但实际行为受浏览器实现影响,建议仅保留一个延迟脚本以避免不确定性。
<script defer src="app.js"></script>
5. integrity
用于验证外部资源的完整性,通过比对收到内容的哈希值与预设签名是否一致。若不匹配,脚本将被拒绝执行,有效防范 CDN 资源被篡改的风险。
<script src="https://cdn.jsdelivr.net/jquery/3.6.0/jquery.min.js"
integrity="sha384-...abc123..."
crossorigin="anonymous"></script>
6. src
指向包含脚本逻辑的外部文件路径,支持绝对路径或相对路径。注意:外部文件中不得嵌套 <script> 标签。
<script src="/js/main.js"></script>
7. language
已被废弃,原用于声明脚本语言。现已被 type 属性取代,不建议使用。
8. type
定义脚本内容的 MIME 类型,常见值为 application/javascript,也可使用 application/ecmascript。若未指定,默认视为 JavaScript。
<script type="application/javascript">
console.log('Hello World');
</script>
9. referrerpolicy
控制脚本请求时发送的来源信息(referrer),常见取值如下:
no-referrer:不发送任何引用信息no-referrer-when-downgrade(默认):仅在安全等级不降低时发送来源origin:仅发送协议、域名和端口origin-when-cross-origin:跨域时发来源,同域时发完整路径same-origin:仅同域请求发送引用信息strict-origin-when-cross-origin:仅当安全级别不变或更高时发送来源unsafe-url:无论安全与否均发送完整来源,存在隐私风险
<script src="analytics.js" referrerpolicy="origin-when-cross-origin"></script>
10. nomodule
用于阻止支持模块化语法(ES2015+ 模块)的浏览器执行该脚本。常用于向后兼容旧版环境,确保非模块化脚本只在不支持模块的环境中运行。
<script nomodule src="legacy.js"></script>