1. 4 HTML 元素
    1. 4.1 文档元素
      1. 4.1.1 html 元素
    2. 4.2 文档元数据
      1. 4.2.1 head 元素
      2. 4.2.2 title 元素
      3. 4.2.3 base 元素
      4. 4.2.4 link 元素
        1. 4.2.4.1 处理 media 属性
        2. 4.2.4.2 处理 type 属性
        3. 4.2.4.3link 元素获取和处理资源
        4. 4.2.4.4 处理 Link 头部
        5. 4.2.4.5 预提示
        6. 4.2.4.6 为用户提供使用 link 元素创建的超链接的途径
      5. 4.2.5 meta 元素
        1. 4.2.5.1 标准元数据名称
        2. 4.2.5.2 其他元数据名称
        3. 4.2.5.3 Pragma 指令
        4. 4.2.5.4 指定文档的字符编码
      6. 4.2.6 style 元素
      7. 4.2.7 样式和脚本的交互

4 HTML 元素

4.1 文档元素

4.1.1 html 元素

元素/html

所有当前引擎都支持。

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

HTMLHtmlElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
无。
可以使用此元素的上下文:
作为文档的 文档元素
在复合文档中允许子文档片段的任何地方。
内容模型:
一个 head 元素,后跟一个 body 元素。
text/html 中的标签省略:
如果 html 元素内部的第一件事不是 注释,则可以省略 html 元素的 开始标签
如果 html 元素后面没有紧跟 注释,则可以省略 html 元素的 结束标签
内容属性:
全局属性
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLHtmlElement : HTMLElement {
  [HTMLConstructor] constructor();

  // also has obsolete members
};

html 元素 表示 HTML 文档的根。

鼓励作者在根 html 元素上指定 lang 属性,以给出文档的语言。这有助于语音合成工具确定使用哪种发音,翻译工具确定使用哪些规则,等等。

以下示例中的 html 元素声明文档的语言为英语。

<!DOCTYPE html>
<html lang="en">
<head>
<title>Swapping Songs</title>
</head>
<body>
<h1>Swapping Songs</h1>
<p>Tonight I swapped some of the songs I wrote with some friends, who
gave me some of the songs they wrote. I love sharing my music.</p>
</body>
</html>

4.2 文档元数据

4.2.1 head 元素

元素/head

所有当前引擎都支持。

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

HTMLHeadElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
无。
可以使用此元素的上下文:
作为 html 元素中的第一个元素。
内容模型:
如果文档是 iframe srcdoc 文档 或如果标题信息可从更高级别的协议获得:零个或多个 元数据内容 元素,其中最多一个为 title 元素,最多一个为 base 元素。
否则:一个或多个 元数据内容 元素,其中恰好一个为 title 元素,最多一个为 base 元素。
text/html 中的标签省略:
如果元素为空,或者 head 元素内部的第一件事是元素,则可以省略 head 元素的 开始标签
如果 head 元素后面没有紧跟 ASCII 空格注释,则可以省略 head 元素的 结束标签
内容属性:
全局属性
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLHeadElement : HTMLElement {
  [HTMLConstructor] constructor();
};

head 元素 表示 Document 的元数据集合。

head 元素中的元数据集合可以很大或很小。这是一个非常短的示例

<!doctype html>
<html lang=en>
 <head>
  <title>A document with a short head</title>
 </head>
 <body>
 ...

这是一个更长的示例

<!DOCTYPE HTML>
<HTML LANG="EN">
 <HEAD>
  <META CHARSET="UTF-8">
  <BASE HREF="https://www.example.com/">
  <TITLE>An application with a long head</TITLE>
  <LINK REL="STYLESHEET" HREF="default.css">
  <LINK REL="STYLESHEET ALTERNATE" HREF="big.css" TITLE="Big Text">
  <SCRIPT SRC="support.js"></SCRIPT>
  <META NAME="APPLICATION-NAME" CONTENT="Long headed application">
 </HEAD>
 <BODY>
 ...

title 元素在大多数情况下是必需的子元素,但是当更高级别的协议提供标题信息时,例如在将 HTML 用作电子邮件创作格式时,电子邮件主题行中,可以省略 title 元素。

4.2.2 title 元素

元素/title

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (旧版)12+Internet Explorer1+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLTitleElement

所有当前引擎都支持。

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
元数据内容.
可以使用此元素的上下文:
在不包含其他 title 元素的 head 元素中。
内容模型:
文本,它不是 元素间空格
text/html 中的标签省略:
这两个标签都不能省略。
内容属性:
全局属性
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLTitleElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute DOMString text;
};

title 元素 表示 文档的标题或名称。作者应使用即使在脱离上下文使用时也能识别其文档的标题,例如在用户的历史记录或书签中,或在搜索结果中。文档的标题通常与其第一个标题不同,因为第一个标题在脱离上下文时不必独立存在。

每个文档中最多只能有一个 title 元素。

如果 Document 没有标题是合理的,那么可能不需要 title 元素。有关何时需要该元素的说明,请参阅 head 元素的内容模型。

title.text [ = value ]

返回元素的 子文本内容

可以设置,以使用给定值替换元素的子元素。

text 属性的 getter 必须返回此 title 元素的 子文本内容

text 属性的 setter 必须使用给定值 替换所有字符串,位于此 title 元素中。

以下是一些适当标题的示例,与在同一页面上可能使用的顶级标题形成对比。

  <title>Introduction to The Mating Rituals of Bees</title>
    ...
  <h1>Introduction</h1>
  <p>This companion guide to the highly successful
  <cite>Introduction to Medieval Bee-Keeping</cite> book is...

下一页可能是同一网站的一部分。请注意,标题如何明确地描述主题,而第一个标题假设读者知道上下文是什么,因此不会想知道舞蹈是萨尔萨舞还是华尔兹

  <title>Dances used during bee mating rituals</title>
    ...
  <h1>The Dances</h1>

用作文档标题的字符串由 document.title IDL 属性给出。

用户代理在用户界面中引用文档时,应该使用文档的标题。当以这种方式使用`title` 元素的内容时,该`title` 元素的`方向性`应该用于设置用户界面中文档标题的方向性。

4.2.3 `base` 元素

元素/base

所有当前引擎都支持。

Firefox1+Safari3+Chrome1+
Opera?Edge79+
Edge (旧版)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLBaseElement

所有当前引擎都支持。

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
元数据内容.
可以使用此元素的上下文:
在`head` 元素中,不包含其他`base` 元素。
内容模型:
.
text/html 中的标签省略:
没有`结束标签`。
内容属性:
全局属性
`href` — `文档基准 URL`
`target` — `超链接`的默认`可导航目标`,用于`导航`和`表单提交`
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLBaseElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute USVString href;
  [CEReactions] attribute DOMString target;
};

`base` 元素允许作者指定用于解析`URL`的`文档基准 URL`,以及用于`跟随超链接`的默认`可导航目标`的名称。该元素除了此信息外,不`表示`任何内容。

每个文档中`base` 元素的数量不得超过一个。

`base` 元素必须具有`href` 属性、`target` 属性或两者。

如果指定了`href` 内容属性,则它必须包含`可能被空格包围的有效 URL`。

如果`base` 元素具有`href` 属性,则它必须位于树中任何其他定义为采用`URL`的属性的元素之前,除了`html` 元素(其`manifest` 属性不受`base` 元素的影响)。

如果有多个具有`href` 属性的`base` 元素,则除了第一个之外,其他所有元素都将被忽略。

如果指定了`target` 属性,则它必须包含`有效的可导航目标名称或关键字`,它指定当`超链接`和`表单`在`Document` 中导致`导航`时要使用哪个`可导航目标`。

如果`base` 元素具有`target` 属性,则它必须位于树中任何表示`超链接`的元素之前。

如果有多个具有`target` 属性的`base` 元素,则除了第一个之外,其他所有元素都将被忽略。

要`获取元素的目标`,给定一个`a`、`area` 或`form` 元素`element`,以及一个可选的字符串或空值`target`(默认为 null),执行以下步骤

  1. 如果`target` 为 null,则

    1. 如果`element` 具有 target 属性,则将`target` 设置为该属性的值。

    2. 否则,如果`element` 的`节点文档`包含一个具有`target` 属性的`base` 元素,则将`target` 设置为第一个此类`base` 元素的`target` 属性的值。

  2. 如果`target` 不为 null,并且包含`ASCII 制表符或换行符`和 U+003C (<),则将`target` 设置为 "_blank"。

  3. 返回`target`。


在`文档树`中,第一个具有`href` 内容属性的`base` 元素(即第一个`base` 元素)具有`冻结的基准 URL`。每当发生以下任何情况时,都必须`立即``设置`元素的`冻结的基准 URL`

