1. 4.6 链接
      1. 4.6.1 简介
      2. 4.6.2aarea 元素创建的链接
      3. 4.6.3 aarea 元素的 API
      4. 4.6.4 遵循超链接
      5. 4.6.5 下载资源
      6. 4.6.6 超链接审计
        1. 4.6.6.1 `Ping-From` 和 `Ping-To` 头部
      7. 4.6.7 链接类型
        1. 4.6.7.1 链接类型 "alternate"
        2. 4.6.7.2 链接类型 "author"
        3. 4.6.7.3 链接类型 "bookmark"
        4. 4.6.7.4 链接类型 "canonical"
        5. 4.6.7.5 链接类型 "dns-prefetch"
        6. 4.6.7.6 链接类型 "expect"
        7. 4.6.7.7 链接类型 "external"
        8. 4.6.7.8 链接类型 "help"
        9. 4.6.7.9 链接类型 "icon"
        10. 4.6.7.10 链接类型 "license"
        11. 4.6.7.11 链接类型 "manifest"
        12. 4.6.7.12 链接类型 "modulepreload"
        13. 4.6.7.13 链接类型 "nofollow"
        14. 4.6.7.14 链接类型 "noopener"
        15. 4.6.7.15 链接类型 "noreferrer"
        16. 4.6.7.16 链接类型 "opener"
        17. 4.6.7.17 链接类型 "pingback"
        18. 4.6.7.18 链接类型 "preconnect"
        19. 4.6.7.19 链接类型 "prefetch"
        20. 4.6.7.20 链接类型 "preload"
        21. 4.6.7.21 链接类型 "privacy-policy"
        22. 4.6.7.22 链接类型 "search"
        23. 4.6.7.23 链接类型 "stylesheet"
        24. 4.6.7.24 链接类型 "tag"
        25. 4.6.7.25 链接类型 "terms-of-service"
        26. 4.6.7.26 顺序链接类型
          1. 4.6.7.26.1 链接类型 "next"
          2. 4.6.7.26.2 链接类型 "prev"
        27. 4.6.7.27 其他链接类型

4.6.1 简介

链接是一个概念性的构造,由 aareaformlink 元素创建,用于 表示两个资源之间的连接,其中一个资源是当前的 Document。HTML 中有三种类型的链接

外部资源链接

这些是用于增强当前文档的资源的链接,通常由用户代理自动处理。所有 外部资源链接 都有一个 获取并处理链接资源 算法,该算法描述了如何获取资源。

超链接

这些是到其他资源的链接,通常由用户代理向用户公开,以便用户可以促使用户代理 导航 到这些资源,例如在浏览器中访问它们或下载它们。

内部资源链接

这些是到当前文档内资源的链接,用于赋予这些资源特殊的含义或行为。

对于具有 href 属性和 rel 属性的 link 元素,必须为 rel 属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。

类似地,对于具有 href 属性和 rel 属性的 aarea 元素,必须为 rel 属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。但是,与 link 元素不同,具有 href 属性但没有 rel 属性,或者其 rel 属性没有定义为指定 超链接 的关键字的 aarea 元素,也必须创建一个 超链接。此隐式超链接除了将元素的 节点文档链接到元素的 href 属性提供的资源之外,没有其他特殊含义(它没有 链接类型)。

类似地,对于具有 rel 属性的 form 元素,必须为 rel 属性的关键字创建链接,如 链接类型 部分中为这些关键字定义的那样。没有 rel 属性,或者其 rel 属性没有定义为指定 超链接 的关键字的 form 元素,也必须创建一个 超链接

一个 超链接 可以有一个或多个 超链接注释,这些注释修改了该超链接的处理语义。

aarea 元素上的 href 属性必须具有一个值为 可能被空格包围的有效 URL

aarea 元素上的 href 属性不是必需的;当这些元素没有 href 属性时,它们不会创建超链接。

如果存在 target 属性,则它必须是 有效可导航目标名称或关键字。它给出了将要使用的 可导航 的名称。用户代理在 遵循超链接 时使用此名称。

如果存在 download 属性,则表示作者希望将超链接用于 下载资源。该属性可能具有一个值;该值(如果有)指定了作者建议用于在本地文件系统中标记资源的默认文件名。对允许的值没有限制,但作者应注意,大多数文件系统对文件名中支持的标点符号有限制,并且用户代理可能会相应地调整文件名。

元素/a#attr-ping

所有当前引擎都支持。

Firefox🔰 1+Safari6+Chrome12+
Opera?Edge79+
Edge (旧版)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android≤37+Samsung Internet?Opera Android?

如果存在 ping 属性,则它给出了对用户是否遵循超链接感兴趣的资源的 URL。该值必须是 一组以空格分隔的标记,每个标记都必须是一个 有效的非空 URL,其 方案HTTP(S) 方案。用户代理将该值用于 超链接审计

aarea 元素上的 rel 属性控制这些元素创建的链接类型。该属性的值必须是 一组唯一的以空格分隔的标记。下面定义了 允许的关键字及其含义

rel支持的标记 是在 HTML 链接类型 中定义的、在 aarea 元素上允许的、影响处理模型并由用户代理支持的关键字。可能的 支持的标记noreferrernoopeneropenerrel支持的标记 只能包含用户代理实现处理模型的此列表中的标记。

rel 属性没有默认值。如果省略了该属性,或者属性中的值均未被用户代理识别,则文档与目标资源之间除了存在超链接外,没有任何特定关系。

在创建超链接a 元素上,如果存在hreflang 属性,则表示链接资源的语言。这纯粹是建议性的。该值必须是有效的 BCP 47 语言标签。[BCP47] 用户代理不得将此属性视为权威性属性——获取资源后,用户代理必须仅使用与资源关联的语言信息来确定其语言,而不是链接到资源的元数据。

如果存在type 属性,则表示链接资源的MIME 类型。这纯粹是建议性的。该值必须是有效的 MIME 类型字符串。用户代理不得将type 属性视为权威性属性——获取资源后,用户代理不得使用链接到资源的元数据来确定其类型。

referrerpolicy 属性是引用者策略属性。其目的是在遵循超链接时设置引用者策略[REFERRERPOLICY]


aarea 元素的激活行为被调用时,用户代理可能会允许用户指示是否将超链接用于导航,或者是否要下载它指定的资源。

在没有用户偏好的情况下,如果元素没有download 属性,则默认应为导航;如果存在该属性,则默认应下载指定的资源。

给定事件eventaarea 元素element激活行为

  1. 如果element 没有href 属性,则返回。

  2. hyperlinkSuffix 为 null。

  3. 如果element 是一个a 元素,并且event目标是具有指定ismap 属性的img,则

    1. xy 为 0。

    2. 如果eventisTrusted 属性初始化为 true,则将x 设置为从图像左边缘到点击位置的CSS 像素距离,并将y 设置为从图像顶边缘到点击位置的CSS 像素距离。

    3. 如果x 为负数,则将其设置为 0。

    4. 如果y 为负数,则将其设置为 0。

    5. hyperlinkSuffix 设置为 U+003F (?)、使用ASCII 数字表示的x 的十进制整数的值、U+002C (,) 以及使用ASCII 数字表示的y 的十进制整数的值的连接。

  4. userInvolvementevent用户导航参与度

  5. 如果用户已表示希望下载超链接,则将userInvolvement 设置为“browser UI”。

    也就是说,如果用户已明确表示希望下载,则这不再仅仅算作“activation”。

  6. 如果element 具有download 属性,或者用户已表示希望下载超链接,则下载element 创建的超链接,并将hyperlinkSuffix 设置为hyperlinkSuffix,并将userInvolvement 设置为userInvolvement

  7. 否则,遵循element 创建的超链接,并将hyperlinkSuffix 设置为hyperlinkSuffix,并将userInvolvement 设置为userInvolvement

4.6.3 aarea 元素的 API

interface 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

HTMLAnchorElement/href

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

HTMLAnchorElement/toString

所有当前引擎都支持。

Firefox22+Safari3+Chrome52+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/href

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

HTMLAreaElement/toString

