面向 Web 开发人员的版本 - 最后更新于 2024 年 9 月 12 日
如果一个字符串是 有效的 URL 字符串 但不是空字符串,则它是一个 有效的非空 URL。
如果一个字符串在 去除其开头和结尾的 ASCII 空格 后,是一个 有效的 URL 字符串,则它是一个 可能被空格包围的有效 URL。
如果一个字符串在 去除其开头和结尾的 ASCII 空格 后,是一个 有效的非空 URL,则它是一个 可能被空格包围的有效的非空 URL。
本规范将 URL about:legacy-compat
定义为一个保留的,尽管无法解析的, about:
URL,用于在 HTML 文档 中的 DOCTYPE 中,当需要与 XML 工具兼容时使用。 [ABOUT]
本规范将 URL about:html-kind
定义为一个保留的,尽管无法解析的, about:
URL,它用作媒体轨道类型的标识符。 [ABOUT]
本规范将 URL about:srcdoc
定义为一个保留的,尽管无法解析的, about:
URL,它用作 iframe
srcdoc
文档 的 URL。 [ABOUT]
Document
对象 document 的 回退基准 URL 是通过执行以下步骤获得的 URL 记录
如果 document 是 iframe
srcdoc
文档,那么
断言:document 的 about 基准 URL 不为空。
返回 document 的 about 基准 URL。
如果 document 的 URL 匹配 about:blank
并且 document 的 about 基准 URL 不为空,则返回 document 的 about 基准 URL。
返回 document 的 URL。
Document
对象的 文档基准 URL 是通过执行以下步骤获得的 URL 记录
如果一个 URL 的 方案 是 "about
",其 路径 包含单个字符串 "blank
",其 用户名 和 密码 为空字符串,其 主机 为空,则该 URL 匹配 about:blank
。
这样的 URL 的 查询 和 片段 可以不为空。例如,通过 解析 "about:blank?foo#bar
" 创建的 URL 记录 匹配 about:blank
。
如果一个 URL 的 方案 是 "about
",其 路径 包含单个字符串 "srcdoc
",其 查询 为空,其 用户名 和 密码 为空字符串,其 主机 为空,则该 URL 匹配 about:srcdoc
。
确保 匹配 about:srcdoc
的 URL 的 查询 为空的原因是,无法创建其 URL 具有非空 查询 的 iframe
srcdoc
文档,这与那些 URL 匹配 about:blank
的 Document
不同。换句话说,所有 匹配 about:srcdoc
的 URL 仅在它们的 片段 上有所不同。
在所有当前引擎中支持。
CORS 设置属性 是一个具有以下关键字和状态的 枚举属性
关键字 | 状态 | 简要说明 |
---|---|---|
anonymous
| 匿名 | 元素的 请求 将将其 模式 设置为 "cors ",并将它的 凭据模式 设置为 "same-origin "。 |
(空字符串) | ||
use-credentials
| 使用凭据 | 元素的 请求 将将其 模式 设置为 "cors ",并将它的 凭据模式 设置为 "include "。 |
该属性的 缺失值默认值 是 无 CORS 状态,其 无效值默认值 是 匿名 状态。为了 反射 的目的,匿名 状态的 规范关键字 是 anonymous
关键字。
大多数受 CORS 设置属性 控制的获取将通过 创建潜在的 CORS 请求 算法完成。
对于更现代的功能,其中请求的 模式 始终为 "cors
",某些 CORS 设置属性 已被重新利用,具有略微不同的含义,即它们只影响 请求 的 凭据模式。为了进行此转换,我们定义了 CORS 设置属性凭据模式,用于给定的 CORS 设置属性,由根据属性状态进行切换来确定
same-origin
"include
"Referrer 策略属性 是一个 枚举属性。每个 Referrer 策略,包括空字符串,都是该属性的关键字,映射到相同名称的状态。
这些状态对各种获取的处理模型的影响,在本规范、Fetch和Referrer Policy中都有更详细的定义。[FETCH] [REFERRERPOLICY]
多个信号可以影响给定获取使用的处理模型;引用者策略属性只是其中之一。一般来说,处理这些信号的顺序是
首先,检查是否存在noreferrer
链接类型;
然后,检查引用者策略属性的值;
最后,检查`Referrer-Policy
` HTTP 头。
在所有当前引擎中支持。
一个nonce
内容属性表示一个加密的随机数(“一次性使用数字”),它可以被Content Security Policy用于确定是否允许给定的获取继续进行。该值是文本。[CSP]
具有nonce
内容属性的元素确保加密随机数只暴露给脚本(而不是像 CSS 属性选择器这样的侧信道),方法是从内容属性中获取该值,将其移动到一个名为[[CryptographicNonce]]的内部插槽中,通过HTMLOrSVGElement
接口混合暴露给脚本,并将内容属性设置为空字符串。除非另有说明,否则该插槽的值为空字符串。
element.nonce
返回为element的加密随机数设置的值。如果没有使用设置器,这将是最初在nonce
内容属性中找到的值。
element.nonce = value
更新element的加密随机数的值。
nonce
IDL 属性在获取时必须返回此元素的[[CryptographicNonce]]的值;在设置时,必须将此元素的[[CryptographicNonce]]设置为给定的值。
请注意,nonce
IDL 属性的设置器不会更新相应的內容属性。这,以及在元素变得与浏览上下文相连时将nonce
内容属性设置为空字符串,是为了防止通过可以轻松读取内容属性(如选择器)的机制来泄露随机数的值。在issue #2369中了解更多信息,该问题介绍了这种行为。
如果element不包含HTMLOrSVGElement
,则返回。
如果localName不是nonce
或namespace不是 null,则返回。
如果value为 null,则将element的[[CryptographicNonce]]设置为空字符串。
否则,将element的[[CryptographicNonce]]设置为value.
每当一个包含HTMLOrSVGElement
的元素包含变得与浏览上下文相连时,用户代理必须在element上执行以下步骤
如果CSP list包含一个头文件传送的 Content Security Policy,并且element具有一个nonce
内容属性attr,其值不是空字符串,那么
设nonce为element的[[CryptographicNonce]].
将element的[[CryptographicNonce]]设置为nonce.
如果element的[[CryptographicNonce]]没有被恢复,那么它此时将为空字符串。
对于包含HTMLOrSVGElement
的元素,其克隆步骤必须将副本上的[[CryptographicNonce]]插槽设置为正在克隆的元素上的插槽的值。
在所有当前引擎中支持。
一个延迟加载属性是一个枚举属性,具有以下关键字和状态
关键字 | 状态 | 简要说明 |
---|---|---|
lazy
| 延迟 | 用于推迟获取资源,直到满足某些条件。 |
eager
| 急切 | 用于立即获取资源;默认状态。 |
该属性指示用户代理立即获取资源,或者推迟获取,直到满足与该元素相关联的某些条件,这取决于该属性的当前状态。
给定一个元素element,将延迟加载元素步骤如下
如果脚本被禁用,则返回 false。
这是一个反跟踪措施,因为如果用户代理在脚本被禁用时支持延迟加载,那么网站仍然可以通过在页面的标记中策略性地放置图像来跟踪用户在整个会话中的近似滚动位置,这样服务器就可以跟踪请求了多少图像以及何时请求了。
返回 false。
每个img
和iframe
元素都有关联的延迟加载恢复步骤,最初为 null。
对于将延迟加载的img
和iframe
元素,这些步骤从延迟加载交叉观察器的回调中运行,或者在它们的延迟加载属性设置为急切状态时运行。这会导致元素继续加载。
每个Document
都有一个延迟加载交叉观察器,最初设置为 null,但可以设置为一个IntersectionObserver
实例。
要开始交叉观察一个延迟加载元素element,请运行以下步骤
设doc为element的节点文档.
如果doc的延迟加载交叉观察器为 null,则将其设置为一个新的IntersectionObserver
实例,初始化如下
目标是使用IntersectionObserver
构造函数的原始值。但是,我们被迫在本规范中使用 JavaScript 公开的构造函数,直到Intersection Observer暴露用于规范中的低级钩子。请参见跟踪此问题的 bug w3c/IntersectionObserver#464。[INTERSECTIONOBSERVER]
callback是以下步骤,带有参数entries和observer
对于entries中的每个entry使用一种不会触发开发者可修改的数组访问器或迭代钩子的迭代方法
设resumptionSteps为 null。
如果entry.isIntersecting
为 true,则将resumptionSteps设置为entry.target
的延迟加载恢复步骤.
如果resumptionSteps为 null,则返回。
停止交叉观察一个延迟加载元素,对于entry.target
。
调用resumptionSteps.
该意图是使用isIntersecting
和 target
获取器的原始值。参见 w3c/IntersectionObserver#464。 [INTERSECTIONOBSERVER]
options 是一个具有以下字典成员的 IntersectionObserverInit
字典:«[ "scrollMargin
" → 延迟加载滚动边距 ]»
这允许在滚动时获取图像,此时图像尚未与视窗相交,但即将相交。
对 延迟加载滚动边距 的建议暗示了值的动态变化,但 IntersectionObserver
API 不支持更改滚动边距。参见问题 w3c/IntersectionObserver#428。
使用 element 作为参数调用 doc 的 延迟加载交叉观察器 的 observe
方法。
该意图是使用 observe
方法的原始值。参见 w3c/IntersectionObserver#464。 [INTERSECTIONOBSERVER]
要停止交叉观察延迟加载元素 element,请运行以下步骤
令 doc 为 element 的 节点文档。
使用 element 作为参数调用 doc 的 延迟加载交叉观察器 的 unobserve
方法。
该意图是使用 unobserve
方法的原始值。参见 w3c/IntersectionObserver#464。 [INTERSECTIONOBSERVER]
延迟加载滚动边距是 实现定义的 值,但应考虑以下建议
设置一个最小值,该值在给定设备的正常使用模式下,最常导致资源在与视窗相交之前加载。
典型滚动速度:对于典型滚动速度更快的设备,增加该值。
当前滚动速度或动量:UA 可以尝试预测滚动可能停止的位置,并相应地调整该值。
网络质量:对于速度慢或延迟高的连接,增加该值。
用户偏好会影响该值。
从 隐私 角度来看,延迟加载滚动边距不应泄露额外信息非常重要。例如,当前设备上的典型滚动速度可能会不精确,以免引入新的指纹向量。
阻塞属性明确指示某些操作应阻塞对外部资源的获取。可以阻塞的操作由可能阻塞令牌表示,这些令牌是下表列出的字符串
可能阻塞令牌 | 描述 |
---|---|
"render " | 该元素为 潜在渲染阻塞。 |
将来,可能会有更多 可能阻塞令牌。
阻塞属性的值必须为 无序的、唯一的、以空格分隔的令牌集,每个令牌都是 可能阻塞令牌。阻塞属性最多只能有一个元素。任何元素最多只能有一个阻塞属性。
元素 el 的阻塞令牌集是以下步骤的结果
令 value 为 el 的阻塞属性的值,如果不存在此类属性,则为一个空字符串。
将 value 设置为 value,转换为 ASCII 小写。
令 rawTokens 为 将 value 在 ASCII 空白处拆分 的结果。
返回一个包含 rawTokens 中是 可能阻塞令牌 的元素的集合。
如果元素的阻塞令牌集包含 "render
",或者如果元素为 隐式潜在渲染阻塞(将在各个元素中定义),则该元素为 潜在渲染阻塞。默认情况下,元素不会是 隐式潜在渲染阻塞。
获取优先级属性是具有以下关键字和状态的 枚举属性
关键字 | 状态 | 简要说明 |
---|---|---|
high
| high | 表示相对于具有相同 目标 的其他资源而言,具有高优先级的 获取。 |
low
| low | 表示相对于具有相同 目标 的其他资源而言,具有低优先级的 获取。 |
auto
| auto | 表示相对于具有相同 目标 的其他资源而言,自动确定 获取 优先级。 |