要`设置元素的冻结的基准 URL``element`

  1. 令`document` 为`element` 的`节点文档`。

  2. 令`urlRecord` 为使用`document` 的`回退基准 URL`和`document` 的`字符编码`,`解析``element` 的`href` 内容属性的结果。(因此,`base` 元素不受自身影响。)

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

    则将`element` 的`冻结的基准 URL` 设置为`document` 的`回退基准 URL` 并返回。

  4. 将`element` 的`冻结的基准 URL` 设置为`urlRecord`。

`href` IDL 属性在获取时,必须返回运行以下算法的结果

  1. 令`document` 为`element` 的`节点文档`。

  2. 令`url` 为此元素的`href` 属性的值(如果存在),否则为空字符串。

  3. 令`urlRecord` 为使用`document` 的`回退基准 URL`和`document` 的`字符编码`,`解析``url` 的结果。(因此,`base` 元素不受其他`base` 元素或自身的影响。)

  4. 如果`urlRecord` 为失败,则返回`url`。

  5. 返回`urlRecord` 的`序列化`。

`href` IDL 属性在设置时,必须将`href` 内容属性设置为给定的新值。

`target` IDL 属性必须`反映`同名内容属性。

在此示例中,`base` 元素用于设置`文档基准 URL`

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>This is an example for the &lt;base&gt; element</title>
        <base href="https://www.example.com/news/index.html">
    </head>
    <body>
        <p>Visit the <a href="archives.html">archives</a>.</p>
    </body>
</html>

上面示例中的链接将是到 "https://www.example.com/news/archives.html" 的链接。

元素/link

所有当前引擎都支持。

Firefox1+Safari4+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

HTMLLinkElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+
类别:
元数据内容.
如果元素`允许在 body 中`:`流内容`。
如果元素`允许在 body 中`:`短语内容`。
可以使用此元素的上下文:
在预期`元数据内容`的位置。
在`noscript` 元素中,它是`head` 元素的子元素。
如果元素`允许在 body 中`:在预期`短语内容`的位置。
内容模型:
.
text/html 中的标签省略:
没有`结束标签`。
内容属性:
全局属性
`href` — `超链接`的地址

crossorigin — 元素如何处理跨域请求
rel — 包含超链接的文档与目标资源之间的关系
media — 适用媒体
integrity — 在子资源完整性检查中使用的完整性元数据 [SRI]
hreflang — 链接资源的语言
type — 引用的资源类型的提示
referrerpolicy — 元素发起的获取Referrer 策略
sizes — 图标的大小(对于rel="icon")
imagesrcset — 在不同情况下使用的图像,例如高分辨率显示器、小型显示器等(对于rel="preload")
imagesizes — 不同页面布局的图像大小(对于rel="preload")
as — 预加载请求的潜在目标(对于rel="preload" 和 rel="modulepreload")
blocking — 元素是否可能阻塞渲染
color — 自定义站点图标时使用的颜色(对于rel="mask-icon")
disabled — 链接是否被禁用
fetchpriority — 设置元素发起的获取优先级
此外,title 属性在此元素上具有特殊的语义:链接的标题;CSS 样式表集名称
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLLinkElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute USVString href;
  [CEReactions] attribute DOMString? crossOrigin;
  [CEReactions] attribute DOMString rel;
  [CEReactions] attribute DOMString as;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
  [CEReactions] attribute DOMString media;
  [CEReactions] attribute DOMString integrity;
  [CEReactions] attribute DOMString hreflang;
  [CEReactions] attribute DOMString type;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
  [CEReactions] attribute USVString imageSrcset;
  [CEReactions] attribute DOMString imageSizes;
  [CEReactions] attribute DOMString referrerPolicy;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList blocking;
  [CEReactions] attribute boolean disabled;
  [CEReactions] attribute DOMString fetchPriority;

  // also has obsolete members
};
HTMLLinkElement includes LinkStyle;

link 元素允许作者将他们的文档链接到其他资源。

链接的地址由href 属性给出。如果存在href 属性,则其值必须是可能由空格包围的有效非空 URL。必须存在hrefimagesrcset 属性之一或两者。

如果hrefimagesrcset 属性均不存在,则该元素不定义链接。

指示的链接类型(关系)由rel 属性的值给出,如果存在,则其值必须是一组唯一的空格分隔的标记允许的关键字及其含义在后面的部分定义。如果rel 属性不存在、没有关键字,或者使用的关键字都不符合本规范中的定义,则该元素不会创建任何链接。

rel支持的标记是在HTML 链接类型中定义的关键字,这些关键字在link 元素上允许使用,会影响处理模型,并且受用户代理支持。可能的支持的标记alternatedns-prefetchexpecticonmanifestmodulepreloadnextpingbackpreconnectprefetchpreloadsearchstylesheetrel支持的标记必须仅包含用户代理为其实现处理模型的此列表中的标记。

理论上,用户代理可以支持canonical 关键字的处理模型——如果它是一个执行 JavaScript 的搜索引擎。但在实践中,这不太可能。因此,在大多数情况下,canonical 不应包含在rel支持的标记中。

link 元素必须具有rel 属性或itemprop 属性,但不能同时具有两者。

如果link 元素具有itemprop 属性,或者具有仅包含body-ok 关键字的rel 属性,则称该元素允许在 body 中使用。这意味着该元素可以在预期短语内容的地方使用。

如果使用了rel 属性,则该元素有时只能在页面的body 中使用。当与itemprop 属性一起使用时,该元素可以在head 元素和页面的body 中使用,但要遵守微数据模型的约束。


可以使用link 元素创建两类链接:外部资源链接超链接链接类型部分定义了特定链接类型是外部资源还是超链接。一个link 元素可以创建多个链接(其中一些可能是外部资源链接,一些可能是超链接);创建哪些和多少个链接取决于rel 属性中给出的关键字。用户代理必须在每个链接的基础上处理链接,而不是在每个元素的基础上处理链接。

link 元素创建的每个链接都单独处理。例如,如果有两个link 元素具有rel="stylesheet",则它们每个都算作一个单独的外部资源,并且每个都独立地受其自身属性的影响。类似地,如果单个link 元素具有值为next stylesheetrel 属性,则它会创建一个超链接(对于next 关键字)和一个外部资源链接(对于stylesheet 关键字),并且它们受其他属性(如mediatitle)的影响不同。

例如,以下link 元素创建两个超链接(到同一页面)

<link rel="author license" href="/about">

此元素创建的两个链接之一的语义是目标页面包含有关当前页面作者的信息,另一个的语义是目标页面包含有关提供当前页面的许可证的信息。

使用link 元素及其rel 属性创建的超链接应用于整个文档。这与aarea 元素的rel 属性形成对比,后者指示链接类型的上下文由链接在文档中的位置给出。

与由aarea元素创建的超链接不同,由link元素创建的超链接默认情况下不会显示为文档的一部分,前提是用户代理支持建议的默认渲染。即使使用 CSS 强制显示它们,它们也没有激活行为。相反,它们主要提供语义信息,这些信息可能被页面或其他使用页面内容的软件使用。此外,用户代理可以提供自己的 UI 来跟随使用 link 元素创建的此类超链接

对于外部链接的确切行为取决于确切的关系,如相关链接类型中所定义。


crossorigin属性是一个CORS 设置属性。它旨在与外部链接一起使用。

media属性指定资源适用的媒体。该值必须是有效的媒体查询列表

子资源完整性

所有当前引擎都支持。

Firefox43+Safari11.1+Chrome45+
Opera?Edge79+
Edge(旧版)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

integrity属性表示此元素负责的请求的完整性元数据。该值为文本。该属性只能在link元素上指定,这些元素具有rel属性,该属性包含stylesheetpreloadmodulepreload关键字。[SRI]

link元素上的hreflang属性与a元素上的hreflang属性具有相同的语义。

type属性给出链接资源的MIME 类型。它纯粹是建议性的。该值必须是有效的 MIME 类型字符串

对于外部链接type属性用作用户代理的提示,以便它们可以避免获取它们不支持的资源。

referrerpolicy属性是一个引用者策略属性。它旨在与外部链接一起使用,在这些链接中,它有助于设置引用者策略,该策略在获取和处理链接资源时使用。[REFERRERPOLICY]

title属性给出链接的标题。除一个例外,它纯粹是建议性的。该值为文本。例外情况是样式表链接位于文档树中,对于这些链接,title属性定义CSS 样式表集

link元素上的title属性与大多数其他元素的全局title属性的不同之处在于,没有标题的链接不会继承父元素的标题:它仅仅没有标题。


imagesrcset属性可以存在,并且是一个srcset 属性

imagesrcsethref属性(如果未使用宽度描述符)共同为源集提供图像源

如果imagesrcset属性存在并且有任何使用宽度描述符图像候选字符串,则imagesizes属性也必须存在,并且是一个sizes 属性imagesizes属性为源集贡献源大小