所有当前引擎都支持。

Firefox22+Safari10.1+Chrome32+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL。

可以设置,以更改 URL。

hyperlink.origin

HTMLAnchorElement/origin

所有当前引擎都支持。

Firefox26+Safari5.1+Chrome8+
Opera?Edge79+
Edge (旧版)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android3+Samsung Internet?Opera Android?

HTMLAreaElement/origin

所有当前引擎都支持。

Firefox26+Safari10+Chrome32+
Opera?Edge79+
Edge (旧版)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android?

返回超链接的 URL 的来源。

hyperlink.protocol

HTMLAnchorElement/protocol

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/protocol

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的方案。

可以设置,以更改 URL 的方案。

hyperlink.username

HTMLAnchorElement/username

所有当前引擎都支持。

Firefox26+Safari10+Chrome32+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/username

所有当前引擎都支持。

Firefox26+Safari10+Chrome32+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的用户名。

可以设置,以更改 URL 的用户名。

hyperlink.password

HTMLAnchorElement/password

所有当前引擎都支持。

Firefox26+Safari10+Chrome32+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/password

所有当前引擎都支持。

Firefox26+Safari10+Chrome32+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的密码。

可以设置,以更改 URL 的密码。

hyperlink.host

HTMLAnchorElement/host

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/host

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的主机和端口(如果与方案的默认端口不同)。

可以设置,以更改 URL 的主机和端口。

hyperlink.hostname

HTMLAnchorElement/hostname

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/hostname

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的主机。

可以设置,以更改 URL 的主机。

hyperlink.port

HTMLAnchorElement/port

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/port

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的端口。

可以设置,以更改 URL 的端口。

hyperlink.pathname

HTMLAnchorElement/pathname

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/pathname

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的路径。

可以设置,以更改 URL 的路径。

hyperlink.search

HTMLAnchorElement/search

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/search

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的查询(如果非空,则包含前导“?”)。

可以设置,以更改 URL 的查询(忽略前导“?”)。

hyperlink.hash

