2662

13 分钟

#HTML 的 <script> 标签

HTML <script> 元素用于嵌入可执行代码或数据,这通常用作嵌入或者引用 JavaScript 代码。<script> 元素也能在其他语言中使用,比如 WebGL 的 GLSL 着色器语言和 JSON。

#属性

  • async: 对于普通脚本,如果存在 async 属性,那么普通脚本会被并行请求,并尽快解析和执行。
  • crossorigin: 正常的 script 元素将最小的信息传递给 window.onerror,用于那些没有通过标准 CORS 检查的脚本。要允许对静态媒体使用独立域名的网站进行错误记录,请使用此属性。参见 CORS 设置属性,以获得对其有效参数的更多描述性解释。
  • defer: 这个布尔属性的设置是为了向浏览器表明,该脚本是要在文档被解析后,但在触发 DOMContentLoaded 事件之前执行的。
  • fetchpriority: 提供一个指示,说明在获取外部脚本时要使用的相对优先级。允许的值:
    • high: 获取该脚本的优先级比其他外部脚本的等级要高。
    • low: 获取该脚本的优先级比其他外部脚本的等级要低。
    • auto: 默认值:自动确定获取该脚本的相对优先级。
  • integrity: 包含用户代理可用于验证所获取到资源的完整性的内联元数据。参见子资源完整性。
  • nomodule: 这个布尔属性被设置来标明这个脚本不应该在支持 ES 模块的浏览器中执行。实际上,这可用于在不支持模块化 JavaScript 的旧浏览器中提供回退脚本。
  • nonce: 在 script-src Content-Security-Policy 中允许脚本的一个一次性加密随机数(nonce)。服务器每次传输策略时都必须生成一个唯一的 nonce 值。提供一个无法猜测的 nonce 是至关重要的,因为绕过一个资源的策略是微不足道的。
  • referrerpolicy: 表示在获取脚本或脚本获取资源时,要发送哪个 referrer:
    • no-referrer :不会发送 Referer 标头。
    • no-referrer-when-downgrade (默认):如果没有 TLS(HTTPS)协议,Referer 标头将不会被发送到源上。
    • origin :发送的 referrer 将被限制在 referrer 页面的源:其协议、主机和端口。
    • origin-when-cross-origin :将会限制发送至其他源的 referrer 的协议、主机和端口号。在同源的导航上仍然包括路径。
    • same-origin :在同源内将发送 referrer,但是跨源请求不包含 referrer 信息。
    • strict-origin :只在协议安全等级相同时(如 HTTPS→HTTPS)发送文档的源作为 referrer,目标安全性降低(如 HTTPS→HTTP)时不发送。
    • strict-origin-when-cross-origin :在执行同源请求时,发送完整的 URL,但只在协议安全级别保持不变(如 HTTPS→HTTPS)时发送源,而在目标安全性降低(如 HTTPS→HTTP)时不发送标头。
    • unsafe-url :referrer 将包含源和路径(但不包含片段、密码和用户名)。这个值是不安全的,因为它将 TLS 保护的资源的源和路径泄露给不安全的源。 备注: 空字符串("")既是默认值,也是在不支持 referrerpolicy 的情况下的一个回退值。如果没有在 <script> 元素上明确指定 referrerpolicy,它将采用更高级别的 referrer 策略,即对整个文档或域设置的策略。如果没有更高级别的策略,空字符串将被视为等同于 no-referrer-when-downgrade。
  • src: 这个属性定义引用外部脚本的 URI,这可以用来代替直接在文档中嵌入脚本。
  • type: 该属性表示所代表的脚本类型。该属性的值可能为以下类型:
    • 属性未设置(默认),一个空字符串,或一个 JavaScript MIME 类型: 代表脚本为包含 JavaScript 代码的“传统的脚本”。如果脚本指的是 JavaScript 代码,我们鼓励作者省略这个属性,而不是指定一个 MIME 类型。所有的 JavaScript MIME 类型都列在 IANA 的媒体类型规范中。
    • module: 此值导致代码被视为 JavaScript 模块。其中的代码内容会延后处理。charset 和 defer 属性不会生效。对于使用 module 的更多信息,请参见 JavaScript 模块指南。与传统代码不同的是,模块代码需要使用 CORS 协议来跨源获取。
    • importmap: 此值代表元素体内包含导入映射(importmap)表。导入映射表是一个 JSON 对象,开发者可以用它来控制浏览器在导入 JavaScript 模块时如何解析模块标识符。
    • 任何其他值: 所嵌入的内容被视为一个数据块,不会被浏览器处理。开发人员必须使用有效的 MIME 类型,但不是 JavaScript MIME 类型来表示数据块。所有其他属性,包括 src 均会被忽略。
  • blocking: 这个属性明确指出,在获取脚本的过程中,某些操作应该被阻断。要阻断的操作必须是一个以空格分隔的列表,下面列出了阻断属性。
    • render :屏幕上渲染内容的操作应该被阻断。

创建于 2025/5/22

更新于 2025/5/27