imagesrcsetimagesizes属性只能在link元素上指定,这些元素既具有rel属性(指定preload关键字),又具有处于“image”状态的as属性。

这些属性允许预加载稍后由具有其srcsetsizes属性的相应值的img元素使用的适当资源。

<link rel="preload" as="image"
      imagesrcset="wolf_400px.jpg 400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w"
      imagesizes="50vw">

<!-- ... later, or perhaps inserted dynamically ... -->
<img src="wolf.jpg" alt="A rad wolf"
     srcset="wolf_400px.jpg 400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w"
     sizes="50vw">

请注意我们如何省略href属性,因为它仅与不支持imagesrcset的浏览器相关,在这些情况下,它可能会导致预加载错误的图像。

imagesrcset属性可以与media属性结合使用,以预加载从picture元素的源中选择的适当资源,以实现艺术指导

<link rel="preload" as="image"
      imagesrcset="dog-cropped-1x.jpg, dog-cropped-2x.jpg 2x"
      media="(max-width: 800px)">
<link rel="preload" as="image"
      imagesrcset="dog-wide-1x.jpg, dog-wide-2x.jpg 2x"
      media="(min-width: 801px)">

<!-- ... later, or perhaps inserted dynamically ... -->
<picture>
  <source srcset="dog-cropped-1x.jpg, dog-cropped-2x.jpg 2x"
          media="(max-width: 800px)">
  <img src="dog-wide-1x.jpg" srcset="dog-wide-2x.jpg 2x"
       alt="An awesome dog">
</picture>

sizes属性给出视觉媒体图标的大小。如果存在,其值仅供参考。如果有多个图标可用,用户代理可以使用该值来决定使用哪个图标。如果指定,则该属性必须具有一个值为唯一空格分隔标记的无序集,这些标记是ASCII 不区分大小写。每个值必须是字符串“any”的ASCII 不区分大小写匹配,或者是一个由两个有效的非负整数组成的值,这些整数没有前导 U+0030 DIGIT ZERO (0) 字符,并且由单个 U+0078 LATIN SMALL LETTER X 或 U+0058 LATIN CAPITAL LETTER X 字符分隔。该属性只能在link元素上指定,这些元素具有rel属性,该属性指定icon关键字或apple-touch-icon关键字。

apple-touch-icon关键字是预定义链接类型集的注册扩展,但用户代理不需要以任何方式支持它。


as属性指定由href属性给出的资源的预加载请求的潜在目标。它是一个枚举属性。每个潜在目标都是此属性的关键字,映射到同名的状态。该属性必须在link元素上指定,这些元素具有rel属性,该属性包含preload关键字。它可以在link元素上指定,这些元素具有rel属性,该属性包含modulepreload关键字;在这种情况下,它必须具有一个值为脚本式目标。对于其他link元素,则不得指定。

关于如何使用as属性的处理模型在各个链接类型的获取和处理链接资源算法中给出。

该属性没有缺失值默认值无效值默认值,这意味着属性的无效值或缺失值映射到任何状态。在处理模型中考虑了这一点。对于preload链接,这两种情况都是错误;对于modulepreload链接,缺失的值将被视为“script”。


blocking属性是一个阻塞属性。它由链接类型stylesheetexpect使用,并且只能在具有包含这些关键字的rel属性的链接元素上指定。


color 属性用于 mask-icon 链接类型。此属性只能指定在具有包含 mask-icon 关键字的 rel 属性的 link 元素上。其值必须是与 CSS <color> 产生式匹配的字符串,定义用户代理可以用来自定义用户固定站点时看到的图标显示的建议颜色。

本规范对 color 属性没有任何用户代理要求。

mask-icon 关键字是预定义链接类型集的注册 扩展,但用户代理无需以任何方式支持它。


link 元素具有关联的 显式启用 布尔值。它最初为 false。

disabled 属性是一个 布尔属性,用于 stylesheet 链接类型。此属性只能指定在具有包含 stylesheet 关键字的 rel 属性的 link 元素上。

每当删除 disabled 属性时,将 link 元素的 显式启用 属性设置为 true。

动态移除 disabled 属性(例如,使用 document.querySelector("link").removeAttribute("disabled"))将获取并应用样式表。

<link disabled rel="alternate stylesheet" href="css/pooh">

HTMLLinkElement/fetchPriority

Firefox不支持Safari🔰 预览+Chrome102+
Opera?Edge102+
Edge (旧版)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

fetchpriority 属性是一个 获取优先级属性,旨在用于 外部资源链接,用于设置 优先级,以便在 获取和处理链接资源 时使用。


HTMLLinkElement/rel

所有当前引擎都支持。

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

IDL 属性 hrefhreflangintegritymediarelsizestypeblockingdisabled 必须 反映 同名内容属性。

color 属性没有对应的 IDL 反映属性,但这可能会在以后添加。

HTMLLinkElement/as

所有当前引擎都支持。

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

as IDL 属性必须 反映 as 内容属性,仅限于已知的值

crossOrigin IDL 属性必须 反映 crossorigin 内容属性,仅限于已知的值

HTMLLinkElement/referrerPolicy

所有当前引擎都支持。

Firefox50+Safari14.1+Chrome58+
Opera?Edge79+
Edge (旧版)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

referrerPolicy IDL 属性必须 反映 referrerpolicy 内容属性,仅限于已知的值

fetchPriority IDL 属性必须 反映 fetchpriority 内容属性,仅限于已知的值

imageSrcset IDL 属性必须 反映 imagesrcset 内容属性。

imageSizes IDL 属性必须 反映 imagesizes 内容属性。

HTMLLinkElement/relList

所有当前引擎都支持。

Firefox30+Safari9+Chrome50+
Opera?Edge79+
Edge(旧版)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

relList IDL 属性必须 反映 rel 内容属性。

relList 属性可用于特性检测,通过调用其 supports() 方法来检查支持哪种类型的链接。

4.2.4.1 处理 media 属性

如果链接是 超链接,则 media 属性纯粹是建议性的,描述了相关文档的设计目标媒体。

但是,如果链接是 外部资源链接,则 media 属性是强制性的。当 media 属性的值 与环境匹配 且其他相关条件适用时,用户代理必须应用外部资源,否则不得应用。

如果省略了 media 属性,则默认值为“all”,这意味着默认情况下链接适用于所有媒体。

外部资源可能在其内部定义了进一步限制其适用性的规则。例如,CSS 样式表可能具有一些 @media 块。本规范不会覆盖此类进一步的限制或要求。

4.2.4.2 处理 type 属性

如果存在 type 属性,则用户代理必须假定资源属于给定类型(即使这不是 有效的 MIME 类型字符串,例如空字符串)。如果省略了此属性,但 外部资源链接 类型定义了默认类型,则用户代理必须假定资源属于该类型。如果 UA 不支持给定链接关系的给定 MIME 类型,则 UA 不应 获取和处理链接资源;如果 UA 支持给定链接关系的给定 MIME 类型,则 UA 应在 外部资源链接 的特定类型的指定时间 获取和处理链接资源。如果省略了此属性,并且 外部资源链接 类型未定义默认类型,但如果已知并支持该类型,则用户代理将 获取和处理链接资源,则用户代理应 获取和处理链接资源,并假定它将受支持。

用户代理不得将 type 属性视为权威性的——在获取资源后,用户代理不得使用 type 属性来确定其实际类型。只有实际类型(如下一段所定义)用于确定是否应用资源,而不是上述假定的类型。

链接类型为`stylesheet` 定义了处理资源的`Content-Type 元数据` 的规则。

一旦用户代理确定了资源的类型,如果资源类型受支持且其他相关条件也满足,则用户代理必须应用该资源;否则,必须忽略该资源。

如果文档包含以下标记的样式表链接

<link rel="stylesheet" href="A" type="text/plain">
<link rel="stylesheet" href="B" type="text/css">
<link rel="stylesheet" href="C">