HTMLAnchorElement/hash

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement/hash

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回超链接的 URL 的片段(如果非空,则包含前导“#”)。

可以设置,以更改 URL 的片段(忽略前导“#”)。

实现HTMLHyperlinkElementUtils 混合体的元素具有关联的url(null 或URL)。它最初为 null。

实现 HTMLHyperlinkElementUtils 混合类的元素有一个关联的 设置 URL 算法,该算法执行以下步骤

  1. 将此元素的 URL 设置为 null。

  2. 如果此元素的 href 内容属性不存在,则返回。

  3. url 为根据此元素的 href 内容属性的值(相对于此元素的 节点文档编码解析 URL 的结果。

  4. 如果 url 不是失败,则将此元素的 URL 设置为 url

当创建实现 HTMLHyperlinkElementUtils 混合类的元素时,以及每当这些元素的 href 内容属性被设置、更改或移除时,用户代理必须 设置 URL

这仅对 blob: URL 可观察,因为 解析 它们涉及 Blob URL 存储 查询。

实现 HTMLHyperlinkElementUtils 混合类的元素有一个关联的 重新初始化 URL 算法,该算法执行以下步骤

  1. 如果元素的 URL 不为 null,其 方案 为“blob”,并且它具有 不透明路径,则终止这些步骤。

  2. 设置 URL.

更新 href,请将元素的 href 内容属性的值设置为元素的 URL序列化


href 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null 且 this 没有 href 内容属性,则返回空字符串。

  4. 否则,如果 url 为 null,则返回 thishref 内容属性的值。

  5. 返回 url序列化

href 设置器的步骤是将 thishref 内容属性的值设置为给定值。

origin 获取器的步骤如下

  1. 重新初始化 URL.

  2. 如果 thisURL 为 null,则返回空字符串。

  3. 返回 thisURL来源序列化

protocol 获取器的步骤如下

  1. 重新初始化 URL.

  2. 如果 thisURL 为 null,则返回“:”。

  3. 返回 thisURL方案,后跟“:”。

protocol 设置器的步骤如下

  1. 重新初始化 URL.

  2. 如果 thisURL 为 null,则返回。

  3. 基本 URL 解析 给定值,后跟“:”,以 thisURL 作为 url方案起始状态 作为 状态覆盖

    因为 URL 解析器会忽略多个连续的冒号,所以提供“https:”(甚至“https::::”)的值与提供“https”的值相同。

  4. 更新 href.

username 获取器的步骤如下

  1. 重新初始化 URL.

  2. 如果 thisURL 为 null,则返回空字符串。

  3. 返回 thisURL用户名

username 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null 或 url 不能有用户名/密码/端口,则返回。

  4. 设置用户名,给定 url 和给定值。

  5. 更新 href.

password 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null,则返回空字符串。

  4. 返回 url密码

password 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null 或 url 不能有用户名/密码/端口,则返回。

  4. 设置密码,给定 url 和给定值。

  5. 更新 href.

host 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 urlurl主机 为 null,则返回空字符串。

  4. 如果 url端口 为 null,则返回 url主机序列化

  5. 返回 url主机序列化,后跟“:”和 url端口序列化

host 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null 或 url 具有 不透明路径,则返回。

  4. 基本 URL 解析 给定值,以 url 作为 url主机状态 作为 状态覆盖

  5. 更新 href.

hostname 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 urlurl主机 为 null,则返回空字符串。

  4. 返回 url主机序列化

hostname 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 url 为 null 或 url 具有 不透明路径,则返回。

  4. 基本 URL 解析 给定值,以 url 作为 url主机名状态 作为 状态覆盖

  5. 更新 href.

port 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisURL

  3. 如果 urlurl端口 为 null,则返回空字符串。

  4. 返回 url端口序列化

port 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空或 url 不允许包含用户名/密码/端口,则返回。

  4. 如果给定的值为空字符串,则将 urlport 设置为 null。

  5. 否则,使用 url 作为 url 以及 端口状态 作为 状态覆盖,对给定值进行 基本 URL 解析

  6. 更新 href.

pathname 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为 null,则返回空字符串。

  4. 返回对 url 进行 URL 路径序列化 的结果。

pathname 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空或 url 具有 不透明路径,则返回。

  4. urlpath 设置为空列表。

  5. 使用 url 作为 url 以及 路径起始状态 作为 状态覆盖,对给定值进行 基本 URL 解析

  6. 更新 href.

search 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空,或者 urlquery 为空或 null,则返回空字符串。

  4. 返回 "?",后跟 urlquery

search 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空,则终止这些步骤。

  4. 如果给定的值为空字符串,则将 urlquery 设置为 null。

  5. 否则

    1. input 为给定值,如果存在前导的 "?",则将其移除。

    2. urlquery 设置为空字符串。

    3. 使用 url 作为 url 以及 查询状态 作为 状态覆盖,对 input 进行 基本 URL 解析

  6. 更新 href.

hash 获取器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空,或者 urlfragment 为空或 null,则返回空字符串。

  4. 返回 "#",后跟 urlfragment

hash 设置器的步骤如下

  1. 重新初始化 URL.

  2. urlthisurl

  3. 如果 url 为空,则返回。

  4. 如果给定的值为空字符串,则将 urlfragment 设置为 null。

  5. 否则

    1. input 为给定值,如果存在前导的 "#",则将其移除。

    2. urlfragment 设置为空字符串。

    3. 使用 url 作为 url 以及 片段状态 作为 状态覆盖,对 input 进行 基本 URL 解析

  6. 更新 href.

如果以下任一条件为真,则元素 element 无法导航

这也被 form 元素的 表单提交 使用。对于 a 元素的例外是为了与 Web 内容兼容。

获取元素的 noopener,给定一个 aareaform 元素 element 和一个字符串 target

  1. 如果 element链接类型 包含 noopenernoreferrer 关键字,则返回 true。

  2. 如果 element链接类型 不包含 opener 关键字,并且 target 与 "_blank" 不区分大小写地匹配,则返回 true。

  3. 返回 false。

跟踪 由元素 subject 创建的超链接,给定一个可选的 hyperlinkSuffix(默认为 null)和一个可选的 userInvolvement(默认为 "none")

  1. 如果 subject 无法导航,则返回。

  2. replace 为 false。

  3. targetAttributeValue 为空字符串。

  4. 如果 subjectaarea 元素,则将 targetAttributeValue 设置为给定 subject获取元素的目标 的结果。

  5. noopener 为使用 subjecttargetAttributeValue 获取元素的 noopener 的结果。

  6. targetNavigable 为给定 targetAttributeValuesubject节点可导航 以及 noopener选择可导航规则 的第一个返回值。

  7. 如果 targetNavigable 为空,则返回。

  8. urlString 为给定 subjecthref 属性值(相对于 subject节点文档)的 URL 编码、解析和序列化 结果。

  9. 如果 urlString 为失败,则返回。

  10. 如果 hyperlinkSuffix 非空,则将其追加到 urlString

  11. referrerPolicysubjectreferrerpolicy 内容属性的当前状态。

  12. 如果 subject链接类型 包含 noreferrer 关键字,则将 referrerPolicy 设置为 "no-referrer"。

  13. 使用 subject节点文档targetNavigable 导航urlString,其中 referrerPolicy 设置为 referrerPolicyuserInvolvement 设置为 userInvolvement

    与许多其他类型的导航不同,跟踪超链接在文档未 完全加载 时没有特殊的 "replace" 行为。对于用户发起的跟踪超链接实例以及通过例如 aElement.click() 触发的脚本实例,情况都是如此。

4.6.5 下载资源

HTMLAnchorElement/download

所有当前引擎都支持。

Firefox20+Safari10.1+Chrome15+
Opera?Edge79+
Edge (Legacy)13+Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

在某些情况下,资源用于以后使用而不是立即查看。为了表明资源旨在下载以供以后使用,而不是立即使用,可以在创建到该资源的 超链接aarea 元素上指定 download 属性。

此外,可以为该属性指定一个值,以指定用户代理在将资源存储在文件系统中时要使用的文件名。此值可以被 `Content-Disposition` HTTP 标头的文件名参数覆盖。 [RFC6266]

在跨源情况下,download 属性必须与 `Content-Disposition` HTTP 头部结合使用,特别是与 attachment 处理类型结合,以避免向用户发出可能存在恶意活动的警告。(这是为了保护用户免受未经充分理解的情况下下载敏感个人或机密信息的侵害。)


下载元素 subject 创建的超链接,给定一个可选的hyperlinkSuffix(默认为 null)和一个可选的userInvolvement(默认为 "none")

  1. 如果 subject 无法导航,则返回。

  2. 如果 subject节点文档活动沙盒标志集设置了沙盒下载浏览上下文标志,则返回。

  3. urlString 为给定 subjecthref 属性值(相对于 subject节点文档编码、解析和序列化 URL 的结果。

  4. 如果 urlString 为失败,则返回。

  5. 如果 hyperlinkSuffix 非空,则将其追加到 urlString

  6. 如果 userInvolvement 不是 "浏览器 UI",则

    1. 断言subject 具有download 属性。

    2. navigationsubject相关全局对象导航 API

    3. filenamesubjectdownload 属性的值。

    4. continue 为在 navigation触发下载请求 navigate 事件的结果,其中destinationURL 设置为 urlStringuserInvolvement 设置为 userInvolvement,以及filename 设置为 filename

    5. 如果 continue 为 false,则返回。

  7. 并行运行以下步骤并行

    1. 可选地,如果用户代理认为这样做可以保护用户免受潜在的恶意下载,则可以中止这些步骤。

    2. request 为一个新的请求,其URLurlString客户端入口设置对象发起者 为 "download",目标 为空字符串,并且其同步标志使用 URL 凭据标志已设置。

    3. 获取 request 的结果作为下载处理。

当用户代理需要处理从获取中获得的资源作为下载时,如果成功获取了资源,则应为用户提供一种方法来保存资源以供以后使用。否则,应向用户报告下载文件时遇到的任何问题。

如果用户代理需要为正在处理的资源指定文件名作为下载,则应使用以下算法选择一个文件名。

此算法旨在减轻从不可信站点下载文件所涉及的安全风险,强烈建议用户代理遵循此算法。

  1. filename 为未定义值。

  2. 如果资源具有`Content-Disposition` 头部,该头部指定了 attachment 处理类型,并且头部包含文件名信息,则令 filename 的值为头部指定的值,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]

  3. interface origin 为启动下载操作(如果有)的Document

  4. resource origin 为正在下载的资源的 URL 的,除非该 URL 的方案组件为 data,在这种情况下,令 resource origininterface origin(如果有)相同。

  5. 如果没有 interface origin,则令 trusted operation 为 true。否则,如果 resource origininterface origin同一源,则令 trusted operation 为 true,否则为 false。

  6. 如果 trusted operation 为 true 且资源具有`Content-Disposition` 头部,并且该头部包含文件名信息,则令 filename 的值为头部指定的值,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]

  7. 如果下载不是从aarea 元素创建的超链接启动的,或者如果启动它的超链接的元素在下载启动时没有download 属性,或者如果存在这样的属性但其在下载启动时的值为空字符串,则跳转到标记为“no proposed filename”的步骤。

  8. proposed filename 的值为启动下载的超链接的元素的download 属性的值(在下载启动时)。

  9. 如果 trusted operation 为 true,则令 filename 的值为 proposed filename,并跳转到下面标记为“sanitize”的步骤。

  10. 如果资源具有`Content-Disposition` 头部,并且该头部指定了 attachment 处理类型,则令 filename 的值为 proposed filename,并跳转到下面标记为“sanitize”的步骤。 [RFC6266]

  11. No proposed filename:如果 trusted operation 为 true,或者如果用户表示希望下载相关资源,则令 filename 的值为以实现定义的方式从资源的URL派生的值,并跳转到下面标记为“sanitize”的步骤。

  12. filename 设置为用户首选的文件名或用户代理选择的文件名,并跳转到下面标记为“sanitize”的步骤。

    如果算法到达此步骤,则表示从与正在下载的资源不同的源开始下载,并且源未将文件标记为适合下载,并且下载不是由用户启动的。这可能是因为使用了download 属性来触发下载,或者因为相关资源的类型不是用户代理支持的类型。

    这可能是危险的,例如,恶意服务器可能会试图让用户在不知情的情况下下载私人信息,然后将其重新上传到恶意服务器,方法是欺骗用户认为数据来自恶意服务器。

    因此,为了用户的利益,应该以某种方式通知用户相关资源来自完全不同的来源,并且为了避免混淆,应忽略来自潜在恶意interface origin的任何建议文件名。

  13. Sanitize:可选地,允许用户影响 filename。例如,用户代理可以提示用户输入文件名,并可能提供上面确定的 filename 的值作为默认值。

  14. 调整 filename 以使其适合本地文件系统。

    例如,这可能涉及删除文件名中不允许的字符,或修剪前导和尾随空格。

  15. 如果平台约定以任何方式不使用扩展名来确定文件系统上的文件类型,则返回 filename 作为文件名。

  16. claimed type 为资源的Content-Type 元数据给出的类型(如果已知)。令 named typefilename扩展名给出的类型(如果已知)。出于此步骤的目的,“类型”是指将MIME 类型映射到扩展名

  17. 如果 named type 与用户的首选项一致(例如,因为 filename 的值是通过提示用户确定的),则返回 filename 作为文件名。

  18. 如果 claimed typenamed type 是相同的类型(即,资源的Content-Type 元数据给出的类型与 filename扩展名给出的类型一致),则返回 filename 作为文件名。

  19. 如果已知 claimed type,则修改 filename 以添加与 claimed type 对应的扩展名

    否则,如果已知 named type 具有潜在危险(例如,它将被平台约定视为本机可执行文件、shell 脚本、HTML 应用程序或可执行宏功能文档),则可选地修改 filename 以添加已知的安全扩展名(例如 ".txt")。

    最后一步将使下载可执行文件成为不可能,这可能并不理想。与往常一样,实现者必须在这方面平衡安全性和可用性。

  20. 返回 filename 作为文件名。

出于本算法的目的,文件扩展名包含文件名中平台约定用于识别文件类型的任何部分。例如,许多操作系统使用文件名中最后一个点 ( ".") 之后的部分来确定文件类型,并据此确定如何打开或执行文件。

用户代理在决定将结果文件存储在用户文件系统中的哪个位置时,应忽略资源本身、其URL以及任何download属性提供的任何目录或路径信息。

如果由aarea元素创建的超链接具有ping属性,并且用户遵循了该超链接,并且元素的href属性的值可以相对于元素的节点文档解析,则用户代理必须获取ping属性的值,在ASCII空格处分割该字符串,相对于元素的节点文档 解析每个结果标记,然后对每个生成的URL ping URL运行以下步骤,忽略解析失败的情况。

  1. 如果ping URL方案不是HTTP(S)方案,则返回。

  2. 可选地,返回。(例如,用户代理可能希望根据用户的明确偏好忽略任何或所有ping URL。)

  3. settingsObject为元素的节点文档相关设置对象

  4. request为一个新的请求,其URLping URL方法为`POST`,头部列表为« (`Content-Type`, `text/ping`) »,主体为`PING`,客户端settingsObject目标为空字符串,凭据模式为"include",引用来源为"no-referrer",并且其使用URL凭据标志已设置,并且其发起者类型为"ping"。

  5. 目标URL为给定元素的href属性的值,相对于元素的节点文档编码解析和序列化URL的结果,然后

    如果包含正在审计的超链接的Document对象的URLping URL具有相同来源
    如果来源不同,但包含正在审计的超链接的Document对象的URL方案不是"https"
    request必须包含一个`Ping-From`头部,其值为包含超链接的文档的URL,以及一个`Ping-To` HTTP头部,其值为目标URL
    否则
    request必须包含一个`Ping-To` HTTP头部,其值为目标URLrequest不包含`Ping-From`头部。
  6. 获取request

这可以与主要获取并行进行,并且独立于该获取的结果。

用户代理应允许用户调整此行为,例如结合禁用发送HTTP`Referer`(拼写错误)头的设置。根据用户的偏好,UA 可以忽略ping属性,或选择性地忽略列表中的URL(例如,忽略任何第三方URL);这在上述步骤中已明确说明。

用户代理必须忽略响应中返回的任何实体主体。用户代理可以在开始接收响应主体后过早地关闭连接。

当存在ping属性时,用户代理应清楚地向用户指示遵循超链接也将导致在后台发送辅助请求,可能包括列出实际的目标URL。

例如,可视化用户代理可以在状态栏或工具提示中将目标ping URL的主机名与超链接的实际URL一起显示。

ping属性与现有的技术(如HTTP重定向和JavaScript)在允许网页跟踪哪些外部链接最受欢迎或允许广告商跟踪点击率方面是冗余的。

但是,ping属性相对于这些替代方案为用户提供了以下优势

因此,虽然可以在没有此功能的情况下跟踪用户,但鼓励作者使用ping属性,以便用户代理可以使用户体验更加透明。

4.6.6.1 `Ping-From`和`Ping-To`头部

`Ping-From`和`Ping-To` HTTP请求头部包含在超链接审计请求中。它们的值为URL序列化

4.6.7 链接类型

Link_types

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera9+Edge79+
Edge(旧版)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

Link_types

下表总结了本规范中定义的链接类型及其对应的关键字。此表是非规范性的;链接类型的实际定义在接下来的几个部分中给出。

在本节中,术语“引用文档”指的是表示链接的元素标识的资源,术语“当前文档”指的是表示链接的元素所在的资源。

要确定哪些链接类型应用于linkaareaform元素,必须在ASCII空格处分割元素的rel属性。结果标记是应用于该元素的链接类型的关键字。

除非另有说明,否则每个rel属性中不得多次指定关键字。

下面表格后面的某些部分列出了某些关键字的同义词。用户代理必须按照指定的处理指示的同义词,但不得在文档中使用(例如,关键字“copyright”)。

关键字始终不区分ASCII大小写,并且必须以此方式进行比较。

因此,rel="next"rel="NEXT"相同。

body-ok的关键字会影响link元素是否允许在主体中使用body-ok关键字是dns-prefetchmodulepreloadpingbackpreconnectprefetchpreloadstylesheet

要由网络浏览器实现的新链接类型将添加到此标准中。其余部分可以注册为扩展

4.6.7.1 链接类型“alternate

备用样式表

仅在一个引擎中受支持。

Firefox3+Safari?Chrome1–48
OperaEdge
Edge(旧版)?Internet Explorer8+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

可以使用 alternate 关键字与 linkaarea 元素一起使用。

此关键字的含义取决于其他属性的值。

如果元素是 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+xmlapplication/atom+xml

该关键字创建一个 超链接,引用联合供稿(尽管不一定与当前页面联合供稿完全相同的内容)。

出于联合供稿自动发现的目的,用户代理应考虑文档中所有使用 alternate 关键字且其 type 属性设置为 application/rss+xmlapplication/atom+xmllink 元素。如果用户代理具有默认联合供稿的概念,则应使用第一个此类元素(在 树序 中)作为默认值。

以下 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>

这些链接不会用于联合供稿自动发现。

否则

该关键字创建一个 超链接,引用当前文档的替代表示形式。

引用的文档的性质由 hreflangtype 属性给出。

如果 alternate 关键字与 hreflang 属性一起使用,并且该属性的值不同于 文档元素语言,则表示引用的文档是翻译。

如果 alternate 关键字与 type 属性一起使用,则表示引用的文档是以指定格式对当前文档的重新表述。

当与 alternate 关键字一起指定时,可以组合 hreflangtype 属性。

以下示例显示了如何指定使用替代格式、针对其他语言以及旨在用于其他媒体的页面的版本

<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 关键字与 linkaarea 元素一起使用。此关键字创建一个 超链接

对于 aarea 元素, author 关键字指示引用的文档提供有关定义超链接的元素的最近 article 元素祖先(如果有)的作者的更多信息,或者在没有祖先元素的情况下,提供有关整个页面的作者的更多信息。

对于link元素,author关键字表示引用的文档提供了有关整个页面作者的更多信息。

“引用文档”可以是,并且通常是,一个mailto: URL,它提供了作者的电子邮件地址。 [MAILTO]

同义词:出于历史原因,用户代理还必须将具有值为“made”的rev属性的linkaarea元素视为指定了author关键字作为链接关系。

bookmark关键字可用于aarea元素。此关键字创建一个超链接

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关键字可用于link元素。此关键字创建一个超链接

canonical关键字表示href属性给出的 URL 是当前文档的首选 URL。这有助于搜索引擎减少重复内容,如The Canonical Link Relation中更详细地描述的那样。 [RFC6596]

Link_types/dns-prefetch

Firefox3+Safari?Chrome46+
Opera?Edge79+
Edge (Legacy)NoInternet Explorer?
Firefox Android?Safari iOS?Chrome AndroidYesWebView Android46+Samsung Internet?Opera Android?

dns-prefetch关键字可用于link元素。此关键字创建一个外部资源链接。此关键字是body-ok

dns-prefetch关键字表示预先执行指定资源的的 DNS 解析可能会带来好处,因为用户很可能需要位于该处的资源,并且通过预先处理与 DNS 解析相关的延迟成本可以改善用户体验。

dns-prefetch关键字提供的资源没有默认类型。

获取和处理此类型链接的适当时间是

对于此类型的链接资源,给定一个link元素el获取和处理链接资源步骤如下:

  1. url为给定elhref属性的值相对于el节点文档进行URL 编码解析的结果。

  2. 如果url解析失败,则返回。

  3. partitionKey为给定el节点文档相关设置对象进行网络分区密钥确定的结果。

  4. 用户代理应给定partitionKeyurl进行源解析

    由于此算法的结果可以缓存,因此将来的获取可能会更快。

expect关键字可用于link元素。此关键字创建一个内部资源链接

expect关键字创建的内部资源链接可用于阻止渲染,直到它指示的元素连接到文档并完全解析。

expect关键字提供的资源没有默认类型。

只要link元素el发生以下任何情况:

处理el

处理内部资源链接,给定一个link元素el,请执行以下步骤:

  1. docel节点文档

  2. url为给定elhref属性的值相对于doc进行URL 编码解析的结果。

  3. 如果此操作失败,或者urldocURL(将排除片段设置为 false)不相等,则在el解除渲染阻止并返回。

  4. indicatedElement为给定docurl进行指示部分选择的结果。

  5. 如果以下所有条件都为真:

    则在`el`上`阻止渲染`。

  6. 否则,在`el`上`解除渲染阻止`。

为了`处理内部资源链接`,给定一个`Document`doc`

  1. 对于`doc`的`渲染阻塞元素集`中的每个`expect`link`元素`link`,`处理``link`。

以下`属性更改步骤`,给定`element`、`localName`、`value`和`namespace`,用于确保`expect`link`元素响应动态`id`和`name`更改

  1. 如果`namespace`不为空,则返回。

  2. 如果`element`位于一个`打开元素栈`上,且该栈所属的`HTML 解析器`,则返回。

  3. 如果以下任何一项为真

    则`处理内部资源链接`,给定`element`的`节点文档`。

`external`关键词可用于`a`、`area`和`form`元素。此关键词不会创建`超链接`,但`注释`由元素创建的任何其他超链接(如果其他关键词没有创建超链接,则为隐式超链接)。

`external`关键词表示该链接指向的文档不属于当前文档所属的站点。

`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`关键词会导致链接使用不同的光标。

4.6.7.9 链接类型“`icon`”

Link_types#icon

所有当前引擎都支持。

Firefox2+Safari3.1+Chrome4+
Opera9+Edge79+
Edge (Legacy)12+Internet Explorer11
Firefox Android4+Safari iOSNoChrome Android18+WebView Android38+Samsung Internet4.0+Opera AndroidNo
caniuse.com 表格

`icon`关键词可用于`link`元素。此关键词创建一个`外部资源链接`。

指定的资源是表示页面或站点的图标,用户代理在用户界面中表示页面时应使用它。

图标可以是音频图标、视觉图标或其他类型的图标。如果提供了多个图标,用户代理必须根据`type`、`media`和`sizes`属性选择最合适的图标。如果有多个同样合适的图标,用户代理必须使用在用户代理收集图标列表时`树序`中最后声明的那个。如果用户代理尝试使用一个图标,但经过仔细检查后发现该图标实际上不合适(例如,因为它使用了不受支持的格式),则用户代理必须尝试根据属性确定的下一个最合适的图标。

用户代理不需要在图标列表发生变化时更新图标,但建议这样做。

由`icon`关键词给定的资源没有默认类型。但是,为了`确定资源的类型`,用户代理必须预期该资源为图像。

`sizes`关键词以原始像素表示图标大小(而不是`CSS 像素`)。

一个 50 `CSS 像素`宽的图标,用于每个`CSS 像素`有两个设备像素的显示器(2x,192dpi),其宽度将为 100 个原始像素。此功能不支持指示要为小型高分辨率图标与大型低分辨率图标使用不同的资源(例如 50×50 2x 与 100×100 1x)。

为了解析和处理属性的值,用户代理必须首先`根据 ASCII 空格拆分属性的值`,然后必须解析每个结果关键词以确定它代表什么。

`any`关键词表示该资源包含可缩放图标,例如 SVG 图像提供的图标。

其他关键词必须按如下方式进一步解析以确定它们代表什么

在`sizes`属性上指定的关键词不得表示链接资源中实际上不可用的图标大小。

此类型链接资源的`链接资源获取设置步骤`,给定一个`link`元素`el`和`请求``request`,如下所示

  1. 将`request`的`目标`设置为“image”。

  2. 返回 true。

此类型链接资源的`处理链接头`步骤为不执行任何操作。

在没有带有`icon`关键词的`link`的情况下,对于`Document`对象,其`URL`的`方案`是`HTTP(S) 方案`,用户代理可以改为`并行`运行这些步骤

  1. 令`request`为一个新的`请求`,其`URL`是通过将`URL`“/favicon.ico”相对于`Document`对象的`URL`解析获得的`URL 记录`,`客户端`是`Document`对象的`相关设置对象`,`目标`是“image”,`同步标志`已设置,`凭据模式`是“include”,并且`使用 URL 凭据标志`已设置。

  2. response获取request的结果。

  3. response不安全响应用作图标,就像使用icon关键字声明的那样。

以下代码片段显示了一个具有多个图标的应用程序的顶部部分。

<!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关键字可与linkaareaform元素一起使用。此关键字创建一个超链接

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关键字。

Link_types/manifest

仅在一个引擎中受支持。

Firefox?Safari?Chrome
Opera?Edge
Edge (Legacy)?Internet Explorer?
Firefox Android?Safari iOS?Chrome Android39+WebView Android?Samsung Internet?Opera Android?

manifest关键字可与link元素一起使用。此关键字创建一个外部资源链接

manifest关键字指示提供与当前文档关联的元数据的清单文件。

manifest关键字给出的资源没有默认类型。

当 Web 应用程序未安装时,此链接类型获取和处理链接资源的合适时间是用户代理认为必要的时候。例如,当用户选择安装 Web 应用程序时。

对于已安装的 Web 应用程序,此链接类型获取和处理链接资源的合适时间为

在任何情况下,只有树序中第一个link元素(其rel属性包含标记manifest)可以使用。

用户代理不得为此链接类型延迟加载事件

此类型的链接资源的链接资源获取设置步骤(给定link元素el请求request)为

  1. navigableel节点文档节点可导航

  2. 如果navigable为 null,则返回 false。

  3. 如果navigable不是顶级可遍历,则返回 false。

  4. request发起者设置为“manifest”。

  5. request目标设置为“manifest”。

  6. request模式设置为“cors”。

  7. request凭据模式设置为elcrossorigin内容属性的CORS 设置属性凭据模式

  8. 返回 true。

处理此类型的链接资源,给定link元素el、布尔值success响应response字节序列bodyBytes

  1. 如果responseContent-Type 元数据不是JSON MIME 类型,则将success设置为 false。

  2. 如果success为 true

    1. 文档 URLel节点文档URL

    2. 清单 URLresponseURL

    3. 处理清单,给定文档 URL清单 URLbodyBytes[清单]

此类型的链接资源的处理链接标头步骤为不执行任何操作。

Link_types/modulepreload

Firefox115+Safari?Chrome66+
Opera?Edge79+
Edge (Legacy)NoInternet Explorer?
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

modulepreload关键字可与link元素一起使用。此关键字创建一个外部资源链接。此关键字为body-ok

modulepreload关键字是preload关键字的专门替代方案,其处理模型针对预加载模块脚本。特别是,它使用模块脚本的特定获取行为(包括例如对crossorigin属性的不同解释),并将结果放入相应的模块映射以供以后评估。相比之下,使用preload关键字的类似外部资源链接会将结果放入预加载缓存中,而不会影响文档的模块映射

此外,实现可以利用模块脚本声明其依赖关系这一事实来获取指定模块的依赖关系。这旨在作为优化机会,因为用户代理知道,在大多数情况下,这些依赖关系以后也会被需要。如果不使用服务工作者等技术或在服务器端进行监控,通常不会观察到这一点。值得注意的是,在获取指定模块后,会发生相应的loaderror事件,并且不会等待任何依赖项。

用户代理不得为此链接类型延迟加载事件

此类链接获取和处理链接资源的合适时间为

与其他一些链接关系不同,更改此类link的相关属性(例如ascrossoriginreferrerpolicy)不会触发新的获取操作。这是因为文档的模块映射已被先前的获取操作填充,因此重新获取将毫无意义。

对于modulepreload链接,给定一个link元素el获取并处理链接资源算法如下

  1. 如果elhref属性的值为空字符串,则返回。

  2. destinationelas属性的当前状态(一个目标),如果它处于无状态,则为“script”。

  3. 如果destination不是脚本类,则在给定el的网络任务源上排队一个元素任务,以触发名为error的事件,并在el上返回。

  4. url为给定elhref属性的值,相对于el节点文档URL 编码解析结果。

  5. 如果url解析失败,则返回。

  6. 设置对象el节点文档相关设置对象

  7. 凭据模式elcrossorigin属性的CORS 设置属性凭据模式

  8. 加密 nonceel.[[CryptographicNonce]]

  9. 完整性元数据elintegrity属性的值(如果已指定),否则为空字符串。

  10. 如果el没有integrity属性,则将完整性元数据设置为使用url设置对象模块完整性元数据解析的结果。

  11. 推荐人策略elreferrerpolicy属性的当前状态。

  12. 获取优先级elfetchpriority属性的当前状态。

  13. options为一个脚本获取选项,其加密 nonce加密 nonce完整性元数据完整性元数据解析器元数据为“not-parser-inserted”,凭据模式凭据模式推荐人策略推荐人策略,以及获取优先级获取优先级

  14. 获取一个 modulepreload 模块脚本图,给定urldestination设置对象options,以及给定result的以下步骤

    1. 如果result为 null,则触发名为error的事件,并在el上返回。

    2. 触发名为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">
...

假设应用程序的模块图如下所示

The module graph is rooted at app.mjs, which depends on irc.mjs and fog-machine.mjs. In turn, irc.mjs depends on helpers.mjs.

在这里,我们看到应用程序开发人员使用了modulepreload来声明其模块图中的所有模块,确保用户代理启动对所有模块的获取操作。如果没有这种预加载,用户代理可能需要经过多次网络往返才能发现helpers.mjs(如果未使用 HTTP/2 服务器推送等技术)。这样,modulepreloadlink元素可以用作应用程序模块的“清单”。

以下代码显示了如何将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关键字与aareaform元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。

关键字nofollow指示链接未得到页面原始作者或发布者的认可,或者包含对引用的文档的链接的主要原因是两个页面相关人员之间的商业关系。

Link_types/noopener

所有当前引擎都支持。

Firefox52+Safari10.1+Chrome49+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

Link_types/noopener

所有当前引擎都支持。

Firefox52+Safari10.1+Chrome49+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

可以使用noopener关键字与aareaform元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。

该关键字指示,遵循超链接导致的任何新创建的顶级可遍历对象将不包含辅助浏览上下文。例如,生成的Windowopener 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>

Link_types/noreferrer

所有当前引擎都支持。

Firefox33+Safari5+Chrome16+
Opera?Edge79+
Edge (旧版)13+Internet Explorer🔰 11
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet1.5+Opera Android?

Link_types/noreferrer

所有当前引擎都支持。

Firefox33+Safari5+Chrome16+
Opera?Edge79+
Edge (旧版)13+Internet Explorer🔰 11
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet1.5+Opera Android?

可以使用noreferrer关键字与aareaform元素一起使用。此关键字不会创建超链接,但注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。

它指示在遵循链接时不泄漏任何推荐人信息,并且在相同条件下也暗示了noopener关键字的行为。

另请参阅处理模型,其中直接操作了推荐来源。

<a href="..." rel="noreferrer" target="_blank"><a href="..." rel="noreferrer noopener" target="_blank">的行为相同。

opener关键字可用于aareaform元素。此关键字不会创建超链接,但会注释元素创建的任何其他超链接(如果没有任何其他关键字创建超链接,则为隐式超链接)。

此关键字指示,通过遵循超链接而产生的任何新创建的顶级可遍历对象都将包含一个辅助浏览上下文

另请参阅处理模型

在以下示例中,opener用于允许帮助页面弹出窗口导航其打开者,例如,如果用户要查找的内容可以在其他地方找到。另一种方法可能是使用命名目标而不是_blank,但这可能与现有名称冲突。

<a href="..." rel=opener target=_blank>Help!</a>

pingback关键字可用于link元素。此关键字创建一个外部资源链接。此关键字是body-ok

有关pingback关键字的语义,请参阅Pingback 1.0[PINGBACK]

Link_types/preconnect

所有当前引擎都支持。

Firefox39+Safari11.1+Chrome46+
Opera?Edge79+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet4.0+Opera Android?

preconnect关键字可用于link元素。此关键字创建一个外部资源链接。此关键字是body-ok

preconnect关键字指示预先启动到指定资源的的连接可能是有益的,因为用户很可能需要位于该处的资源,并且通过抢占建立连接相关的延迟成本可以改善用户体验。

preconnect关键字提供的资源没有默认类型。

用户代理不得延迟此链接类型的加载事件

获取和处理此类链接的适当时间是

对于此类型的链接资源,给定link元素el获取并处理链接资源步骤是从el创建链接选项,并根据结果预连接

对于此类型的链接资源,给定链接处理选项options处理链接头步骤是根据options进行预连接

给定链接处理选项options,进行预连接

  1. 如果optionshref为空字符串,则返回。

  2. url为根据optionshref(相对于options基本 URL编码解析 URL的结果。

    传递基本 URL 而不是文档或环境由问题 #9715跟踪。

  3. 如果url解析失败,则返回。

  4. 如果url方案不是HTTP(S) 方案,则返回。

  5. partitionKey为根据options环境 确定网络分区键的结果。

  6. useCredentials为true。

  7. 如果optionscrossoriginAnonymous,并且optionsurl不具有相同源,则将useCredentials设置为false。

  8. 用户代理应根据partitionKeyurluseCredentials获取连接

    此连接已获取,但未直接使用。它将保留在连接池中以供后续使用。

    用户代理应尽可能尝试启动预连接并执行完整的连接握手(对于 HTTP 为 DNS+TCP,对于 HTTPS 源为 DNS+TCP+TLS),但允许选择执行部分握手(对于 HTTP 为仅 DNS,对于 HTTPS 源为 DNS 或 DNS+TCP),或完全跳过它,原因可能是资源限制或其他原因。

    每个源的最佳连接数取决于协商的协议、用户当前的连接配置文件、可用的设备资源、全局连接限制和其他特定于上下文的变量。因此,应由用户代理决定应打开多少连接。

Link_types/prefetch

Firefox2+Safari不支持Chrome8+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer11
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet1.5+Opera Android?

prefetch关键字可用于link元素。此关键字创建一个外部资源链接。此关键字是body-ok

prefetch关键字指示预先获取和缓存指定的资源或同站点的文档可能是有益的,因为用户很可能在将来的导航中需要此资源。

prefetch关键字提供的资源没有默认类型。

获取和处理此类链接的适当时间是

对于prefetch链接,给定link元素el获取并处理链接资源算法如下

  1. 如果elhref属性的值为空字符串,则返回。

  2. options为从el创建链接选项的结果。

  3. options目标设置为空字符串。

  4. request为根据options创建链接请求的结果。

  5. 如果request为null,则返回。

  6. request发起者设置为“prefetch”。

  7. 令 `processPrefetchResponse` 为以下步骤,给定一个 响应 `response` 和 null、失败或一个 字节序列 `bytesOrNull`。

    1. 如果 `response` 是一个 网络错误,则在 `el` 上 触发一个名为 `error` 的事件。

    2. 否则,在 `el` 上 触发一个名为 `load` 的事件。

  8. 用户代理应该 获取 `request`,并将 `processResponseConsumeBody` 设置为 `processPrefetchResponse`。用户代理可以延迟 `request` 的获取,以优先处理当前文档所需的其它请求。

此类型链接资源的 处理链接头 步骤为不执行任何操作。

Link_types/preload

仅在一个引擎中受支持。

Firefox85+Safari?Chrome🔰 50+
Opera37+Edge🔰 79+
Edge (Legacy)NoInternet Explorer?
Firefox Android?Safari iOS?Chrome Android?WebView Android50+Samsung Internet5.0+Opera Android?

可以使用 `preload` 关键字与 `link` 元素一起使用。此关键字创建一个 外部资源链接。此关键字是 body-ok

`preload` 关键字指示用户代理将根据 `as` 属性给出的 潜在目标 和 `fetchpriority` 属性给出的 优先级,抢先 获取 并缓存指定的资源,因为用户很可能需要此资源进行当前导航。

当资源加载时,用户代理可能会执行其他操作,例如抢先 解码图像创建样式表。但是,这些额外操作不能产生可观察到的影响。

`preload` 关键字给出的资源没有默认类型。

用户代理不得为此链接类型 延迟加载事件

为这种链接 获取和处理链接资源 的适当时间是

一个 `Document` 具有一个 预加载资源映射,它是一个 有序映射,最初为空。

一个 预加载键 是一个 结构体。它具有以下

URL
一个 URL
目标
一个字符串
模式
一个 请求模式,可以是“same-origin”、“cors”或“no-cors
凭据模式
一个 凭据模式

一个 预加载条目 是一个 结构体。它具有以下

完整性元数据
一个字符串
响应
Null 或一个 响应
在响应可用时
Null 或一个接受 响应 或 null 的算法

使用预加载资源,对于 `Window` `window`,给定一个 URL `url`、一个字符串 `destination`、一个字符串 `mode`、一个字符串 `credentialsMode`、一个字符串 `integrityMetadata` 和 `onResponseAvailable`(一个接受 响应 的算法)。

  1. 令 `key` 为一个 预加载键,其 URL 为 `url`、目标 为 `destination`、模式 为 `mode`,并且 凭据模式 为 `credentialsMode`。

  2. 令 `preloads` 为 `window` 的 关联的 Document预加载资源映射

  3. 如果 `key` 在 `preloads` 中 不存在,则返回 false。

  4. 令 `entry` 为 `preloads[key]

  5. 令 `consumerIntegrityMetadata` 为 解析 `integrityMetadata` 的结果。

  6. 令 `preloadIntegrityMetadata` 为 解析 `entry` 的 完整性元数据 的结果。

  7. 如果以下条件都不适用

    则返回 false。

    预加载和使用者之间的完整性元数据不匹配,即使两者都与数据匹配,也会导致从网络进行额外获取。

    重要的是,网络错误 会添加到预加载缓存中,以便如果预加载请求导致错误,则不会稍后从网络重新请求错误的响应。这也具有安全意义;考虑开发人员在预加载请求上指定子资源完整性元数据,但在后续资源请求上未指定的情况。如果预加载请求失败子资源完整性验证并被丢弃,则资源请求将从网络获取并使用可能存在恶意的响应,而不会验证其完整性。 [SRI]

  8. 从 `preloads` 中 移除 `preloads[key]

  9. 如果 `entry` 的 响应 为 null,则将 `entry` 的 在响应可用时 设置为 `onResponseAvailable`。

  10. 否则,使用 `entry` 的 响应 调用 `onResponseAvailable`。

  11. 返回 true。

出于本节的目的,如果以下算法返回 true,则字符串 `type` 匹配 字符串 `destination`。

  1. 如果 `type` 为空字符串,则返回 true。

  2. 如果 `destination` 为“fetch”,则返回 true。

  3. 令 `mimeTypeRecord` 为 解析 `type` 的结果。

  4. 如果 `mimeTypeRecord` 为失败,则返回 false。

  5. 如果 `mimeTypeRecord` 不 受用户代理支持,则返回 false。

  6. 如果以下任何一项为真

    则返回 true。

  7. 返回 false。

要为一个请求request 创建预加载密钥,返回一个新的预加载密钥,其URLrequestURL目标request目标模式request模式,且凭据模式request凭据模式

要给定字符串destination 转换预加载目标

  1. 如果destination 不是 "fetch"、"font"、"image"、"script"、"style" 或 "track",则返回 null。

  2. 返回转换destination 的结果。

要给定链接处理选项options 和一个可选的processResponse(一个接受响应 的算法)预加载

  1. 如果options类型匹配options目标,则返回。

  2. 如果options目标 为 "image" 且options源集 不为 null,则将optionshref 设置为从options源集 选择图像源 的结果。

  3. request 为给定options 创建链接请求 的结果。

  4. 如果request为null,则返回。

  5. unsafeEndTime 为 0。

  6. entry 为一个新的预加载条目,其完整性元数据options完整性

  7. key 为给定request 创建预加载密钥 的结果。

  8. 如果options文档 为 "pending",则将request发起者类型 设置为 "early hint"。

  9. controller 为 null。

  10. 令给定文档documentreportTiming 为对给定document相关全局对象controller 报告时间

  11. controller 设置为获取request 的结果,其中processResponseConsumeBody 设置为以下步骤,给定一个响应response 和 null、失败或一个字节序列bodyBytes

    1. 如果bodyBytes 为一个字节序列,则将response主体 设置为bodyBytes 作为主体

      通过使用processResponseConsumeBody,我们已提取 了整个主体。这对于确保预加载程序从网络加载整个主体是必要的,无论预加载是否会被使用(目前尚不确定)。此步骤随后将请求的主体重置为包含相同字节的新主体,以便其他规范在实际使用时可以从中读取,尽管我们之前已经读取过一次。

    2. 否则,将response 设置为网络错误

    3. unsafeEndTime 设置为不安全的共享当前时间

    4. 如果options文档 不为 null,则调用给定options文档reportTiming

    5. 如果entry响应可用 为 null,则将entry响应 设置为response;否则调用给定responseentry响应可用

    6. 如果给定了processResponse,则使用response 调用processResponse

  12. 令给定文档documentcommit 为以下步骤

    1. 如果entry响应 不为 null,则调用给定documentreportTiming

    2. document预加载资源映射[key] 设置为entry

  13. 如果options文档 为 null,则将options文档就绪 设置为commit。否则,使用options文档 调用commit

对于此类型的链接资源,给定link 元素el获取并处理链接资源 步骤为

  1. el 更新源集

  2. options 为从el 创建链接选项 的结果。

  3. 预加载options,其中以下步骤给定一个响应response

    1. 如果response网络错误,则在el触发一个名为error事件。否则,在el触发一个名为load事件

      实际浏览器的行为与这里的规范不同,并且更改行为的可行性尚未调查。请参阅问题 #1142

对于此类型的链接,给定链接处理选项options处理链接标头 步骤为预加载options

可以使用privacy-policy 关键字与linkaarea 元素。此关键字创建一个超链接

privacy-policy 关键字指示引用的文档包含有关适用于当前文档的数据收集和使用实践的信息,如其他链接关系类型 中更详细地描述的那样。引用的文档可以是独立的隐私政策,也可以是某些更通用文档的特定部分。[RFC6903]

可以使用search 关键字与linkaareaform 元素。此关键字创建一个超链接

search 关键字指示引用的文档提供专门用于搜索文档及其相关资源的界面。

OpenSearch 描述文档可以与link元素和search链接类型一起使用,以使用户代理能够自动发现搜索接口。 [OPENSEARCH]

stylesheet 关键字可与 link 元素一起使用。此关键字创建一个 外部资源链接,该链接有助于样式处理模型。此关键字是 body-ok

指定的资源是 CSS 样式表,用于描述如何呈现文档。

备用样式表

仅在一个引擎中受支持。

Firefox3+Safari?Chrome1–48
OperaEdge
Edge(旧版)?Internet Explorer8+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

如果 alternate 关键字也指定在 link 元素上,则 该链接是备用样式表;在这种情况下,必须在 link 元素上指定 title 属性,且其值不能为空。

stylesheet 关键字提供的资源的默认类型为 text/css

如果此类型的 link 元素是由其 节点文档 的解析器创建的,则该元素为 隐式潜在渲染阻塞

当具有 stylesheet 关键字的 link 元素的 disabled 属性被设置时,禁用 关联的 CSS 样式表

获取和处理此类型链接的适当时间是

怪癖:如果文档已设置为 怪癖模式,与外部资源的 URL 具有 相同来源,并且外部资源的 Content-Type 元数据 不是受支持的样式表类型,则用户代理必须将其假定为 text/css

对于此类型的链接资源,给定 link 元素 el请求 request链接资源获取设置步骤

  1. 如果 eldisabled 属性已设置,则返回 false。

  2. 如果 el 贡献了一个脚本阻塞样式表,则 el 附加到其 节点文档脚本阻塞样式表集

  3. 如果 elmedia 属性的值 匹配环境 并且 el潜在渲染阻塞,则 el 上阻止渲染

  4. 如果 el 当前为 渲染阻塞,则将 request渲染阻塞 设置为 true。

  5. 返回 true。

有关使用 CSSOM 获取 CSS 样式表 算法而不是 默认获取和处理链接资源 算法的计划,请参见 问题 #968。同时,任何 关键子资源 请求渲染阻塞 应设置为 link 元素当前是否为 渲染阻塞

处理此类型的链接资源,给定 link 元素 el、布尔值 success响应 response字节序列 bodyBytes

  1. 如果资源的 Content-Type 元数据 不是 text/css,则将 success 设置为 false。

  2. 如果 el 不再创建有助于样式处理模型的 外部资源链接,或者自从相关资源被 获取 后,再次 获取 它变得合适,则

    1. 移除 elel节点文档脚本阻塞样式表集

    2. 返回。

  3. 如果 el 具有 关联的 CSS 样式表,则 移除 CSS 样式表

  4. 如果 success 为 true,则

    1. 创建一个 CSS 样式表,其属性如下

      类型

      text/css

      位置

      responseURL 列表[0]

      我们在此处提供一个 URL,假设 w3c/csswg-drafts 问题 #9316 将得到修复。

      所有者节点

      el

      媒体

      elmedia 属性。

      这是对(此时可能不存在的)属性的引用,而不是对属性当前值的副本。CSSOM 定义了动态设置、更改或移除属性时会发生什么。

      标题

      如果 el 在文档树中,则为 eltitle 属性,否则为空字符串。

      这同样是对属性的引用,而不是对属性当前值的副本。

      备用标志

      如果 该链接是备用样式表 并且 el显式启用 为 false,则设置;否则不设置。

      来源干净标志

      如果资源为 CORS 同源,则设置;否则不设置。

      父 CSS 样式表
      所有者 CSS 规则

      null

      禁用标志

      保留其默认值。

      CSS 规则

      保持未初始化状态。

      这似乎不正确。大概我们应该使用 bodyBytes?在 问题 #2997 中跟踪。

      CSS 环境编码 是运行以下步骤的结果: [CSSSYNTAX]

      1. 如果 `el` 具有 `charset 属性,则从该属性的值中获取编码。如果成功,则返回得到的编码。 [ENCODING]

      2. 否则,返回文档的字符编码[DOM]

    2. 在 `el` 上触发一个名为 `load` 的事件。

  5. 否则,在 `el` 上触发一个名为 `error` 的事件。

  6. 如果 `el` 贡献了一个阻止脚本的样式表,则

    1. 断言:`el` 的 节点文档阻止脚本的样式表集合 包含 `el`。

    2. 从其 节点文档阻止脚本的样式表集合移除 `el`。

  7. 在 `el` 上解除渲染阻塞

此类型的链接资源的处理链接头步骤为不执行任何操作。

tag 关键字可用于 aarea 元素。此关键字创建一个超链接

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 关键字可用于 linkaarea 元素。此关键字创建一个超链接

terms-of-service 关键字表示引用的文档包含有关当前文档提供者与希望使用当前文档的用户之间协议的信息,如其他链接关系类型中更详细地描述。 [RFC6903]

某些文档构成文档序列的一部分。

文档序列是指每个文档可以具有前一个兄弟节点后一个兄弟节点的序列。没有前一个兄弟节点的文档是其序列的开头,没有后一个兄弟节点的文档是其序列的结尾。

一个文档可以是多个序列的一部分。

next 关键字可用于 linkaareaform 元素。此关键字创建一个超链接

next 关键字表示该文档是序列的一部分,并且该链接指向序列中下一个逻辑文档。

next 关键字与 link 元素一起使用时,用户代理应处理此类链接,就好像它们使用的是 dns-prefetchpreconnectprefetch 关键字之一。用户代理希望使用哪个关键字取决于实现;例如,用户代理可能希望在尝试节省数据、电池电量或处理能力时使用成本较低的 preconnect 处理模型,或者可能希望根据对类似场景中过去用户行为的启发式分析来选择关键字。

prev 关键字可用于 linkaareaform 元素。此关键字创建一个超链接

prev 关键字表示该文档是序列的一部分,并且该链接指向序列中前一个逻辑文档。

同义词:出于历史原因,用户代理还必须像 prev 关键字一样处理关键字“previous”。

对预定义链接类型集的扩展可以在用于现有 rel 值的微格式页面上注册。 [MFREL]

任何人都可以随时编辑用于现有 rel 值的微格式页面以添加类型。扩展类型必须使用以下信息指定

关键字

正在定义的实际值。该值不应与任何其他定义的值过于相似(例如,仅在大小写上有所不同)。

如果该值包含 U+003A COLON 字符 (:),则它也必须是绝对 URL

对... link 的影响

以下之一

不允许
link 元素上不得指定关键字。
超链接
可以在 link 元素上指定关键字;它创建一个超链接
外部资源
可以在 link 元素上指定关键字;它创建一个外部资源链接
对... aarea 的影响

以下之一

不允许
aarea 元素上不得指定关键字。
超链接
可以在 aarea 元素上指定关键字;它创建一个超链接
外部资源
可以在 aarea 元素上指定关键字;它创建一个外部资源链接
超链接注释
可以在 aarea 元素上指定关键字;它注释元素创建的其他超链接
对... form 的影响

以下之一

不允许
form 元素上不得指定关键字。
超链接
可以在 form 元素上指定关键字;它创建一个超链接
外部资源
可以在 form 元素上指定关键字;它创建一个外部资源链接
超链接注释
可以在 form 元素上指定关键字;它注释元素创建的其他超链接
简要描述

对关键字含义的简短非规范性描述。

规范

指向对关键字语义和要求的更详细描述的链接。它可以是维基上的另一个页面,也可以是到外部页面的链接。

同义词

具有完全相同处理要求的其他关键字值的列表。作者不应使用定义为同义词的值,它们仅用于允许用户代理支持旧版内容。任何人都可以删除实践中未使用的同义词;只有需要以这种方式注册为与旧版内容兼容的同义词的名称才应以这种方式注册。

状态

以下之一

已提出
关键字尚未获得广泛的同行评审和批准。有人提出了它,并且正在或很快将使用它。
已批准
关键字已获得广泛的同行评审和批准。它有一个规范,明确定义了如何处理使用该关键字的页面,包括在以不正确方式使用它时。
已停止使用
关键字已获得广泛的同行评审,并且已被发现存在不足。现有页面正在使用此关键字,但新页面应避免使用它。“简要描述”和“规范”条目将详细说明作者应改用什么(如果有)。

如果发现某个关键词与现有值冗余,则应将其移除并列为现有值的同义词。

如果某个关键词以“提议”状态注册一个月或更长时间而未被使用或指定,则可以将其从注册表中移除。

如果添加的关键词以“提议”状态且发现与现有值冗余,则应将其移除并列为现有值的同义词。如果添加的关键词以“提议”状态且发现有害,则应将其状态更改为“已弃用”。

任何人都可以随时更改状态,但应仅根据以上定义进行操作。

一致性检查器必须使用microformats 页面上关于现有 rel 值的信息来确定某个值是否允许:本规范中定义的值或标记为“提议”或“批准”的值,在用于其适用的元素时必须被接受,如“影响...”字段中所述;而标记为“已弃用”或在本规范或上述页面中未列出的值必须被拒绝为无效。一致性检查器可以缓存此信息(例如,出于性能原因或避免使用不可靠的网络连接)。

当作者使用本规范或维基页面中未定义的新类型时,一致性检查器应提供将该值添加到维基的功能,并附带上述详细信息,以及“提议”状态。

microformats 页面上关于现有 rel 值中定义为扩展且状态为“提议”或“批准”的类型,可以与rel属性一起用于linkaarea元素,符合“影响...”字段的要求。[MFREL]