动态标准 — 最后更新于 2024年9月12日
a
和 area
元素创建的链接a
和 area
元素的 APIalternate
"author
"bookmark
"canonical
"dns-prefetch
"expect
"external
"help
"icon
"license
"manifest
"modulepreload
"nofollow
"noopener
"noreferrer
"opener
"pingback
"preconnect
"prefetch
"preload
"privacy-policy
"search
"stylesheet
"tag
"terms-of-service
"链接是一个概念性的构造,由 a
、area
、form
和 link
元素创建,用于 表示两个资源之间的连接,其中一个资源是当前的 Document
。HTML 中有三种类型的链接
这些是用于增强当前文档的资源的链接,通常由用户代理自动处理。所有 外部资源链接 都有一个 获取并处理链接资源 算法,该算法描述了如何获取资源。
这些是到其他资源的链接,通常由用户代理向用户公开,以便用户可以促使用户代理 导航 到这些资源,例如在浏览器中访问它们或下载它们。
这些是到当前文档内资源的链接,用于赋予这些资源特殊的含义或行为。
对于具有 href
属性和 rel
属性的 link
元素,必须为 rel
属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。
类似地,对于具有 href
属性和 rel
属性的 a
和 area
元素,必须为 rel
属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。但是,与 link
元素不同,具有 href
属性但没有 rel
属性,或者其 rel
属性没有定义为指定 超链接 的关键字的 a
和 area
元素,也必须创建一个 超链接。此隐式超链接除了将元素的 节点文档链接到元素的 href
属性提供的资源之外,没有其他特殊含义(它没有 链接类型)。
类似地,对于具有 rel
属性的 form
元素,必须为 rel
属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。没有 rel
属性,或者其 rel
属性没有定义为指定 超链接 的关键字的 form
元素,也必须创建一个 超链接。
一个 超链接 可以有一个或多个 超链接注释,这些注释修改了该超链接的处理语义。
a
和 area
元素创建的链接a
和 area
元素上的 href
属性必须具有一个值为 可能被空格包围的有效 URL。
a
和 area
元素上的 href
属性不是必需的;当这些元素没有 href
属性时,它们不会创建超链接。
如果存在 target
属性,则它必须是 有效可导航目标名称或关键字。它给出了将要使用的 可导航 的名称。用户代理在 遵循超链接 时使用此名称。
如果存在 download
属性,则表示作者希望将超链接用于 下载资源。该属性可能具有一个值;该值(如果有)指定了作者建议用于在本地文件系统中标记资源的默认文件名。对允许的值没有限制,但作者应注意,大多数文件系统对文件名中支持的标点符号有限制,并且用户代理可能会相应地调整文件名。
所有当前引擎都支持。
如果存在 ping
属性,则它给出了对用户是否遵循超链接感兴趣的资源的 URL。该值必须是 一组以空格分隔的标记,每个标记都必须是一个 有效的非空 URL,其 方案 是 HTTP(S) 方案。用户代理将该值用于 超链接审计。
a
和 area
元素上的 rel
属性控制这些元素创建的链接类型。该属性的值必须是 一组唯一的以空格分隔的标记。下面定义了 允许的关键字及其含义。
rel
的 支持的标记 是在 HTML 链接类型 中定义的、在 a
和 area
元素上允许的、影响处理模型并由用户代理支持的关键字。可能的 支持的标记 是 noreferrer
、noopener
和 opener
。rel
的 支持的标记 只能包含用户代理实现处理模型的此列表中的标记。
rel
属性没有默认值。如果省略了该属性,或者属性中的值均未被用户代理识别,则文档与目标资源之间除了存在超链接外,没有任何特定关系。
在创建超链接的a
元素上,如果存在hreflang
属性,则表示链接资源的语言。这纯粹是建议性的。该值必须是有效的 BCP 47 语言标签。[BCP47] 用户代理不得将此属性视为权威性属性——获取资源后,用户代理必须仅使用与资源关联的语言信息来确定其语言,而不是链接到资源的元数据。
如果存在type
属性,则表示链接资源的MIME 类型。这纯粹是建议性的。该值必须是有效的 MIME 类型字符串。用户代理不得将
属性视为权威性属性——获取资源后,用户代理不得使用链接到资源的元数据来确定其类型。type
referrerpolicy
属性是引用者策略属性。其目的是在遵循超链接时设置引用者策略。[REFERRERPOLICY]
当a
或area
元素的激活行为被调用时,用户代理可能会允许用户指示是否将超链接用于导航,或者是否要下载它指定的资源。
在没有用户偏好的情况下,如果元素没有
属性,则默认应为导航;如果存在该属性,则默认应下载指定的资源。download
给定事件event,a
或area
元素element 的激活行为为
如果element 没有
属性,则返回。href
令hyperlinkSuffix 为 null。
令userInvolvement 为event 的用户导航参与度。
如果用户已表示希望下载超链接,则将userInvolvement 设置为“
”。browser UI
也就是说,如果用户已明确表示希望下载,则这不再仅仅算作“
”。activation
如果element 具有
属性,或者用户已表示希望下载超链接,则下载element 创建的超链接,并将hyperlinkSuffix 设置为hyperlinkSuffix,并将userInvolvement 设置为userInvolvement。download
否则,遵循element 创建的超链接,并将hyperlinkSuffix 设置为hyperlinkSuffix,并将userInvolvement 设置为userInvolvement。
a
和area
元素的 APIinterface mixin HTMLHyperlinkElementUtils {
[CEReactions ] stringifier attribute USVString href ;
readonly attribute USVString origin ;
[CEReactions ] attribute USVString protocol ;
[CEReactions ] attribute USVString username ;
[CEReactions ] attribute USVString password ;
[CEReactions ] attribute USVString host ;
[CEReactions ] attribute USVString hostname ;
[CEReactions ] attribute USVString port ;
[CEReactions ] attribute USVString pathname ;
[CEReactions ] attribute USVString search ;
[CEReactions ] attribute USVString hash ;
};
hyperlink.toString()
hyperlink.href
所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL。
可以设置,以更改 URL。
hyperlink.origin
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的来源。
hyperlink.protocol
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的方案。
可以设置,以更改 URL 的方案。
hyperlink.username
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的用户名。
可以设置,以更改 URL 的用户名。
hyperlink.password
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的密码。
可以设置,以更改 URL 的密码。
hyperlink.host
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的主机和端口(如果与方案的默认端口不同)。
可以设置,以更改 URL 的主机和端口。
hyperlink.hostname
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的主机。
可以设置,以更改 URL 的主机。
hyperlink.port
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的端口。
可以设置,以更改 URL 的端口。
hyperlink.pathname
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的路径。
可以设置,以更改 URL 的路径。
hyperlink.search
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的查询(如果非空,则包含前导“?
”)。
可以设置,以更改 URL 的查询(忽略前导“?
”)。
hyperlink.hash
所有当前引擎都支持。
所有当前引擎都支持。
返回超链接的 URL 的片段(如果非空,则包含前导“#
”)。
可以设置,以更改 URL 的片段(忽略前导“#
”)。
实现HTMLHyperlinkElementUtils
混合体的元素具有关联的url(null 或URL)。它最初为 null。
实现 HTMLHyperlinkElementUtils
混合类的元素有一个关联的 设置 URL 算法,该算法执行以下步骤
当创建实现 HTMLHyperlinkElementUtils
混合类的元素时,以及每当这些元素的 href
内容属性被设置、更改或移除时,用户代理必须 设置 URL。
这仅对 blob:
URL 可观察,因为 解析 它们涉及 Blob URL 存储 查询。
实现 HTMLHyperlinkElementUtils
混合类的元素有一个关联的 重新初始化 URL 算法,该算法执行以下步骤
要 更新 href
,请将元素的 href
内容属性的值设置为元素的 URL,序列化。
href
获取器的步骤如下
返回 url,序列化。
href
设置器的步骤是将 this 的 href
内容属性的值设置为给定值。
origin
获取器的步骤如下
protocol
获取器的步骤如下
protocol
设置器的步骤如下
基本 URL 解析 给定值,后跟“:
”,以 this 的 URL 作为 url 和 方案起始状态 作为 状态覆盖。
因为 URL 解析器会忽略多个连续的冒号,所以提供“https:
”(甚至“https::::
”)的值与提供“https
”的值相同。
username
获取器的步骤如下
username
设置器的步骤如下
password
获取器的步骤如下
password
设置器的步骤如下
host
获取器的步骤如下
如果 url 或 url 的 主机 为 null,则返回空字符串。
host
设置器的步骤如下
如果 url 为 null 或 url 具有 不透明路径,则返回。
hostname
获取器的步骤如下
hostname
设置器的步骤如下
如果 url 为 null 或 url 具有 不透明路径,则返回。
port
获取器的步骤如下
port
设置器的步骤如下
如果 url 为空或 url 不允许包含用户名/密码/端口,则返回。
如果给定的值为空字符串,则将 url 的 port 设置为 null。
pathname
获取器的步骤如下
pathname
设置器的步骤如下
search
获取器的步骤如下
search
设置器的步骤如下
如果 url 为空,则终止这些步骤。
如果给定的值为空字符串,则将 url 的 query 设置为 null。
否则
hash
获取器的步骤如下
hash
设置器的步骤如下
如果 url 为空,则返回。
如果给定的值为空字符串,则将 url 的 fragment 设置为 null。
否则
如果以下任一条件为真,则元素 element 无法导航
这也被 form
元素的 表单提交 使用。对于 a
元素的例外是为了与 Web 内容兼容。
要 获取元素的 noopener,给定一个 a
、area
或 form
元素 element 和一个字符串 target
如果 element 的 链接类型 包含 noopener
或 noreferrer
关键字,则返回 true。
如果 element 的 链接类型 不包含 opener
关键字,并且 target 与 "_blank
" 不区分大小写地匹配,则返回 true。
返回 false。
要 跟踪 由元素 subject 创建的超链接,给定一个可选的 hyperlinkSuffix(默认为 null)和一个可选的 userInvolvement(默认为 "none
")
如果 subject 无法导航,则返回。
令 replace 为 false。
令 targetAttributeValue 为空字符串。
如果 subject 是 a
或 area
元素,则将 targetAttributeValue 设置为给定 subject 的 获取元素的目标 的结果。
令 noopener 为使用 subject 和 targetAttributeValue 获取元素的 noopener 的结果。
令 targetNavigable 为给定 targetAttributeValue、subject 的 节点可导航 以及 noopener 的 选择可导航规则 的第一个返回值。
如果 targetNavigable 为空,则返回。
令 urlString 为给定 subject 的 href
属性值(相对于 subject 的 节点文档)的 URL 编码、解析和序列化 结果。
如果 urlString 为失败,则返回。
如果 hyperlinkSuffix 非空,则将其追加到 urlString。
令 referrerPolicy 为 subject 的 referrerpolicy
内容属性的当前状态。
如果 subject 的 链接类型 包含 noreferrer
关键字,则将 referrerPolicy 设置为 "no-referrer
"。
使用 subject 的 节点文档 将 targetNavigable 导航 到 urlString,其中 referrerPolicy 设置为 referrerPolicy,userInvolvement 设置为 userInvolvement。
与许多其他类型的导航不同,跟踪超链接在文档未 完全加载 时没有特殊的 "replace
" 行为。对于用户发起的跟踪超链接实例以及通过例如 aElement.click()
触发的脚本实例,情况都是如此。
所有当前引擎都支持。
在某些情况下,资源用于以后使用而不是立即查看。为了表明资源旨在下载以供以后使用,而不是立即使用,可以在创建到该资源的 超链接 的 a
或 area
元素上指定 download
属性。
此外,可以为该属性指定一个值,以指定用户代理在将资源存储在文件系统中时要使用的文件名。此值可以被 `Content-Disposition
` HTTP 标头的文件名参数覆盖。 [RFC6266]
在跨源情况下,download
属性必须与 `Content-Disposition
` HTTP 头部结合使用,特别是与 attachment
处理类型结合,以避免向用户发出可能存在恶意活动的警告。(这是为了保护用户免受未经充分理解的情况下下载敏感个人或机密信息的侵害。)
要下载元素 subject 创建的超链接,给定一个可选的hyperlinkSuffix(默认为 null)和一个可选的userInvolvement(默认为 "none
")
如果 subject 无法导航,则返回。
如果 subject 的节点文档的活动沙盒标志集设置了沙盒下载浏览上下文标志,则返回。
令 urlString 为给定 subject 的href
属性值(相对于 subject 的节点文档)编码、解析和序列化 URL 的结果。
如果 urlString 为失败,则返回。
如果 hyperlinkSuffix 非空,则将其追加到 urlString。
如果 userInvolvement 不是 "浏览器 UI
",则
令 filename 为 subject 的download
属性的值。
令 continue 为在 navigation 上触发下载请求 navigate
事件的结果,其中destinationURL 设置为 urlString,userInvolvement 设置为 userInvolvement,以及filename 设置为 filename。
如果 continue 为 false,则返回。
并行运行以下步骤并行
当用户代理需要处理从获取中获得的资源作为下载时,如果成功获取了资源,则应为用户提供一种方法来保存资源以供以后使用。否则,应向用户报告下载文件时遇到的任何问题。
如果用户代理需要为正在处理的资源指定文件名作为下载,则应使用以下算法选择一个文件名。
此算法旨在减轻从不可信站点下载文件所涉及的安全风险,强烈建议用户代理遵循此算法。
令 filename 为未定义值。
如果资源具有`Content-Disposition
` 头部,该头部指定了 attachment
处理类型,并且头部包含文件名信息,则令 filename 的值为头部指定的值,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]
令 resource origin 为正在下载的资源的 URL 的源,除非该 URL 的方案组件为 data
,在这种情况下,令 resource origin 与 interface origin(如果有)相同。
如果没有 interface origin,则令 trusted operation 为 true。否则,如果 resource origin 与 interface origin 为同一源,则令 trusted operation 为 true,否则为 false。
如果 trusted operation 为 true 且资源具有`Content-Disposition
` 头部,并且该头部包含文件名信息,则令 filename 的值为头部指定的值,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]
如果下载不是从a
或area
元素创建的超链接启动的,或者如果启动它的超链接的元素在下载启动时没有download
属性,或者如果存在这样的属性但其在下载启动时的值为空字符串,则跳转到标记为“no proposed filename”的步骤。
如果 trusted operation 为 true,则令 filename 的值为 proposed filename,并跳转到下面标记为“sanitize”的步骤。
如果资源具有`Content-Disposition
` 头部,并且该头部指定了 attachment
处理类型,则令 filename 的值为 proposed filename,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]
No proposed filename:如果 trusted operation 为 true,或者如果用户表示希望下载相关资源,则令 filename 的值为以实现定义的方式从资源的URL派生的值,并跳转到下面标记为“sanitize”的步骤。
令 filename 设置为用户首选的文件名或用户代理选择的文件名,并跳转到下面标记为“sanitize”的步骤。
如果算法到达此步骤,则表示从与正在下载的资源不同的源开始下载,并且源未将文件标记为适合下载,并且下载不是由用户启动的。这可能是因为使用了download
属性来触发下载,或者因为相关资源的类型不是用户代理支持的类型。
这可能是危险的,例如,恶意服务器可能会试图让用户在不知情的情况下下载私人信息,然后将其重新上传到恶意服务器,方法是欺骗用户认为数据来自恶意服务器。
因此,为了用户的利益,应该以某种方式通知用户相关资源来自完全不同的来源,并且为了避免混淆,应忽略来自潜在恶意interface origin的任何建议文件名。
Sanitize:可选地,允许用户影响 filename。例如,用户代理可以提示用户输入文件名,并可能提供上面确定的 filename 的值作为默认值。
调整 filename 以使其适合本地文件系统。
例如,这可能涉及删除文件名中不允许的字符,或修剪前导和尾随空格。
如果平台约定以任何方式不使用扩展名来确定文件系统上的文件类型,则返回 filename 作为文件名。
令 claimed type 为资源的Content-Type 元数据给出的类型(如果已知)。令 named type 为 filename 的扩展名给出的类型(如果已知)。出于此步骤的目的,“类型”是指将MIME 类型映射到扩展名。
如果 named type 与用户的首选项一致(例如,因为 filename 的值是通过提示用户确定的),则返回 filename 作为文件名。
如果 claimed type 和 named type 是相同的类型(即,资源的Content-Type 元数据给出的类型与 filename 的扩展名给出的类型一致),则返回 filename 作为文件名。
如果已知 claimed type,则修改 filename 以添加与 claimed type 对应的扩展名。
否则,如果已知 named type 具有潜在危险(例如,它将被平台约定视为本机可执行文件、shell 脚本、HTML 应用程序或可执行宏功能文档),则可选地修改 filename 以添加已知的安全扩展名(例如 ".txt
")。
最后一步将使下载可执行文件成为不可能,这可能并不理想。与往常一样,实现者必须在这方面平衡安全性和可用性。
返回 filename 作为文件名。
出于本算法的目的,文件扩展名包含文件名中平台约定用于识别文件类型的任何部分。例如,许多操作系统使用文件名中最后一个点 ( ".
") 之后的部分来确定文件类型,并据此确定如何打开或执行文件。
用户代理在决定将结果文件存储在用户文件系统中的哪个位置时,应忽略资源本身、其URL以及任何download
属性提供的任何目录或路径信息。
如果由a
或area
元素创建的超链接具有ping
属性,并且用户遵循了该超链接,并且元素的href
属性的值可以相对于元素的节点文档被解析,则用户代理必须获取ping
属性的值,在ASCII空格处分割该字符串,相对于元素的节点文档 解析每个结果标记,然后对每个生成的URL ping URL运行以下步骤,忽略解析失败的情况。
可选地,返回。(例如,用户代理可能希望根据用户的明确偏好忽略任何或所有ping URL。)
令request为一个新的请求,其URL为ping URL,方法为`POST
`,头部列表为« (`Content-Type
`, `text/ping
`) »,主体为`PING
`,客户端为settingsObject,目标为空字符串,凭据模式为"include
",引用来源为"no-referrer
",并且其使用URL凭据标志已设置,并且其发起者类型为"ping
"。
令目标URL为给定元素的href
属性的值,相对于元素的节点文档,编码解析和序列化URL的结果,然后
获取request。
这可以与主要获取并行进行,并且独立于该获取的结果。
用户代理应允许用户调整此行为,例如结合禁用发送HTTP`Referer
`(拼写错误)头的设置。根据用户的偏好,UA 可以忽略ping
属性,或选择性地忽略列表中的URL(例如,忽略任何第三方URL);这在上述步骤中已明确说明。
用户代理必须忽略响应中返回的任何实体主体。用户代理可以在开始接收响应主体后过早地关闭连接。
当存在ping
属性时,用户代理应清楚地向用户指示遵循超链接也将导致在后台发送辅助请求,可能包括列出实际的目标URL。
例如,可视化用户代理可以在状态栏或工具提示中将目标ping URL的主机名与超链接的实际URL一起显示。
ping
属性与现有的技术(如HTTP重定向和JavaScript)在允许网页跟踪哪些外部链接最受欢迎或允许广告商跟踪点击率方面是冗余的。
但是,ping
属性相对于这些替代方案为用户提供了以下优势
因此,虽然可以在没有此功能的情况下跟踪用户,但鼓励作者使用ping
属性,以便用户代理可以使用户体验更加透明。
Ping-From
`和`Ping-To
`头部`Ping-From
`和`Ping-To
` HTTP请求头部包含在超链接审计请求中。它们的值为URL,序列化。
所有当前引擎都支持。
下表总结了本规范中定义的链接类型及其对应的关键字。此表是非规范性的;链接类型的实际定义在接下来的几个部分中给出。
在本节中,术语“引用文档”指的是表示链接的元素标识的资源,术语“当前文档”指的是表示链接的元素所在的资源。
要确定哪些链接类型应用于link
、a
、area
或form
元素,必须在ASCII空格处分割元素的rel
属性。结果标记是应用于该元素的链接类型的关键字。
除非另有说明,否则每个rel
属性中不得多次指定关键字。
下面表格后面的某些部分列出了某些关键字的同义词。用户代理必须按照指定的处理指示的同义词,但不得在文档中使用(例如,关键字“copyright
”)。
关键字始终不区分ASCII大小写,并且必须以此方式进行比较。
因此,rel="next"
与rel="NEXT"
相同。
是body-ok的关键字会影响link
元素是否允许在主体中使用。body-ok关键字是dns-prefetch
、modulepreload
、pingback
、preconnect
、prefetch
、preload
和stylesheet
。
要由网络浏览器实现的新链接类型将添加到此标准中。其余部分可以注册为扩展。
链接类型 | 对…的影响 | body-ok | 是否具有`Link ` 处理 | 简要描述 | ||
---|---|---|---|---|---|---|
链接 | a 和 area | 表单 | ||||
备用 | 超链接 | 不允许 | · | · | 提供当前文档的替代表示形式。 | |
规范 | 超链接 | 不允许 | · | · | 提供当前文档的首选 URL。 | |
作者 | 超链接 | 不允许 | · | · | 提供当前文档或文章作者的链接。 | |
书签 | 不允许 | 超链接 | 不允许 | · | · | 提供最近祖先部分的永久链接。 |
dns-prefetch | 外部资源 | 不允许 | 是 | · | 指定用户代理应抢先对目标资源的 来源 执行 DNS 解析。 | |
预期 | 内部资源 | 不允许 | · | · | 预期当前文档中会出现具有目标 ID 的元素。 | |
外部 | 不允许 | 注释 | · | · | 指示引用的文档不属于与当前文档相同的站点。 | |
帮助 | 超链接 | · | · | 提供指向上下文相关帮助的链接。 | ||
图标 | 外部资源 | 不允许 | · | · | 导入表示当前文档的图标。 | |
清单 | 外部资源 | 不允许 | · | · | 导入或链接到 应用程序清单。 [清单] | |
modulepreload | 外部资源 | 不允许 | 是 | · | 指定用户代理必须抢先 获取模块脚本 并将其存储在文档的 模块映射 中以供以后评估。可选地,还可以获取模块的依赖项。 | |
许可证 | 超链接 | · | · | 指示当前文档的主要内容受引用文档中描述的版权许可证的约束。 | ||
下一个 | 超链接 | · | · | 指示当前文档是系列的一部分,并且该系列中的下一个文档是引用的文档。 | ||
nofollow | 不允许 | 注释 | · | · | 指示当前文档的原始作者或发布者不认可引用的文档。 | |
noopener | 不允许 | 注释 | · | · | 创建一个 顶级可遍历对象,该对象具有非 辅助浏览上下文,如果超链接否则会创建一个辅助浏览上下文(即,具有适当的 target 属性值)。 | |
noreferrer | 不允许 | 注释 | · | · | 不会包含 `Referer `(原文如此)标头。此外,具有与 noopener 相同的效果。 | |
opener | 不允许 | 注释 | · | · | 如果超链接否则会创建一个 顶级可遍历对象,该对象具有非 辅助浏览上下文(即,具有“_blank ”作为 target 属性值),则创建一个 辅助浏览上下文。 | |
pingback | 外部资源 | 不允许 | 是 | · | 提供处理对当前文档的 pingback 的 pingback 服务器的地址。 | |
preconnect | 外部资源 | 不允许 | 是 | 是 | 指定用户代理应抢先连接到目标资源的 来源。 | |
prefetch | 外部资源 | 不允许 | 是 | · | 指定用户代理应抢先 获取 并缓存目标资源,因为它很可能需要后续 导航。 | |
preload | 外部资源 | 不允许 | 是 | 是 | 指定用户代理必须抢先 获取 并缓存目标资源,以用于当前 导航,根据 as 属性(以及与 相应 目标 关联的 优先级)给出的 潜在目标。 | |
上一个 | 超链接 | · | · | 指示当前文档是系列的一部分,并且该系列中的上一个文档是引用的文档。 | ||
privacy-policy | 超链接 | 不允许 | · | · | 提供指向有关适用于当前文档的数据收集和使用实践的信息的链接。 | |
搜索 | 超链接 | · | · | 提供指向可用于搜索当前文档及其相关页面的资源的链接。 | ||
stylesheet | 外部资源 | 不允许 | 是 | · | 导入样式表。 | |
标签 | 不允许 | 超链接 | 不允许 | · | · | 提供适用于当前文档的标签(由给定地址标识)。 |
terms-of-service | 超链接 | 不允许 | · | · | 提供指向有关当前文档提供者与希望使用当前文档的用户之间协议的信息的链接。 |
alternate
”仅在一个引擎中受支持。
可以使用 alternate
关键字与 link
、a
和 area
元素一起使用。
此关键字的含义取决于其他属性的值。
link
元素,并且 rel
属性还包含关键字 stylesheet
alternate
关键字以针对该关键字描述的方式修改 stylesheet
关键字的含义。 alternate
关键字不会创建自己的链接。
在这里,一组 link
元素提供一些样式表
<!-- a persistent style sheet -->
< link rel = "stylesheet" href = "default.css" >
<!-- the preferred alternate style sheet -->
< link rel = "stylesheet" href = "green.css" title = "Green styles" >
<!-- some alternate style sheets -->
< link rel = "alternate stylesheet" href = "contrast.css" title = "High contrast" >
< link rel = "alternate stylesheet" href = "big.css" title = "Big fonts" >
< link rel = "alternate stylesheet" href = "wide.css" title = "Wide screen" >
alternate
关键字与 type
属性一起使用,并且该属性的值设置为 application/rss+xml
或 application/atom+xml
该关键字创建一个 超链接,引用联合供稿(尽管不一定与当前页面联合供稿完全相同的内容)。
出于联合供稿自动发现的目的,用户代理应考虑文档中所有使用 alternate
关键字且其 type
属性设置为 application/rss+xml
或 application/atom+xml
的 link
元素。如果用户代理具有默认联合供稿的概念,则应使用第一个此类元素(在 树序 中)作为默认值。
以下 link
元素提供博客的联合供稿
< link rel = "alternate" type = "application/atom+xml" href = "posts.xml" title = "Cool Stuff Blog" >
< link rel = "alternate" type = "application/atom+xml" href = "posts.xml?category=robots" title = "Cool Stuff Blog: robots category" >
< link rel = "alternate" type = "application/atom+xml" href = "comments.xml" title = "Cool Stuff Blog: Comments" >
此类 link
元素将由参与联合供稿自动发现的用户代理使用,其中第一个元素为默认值(在适用情况下)。
以下示例使用 a
元素为用户提供各种不同的联合供稿
< p > You can access the planets database using Atom feeds:</ p >
< ul >
< li >< a href = "recently-visited-planets.xml" rel = "alternate" type = "application/atom+xml" > Recently Visited Planets</ a ></ li >
< li >< a href = "known-bad-planets.xml" rel = "alternate" type = "application/atom+xml" > Known Bad Planets</ a ></ li >
< li >< a href = "unexplored-planets.xml" rel = "alternate" type = "application/atom+xml" > Unexplored Planets</ a ></ li >
</ ul >
这些链接不会用于联合供稿自动发现。
该关键字创建一个 超链接,引用当前文档的替代表示形式。
引用的文档的性质由 hreflang
和 type
属性给出。
如果 alternate
关键字与 hreflang
属性一起使用,并且该属性的值不同于 文档元素 的 语言,则表示引用的文档是翻译。
如果 alternate
关键字与 type
属性一起使用,则表示引用的文档是以指定格式对当前文档的重新表述。
当与 alternate
关键字一起指定时,可以组合 hreflang
和 type
属性。
以下示例显示了如何指定使用替代格式、针对其他语言以及旨在用于其他媒体的页面的版本
< link rel = alternate href = "/en/html" hreflang = en type = text/html title = "English HTML" >
< link rel = alternate href = "/fr/html" hreflang = fr type = text/html title = "French HTML" >
< link rel = alternate href = "/en/html/print" hreflang = en type = text/html media = print title = "English HTML (for printing)" >
< link rel = alternate href = "/fr/html/print" hreflang = fr type = text/html media = print title = "French HTML (for printing)" >
< link rel = alternate href = "/en/pdf" hreflang = en type = application/pdf title = "English PDF" >
< link rel = alternate href = "/fr/pdf" hreflang = fr type = application/pdf title = "French PDF" >
此关系是传递的——也就是说,如果一个文档链接到另外两个具有链接类型“alternate
”的其他文档,那么除了暗示这些文档是第一个文档的替代表示形式之外,还暗示这两个文档彼此是替代表示形式。
author
”可以使用 author
关键字与 link
、a
和 area
元素一起使用。此关键字创建一个 超链接。
对于 a
和 area
元素, author
关键字指示引用的文档提供有关定义超链接的元素的最近 article
元素祖先(如果有)的作者的更多信息,或者在没有祖先元素的情况下,提供有关整个页面的作者的更多信息。
对于link
元素,author
关键字表示引用的文档提供了有关整个页面作者的更多信息。
“引用文档”可以是,并且通常是,一个mailto:
URL,它提供了作者的电子邮件地址。 [MAILTO]
同义词:出于历史原因,用户代理还必须将具有值为“made
”的rev
属性的link
、a
和area
元素视为指定了author
关键字作为链接关系。
bookmark
"bookmark
关键字可用于a
和area
元素。此关键字创建一个超链接。
bookmark
关键字为相关联元素最近的祖先article
元素提供永久链接,或者如果不存在祖先article
元素,则为链接元素最密切相关的部分提供永久链接。
以下代码片段包含三个永久链接。用户代理可以通过查看永久链接的位置来确定哪个永久链接适用于规范的哪个部分。
...
< body >
< h1 > Example of permalinks</ h1 >
< div id = "a" >
< h2 > First example</ h2 >
< p >< a href = "a.html" rel = "bookmark" > This permalink applies to
only the content from the first H2 to the second H2</ a > . The DIV isn't
exactly that section, but it roughly corresponds to it.</ p >
</ div >
< h2 > Second example</ h2 >
< article id = "b" >
< p >< a href = "b.html" rel = "bookmark" > This permalink applies to
the outer ARTICLE element</ a > (which could be, e.g., a blog post).</ p >
< article id = "c" >
< p >< a href = "c.html" rel = "bookmark" > This permalink applies to
the inner ARTICLE element</ a > (which could be, e.g., a blog comment).</ p >
</ article >
</ article >
</ body >
...
canonical
"canonical
关键字可用于link
元素。此关键字创建一个超链接。
canonical
关键字表示href
属性给出的 URL 是当前文档的首选 URL。这有助于搜索引擎减少重复内容,如The Canonical Link Relation中更详细地描述的那样。 [RFC6596]
dns-prefetch
"dns-prefetch
关键字可用于link
元素。此关键字创建一个外部资源链接。此关键字是body-ok。
dns-prefetch
关键字表示预先执行指定资源的源的 DNS 解析可能会带来好处,因为用户很可能需要位于该源处的资源,并且通过预先处理与 DNS 解析相关的延迟成本可以改善用户体验。
由dns-prefetch
关键字提供的资源没有默认类型。
获取和处理此类型链接的适当时间是
对于此类型的链接资源,给定一个link
元素el,获取和处理链接资源步骤如下:
expect
"expect
关键字可用于link
元素。此关键字创建一个内部资源链接。
由expect
关键字创建的内部资源链接可用于阻止渲染,直到它指示的元素连接到文档并完全解析。
由expect
关键字提供的资源没有默认类型。
只要link
元素el发生以下任何情况:
则处理el。
要处理内部资源链接,给定一个link
元素el,请执行以下步骤:
令doc为el的节点文档。
令indicatedElement为给定doc和url进行指示部分选择的结果。
如果以下所有条件都为真:
doc的当前文档就绪状态为“loading
”;
el创建一个内部资源链接;
el连接到浏览上下文;
el可能阻止渲染;
如果`indicatedElement`不是一个元素,或者位于一个`打开元素栈`上,且该栈所属的`HTML 解析器`关联的`Document
是`doc`,
则在`el`上`阻止渲染`。
否则,在`el`上`解除渲染阻止`。
为了`处理内部资源链接`,给定一个`Document
`doc`
以下`属性更改步骤`,给定`element`、`localName`、`value`和`namespace`,用于确保`expect
`link
`元素响应动态`id
`和`name
`更改
如果`namespace`不为空,则返回。
如果以下任何一项为真
external
`”`external
`关键词可用于`a
`、`area
`和`form
`元素。此关键词不会创建`超链接`,但`注释`由元素创建的任何其他超链接(如果其他关键词没有创建超链接,则为隐式超链接)。
`external
`关键词表示该链接指向的文档不属于当前文档所属的站点。
help
`”`help
`关键词可用于`link
`、`a
`、`area
`和`form
`元素。此关键词创建`超链接`。
对于`a
`、`area
`和`form
`元素,`help
`关键词表示引用的文档为定义超链接的元素的父元素及其子元素提供更多帮助信息。
在以下示例中,表单控件具有关联的上下文相关帮助。例如,用户代理可以使用此信息,在用户按下“帮助”或“F1”键时显示引用的文档。
< p >< label > Topic: < input name = topic > < a href = "help/topic.html" rel = "help" > (Help)</ a ></ label ></ p >
对于`link
`元素,`help
`关键词表示引用的文档为整个页面提供帮助。
对于`a
`和`area
`元素,在某些浏览器上,`help
`关键词会导致链接使用不同的光标。
icon
`”所有当前引擎都支持。
`icon
`关键词可用于`link
`元素。此关键词创建一个`外部资源链接`。
指定的资源是表示页面或站点的图标,用户代理在用户界面中表示页面时应使用它。
图标可以是音频图标、视觉图标或其他类型的图标。如果提供了多个图标,用户代理必须根据`type
`、`media
`和`sizes
`属性选择最合适的图标。如果有多个同样合适的图标,用户代理必须使用在用户代理收集图标列表时`树序`中最后声明的那个。如果用户代理尝试使用一个图标,但经过仔细检查后发现该图标实际上不合适(例如,因为它使用了不受支持的格式),则用户代理必须尝试根据属性确定的下一个最合适的图标。
用户代理不需要在图标列表发生变化时更新图标,但建议这样做。
由`icon
`关键词给定的资源没有默认类型。但是,为了`确定资源的类型`,用户代理必须预期该资源为图像。
`sizes
`关键词以原始像素表示图标大小(而不是`CSS 像素`)。
一个 50 `CSS 像素`宽的图标,用于每个`CSS 像素`有两个设备像素的显示器(2x,192dpi),其宽度将为 100 个原始像素。此功能不支持指示要为小型高分辨率图标与大型低分辨率图标使用不同的资源(例如 50×50 2x 与 100×100 1x)。
为了解析和处理属性的值,用户代理必须首先`根据 ASCII 空格拆分属性的值`,然后必须解析每个结果关键词以确定它代表什么。
`any
`关键词表示该资源包含可缩放图标,例如 SVG 图像提供的图标。
其他关键词必须按如下方式进一步解析以确定它们代表什么
如果关键词不包含正好一个 U+0078 拉丁小写字母 X 或 U+0058 拉丁大写字母 X 字符,则此关键词不代表任何内容。对于该关键词返回。
令`width string`为“x
”或“X
”之前的字符串。
令`height string`为“x
”或“X
”之后的字符串。
如果`width string`或`height string`以 U+0030 数字零 (0) 字符开头或包含除`ASCII 数字`之外的任何字符,则此关键词不代表任何内容。对于该关键词返回。
将`解析非负整数的规则`应用于`width string`以获得`width`。
将`解析非负整数的规则`应用于`height string`以获得`height`。
该关键词表示该资源包含一个宽度为`width`设备像素、高度为`height`设备像素的位图图标。
在`sizes
`属性上指定的关键词不得表示链接资源中实际上不可用的图标大小。
此类型链接资源的`链接资源获取设置步骤`,给定一个`link
`元素`el`和`请求``request`,如下所示
将`request`的`目标`设置为“image
”。
返回 true。
此类型链接资源的`处理链接头`步骤为不执行任何操作。
在没有带有`icon
`关键词的`link
`的情况下,对于`Document
`对象,其`URL`的`方案`是`HTTP(S) 方案`,用户代理可以改为`并行`运行这些步骤
令`request`为一个新的`请求`,其`URL`是通过将`URL`“/favicon.ico
”相对于`Document
`对象的`URL`解析获得的`URL 记录`,`客户端`是`Document
`对象的`相关设置对象`,`目标`是“image
”,`同步标志`已设置,`凭据模式`是“include
”,并且`使用 URL 凭据标志`已设置。
令response为获取request的结果。
以下代码片段显示了一个具有多个图标的应用程序的顶部部分。
<!DOCTYPE HTML>
< html lang = "en" >
< head >
< title > lsForums — Inbox</ title >
< link rel = icon href = favicon.png sizes = "16x16" type = "image/png" >
< link rel = icon href = windows.ico sizes = "32x32 48x48" type = "image/vnd.microsoft.icon" >
< link rel = icon href = mac.icns sizes = "128x128 512x512 8192x8192 32768x32768" >
< link rel = icon href = iphone.png sizes = "57x57" type = "image/png" >
< link rel = icon href = gnome.svg sizes = "any" type = "image/svg+xml" >
< link rel = stylesheet href = lsforums.css >
< script src = lsforums.js ></ script >
< meta name = application-name content = "lsForums" >
</ head >
< body >
...
出于历史原因,icon
关键字前面可能带有关键字“shortcut
”。如果存在“shortcut
”关键字,则rel
属性的整个值必须与字符串“shortcut icon
”(标记之间带有一个U+0020空格字符,且没有其他ASCII空格)进行ASCII不区分大小写匹配。
license
"license
关键字可与link
、a
、area
和form
元素一起使用。此关键字创建一个超链接。
license
关键字表示引用的文档提供了当前文档主要内容所依据的版权许可条款。
本规范未指定如何区分文档的主要内容与不被视为该主要内容一部分的内容。应向用户明确区分。
考虑一个照片共享网站。该网站上的一个页面可能会描述并显示一张照片,并且该页面可能会以如下方式进行标记
<!DOCTYPE HTML>
< html lang = "en" >
< head >
< title > Exampl Pictures: Kissat</ title >
< link rel = "stylesheet" href = "/style/default" >
</ head >
< body >
< h1 > Kissat</ h1 >
< nav >
< a href = "../" > Return to photo index</ a >
</ nav >
< figure >
< img src = "/pix/39627052_fd8dcd98b5.jpg" >
< figcaption > Kissat</ figcaption >
</ figure >
< p > One of them has six toes!</ p >
< p >< small >< a rel = "license" href = "http://www.opensource.org/licenses/mit-license.php" > MIT Licensed</ a ></ small ></ p >
< footer >
< a href = "/" > Home</ a > | < a href = "../" > Photo index</ a >
< p >< small > © copyright 2009 Exampl Pictures. All Rights Reserved.</ small ></ p >
</ footer >
</ body >
</ html >
在这种情况下,license
仅适用于照片(文档的主要内容),而不适用于整个文档。特别是,不适用于页面本身的设计,页面设计受文档底部给出的版权保护。这可以通过样式设置变得更加清晰(例如,将许可链接突出显示在照片附近,而将页面版权以浅色小字体显示在页面底部)。
同义词:出于历史原因,用户代理还必须将关键字“copyright
”视为license
关键字。
manifest
"仅在一个引擎中受支持。
manifest
关键字可与link
元素一起使用。此关键字创建一个外部资源链接。
manifest
关键字指示提供与当前文档关联的元数据的清单文件。
由manifest
关键字给出的资源没有默认类型。
当 Web 应用程序未安装时,此链接类型获取和处理链接资源的合适时间是用户代理认为必要的时候。例如,当用户选择安装 Web 应用程序时。
对于已安装的 Web 应用程序,此链接类型获取和处理链接资源的合适时间为
在任何情况下,只有树序中第一个link
元素(其rel
属性包含标记manifest
)可以使用。
用户代理不得为此链接类型延迟加载事件。
此类型的链接资源的链接资源获取设置步骤(给定link
元素el和请求request)为
如果navigable为 null,则返回 false。
如果navigable不是顶级可遍历,则返回 false。
将request的发起者设置为“manifest
”。
将request的目标设置为“manifest
”。
将request的模式设置为“cors
”。
将request的凭据模式设置为el的crossorigin
内容属性的CORS 设置属性凭据模式。
返回 true。
要处理此类型的链接资源,给定link
元素el、布尔值success、响应response和字节序列bodyBytes
如果response的Content-Type 元数据不是JSON MIME 类型,则将success设置为 false。
如果success为 true
此类型的链接资源的处理链接标头步骤为不执行任何操作。
modulepreload
"modulepreload
关键字可与link
元素一起使用。此关键字创建一个外部资源链接。此关键字为body-ok。
modulepreload
关键字是preload
关键字的专门替代方案,其处理模型针对预加载模块脚本。特别是,它使用模块脚本的特定获取行为(包括例如对crossorigin
属性的不同解释),并将结果放入相应的模块映射以供以后评估。相比之下,使用preload
关键字的类似外部资源链接会将结果放入预加载缓存中,而不会影响文档的模块映射。
此外,实现可以利用模块脚本声明其依赖关系这一事实来获取指定模块的依赖关系。这旨在作为优化机会,因为用户代理知道,在大多数情况下,这些依赖关系以后也会被需要。如果不使用服务工作者等技术或在服务器端进行监控,通常不会观察到这一点。值得注意的是,在获取指定模块后,会发生相应的load
或error
事件,并且不会等待任何依赖项。
用户代理不得为此链接类型延迟加载事件。
此类链接获取和处理链接资源的合适时间为
与其他一些链接关系不同,更改此类link
的相关属性(例如as
、crossorigin
和referrerpolicy
)不会触发新的获取操作。这是因为文档的模块映射已被先前的获取操作填充,因此重新获取将毫无意义。
对于modulepreload
链接,给定一个link
元素el,获取并处理链接资源算法如下
如果el的href
属性的值为空字符串,则返回。
如果destination不是脚本类,则在给定el的网络任务源上排队一个元素任务,以触发名为error
的事件,并在el上返回。
如果url解析失败,则返回。
令凭据模式为el的crossorigin
属性的CORS 设置属性凭据模式。
令加密 nonce为el.[[CryptographicNonce]]。
令完整性元数据为el的integrity
属性的值(如果已指定),否则为空字符串。
如果el没有integrity
属性,则将完整性元数据设置为使用url和设置对象的模块完整性元数据解析的结果。
令推荐人策略为el的referrerpolicy
属性的当前状态。
令获取优先级为el的fetchpriority
属性的当前状态。
令options为一个脚本获取选项,其加密 nonce为加密 nonce,完整性元数据为完整性元数据,解析器元数据为“not-parser-inserted
”,凭据模式为凭据模式,推荐人策略为推荐人策略,以及获取优先级为获取优先级。
获取一个 modulepreload 模块脚本图,给定url、destination、设置对象、options,以及给定result的以下步骤
如果result为 null,则触发名为error
的事件,并在el上返回。
触发名为load
的事件,并在el上返回。
此类链接资源的处理链接头步骤为不执行任何操作。
以下代码段显示了一个应用程序的顶部部分,其中预加载了多个模块
<!DOCTYPE html>
< html lang = "en" >
< title > IRCFog</ title >
< link rel = "modulepreload" href = "app.mjs" >
< link rel = "modulepreload" href = "helpers.mjs" >
< link rel = "modulepreload" href = "irc.mjs" >
< link rel = "modulepreload" href = "fog-machine.mjs" >
< script type = "module" src = "app.mjs" >
...
假设应用程序的模块图如下所示
在这里,我们看到应用程序开发人员使用了modulepreload
来声明其模块图中的所有模块,确保用户代理启动对所有模块的获取操作。如果没有这种预加载,用户代理可能需要经过多次网络往返才能发现helpers.mjs
(如果未使用 HTTP/2 服务器推送等技术)。这样,modulepreload
link
元素可以用作应用程序模块的“清单”。
以下代码显示了如何将modulepreload
链接与import()
结合使用,以确保网络获取提前完成,以便在调用import()
时,模块已准备好(但未评估)在模块映射中。
< link rel = "modulepreload" href = "awesome-viewer.mjs" >
< button onclick = "import('./awesome-viewer.mjs').then(m => m.view())" >
View awesome thing
</ button >
nofollow
”可以使用nofollow
关键字与a
、area
和form
元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。
关键字nofollow
指示链接未得到页面原始作者或发布者的认可,或者包含对引用的文档的链接的主要原因是两个页面相关人员之间的商业关系。
noopener
”所有当前引擎都支持。
所有当前引擎都支持。
可以使用noopener
关键字与a
、area
和form
元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。
该关键字指示,遵循超链接导致的任何新创建的顶级可遍历对象将不包含辅助浏览上下文。例如,生成的Window
的opener
getter 将返回 null。
另请参阅处理模型。
这通常会创建一个具有辅助浏览上下文的顶级可遍历对象(假设不存在其目标名称为“example
”的现有可导航对象)。
< a href = help.html target = example > Help!</ a >
这会创建一个具有非辅助浏览上下文的顶级可遍历对象(假设相同的情况)。
< a href = help.html target = example rel = noopener > Help!</ a >
这些是等效的,并且仅导航父可导航对象。
< a href = index.html target = _parent > Home</ a >
< a href = index.html target = _parent rel = noopener > Home</ a >
noreferrer
”所有当前引擎都支持。
所有当前引擎都支持。
可以使用noreferrer
关键字与a
、area
和form
元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。
它指示在遵循链接时不泄漏任何推荐人信息,并且在相同条件下也暗示了noopener
关键字的行为。
另请参阅处理模型,其中直接操作了推荐来源。
<a href="..." rel="noreferrer" target="_blank">
与<a href="..." rel="noreferrer noopener" target="_blank">
的行为相同。
opener
”opener
关键字可用于a
、area
和form
元素。此关键字不会创建超链接,但会注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。
此关键字指示,通过遵循超链接而产生的任何新创建的顶级可遍历对象都将包含一个辅助浏览上下文。
另请参阅处理模型。
在以下示例中,opener
用于允许帮助页面弹出窗口导航其打开者,例如,如果用户要查找的内容可以在其他地方找到。另一种方法可能是使用命名目标而不是_blank
,但这可能与现有名称冲突。
< a href = "..." rel = opener target = _blank > Help!</ a >
pingback
”pingback
关键字可用于link
元素。此关键字创建一个外部资源链接。此关键字是body-ok。
有关pingback
关键字的语义,请参阅Pingback 1.0。 [PINGBACK]
preconnect
”所有当前引擎都支持。
preconnect
关键字可用于link
元素。此关键字创建一个外部资源链接。此关键字是body-ok。
preconnect
关键字指示预先启动到指定资源的源的连接可能是有益的,因为用户很可能需要位于该源处的资源,并且通过抢占建立连接相关的延迟成本可以改善用户体验。
由preconnect
关键字提供的资源没有默认类型。
用户代理不得延迟此链接类型的加载事件。
获取和处理此类链接的适当时间是
当已连接到浏览上下文的外部资源链接的link
元素的crossorigin
属性设置、更改或删除时。
对于此类型的链接资源,给定link
元素el,获取并处理链接资源步骤是从el中创建链接选项,并根据结果预连接。
对于此类型的链接资源,给定链接处理选项options,处理链接头步骤是根据options进行预连接。
给定链接处理选项options,进行预连接
如果options的href为空字符串,则返回。
令url为根据options的href(相对于options的基本 URL)编码解析 URL的结果。
传递基本 URL 而不是文档或环境由问题 #9715跟踪。
如果url解析失败,则返回。
如果url的方案不是HTTP(S) 方案,则返回。
令useCredentials为true。
如果options的crossorigin为Anonymous,并且options的源与url的源不具有相同源,则将useCredentials设置为false。
用户代理应根据partitionKey、url的源和useCredentials获取连接。
此连接已获取,但未直接使用。它将保留在连接池中以供后续使用。
用户代理应尽可能尝试启动预连接并执行完整的连接握手(对于 HTTP 为 DNS+TCP,对于 HTTPS 源为 DNS+TCP+TLS),但允许选择执行部分握手(对于 HTTP 为仅 DNS,对于 HTTPS 源为 DNS 或 DNS+TCP),或完全跳过它,原因可能是资源限制或其他原因。
每个源的最佳连接数取决于协商的协议、用户当前的连接配置文件、可用的设备资源、全局连接限制和其他特定于上下文的变量。因此,应由用户代理决定应打开多少连接。
prefetch
”prefetch
关键字可用于link
元素。此关键字创建一个外部资源链接。此关键字是body-ok。
prefetch
关键字指示预先获取和缓存指定的资源或同站点的文档可能是有益的,因为用户很可能在将来的导航中需要此资源。
由prefetch
关键字提供的资源没有默认类型。
获取和处理此类链接的适当时间是
当已连接到浏览上下文的外部资源链接的link
元素的crossorigin
属性设置、更改或删除时。
对于prefetch
链接,给定link
元素el,获取并处理链接资源算法如下
如果el的href
属性的值为空字符串,则返回。
令options为从el中创建链接选项的结果。
将options的目标设置为空字符串。
令request为根据options创建链接请求的结果。
如果request为null,则返回。
将request的发起者设置为“prefetch
”。
令 `processPrefetchResponse` 为以下步骤,给定一个 响应 `response` 和 null、失败或一个 字节序列 `bytesOrNull`。
用户代理应该 获取 `request`,并将 `processResponseConsumeBody` 设置为 `processPrefetchResponse`。用户代理可以延迟 `request` 的获取,以优先处理当前文档所需的其它请求。
此类型链接资源的 处理链接头 步骤为不执行任何操作。
preload
"仅在一个引擎中受支持。
可以使用 `preload
` 关键字与 `link
` 元素一起使用。此关键字创建一个 外部资源链接。此关键字是 body-ok。
`preload
` 关键字指示用户代理将根据 `as
` 属性给出的 潜在目标 和 `fetchpriority
` 属性给出的 优先级,抢先 获取 并缓存指定的资源,因为用户很可能需要此资源进行当前导航。
当资源加载时,用户代理可能会执行其他操作,例如抢先 解码图像 或 创建样式表。但是,这些额外操作不能产生可观察到的影响。
`preload
` 关键字给出的资源没有默认类型。
用户代理不得为此链接类型 延迟加载事件。
为这种链接 获取和处理链接资源 的适当时间是
当一个已经 连接到浏览上下文 的 外部资源链接 的 `link
` 元素的 `type
` 属性被设置、移除或更改,而之前由于 `type
` 属性指定了请求 目标不支持的类型而未获取时。
当一个已经 连接到浏览上下文 的 外部资源链接 的 `link
` 元素的 `media
` 属性发生更改或移除,而之前由于 `media
` 属性不 匹配环境 而未获取时。
一个 `Document
` 具有一个 预加载资源映射,它是一个 有序映射,最初为空。
same-origin
”、“cors
”或“no-cors
”要 使用预加载资源,对于 `Window
` `window`,给定一个 URL `url`、一个字符串 `destination`、一个字符串 `mode`、一个字符串 `credentialsMode`、一个字符串 `integrityMetadata` 和 `onResponseAvailable`(一个接受 响应 的算法)。
令 `key` 为一个 预加载键,其 URL 为 `url`、目标 为 `destination`、模式 为 `mode`,并且 凭据模式 为 `credentialsMode`。
令 `preloads` 为 `window` 的 关联的 Document
的 预加载资源映射。
如果 `key` 在 `preloads` 中 不存在,则返回 false。
令 `entry` 为 `preloads[key]
。令 `consumerIntegrityMetadata` 为 解析 `integrityMetadata` 的结果。
如果以下条件都不适用
`consumerIntegrityMetadata` 为 无元数据
;
`consumerIntegrityMetadata` 等于 `preloadIntegrityMetadata`;或
此比较将忽略未知的完整性选项。请参阅 问题 #116。
则返回 false。
预加载和使用者之间的完整性元数据不匹配,即使两者都与数据匹配,也会导致从网络进行额外获取。
重要的是,网络错误 会添加到预加载缓存中,以便如果预加载请求导致错误,则不会稍后从网络重新请求错误的响应。这也具有安全意义;考虑开发人员在预加载请求上指定子资源完整性元数据,但在后续资源请求上未指定的情况。如果预加载请求失败子资源完整性验证并被丢弃,则资源请求将从网络获取并使用可能存在恶意的响应,而不会验证其完整性。 [SRI]
从 `preloads` 中 移除 `preloads[key]
。如果 `entry` 的 响应 为 null,则将 `entry` 的 在响应可用时 设置为 `onResponseAvailable`。
否则,使用 `entry` 的 响应 调用 `onResponseAvailable`。
返回 true。
出于本节的目的,如果以下算法返回 true,则字符串 `type` 匹配 字符串 `destination`。
如果 `type` 为空字符串,则返回 true。
如果 `destination` 为“fetch
”,则返回 true。
令 `mimeTypeRecord` 为 解析 `type` 的结果。
如果 `mimeTypeRecord` 为失败,则返回 false。
如果 `mimeTypeRecord` 不 受用户代理支持,则返回 false。
如果以下任何一项为真
如果destination 为 "audio
" 或 "video
",且mimeTypeRecord 为一个音频或视频 MIME 类型;
如果destination 为一个脚本类目标,且mimeTypeRecord 为一个JavaScript MIME 类型;
如果destination 为 "image
",且mimeTypeRecord 为一个图像 MIME 类型;
如果destination 为 "font
",且mimeTypeRecord 为一个字体 MIME 类型;
如果destination 为 "json
",且mimeTypeRecord 为一个JSON MIME 类型;
则返回 true。
返回 false。
要为一个请求request 创建预加载密钥,返回一个新的预加载密钥,其URL 为request 的URL,目标 为request 的目标,模式 为request 的模式,且凭据模式 为request 的凭据模式。
要给定字符串destination 转换预加载目标
如果destination 不是 "fetch
"、"font
"、"image
"、"script
"、"style
" 或 "track
",则返回 null。
返回转换destination 的结果。
要给定链接处理选项options 和一个可选的processResponse(一个接受响应 的算法)预加载
如果options 的目标 为 "image
" 且options 的源集 不为 null,则将options 的href 设置为从options 的源集 选择图像源 的结果。
令request 为给定options 创建链接请求 的结果。
如果request为null,则返回。
令unsafeEndTime 为 0。
令key 为给定request 创建预加载密钥 的结果。
如果options 的文档 为 "pending
",则将request 的发起者类型 设置为 "early hint
"。
令controller 为 null。
令给定文档
document 的reportTiming 为对给定document 的相关全局对象 的controller 报告时间。
将controller 设置为获取request 的结果,其中processResponseConsumeBody 设置为以下步骤,给定一个响应response 和 null、失败或一个字节序列bodyBytes
如果bodyBytes 为一个字节序列,则将response 的主体 设置为bodyBytes 作为主体。
通过使用processResponseConsumeBody,我们已提取 了整个主体。这对于确保预加载程序从网络加载整个主体是必要的,无论预加载是否会被使用(目前尚不确定)。此步骤随后将请求的主体重置为包含相同字节的新主体,以便其他规范在实际使用时可以从中读取,尽管我们之前已经读取过一次。
否则,将response 设置为网络错误。
将unsafeEndTime 设置为不安全的共享当前时间。
如果entry 的响应可用 为 null,则将entry 的响应 设置为response;否则调用给定response 的entry 的响应可用。
如果给定了processResponse,则使用response 调用processResponse。
令给定文档
document 的commit 为以下步骤
如果options 的文档 为 null,则将options 的文档就绪 设置为commit。否则,使用options 的文档 调用commit。
对于此类型的链接资源,给定link
元素el 的获取并处理链接资源 步骤为
对于此类型的链接,给定链接处理选项options 的处理链接标头 步骤为预加载options。
privacy-policy
"可以使用privacy-policy
关键字与link
、a
和area
元素。此关键字创建一个超链接。
privacy-policy
关键字指示引用的文档包含有关适用于当前文档的数据收集和使用实践的信息,如其他链接关系类型 中更详细地描述的那样。引用的文档可以是独立的隐私政策,也可以是某些更通用文档的特定部分。[RFC6903]
search
"可以使用search
关键字与link
、a
、area
和form
元素。此关键字创建一个超链接。
search
关键字指示引用的文档提供专门用于搜索文档及其相关资源的界面。
OpenSearch 描述文档可以与link
元素和search
链接类型一起使用,以使用户代理能够自动发现搜索接口。 [OPENSEARCH]
stylesheet
”
关键字可与 stylesheet
link
元素一起使用。此关键字创建一个 外部资源链接,该链接有助于样式处理模型。此关键字是 body-ok。
指定的资源是 CSS 样式表,用于描述如何呈现文档。
仅在一个引擎中受支持。
如果 alternate
关键字也指定在 link
元素上,则 该链接是备用样式表;在这种情况下,必须在 link
元素上指定 title
属性,且其值不能为空。
由 stylesheet
关键字提供的资源的默认类型为 text/css
。
如果此类型的 link
元素是由其 节点文档 的解析器创建的,则该元素为 隐式潜在渲染阻塞。
当具有 stylesheet
关键字的 link
元素的 disabled
属性被设置时,禁用 关联的 CSS 样式表。
获取和处理此类型链接的适当时间是
当已经 连接到浏览上下文 的 外部资源链接 的 link
元素的 crossorigin
属性被设置、更改或移除时。
当已经 连接到浏览上下文 的 外部资源链接 的 link
元素的 type
属性被设置或更改为一个不匹配或不再匹配先前获取的外部资源(如果有)的 Content-Type 元数据 的值时。
当已经 连接到浏览上下文 的 外部资源链接 的 link
元素的 type
属性先前由于 type
属性指定了不受支持的类型而未获取,现在被移除或更改时。
怪癖:如果文档已设置为 怪癖模式,与外部资源的 URL 具有 相同来源,并且外部资源的 Content-Type 元数据 不是受支持的样式表类型,则用户代理必须将其假定为 text/css
。
对于此类型的链接资源,给定 link
元素 el 和 请求 request,链接资源获取设置步骤 为
有关使用 CSSOM 获取 CSS 样式表 算法而不是 默认获取和处理链接资源 算法的计划,请参见 问题 #968。同时,任何 关键子资源 请求 的 渲染阻塞 应设置为 link
元素当前是否为 渲染阻塞。
要 处理此类型的链接资源,给定 link
元素 el、布尔值 success、响应 response 和 字节序列 bodyBytes
如果资源的 Content-Type 元数据 不是 text/css
,则将 success 设置为 false。
如果 el 具有 关联的 CSS 样式表,则 移除 CSS 样式表。
如果 success 为 true,则
创建一个 CSS 样式表,其属性如下
response 的 URL 列表[0]
我们在此处提供一个 URL,假设 w3c/csswg-drafts 问题 #9316 将得到修复。
el
el 的 media
属性。
这是对(此时可能不存在的)属性的引用,而不是对属性当前值的副本。CSSOM 定义了动态设置、更改或移除属性时会发生什么。
如果 el 在文档树中,则为 el 的 title
属性,否则为空字符串。
这同样是对属性的引用,而不是对属性当前值的副本。
如果资源为 CORS 同源,则设置;否则不设置。
null
保留其默认值。
保持未初始化状态。
这似乎不正确。大概我们应该使用 bodyBytes?在 问题 #2997 中跟踪。
CSS 环境编码 是运行以下步骤的结果: [CSSSYNTAX]
如果 `el` 具有 `charset
属性,则从该属性的值中获取编码。如果成功,则返回得到的编码。 [ENCODING]
如果 `el` 贡献了一个阻止脚本的样式表,则
断言:`el` 的 节点文档 的 阻止脚本的样式表集合 包含 `el`。
从其 节点文档 的 阻止脚本的样式表集合 中移除 `el`。
在 `el` 上解除渲染阻塞。
此类型的链接资源的处理链接头步骤为不执行任何操作。
tag
"
关键字可用于 tag
a
和 area
元素。此关键字创建一个超链接。
关键字表示引用的文档所代表的标签适用于当前文档。tag
由于它表示标签适用于当前文档,因此在标签云的标记中使用此关键字是不合适的,标签云列出了多个页面中流行的标签。
本文档是关于一些宝石的,因此它被标记为“https://en.wikipedia.org/wiki/Gemstone
”,以明确地将其归类为适用于“宝石”类型的宝石,而不是例如美国的城镇、Ruby 包格式或瑞士机车类别。
<!DOCTYPE HTML>
< html lang = "en" >
< head >
< title > My Precious</ title >
</ head >
< body >
< header >< h1 > My precious</ h1 > < p > Summer 2012</ p ></ header >
< p > Recently I managed to dispose of a red gem that had been
bothering me. I now have a much nicer blue sapphire.</ p >
< p > The red gem had been found in a bauxite stone while I was digging
out the office level, but nobody was willing to haul it away. The
same red gem stayed there for literally years.</ p >
< footer >
Tags: < a rel = tag href = "https://en.wikipedia.org/wiki/Gemstone" > Gemstone</ a >
</ footer >
</ body >
</ html >
在本文档中,有两篇文章。“
”链接适用于整个页面(无论它放置在何处,包括如果它位于tag
article
元素内)。
<!DOCTYPE HTML>
< html lang = "en" >
< head >
< title > Gem 4/4</ title >
</ head >
< body >
< article >
< h1 > 801: Steinbock</ h1 >
< p > The number 801 Gem 4/4 electro-diesel has an ibex and was rebuilt in 2002.</ p >
</ article >
< article >
< h1 > 802: Murmeltier</ h1 >
< figure >
< img src = "https://upload.wikimedia.org/wikipedia/commons/b/b0/Trains_de_la_Bernina_en_hiver_2.jpg"
alt = "The 802 was red with pantographs and tall vents on the side." >
< figcaption > The 802 in the 1980s, above Lago Bianco.</ figcaption >
</ figure >
< p > The number 802 Gem 4/4 electro-diesel has a marmot and was rebuilt in 2003.</ p >
</ article >
< p class = "topic" >< a rel = tag href = "https://en.wikipedia.org/wiki/Rhaetian_Railway_Gem_4/4" > Gem 4/4</ a ></ p >
</ body >
</ html >
terms-of-service
"
关键字可用于 terms-of-service
link
、a
和 area
元素。此关键字创建一个超链接。
关键字表示引用的文档包含有关当前文档提供者与希望使用当前文档的用户之间协议的信息,如其他链接关系类型中更详细地描述。 [RFC6903]terms-of-service
某些文档构成文档序列的一部分。
文档序列是指每个文档可以具有前一个兄弟节点和后一个兄弟节点的序列。没有前一个兄弟节点的文档是其序列的开头,没有后一个兄弟节点的文档是其序列的结尾。
一个文档可以是多个序列的一部分。
next
"
关键字可用于 next
link
、a
、area
和 form
元素。此关键字创建一个超链接。
关键字表示该文档是序列的一部分,并且该链接指向序列中下一个逻辑文档。next
当
关键字与 next
link
元素一起使用时,用户代理应处理此类链接,就好像它们使用的是 dns-prefetch
、preconnect
或 prefetch
关键字之一。用户代理希望使用哪个关键字取决于实现;例如,用户代理可能希望在尝试节省数据、电池电量或处理能力时使用成本较低的 preconnect
处理模型,或者可能希望根据对类似场景中过去用户行为的启发式分析来选择关键字。
prev
"
关键字可用于 prev
link
、a
、area
和 form
元素。此关键字创建一个超链接。
关键字表示该文档是序列的一部分,并且该链接指向序列中前一个逻辑文档。prev
同义词:出于历史原因,用户代理还必须像
关键字一样处理关键字“prev
previous
”。
对预定义链接类型集的扩展可以在用于现有 rel 值的微格式页面上注册。 [MFREL]
任何人都可以随时编辑用于现有 rel 值的微格式页面以添加类型。扩展类型必须使用以下信息指定
正在定义的实际值。该值不应与任何其他定义的值过于相似(例如,仅在大小写上有所不同)。
如果该值包含 U+003A COLON 字符 (:),则它也必须是绝对 URL。
link
的影响以下之一
link
元素上不得指定关键字。link
元素上指定关键字;它创建一个超链接。link
元素上指定关键字;它创建一个外部资源链接。a
和 area
的影响以下之一
a
和 area
元素上不得指定关键字。a
和 area
元素上指定关键字;它创建一个超链接。a
和 area
元素上指定关键字;它创建一个外部资源链接。a
和 area
元素上指定关键字;它注释元素创建的其他超链接。form
的影响以下之一
form
元素上不得指定关键字。form
元素上指定关键字;它创建一个超链接。form
元素上指定关键字;它创建一个外部资源链接。form
元素上指定关键字;它注释元素创建的其他超链接。对关键字含义的简短非规范性描述。
指向对关键字语义和要求的更详细描述的链接。它可以是维基上的另一个页面,也可以是到外部页面的链接。
具有完全相同处理要求的其他关键字值的列表。作者不应使用定义为同义词的值,它们仅用于允许用户代理支持旧版内容。任何人都可以删除实践中未使用的同义词;只有需要以这种方式注册为与旧版内容兼容的同义词的名称才应以这种方式注册。
以下之一
如果发现某个关键词与现有值冗余,则应将其移除并列为现有值的同义词。
如果某个关键词以“提议”状态注册一个月或更长时间而未被使用或指定,则可以将其从注册表中移除。
如果添加的关键词以“提议”状态且发现与现有值冗余,则应将其移除并列为现有值的同义词。如果添加的关键词以“提议”状态且发现有害,则应将其状态更改为“已弃用”。
任何人都可以随时更改状态,但应仅根据以上定义进行操作。
一致性检查器必须使用microformats 页面上关于现有 rel 值的信息来确定某个值是否允许:本规范中定义的值或标记为“提议”或“批准”的值,在用于其适用的元素时必须被接受,如“影响...”字段中所述;而标记为“已弃用”或在本规范或上述页面中未列出的值必须被拒绝为无效。一致性检查器可以缓存此信息(例如,出于性能原因或避免使用不可靠的网络连接)。
当作者使用本规范或维基页面中未定义的新类型时,一致性检查器应提供将该值添加到维基的功能,并附带上述详细信息,以及“提议”状态。
在microformats 页面上关于现有 rel 值中定义为扩展且状态为“提议”或“批准”的类型,可以与rel
属性一起用于link
、a
和area
元素,符合“影响...”字段的要求。[MFREL]