…那么一个仅支持 CSS 样式表的兼容 UA 会获取文件 B 和 C,并跳过文件 A(因为`text/plain` 不是 CSS 样式表的`MIME 类型)。

对于文件 B 和 C,它会检查服务器返回的实际类型。对于以`text/css` 发送的那些文件,它会应用样式,但对于标记为`text/plain` 或任何其他类型的文件,则不会应用。

如果两个文件之一返回时没有`Content-Type` 元数据,或者具有语法错误的类型,例如 Content-Type: "null",则`stylesheet` 链接的默认类型将生效。由于该默认类型为`text/css`,因此样式表仍然会被应用。

给定一个`link` 元素el,`默认获取并处理链接资源` 如下所示

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

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

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

  4. 设置request 的`同步标志`。

  5. 运行`链接资源获取设置步骤`,给定elrequest。如果结果为 false,则返回。

  6. 如果el 的`rel` 属性包含关键字`stylesheet`,则将request 的`发起者类型` 设置为“css”;否则设置为“link”。

  7. 使用`processResponseConsumeBody` 设置为以下步骤,给定`响应`response 和 null、failure 或`字节序列`bodyBytes `获取`request

    1. success 为 true。

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

      则将success 设置为 false。

      请注意,内容特定的错误(例如,CSS 解析错误或 PNG 解码错误)不会影响success

    3. 否则,等待`链接资源` 的`关键子资源` 完成加载。

      定义链接类型的`关键子资源`(例如,CSS)的规范预计会描述如何获取和处理这些子资源。但是,由于目前没有明确说明,因此本规范描述了等待`链接资源` 的`关键子资源` 被获取和处理,并期望这将被正确执行。

    4. 给定elsuccessresponsebodyBytes `处理链接资源`。

给定`链接处理选项`options `创建链接请求`

  1. `断言`:options 的`href` 不是空字符串。

  2. 如果options 的`目标` 为 null,则返回 null。

  3. url 为给定options 的`href` 相对于options 的`基本 URL` `编码解析 URL` 的结果。

    使用基本 URL 而不是文档或环境由`问题 #9715` 跟踪。

  4. 如果url 为 failure,则返回 null。

  5. request 为给定urloptions 的`目标` 和options 的`crossorigin` `创建潜在 CORS 请求` 的结果。

  6. request 的`策略容器` 设置为options 的`策略容器`。

  7. request 的`完整性元数据` 设置为options 的`完整性`。

  8. request 的`加密随机数元数据` 设置为options 的`加密随机数元数据`。

  9. request 的`引用来源策略` 设置为options 的`引用来源策略`。

  10. request 的`客户端` 设置为options 的`环境`。

  11. request 的`优先级` 设置为options 的`获取优先级`。

  12. 返回request

用户代理可以选择仅在需要时尝试`获取和处理` 这些资源,而不是主动获取所有未应用的`外部资源`。

类似于`获取并处理链接资源` 算法,所有`外部资源链接` 都有一个`处理链接资源` 算法,该算法接收一个`link` 元素el、布尔值success、一个`响应`response 和一个`字节序列`bodyBytes。各个链接类型可以提供自己的`处理链接资源` 算法,但除非明确说明,否则该算法不执行任何操作。

除非针对给定的`rel` 关键字另有说明,否则元素必须`延迟元素的节点文档的加载事件`,直到所有尝试`获取和处理链接资源` 及其`关键子资源` 都完成。(用户代理尚未尝试获取和处理的资源,例如,因为它正在等待资源被需要,不会`延迟加载事件`。)

所有可以作为`外部资源链接` 的链接类型都定义了一个`处理链接标头` 算法,该算法接收`链接处理选项`。此算法定义了它们是否以及如何对出现在 HTTP `Link` 响应标头中做出反应。

对于大多数链接类型,此算法什么也不做。 摘要表 是一个很好的参考,可以快速了解链接类型是否已定义了 处理链接头 步骤。

一个 链接处理选项 是一个 结构体。它具有以下

href(默认为空字符串)
目标地址(默认为空字符串)
发起者(默认“link”)
完整性(默认为空字符串)
类型(默认为空字符串)
加密 nonce 元数据(默认为空字符串)
一个字符串
跨域(默认 无 CORS
一个 CORS 设置属性 状态
引荐来源策略(默认为空字符串)
一个 引荐来源策略
源集(默认 null)
Null 或一个 源集
基本 URL
一个 URL
来源
一个 来源
环境
一个 环境
策略容器
一个 策略容器
文档(默认 null)
Null 或一个 文档
文档就绪时(默认 null)
Null 或一个接受 文档 的算法
获取优先级(默认 自动
一个 获取优先级属性 状态

一个 链接处理选项 具有 基本 URLhref,而不是解析后的 URL,因为 URL 可能是选项的 源集 的结果。

从元素创建链接选项,给定一个 link 元素 el

  1. documentel节点文档

  2. options 为一个新的 链接处理选项,其中包含

    目标地址
    elas 属性状态的 转换 结果。
    跨域
    elcrossorigin 内容属性的状态
    引荐来源策略
    elreferrerpolicy 内容属性的状态
    源集
    el源集
    基本 URL
    document文档基本 URL
    来源
    document来源
    环境
    document相关设置对象
    策略容器
    document策略容器
    文档
    文档
    加密 nonce 元数据
    el[[CryptographicNonce]] 内部槽的当前值
    获取优先级
    elfetchpriority 内容属性的状态
  3. 如果 el 具有 href 属性,则将 optionshref 设置为 elhref 属性的值。

  4. 如果 el 具有 integrity 属性,则将 optionsintegrity 设置为 elintegrity 内容属性的值。

  5. 如果 el 具有 type 属性,则将 optionstype 设置为 eltype 属性的值。

  6. 断言optionshref 不是空字符串,或者 options源集 不是 null。

    既没有 href 也没有 imagesrcsetlink 元素不表示链接。

  7. 返回 options

从头信息中提取链接,给定一个 头信息列表 headers

  1. links 为一个新的 列表

  2. rawLinkHeaders获取、解码和拆分 `Link` 从 response头信息列表 的结果。

  3. 对于 rawLinkHeaders 的每个 linkHeader

    1. linkObject解析 linkHeader 的结果。 [WEBLINK]

    2. 如果 linkObject["target_uri"] 不 存在,则 继续

    3. 追加 linkObjectlinks

  4. 返回 links

处理链接头信息,给定一个 文档 doc,一个 响应 response,以及一个“pre-media”或“media阶段

  1. links 为从 response头信息列表 提取链接 的结果。

  2. 对于 links 中的每个 linkObject

    1. rellinkObject["relation_type"]。

    2. attribslinkObject["target_attributes"]。

    3. 如果 attribs存在srcset”、“imagesrcset”或“media”,则令 expectedPhase 为“media”;否则为“pre-media”。

    4. 如果 expectedPhase 不是 phase,则 继续

    5. 如果 attribs["media"] 存在attribs["media"] 不 匹配环境,则 继续

    6. options 为一个新的 链接处理选项,其中包含

      href
      linkObject["target_uri"]
      基本 URL
      doc文档基本 URL
      来源
      doc来源
      环境
      doc相关设置对象
      策略容器
      doc策略容器
      文档
      doc
    7. 从解析的头信息属性应用链接选项options,给定 attribs

    8. 如果 attribs["imagesrcset"] 存在attribs["imagesizes"] 存在,则将 options源集 设置为 创建源集 的结果,给定 linkObject["target_uri"]、attribs["imagesrcset"]、attribs["imagesizes"] 和 null。

    9. 针对 rel 运行 处理链接头信息 步骤,给定 options

从解析的头信息属性应用链接选项链接处理选项 options,给定 attribs

  1. 如果 attribs["as"] 存在,则将 options目标地址 设置为 转换 attribs["as"] 的结果。

  2. 如果 attribs["crossorigin"] 存在 并且与 CORS 设置属性 的某个 关键字 进行 ASCII 不区分大小写 匹配,则将 optionscrossorigin 设置为与该关键字对应的 CORS 设置属性 状态。

  3. 如果 attribs["integrity"] 存在,则将 optionsintegrity 设置为 attribs["integrity"]。

  4. 如果 attribs["referrerpolicy"] 存在 并且与某个 referrer 策略 进行 ASCII 不区分大小写 匹配,则将 optionsreferrer 策略 设置为该 referrer 策略

  5. 如果 attribs["nonce"] 存在,则将 optionsnonce 设置为 attribs["nonce"]。

  6. 如果 attribs["type"] 存在,则将 optionstype 设置为 attribs["type"]。

  7. 如果 attribs["fetchpriority"] 存在 并且与 获取优先级属性 关键字进行 ASCII 不区分大小写 匹配,则将 options获取优先级 设置为该 获取优先级属性 关键字。

4.2.4.5 预加载提示

状态/103

Firefox预览版+Safari不支持Chrome103+
Opera不支持Edge103+
Edge (旧版)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

预加载提示 允许用户代理执行某些操作,例如在服务器完全处理导航请求并提供响应代码之前,推测性地加载文档可能使用的资源。服务器可以通过在提供最终 响应 之前提供状态代码为 103 的 响应 来指示预加载提示。[RFC8297]

出于兼容性原因,预加载提示通常通过 HTTP/2 或更高版本传递,但为了易读性,我们在下面使用 HTTP/1.1 风格的表示法。

例如,给定以下响应序列

103 Early Hint
Link: </image.png>; rel=preload; as=image
200 OK
Content-Type: text/html

<!DOCTYPE html>
...
<img src="/image.png">

图像将在 HTML 内容到达之前开始加载。

仅处理导航期间提供的第一个预加载提示响应,如果它后面跟着跨源重定向,则将其丢弃。

除了 `Link` 标头外,103 响应可能包含 内容安全策略 标头,该标头在处理预加载提示时会被强制执行。

例如,给定以下响应序列

103 Early Hint
Content-Security-Policy: style-src: self;
Link: </style.css>; rel=preload; as=style
103 Early Hint
Link: </image.png>; rel=preload; as=image
302 Redirect
Location: /alternate.html
200 OK
Content-Security-Policy: style-src: none;
Link: </font.ttf>; rel=preload; as=font

字体和样式将被加载,而图像将被丢弃,因为最终重定向链中的仅第一个预加载提示响应会被尊重。延迟的 内容安全策略 标头在获取样式的请求已经执行之后出现,但文档将无法访问该样式。

处理预加载提示标头,给定一个 响应 response 和一个 环境 reservedEnvironment

预加载提示 `Link` 标头始终在最终 响应 中的 `Link` 标头之后处理,然后是 link 元素。这等效于将预加载提示和最终 `Link` 标头的内容分别按顺序添加到 文档head 元素中。

  1. earlyPolicyContainer 为给定 responsereservedEnvironment从获取响应创建策略容器 的结果。

    这允许预加载提示 响应 包含 内容安全策略,该策略将在获取预加载提示 请求 时被 强制执行

  2. links 为从 response标头列表 提取链接 的结果。

  3. earlyHints 为一个空的 列表

  4. 对于 links 中的每个 linkObject

    当我们收到预加载提示链接标头时,我们开始 获取 earlyRequest。如果它在 文档 创建之前返回,我们将 earlyResponse 设置为该 获取响应,并且一旦 文档 创建完成,我们就提交它(通过将其作为 link 元素一样在 预加载资源映射 中可用)。如果 文档 首先创建,则 响应 会在可用后立即提交。

    1. rellinkObject["relation_type"]。

    2. options 为一个新的 链接处理选项,其中包含

      href
      linkObject["target_uri"]
      发起者
      "early-hint"
      基本 URL
      responseURL
      来源
      responseURL
      环境
      reservedEnvironment
      策略容器
      earlyPolicyContainer
    3. attribslinkObject["target_attributes"]。

      只有 ascrossoriginintegritytype 属性在预加载提示处理过程中会被处理。其他属性,特别是 blockingimagesrcsetimagesizesmedia 仅在 文档 创建后才适用。

    4. 应用从已解析标头属性中获取的链接选项 到给定 attribsoptions

    5. 对给定 optionsrel 运行 处理链接标头 步骤。

    6. 追加 optionsearlyHints

  5. 给定 文档 doc 返回以下子步骤:对于 earlyHints 中的每个 options

    1. 如果 options文档就绪时 为 null,则将 options文档 设置为 doc

    2. 否则,使用 doc 调用 options文档就绪时

交互式用户代理可以为用户提供一种在用户界面中 跟随使用 link 元素创建的超链接 的方法。此类 跟随超链接 算法的调用必须将 userInvolvement 参数设置为 "浏览器 UI"。本规范未定义确切的界面,但它可以以某种形式包含以下信息(从元素的属性中获取,如以下定义),用于文档中每个 link 元素创建的每个 超链接(可能被简化)

用户代理还可以包含其他信息,例如资源的类型(由type属性给出)。

4.2.5 meta 元素

元素/元数据

所有当前引擎都支持。

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

HTMLMetaElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
元数据内容.
如果存在itemprop属性:流内容
如果存在itemprop属性:短语内容
可以使用此元素的上下文:
如果存在charset属性,或者元素的http-equiv属性处于编码声明状态:在head元素中。
如果存在http-equiv属性但不在编码声明状态:在head元素中。
如果存在http-equiv属性但不在编码声明状态:在noscript元素中,该元素是head元素的子元素。
如果存在name属性:在预期元数据内容的位置。
如果存在itemprop属性:在预期元数据内容的位置。
如果存在itemprop属性:在预期短语内容的位置。
内容模型:
.
text/html 中的标签省略:
没有结束标签
内容属性:
全局属性
name — 元数据名称
http-equiv — 指令
content — 元素的值
charset字符编码声明
media — 适用媒体
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLMetaElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute DOMString name;
  [CEReactions] attribute DOMString httpEquiv;
  [CEReactions] attribute DOMString content;
  [CEReactions] attribute DOMString media;

  // also has obsolete members
};

meta元素表示各种无法使用titlebaselinkstylescript元素表达的元数据。

meta元素可以使用name属性表示文档级元数据,使用http-equiv属性表示指令,并在HTML文档序列化为字符串形式(例如,通过网络传输或磁盘存储)时使用charset属性表示文件的字符编码声明

必须且仅指定一个namehttp-equivcharsetitemprop属性。

如果指定了namehttp-equivitemprop,则还必须指定content属性。否则,必须省略它。

charset属性指定文档使用的字符编码。这是一个字符编码声明。如果存在该属性,则其值必须与字符串“utf-8”进行ASCII不区分大小写匹配。

charset属性在meta元素上对XML文档没有影响,但在XML文档中允许使用它以方便迁移到和来自XML。

每个文档中,带有charset属性的meta元素不能超过一个。

content属性在元素用于这些目的时给出文档元数据或指令的值。允许的值取决于确切的上下文,如本规范后续部分所述。

如果meta元素具有name属性,则它设置文档元数据。文档元数据以名称-值对的形式表达,meta元素上的name属性给出名称,同一元素上的content属性给出值。名称指定正在设置的元数据的哪个方面;有效名称及其值的含义在以下部分中描述。如果meta元素没有content属性,则元数据名称-值对的值部分为空字符串。

media属性说明元数据适用于哪些媒体。该值必须是有效的媒体查询列表。除非nametheme-color,否则media属性对处理模型没有影响,并且作者不得使用它。

namecontentmediaIDL属性必须反映同名的相应内容属性。IDL属性httpEquiv必须反映内容属性http-equiv

4.2.5.1 标准元数据名称

元素/元数据/名称

所有当前引擎都支持。

Firefox1+Safari4+Chrome1+
Opera12.1+Edge79+
Edge(旧版)12+Internet Explorer6+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

本规范为meta元素的name属性定义了一些名称。

名称不区分大小写,并且必须以ASCII不区分大小写的方式进行比较

application-name

该值必须是简短的自由格式字符串,用于提供页面表示的网络应用程序的名称。如果页面不是网络应用程序,则不得使用application-name元数据名称。可以使用lang属性指定每个名称的语言,从而给出网络应用程序名称的翻译。

每个文档中,具有给定语言并且name属性值与application-name进行ASCII不区分大小写匹配的meta元素不能超过一个。

用户代理可能会优先使用UI中的应用程序名称而不是页面的title,因为标题可能包含与特定时间点页面状态相关的状态消息等,而不是仅仅是应用程序的名称。

为了找到给定语言的有序列表(例如,英国英语、美国英语和英语)要使用的应用程序名称,用户代理必须执行以下步骤

  1. languages为语言列表。

  2. 默认语言Document文档元素语言(如果存在),并且如果该语言不是未知的。

  3. 如果存在默认语言,并且它与languages中任何语言的语言都不相同,则将其附加到languages

  4. 获胜语言languages中的第一个语言,对于该语言,Document中存在一个meta元素,其中name属性值与application-name进行ASCII不区分大小写匹配,并且其语言是所讨论的语言。

    如果没有任何语言的文档包含这样的`meta` 元素,则返回;没有给定的应用程序名称。

  5. 返回文档中第一个 `meta` 元素的 `content` 属性值,该元素在 `Document` 中按 树序 排列,其中 `name` 属性值与 `application-name` 的 ASCII 不区分大小写 匹配,并且其 语言 是 `winning language`。

例如,当浏览器需要页面名称(例如,为书签设置标签)时,就会使用此算法。它将向算法提供的语言将是用户的首选语言。

作者

该值必须是一个自由格式的字符串,用于提供页面作者之一的姓名。

描述

该值必须是一个自由格式的字符串,用于描述页面。该值必须适合在页面目录中使用,例如在搜索引擎中。每个文档中,`meta` 元素的 `name` 属性值与 `description` 的 ASCII 不区分大小写 匹配的情况不得多于一次。

生成器

该值必须是一个自由格式的字符串,用于识别用于生成文档的软件包之一。此值不得用于标记不是由软件生成的页面的页面,例如,由用户在文本编辑器中编写的页面的标记。

以下是如何在名为“Frontweaver”的工具的输出中,在页面的`head` 元素中包含内容以识别其自身为用于生成页面的工具。

<meta name=generator content="Frontweaver 8.2">
关键词

该值必须是 逗号分隔令牌集,每个令牌都是与页面相关的关键词。

关于英国高速公路上的字体的此页面使用 `meta` 元素指定用户可能用来查找页面的某些关键词。

<!DOCTYPE HTML>
<html lang="en-GB">
 <head>
  <title>Typefaces on UK motorways</title>
  <meta name="keywords" content="british,type face,font,fonts,highway,highways">
 </head>
 <body>
  ...

许多搜索引擎不考虑此类关键词,因为此功能历史上一直不可靠地使用,甚至被误导性地用作一种垃圾邮件搜索引擎结果的方式,这对用户没有帮助。

要获取作者指定为适用于页面的关键词列表,用户代理必须运行以下步骤。

  1. 令 `keywords` 为一个空列表。

  2. 对于每个 `meta` 元素,该元素具有 `name` 属性和 `content` 属性,并且其中 `name` 属性值与 `keywords` 的 ASCII 不区分大小写 匹配。

    1. 根据逗号拆分元素的 content 属性的值。.

    2. 将产生的令牌(如果有)添加到 `keywords` 中。

  3. 从 `keywords` 中删除任何重复项。

  4. 返回 `keywords`。这是作者指定为适用于页面的关键词列表。

当对值的可靠性缺乏足够信心时,用户代理不应使用此信息。

例如,对于内容管理系统来说,使用系统中页面的关键词信息来填充特定于站点的搜索引擎的索引是合理的,但是使用此信息的大规模内容聚合器可能会发现某些用户会尝试通过使用不合适的关键词来操纵其排名机制。

推荐来源

该值必须是 推荐来源策略,它定义了 `Document` 的默认 推荐来源策略[REFERRERPOLICY]

如果任何 `meta` 元素 `element` 插入到文档中,或其 `name` 或 `content` 属性发生更改,则用户代理必须运行以下算法。

  1. 如果 `element` 不在 文档树中,则返回。

  2. 如果 `element` 没有 `name` 属性,其值与“`referrer” 的 ASCII 不区分大小写 匹配,则返回。

  3. 如果 `element` 没有 `content` 属性,或者该属性的值为空字符串,则返回。

  4. 令 `value` 为 `element` 的 `content` 属性的值,转换为 ASCII 小写

  5. 如果 `value` 是下表第一列中给出的值之一,则将 `value` 设置为第二列中给出的值。

    旧值推荐来源策略
    从不 无推荐来源
    默认 默认推荐来源策略
    总是 不安全 URL
    跨域时为来源 跨域时为来源
  6. 如果 `value` 是 推荐来源策略,则将 `element` 的 节点文档策略容器推荐来源策略 设置为 `policy`。

出于历史原因,与其他标准元数据名称不同,`referrer` 的处理模型对元素删除没有响应,并且不使用 树序。在此状态下,仅最近插入或最近修改的 `meta` 元素有效。

主题颜色

元素/元数据/名称/主题颜色

Firefox不支持Safari15+Chrome🔰 73+
Opera不支持Edge🔰 79+
Edge (旧版)?Internet Explorer不支持
Firefox Android未知Safari iOS未知Chrome Android80+WebView Android不支持Samsung Internet6.2+Opera Android不支持

该值必须是与 CSS <color> 生成匹配的字符串,定义用户代理应用来自定义页面或周围用户界面显示的建议颜色。例如,浏览器可能会使用指定的值为页面的标题栏着色,或者在选项卡栏或任务切换器中将其用作颜色突出显示。

在 HTML 文档中,`media` 属性值在所有 `meta` 元素中必须唯一,这些元素的 `name` 属性值设置为与 `theme-color` 的 ASCII 不区分大小写 匹配。

本标准本身使用“WHATWG 绿色”作为其主题颜色。

<!DOCTYPE HTML>
<title>HTML Standard</title>
<meta name="theme-color" content="#3c790a">
...

可以使用 `media` 属性来描述应使用提供的颜色的上下文。

如果我们只想在暗模式下使用“WHATWG 绿色”作为本标准的主题颜色,则可以使用 prefers-color-scheme 媒体功能。

<!DOCTYPE HTML>
<title>HTML Standard</title>
<meta name="theme-color" content="#3c790a" media="(prefers-color-scheme: dark)">
...

要获取页面的主题颜色,用户代理必须运行以下步骤。

  1. 令 `candidate elements` 为满足以下条件的所有 `meta` 元素的列表,按 树序 排列。

  2. 对于 `candidate elements` 中的每个 `element`。

    1. 如果 `element` 具有 `media` 属性,并且 `element` 的 `media` 属性的值不 匹配环境,则 继续

    2. 令 `value` 为从 `element` 的 `content` 属性的值中 去除前导和尾随 ASCII 空格 的结果。

    3. 令 `color` 为 解析 `value` 的结果。

    4. 如果 `color` 不是失败,则返回 `color`。

  3. 不返回任何内容(页面没有主题颜色)。

如果文档中meta元素被插入移除,或者现有meta元素的namecontentmedia属性发生更改,或者环境发生变化,导致任何meta元素的media属性的值现在可能或不再匹配环境,则用户代理必须重新运行上述算法并将结果应用于任何受影响的UI。

在UI中使用主题颜色时,用户代理可能会以特定于实现的方式对其进行调整,以使其更适合所讨论的UI。例如,如果用户代理打算将主题颜色用作背景并在其上显示白色文本,则它可能会在UI的该部分使用主题颜色的较暗变体,以确保足够的对比度。

color-scheme

为了帮助用户代理立即以所需的配色方案渲染页面背景(而不是等待页面中的所有CSS加载),可以在meta元素中提供'color-scheme'值。

该值必须是与CSS 'color-scheme'属性值语法匹配的字符串。它确定页面支持的配色方案

每个文档中,meta元素的name属性值设置为与color-schemeASCII不区分大小写匹配的元素不能超过一个。

以下声明表示页面已知并可以处理具有深色背景颜色和浅色前景颜色的配色方案

<meta name="color-scheme" content="dark">

要获取页面支持的配色方案,用户代理必须执行以下步骤

  1. 候选元素为满足以下条件的所有meta元素的列表,按照树序

  2. 对于 `candidate elements` 中的每个 `element`。

    1. parsed为给定elementcontent属性的值解析组件值列表的结果。
    2. 如果parsed是有效的CSS 'color-scheme'属性值,则返回parsed
  3. 返回null。

如果文档中meta元素被插入移除,或者现有meta元素的namecontent属性发生更改,则用户代理必须重新运行上述算法。

因为这些规则会检查连续的元素直到找到匹配项,所以作者可以提供多个此类值来处理旧版用户代理的回退。与CSS属性回退的工作方式相反,多个meta元素需要将旧值放在新值之后。

4.2.5.2 其他元数据名称

任何人都可以创建和使用他们自己的对预定义元数据名称集的扩展。没有要求注册此类扩展。

但是,在以下任何情况下都不应创建新的元数据名称

此外,在创建和使用新的元数据名称之前,建议参考WHATWG Wiki MetaExtensions页面——以避免选择已在使用的元数据名称,并避免重复任何已在使用的元数据名称的目的,并避免新的标准化名称与您选择的名称冲突。[WHATWGWIKI]

任何人都可以随时编辑WHATWG Wiki MetaExtensions页面以添加元数据名称。可以使用以下信息指定新的元数据名称

关键字

正在定义的实际名称。名称不应与任何其他定义的名称混淆(例如,仅在大小写方面有所不同)。

简要描述

对元数据名称含义的简短非规范性描述,包括值需要具有的格式。

规范
指向对元数据名称的语义和要求进行更详细描述的链接。它可以是维基上的另一个页面,也可以是到外部页面的链接。
同义词

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

状态

以下之一

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

如果发现元数据名称与现有值冗余,则应将其删除并列为现有值的同义词。

如果在“已提议”状态下添加元数据名称一个月或更长时间而未被使用或指定,则可以将其从WHATWG Wiki MetaExtensions页面中删除。

如果以“已提议”状态添加元数据名称,并且发现它与现有值冗余,则应将其删除并列为现有值的同义词。如果以“已提议”状态添加元数据名称,并且发现它有害,则应将其更改为“已停用”状态。

任何人都可以随时更改状态,但应仅按照上述定义进行。

4.2.5.3 编译指示

当在meta元素上指定http-equiv属性时,该元素为编译指示。

http-equiv属性是具有以下关键字和状态的枚举属性

关键字符合状态简要描述
content-language 内容语言 设置编译指示设置默认语言
content-type 编码声明 设置charset的替代形式。
default-style 默认样式 设置默认CSS样式表集名称
refresh 刷新 充当定时重定向。
set-cookie Set-Cookie 无效。
x-ua-compatible X-UA-Compatible 在实践中,鼓励Internet Explorer更紧密地遵循规范。
content-security-policy 内容安全策略 强制执行文档上的内容安全策略

meta元素插入文档时,如果其http-equiv属性存在并表示上述状态之一,则用户代理必须运行适用于该状态的算法,如以下列表中所述

内容语言状态 (http-equiv="content-language")

此功能不符合标准。建议作者改用lang属性。

此编译指示设置编译指示设置默认语言。在成功处理此类编译指示之前,不存在编译指示设置默认语言

  1. 如果meta元素没有content属性,则返回。

  2. 如果元素的content属性包含 U+002C 逗号字符 (,),则返回。

  3. input 为元素的content属性的值。

  4. position 指向input 的第一个字符。

  5. 在给定position 的情况下,跳过input 中的ASCII 空格

  6. 在给定position 的情况下,收集input 中的一系列不是ASCII 空格的代码点。

  7. candidate 为上一步产生的字符串。

  8. 如果candidate 为空字符串,则返回。

  9. pragma-set default language 设置为candidate

    如果该值包含多个以空格分隔的标记,则第一个标记之后的标记将被忽略。

此 pragma 几乎与同名的 HTTP `Content-Language` 标头完全不同,但并非完全不同。 [HTTP]

编码声明状态 (http-equiv="content-type")

编码声明状态只是设置charset属性的另一种形式:它是一个字符编码声明。此状态的用户代理要求均由规范的解析部分处理。

对于具有编码声明状态http-equiv属性的meta元素,content属性的值必须与由以下内容组成的字符串进行不区分大小写的 ASCII 匹配:"text/html;",后跟任意数量的ASCII 空格,然后是"charset=utf-8"。

文档不得同时包含具有编码声明状态http-equiv属性的meta元素和存在charset属性的meta元素。

可以在HTML 文档中使用编码声明状态,但在XML 文档中不得使用具有该状态的http-equiv属性的元素。

默认样式状态 (http-equiv="default-style")

备用样式表

仅在一个引擎中受支持。

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

此 pragma 设置默认CSS 样式表集名称

  1. 如果meta元素没有content属性,或者如果该属性的值为空字符串,则返回。

  2. 使用元素的content属性的值作为名称,更改首选 CSS 样式表集名称[CSSOM]

刷新状态 (http-equiv="refresh")

此 pragma 充当定时重定向。

Document对象具有关联的将声明性刷新(一个布尔值)。它最初为 false。

  1. 如果meta元素没有content属性,或者如果该属性的值为空字符串,则返回。

  2. input 为元素的content属性的值。

  3. 使用meta元素的节点文档inputmeta元素运行共享声明性刷新步骤

给定Document对象document、字符串input以及可选的meta元素meta共享声明性刷新步骤如下所示

  1. 如果document将声明性刷新为 true,则返回。

  2. position 指向input 的第一个代码点

  3. 在给定position 的情况下,跳过input 中的ASCII 空格

  4. time 为 0。

  5. 在给定position 的情况下,收集input 中的一系列ASCII 数字,并将结果设为timeString

  6. 如果timeString 为空字符串,则

    1. 如果inputposition 指向的代码点不是 U+002E (.),则返回。

  7. 否则,将time 设置为使用解析非负整数的规则解析timeString 的结果。

  8. 在给定position 的情况下,收集input 中的一系列ASCII 数字和 U+002E FULL STOP 字符 (.)。忽略任何收集到的字符。

  9. urlRecorddocumentURL

  10. 如果position 没有超过input 的末尾,则

    1. 如果inputposition 指向的代码点不是 U+003B (;)、U+002C (,) 或ASCII 空格,则返回。

    2. 在给定position 的情况下,跳过input 中的ASCII 空格

    3. 如果inputposition 指向的代码点是 U+003B (;) 或 U+002C (,),则将position 前移到下一个代码点

    4. 在给定position 的情况下,跳过input 中的ASCII 空格

  11. 如果position 没有超过input 的末尾,则

    1. urlStringinputposition 处的代码点到字符串末尾的子字符串。

    2. 如果inputposition 指向的代码点是 U+0055 (U) 或 U+0075 (u),则将position 前移到下一个代码点。否则,跳转到标记为跳过引号的步骤。

    3. 如果inputposition 指向的代码点是 U+0052 (R) 或 U+0072 (r),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。

    4. 如果inputposition 指向的代码点是 U+004C (L) 或 U+006C (l),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。

    5. 在给定position 的情况下,跳过input 中的ASCII 空格

    6. 如果inputposition 指向的代码点是 U+003D (=),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。

    7. 在给定position 的情况下,跳过input 中的ASCII 空格

    8. 跳过引号:如果inputposition 指向的代码点是 U+0027 (') 或 U+0022 ("),则令quote 为该代码点,并将position 前移到下一个代码点。否则,令quote 为空字符串。

    9. urlString 设置为inputposition 处的代码点到字符串末尾的子字符串。

    10. 如果quote不是空字符串,并且urlString中存在一个等于quote代码点,则在该代码点处截断urlString,以便删除该代码点以及所有后续的代码点

    11. 解析:将urlRecord设置为根据urlString(相对于document编码解析 URL的结果。

    12. 如果urlRecord为失败,则返回。

  12. document将声明性刷新设置为true。

  13. 执行以下一个或多个步骤

    • 刷新到期后(如下所述),如果用户没有取消重定向,并且如果给定了metadocument活动沙箱标志集没有设置沙箱自动功能浏览上下文标志,则使用documentdocument节点可导航导航urlRecord,并将historyHandling设置为"replace"。

      出于上一段的目的,刷新被认为是在以下两个条件中较晚的那个发生时到期

      • document完全加载时间起,已至少经过time秒,并根据用户或用户代理的偏好进行了调整。
      • 如果给定了meta,则自meta插入到文档document中起,已至少经过time秒,并根据用户或用户代理的偏好进行了调整。

      在此处使用document而不是meta节点文档非常重要,因为在初始步骤集和刷新到期之间,该文档可能已发生更改,并且meta并不总是给定的(在HTTP `Refresh`标头的情况下)。

    • 为用户提供一个界面,当选择该界面时,将使用documentdocument节点可导航导航urlRecord

    • 不做任何事情。

    此外,用户代理可以像处理任何其他事情一样,告知用户其操作的任何和所有方面,包括任何计时器的状态、任何定时重定向的目标等等。

对于meta元素,如果其http-equiv属性处于刷新状态,则content属性的值必须是以下之一:

在前一种情况下,整数表示页面重新加载之前的秒数;在后一种情况下,整数表示页面被给定URL上的页面替换之前的秒数。

新闻机构的首页可以在页面的head元素中包含以下标记,以确保页面每五分钟自动从服务器重新加载

<meta http-equiv="Refresh" content="300">

可以通过使每个页面刷新到序列中的下一个页面,使用如下标记,将一系列页面用作自动幻灯片放映

<meta http-equiv="Refresh" content="20; URL=page4.html">
设置Cookie状态http-equiv="set-cookie"

此pragma不符合标准,没有任何效果。

用户代理必须忽略此pragma。

X-UA-Compatible状态http-equiv="x-ua-compatible"

在实践中,此pragma鼓励Internet Explorer更密切地遵循规范。

对于meta元素,如果其http-equiv属性处于X-UA-Compatible状态,则content属性的值必须与字符串“IE=edgeASCII不区分大小写匹配。

用户代理必须忽略此pragma。

内容安全策略状态http-equiv="content-security-policy"

此pragma强制执行文档内容安全策略[CSP]

  1. 如果meta元素不是head元素的子元素,则返回。

  2. 如果meta元素没有content属性,或者该属性的值为空字符串,则返回。

  3. policy为对meta元素的content属性的值执行内容安全策略的解析序列化内容安全策略算法的结果,其来源为“meta”,处置为“enforce”。

  4. policy中删除report-uriframe-ancestorssandbox指令的所有出现。

  5. 强制执行策略policy

对于meta元素,如果其http-equiv属性处于内容安全策略状态,则content属性的值必须包含一个有效的内容安全策略,但不能包含任何report-uriframe-ancestorssandbox指令content属性中给定的内容安全策略将在当前文档上强制执行[CSP]

在将meta元素插入到文档时,某些资源可能已经获取。例如,在动态插入具有内容安全策略状态http-equiv属性的meta元素之前,图像可能已存储在可用图像列表中。已获取的资源不能保证会被内容安全策略阻止,该策略是在稍后强制执行的。

页面可以选择通过阻止执行内联JavaScript以及阻止所有插件内容来降低跨站点脚本攻击的风险,使用如下策略

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'">

在文档中,同一时间内,具有任何特定状态的meta元素不能超过一个。

4.2.5.4 指定文档的字符编码

字符编码声明是一种机制,用于指定用于存储或传输文档的字符编码

编码标准要求使用UTF-8字符编码,并要求使用“utf-8编码标签来标识它。这些要求需要文档的字符编码声明(如果存在)使用与“utf-8ASCII不区分大小写匹配的编码标签。无论字符编码声明是否存在,用于对文档进行编码的实际字符编码必须是UTF-8[ENCODING]

为了强制执行上述规则,创作工具必须默认对新创建的文档使用UTF-8

以下限制也适用

此外,由于对meta元素的一些限制,每个文档只能有一个基于meta的字符编码声明。

如果一个HTML 文档没有以 BOM 开头,并且其编码没有由Content-Type 元数据显式给出,并且该文档不是iframe srcdoc 文档,则必须使用带有charset属性的meta元素或带有http-equiv属性的meta元素在编码声明状态中指定编码。

即使所有字符都在 ASCII 范围内,也需要字符编码声明(在Content-Type 元数据中或在文件中显式声明),因为需要字符编码来处理用户在表单中、脚本生成的 URL 中等输入的非 ASCII 字符。

使用非 UTF-8 编码可能会对表单提交和 URL 编码产生意外的结果,这些编码默认使用文档的字符编码

如果文档是iframe srcdoc 文档,则文档不得包含字符编码声明。(在这种情况下,源代码已解码,因为它包含iframe的文档的一部分。)

在 XML 中,如果需要,应使用 XML 声明提供内联字符编码信息。

在 HTML 中,要声明字符编码为UTF-8,作者可以在文档顶部附近(在head元素中)包含以下标记

<meta charset="utf-8">

在 XML 中,将改为使用 XML 声明,位于标记的最顶部

<?xml version="1.0" encoding="utf-8"?>

4.2.6 style 元素

元素/样式

所有当前引擎都支持。

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

HTMLStyleElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
元数据内容.
可以使用此元素的上下文:
在预期元数据内容的地方。
noscript元素中,该元素是head元素的子元素。
内容模型:
文本,提供符合规范的样式表
text/html 中的标签省略:
这两个标签都不能省略。
内容属性:
全局属性
media — 适用的媒体
blocking — 元素是否可能阻塞渲染
此外,title属性在此元素上具有特殊语义CSS 样式表集名称
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLStyleElement : HTMLElement {
  [HTMLConstructor] constructor();

  attribute boolean disabled;
  [CEReactions] attribute DOMString media;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList blocking;

  // also has obsolete members
};
HTMLStyleElement includes LinkStyle;

style 元素允许作者在其文档中嵌入 CSS 样式表。style 元素是样式处理模型的多个输入之一。该元素不代表用户的内容。

HTMLStyleElement/disabled

所有当前引擎都支持。

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

disabled 获取器步骤如下

  1. 如果this没有关联的 CSS 样式表,则返回 false。

  2. 如果this关联的 CSS 样式表disabled 标志已设置,则返回 true。

  3. 返回 false。

disabled 设置器步骤如下

  1. 如果this没有关联的 CSS 样式表,则返回。

  2. 如果给定的值为 true,则设置this关联的 CSS 样式表disabled 标志。否则,取消设置this关联的 CSS 样式表disabled 标志

重要的是,disabled属性赋值仅在style元素具有关联的 CSS 样式表时才生效。

const style = document.createElement('style');
style.disabled = true;
style.textContent = 'body { background-color: red; }';
document.body.append(style);
console.log(style.disabled); // false

media 属性指定样式应用于哪些媒体。该值必须是有效的媒体查询列表。当media属性的值与环境匹配且其他相关条件适用时,用户代理必须应用样式,否则不得应用样式。

样式的范围可能会进一步限制,例如,在 CSS 中使用 @media 块。本规范不会覆盖此类进一步的限制或要求。

如果省略了media属性,则默认为“all”,这意味着默认情况下样式应用于所有媒体。

blocking 属性是一个阻塞属性

备用样式表

仅在一个引擎中受支持。

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

title 属性在style元素上定义CSS 样式表集。如果style元素没有title属性,则它没有标题;祖先的title属性不适用于style元素。如果style元素不在文档树中,则忽略title属性。[CSSOM]

title属性在style元素上,类似于title属性在link元素上,与全局title属性的不同之处在于,没有标题的style块不会继承父元素的标题:它只是没有标题。

style元素的子文本内容必须是符合规范的样式表

如果元素由其节点文档的解析器创建,则style元素隐式地可能阻塞渲染


每当发生以下任何情况时,用户代理必须运行更新 style算法

更新 style算法如下

  1. elementstyle元素。

  2. 如果element具有关联的 CSS 样式表,则移除相关的 CSS 样式表。

  3. 如果element连接,则返回。

  4. 如果elementtype属性存在,并且其值既不是空字符串,也不是"text/css"的ASCII 不区分大小写匹配,则返回。

    特别是,带有参数的type值,例如"text/css; charset=utf-8",将导致此算法提前返回。

  5. 如果内容安全策略是否应阻止元素的内联行为?算法在对style元素、"style"和style元素的子文本内容执行时返回"Blocked",则返回。 [CSP]

  6. 创建一个CSS样式表,具有以下属性

    类型

    text/css

    所有者节点

    元素

    媒体

    elementmedia属性。

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

    标题

    如果element 位于文档树中,则为elementtitle属性,否则为空字符串。

    同样,这是对属性的引用

    备用标志

    未设置。

    源代码清洁标志

    已设置。

    位置
    父CSS样式表
    所有者CSS规则

    null

    禁用标志

    保留其默认值。

    CSS规则

    保持未初始化。

    这似乎不正确。大概我们应该使用元素的子文本内容?已跟踪为问题 #2997

  7. 如果element 贡献了一个阻止脚本的样式表,则附加element到其节点文档阻止脚本的样式表集

  8. 如果elementmedia属性的值与环境匹配element 可能是渲染阻塞的,则在element阻止渲染

一旦尝试获取样式表的关键子资源(如果有)完成,或者,如果样式表没有关键子资源,则在样式表被解析和处理后,用户代理必须运行以下步骤

获取关键子资源没有明确定义;可能问题 #968是解决该问题的最佳方案。同时,任何关键子资源请求都应将其渲染阻塞设置为style元素当前是否渲染阻塞

  1. element为与相关样式表关联的style元素。

  2. success 为 true。

  3. 如果由于任何原因(例如,DNS错误、HTTP 404响应、连接过早关闭、不支持的Content-Type)尝试获取样式表的任何关键子资源失败,则将success设置为false。

    请注意,内容特定的错误(例如,CSS 解析错误或 PNG 解码错误)不会影响success

  4. 在给定element和以下步骤的网络任务源上排队一个元素任务

    1. 如果success为true,则在element触发名为load的事件。

    2. 否则,在element触发名为error的事件。

    3. 如果element 贡献了一个阻止脚本的样式表

      1. 断言element节点文档阻止脚本的样式表集包含element

      2. 从其节点文档阻止脚本的样式表集移除element

    4. element解除渲染阻塞

该元素必须延迟元素的节点文档的加载事件,直到所有获取样式表的关键子资源(如果有)的尝试都完成。

本规范未指定样式系统,但大多数网络浏览器预计支持CSS。[CSS]

HTMLStyleElement/media

所有当前引擎都支持。

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

mediablockingIDL属性必须分别反映同名内容属性。

此元素还实现了LinkStyle接口。[CSSOM]

以下文档将其强调内容样式化为亮红色文本而不是斜体文本,同时保留作品标题和拉丁语单词的默认斜体样式。它展示了如何使用适当的元素可以更轻松地重新设置文档样式。

<!DOCTYPE html>
<html lang="en-US">
 <head>
  <title>My favorite book</title>
  <style>
   body { color: black; background: white; }
   em { font-style: normal; color: red; }
  </style>
 </head>
 <body>
  <p>My <em>favorite</em> book of all time has <em>got</em> to be
  <cite>A Cat's Life</cite>. It is a book by P. Rahmel that talks
  about the <i lang="la">Felis catus</i> in modern human society.</p>
 </body>
</html>

4.2.7 样式和脚本的交互

如果引用的样式表没有引用其他资源(例如,它是由style元素给出的内部样式表,并且没有@import规则),则样式规则必须立即提供给脚本;否则,样式规则必须仅在事件循环到达其更新渲染步骤时才提供给脚本。

DocumentHTML解析器XML解析器的上下文中的元素el贡献了一个阻止脚本的样式表,如果以下所有条件都为真

预计上述规则的对应规则也适用于<?xml-stylesheet?> PI。但是,这尚未得到彻底调查。

Document具有阻止脚本的样式表集,它是一个有序集,最初为空。

Document document具有阻止脚本的样式表,如果以下步骤返回true

  1. 如果document阻止脚本的样式表集不是空的,则返回true。

  2. 如果document节点可导航为null,则返回false。

  3. containerDocumentdocument节点可导航容器文档

  4. 如果containerDocument不为null且containerDocument阻止脚本的样式表集不是空的,则返回true。

  5. 返回 false。

如果一个文档没有阻止脚本的样式表,则表示它没有阻止脚本的样式表