动态标准 — 最后更新于 2024 年 9 月 12 日
html
元素所有当前引擎都支持。
所有当前引擎都支持。
head
元素,后跟一个 body
元素。html
元素内部的第一件事不是 注释,则可以省略 html
元素的 开始标签。html
元素后面没有紧跟 注释,则可以省略 html
元素的 结束标签。[Exposed =Window ]
interface HTMLHtmlElement : HTMLElement {
[HTMLConstructor ] constructor ();
// also has obsolete members
};
鼓励作者在根 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 >
head
元素所有当前引擎都支持。
所有当前引擎都支持。
html
元素中的第一个元素。iframe
srcdoc
文档 或如果标题信息可从更高级别的协议获得:零个或多个 元数据内容 元素,其中最多一个为 title
元素,最多一个为 base
元素。title
元素,最多一个为 base
元素。head
元素内部的第一件事是元素,则可以省略 head
元素的 开始标签。head
元素后面没有紧跟 ASCII 空格 或 注释,则可以省略 head
元素的 结束标签。[Exposed =Window ]
interface HTMLHeadElement : HTMLElement {
[HTMLConstructor ] constructor ();
};
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
元素。
title
元素所有当前引擎都支持。
所有当前引擎都支持。
title
元素的 head
元素中。[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
` 元素的`方向性`应该用于设置用户界面中文档标题的方向性。
base
` 元素所有当前引擎都支持。
所有当前引擎都支持。
head
` 元素中,不包含其他`base
` 元素。href
` — `文档基准 URL`target
` — `超链接`的默认`可导航目标`,用于`导航`和`表单提交`[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),执行以下步骤
如果`target` 为 null,则
如果`target` 不为 null,并且包含`ASCII 制表符或换行符`和 U+003C (<),则将`target` 设置为 "_blank
"。
返回`target`。
在`文档树`中,第一个具有`href
` 内容属性的`base
` 元素(即第一个`base
` 元素)具有`冻结的基准 URL`。每当发生以下任何情况时,都必须`立即``设置`元素的`冻结的基准 URL`
要`设置元素的冻结的基准 URL``element`
令`document` 为`element` 的`节点文档`。
令`urlRecord` 为使用`document` 的`回退基准 URL`和`document` 的`字符编码`,`解析``element` 的`href
` 内容属性的结果。(因此,`base
` 元素不受自身影响。)
如果以下任何一项为真
`urlRecord` 为失败;
`urlRecord` 的`方案`为 "data
" 或 "javascript
";或
在`urlRecord` 和`document` 上运行`Is base allowed for Document?` 返回 "Blocked
",
将`element` 的`冻结的基准 URL` 设置为`urlRecord`。
`href
` IDL 属性在获取时,必须返回运行以下算法的结果
令`document` 为`element` 的`节点文档`。
令`url` 为此元素的`href
` 属性的值(如果存在),否则为空字符串。
令`urlRecord` 为使用`document` 的`回退基准 URL`和`document` 的`字符编码`,`解析``url` 的结果。(因此,`base
` 元素不受其他`base
` 元素或自身的影响。)
如果`urlRecord` 为失败,则返回`url`。
返回`urlRecord` 的`序列化`。
`href
` IDL 属性在设置时,必须将`href
` 内容属性设置为给定的新值。
`target
` IDL 属性必须`反映`同名内容属性。
<!DOCTYPE html>
< html lang = "en" >
< head >
< title > This is an example for the < base> 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
` 元素所有当前引擎都支持。
所有当前引擎都支持。
noscript
` 元素中,它是`head
` 元素的子元素。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 样式表集名称[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。必须存在href
或imagesrcset
属性之一或两者。
如果href
和imagesrcset
属性均不存在,则该元素不定义链接。
指示的链接类型(关系)由rel
属性的值给出,如果存在,则其值必须是一组唯一的空格分隔的标记。允许的关键字及其含义在后面的部分定义。如果rel
属性不存在、没有关键字,或者使用的关键字都不符合本规范中的定义,则该元素不会创建任何链接。
rel
的支持的标记是在HTML 链接类型中定义的关键字,这些关键字在link
元素上允许使用,会影响处理模型,并且受用户代理支持。可能的支持的标记是alternate
、dns-prefetch
、expect
、icon
、manifest
、modulepreload
、next
、pingback
、preconnect
、prefetch
、preload
、search
和 stylesheet
。rel
的支持的标记必须仅包含用户代理为其实现处理模型的此列表中的标记。
理论上,用户代理可以支持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 stylesheet
的rel
属性,则它会创建一个超链接(对于next
关键字)和一个外部资源链接(对于stylesheet
关键字),并且它们受其他属性(如media
或title
)的影响不同。
< link rel = "author license" href = "/about" >
此元素创建的两个链接之一的语义是目标页面包含有关当前页面作者的信息,另一个的语义是目标页面包含有关提供当前页面的许可证的信息。
使用link
元素及其rel
属性创建的超链接应用于整个文档。这与a
和area
元素的rel
属性形成对比,后者指示链接类型的上下文由链接在文档中的位置给出。
与由a
和area
元素创建的超链接不同,由link
元素创建的超链接默认情况下不会显示为文档的一部分,前提是用户代理支持建议的默认渲染。即使使用 CSS 强制显示它们,它们也没有激活行为。相反,它们主要提供语义信息,这些信息可能被页面或其他使用页面内容的软件使用。此外,用户代理可以提供自己的 UI 来跟随使用 link 元素创建的此类超链接。
对于外部链接的确切行为取决于确切的关系,如相关链接类型中所定义。
crossorigin
属性是一个CORS 设置属性。它旨在与外部链接一起使用。
media
属性指定资源适用的媒体。该值必须是有效的媒体查询列表。
所有当前引擎都支持。
integrity
属性表示此元素负责的请求的完整性元数据。该值为文本。该属性只能在link
元素上指定,这些元素具有rel
属性,该属性包含stylesheet
、preload
或modulepreload
关键字。[SRI]
link
元素上的hreflang
属性与a
元素上的hreflang
属性具有相同的语义。
type
属性给出链接资源的MIME 类型。它纯粹是建议性的。该值必须是有效的 MIME 类型字符串。
对于外部链接,type
属性用作用户代理的提示,以便它们可以避免获取它们不支持的资源。
referrerpolicy
属性是一个引用者策略属性。它旨在与外部链接一起使用,在这些链接中,它有助于设置引用者策略,该策略在获取和处理链接资源时使用。[REFERRERPOLICY]
title
属性给出链接的标题。除一个例外,它纯粹是建议性的。该值为文本。例外情况是样式表链接位于文档树中,对于这些链接,title
属性定义CSS 样式表集。
link
元素上的title
属性与大多数其他元素的全局title
属性的不同之处在于,没有标题的链接不会继承父元素的标题:它仅仅没有标题。
imagesrcset
属性可以存在,并且是一个srcset 属性。
imagesrcset
和href
属性(如果未使用宽度描述符)共同为源集提供图像源。
如果imagesrcset
属性存在并且有任何使用宽度描述符的图像候选字符串,则imagesizes
属性也必须存在,并且是一个sizes 属性。imagesizes
属性为源集贡献源大小。
imagesrcset
和imagesizes
属性只能在link
元素上指定,这些元素既具有rel
属性(指定preload
关键字),又具有处于“image
”状态的as
属性。
这些属性允许预加载稍后由具有其srcset
和sizes
属性的相应值的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
属性是一个阻塞属性。它由链接类型stylesheet
和expect
使用,并且只能在具有包含这些关键字的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" >
fetchpriority
属性是一个 获取优先级属性,旨在用于 外部资源链接,用于设置 优先级,以便在 获取和处理链接资源 时使用。
所有当前引擎都支持。
IDL 属性 href
、hreflang
、integrity
、media
、rel
、sizes
、type
、blocking
和 disabled
必须 反映 同名内容属性。
color
属性没有对应的 IDL 反映属性,但这可能会在以后添加。
所有当前引擎都支持。
as
IDL 属性必须 反映 as
内容属性,仅限于已知的值。
crossOrigin
IDL 属性必须 反映 crossorigin
内容属性,仅限于已知的值。
HTMLLinkElement/referrerPolicy
所有当前引擎都支持。
referrerPolicy
IDL 属性必须 反映 referrerpolicy
内容属性,仅限于已知的值。
fetchPriority
IDL 属性必须 反映 fetchpriority
内容属性,仅限于已知的值。
imageSrcset
IDL 属性必须 反映 imagesrcset
内容属性。
imageSizes
IDL 属性必须 反映 imagesizes
内容属性。
所有当前引擎都支持。
relList
IDL 属性必须 反映 rel
内容属性。
relList
属性可用于特性检测,通过调用其 supports()
方法来检查支持哪种类型的链接。
media
属性如果链接是 超链接,则 media
属性纯粹是建议性的,描述了相关文档的设计目标媒体。
但是,如果链接是 外部资源链接,则 media
属性是强制性的。当 media
属性的值 与环境匹配 且其他相关条件适用时,用户代理必须应用外部资源,否则不得应用。
如果省略了 media
属性,则默认值为“all
”,这意味着默认情况下链接适用于所有媒体。
外部资源可能在其内部定义了进一步限制其适用性的规则。例如,CSS 样式表可能具有一些 @media
块。本规范不会覆盖此类进一步的限制或要求。
type
属性如果存在 type
属性,则用户代理必须假定资源属于给定类型(即使这不是 有效的 MIME 类型字符串,例如空字符串)。如果省略了此属性,但 外部资源链接 类型定义了默认类型,则用户代理必须假定资源属于该类型。如果 UA 不支持给定链接关系的给定 MIME 类型,则 UA 不应 获取和处理链接资源;如果 UA 支持给定链接关系的给定 MIME 类型,则 UA 应在 外部资源链接 的特定类型的指定时间 获取和处理链接资源。如果省略了此属性,并且 外部资源链接 类型未定义默认类型,但如果已知并支持该类型,则用户代理将 获取和处理链接资源,则用户代理应 获取和处理链接资源,并假定它将受支持。
用户代理不得将 type
属性视为权威性的——在获取资源后,用户代理不得使用 type
属性来确定其实际类型。只有实际类型(如下一段所定义)用于确定是否应用资源,而不是上述假定的类型。
如果 外部资源链接 类型定义了处理资源的 Content-Type 元数据 的规则,则这些规则适用。否则,如果预期资源为图像,则用户代理可以应用 图像嗅探规则,其中 正式类型 为从资源的 Content-Type 元数据 中确定的类型,并将生成的 资源的计算类型 用作实际类型。否则,如果这两个条件都不适用或用户代理选择不应用图像嗅探规则,则用户代理必须使用资源的 Content-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
` 元素获取和处理资源所有`外部资源链接` 都有一个`获取并处理链接资源` 算法,该算法接收一个`link
` 元素el。它们还具有`链接资源获取设置步骤`,这些步骤接收一个`link
` 元素el和一个`请求`request。各个链接类型可以提供自己的`获取并处理链接资源` 算法,但除非明确说明,否则它们使用`默认获取并处理链接资源` 算法。类似地,各个链接类型可以提供自己的`链接资源获取设置步骤`,但除非明确说明,否则这些步骤只会返回 true。
给定一个`link
` 元素el,`默认获取并处理链接资源` 如下所示
令options 为从el`创建链接选项` 的结果。
令request 为给定options `创建链接请求` 的结果。
如果request 为 null,则返回。
设置request 的`同步标志`。
运行`链接资源获取设置步骤`,给定el 和request。如果结果为 false,则返回。
如果el 的`rel
` 属性包含关键字`stylesheet
`,则将request 的`发起者类型` 设置为“css
”;否则设置为“link
”。
使用`processResponseConsumeBody` 设置为以下步骤,给定`响应`response 和 null、failure 或`字节序列`bodyBytes `获取`request
给定`链接处理选项`options `创建链接请求`
如果options 的`目标` 为 null,则返回 null。
令url 为给定options 的`href` 相对于options 的`基本 URL` `编码解析 URL` 的结果。
使用基本 URL 而不是文档或环境由`问题 #9715` 跟踪。
如果url 为 failure,则返回 null。
令request 为给定url、options 的`目标` 和options 的`crossorigin` `创建潜在 CORS 请求` 的结果。
返回request。
用户代理可以选择仅在需要时尝试`获取和处理` 这些资源,而不是主动获取所有未应用的`外部资源`。
类似于`获取并处理链接资源` 算法,所有`外部资源链接` 都有一个`处理链接资源` 算法,该算法接收一个`link
` 元素el、布尔值success、一个`响应`response 和一个`字节序列`bodyBytes。各个链接类型可以提供自己的`处理链接资源` 算法,但除非明确说明,否则该算法不执行任何操作。
除非针对给定的`rel
` 关键字另有说明,否则元素必须`延迟元素的节点文档的加载事件`,直到所有尝试`获取和处理链接资源` 及其`关键子资源` 都完成。(用户代理尚未尝试获取和处理的资源,例如,因为它正在等待资源被需要,不会`延迟加载事件`。)
Link
` 标头所有可以作为`外部资源链接` 的链接类型都定义了一个`处理链接标头` 算法,该算法接收`链接处理选项`。此算法定义了它们是否以及如何对出现在 HTTP `Link
` 响应标头中做出反应。
对于大多数链接类型,此算法什么也不做。 摘要表 是一个很好的参考,可以快速了解链接类型是否已定义了 处理链接头 步骤。
link
”)文档
文档
的算法自动
)一个 链接处理选项 具有 基本 URL 和 href,而不是解析后的 URL,因为 URL 可能是选项的 源集 的结果。
要 从元素创建链接选项,给定一个 link
元素 el
令 document 为 el 的 节点文档。
令 options 为一个新的 链接处理选项,其中包含
as
属性状态的 转换 结果。crossorigin
内容属性的状态referrerpolicy
内容属性的状态fetchpriority
内容属性的状态如果 el 具有 integrity
属性,则将 options 的 integrity 设置为 el 的 integrity
内容属性的值。
断言:options 的 href 不是空字符串,或者 options 的 源集 不是 null。
既没有 href
也没有 imagesrcset
的 link
元素不表示链接。
返回 options。
要 从头信息中提取链接,给定一个 头信息列表 headers
要 处理链接头信息,给定一个 文档
doc,一个 响应 response,以及一个“pre-media
”或“media
”阶段
对于 links 中的每个 linkObject
令 rel 为 linkObject["relation_type
"]。
令 attribs 为 linkObject["target_attributes
"]。
如果 attribs 中 存在“srcset
”、“imagesrcset
”或“media
”,则令 expectedPhase 为“media
”;否则为“pre-media
”。
如果 expectedPhase 不是 phase,则 继续。
令 options 为一个新的 链接处理选项,其中包含
从解析的头信息属性应用链接选项 到 options,给定 attribs。
如果 attribs["imagesrcset
"] 存在 且 attribs["imagesizes
"] 存在,则将 options 的 源集 设置为 创建源集 的结果,给定 linkObject["target_uri
"]、attribs["imagesrcset
"]、attribs["imagesizes
"] 和 null。
针对 rel 运行 处理链接头信息 步骤,给定 options。
要 从解析的头信息属性应用链接选项 到 链接处理选项 options,给定 attribs
如果 attribs["as
"] 存在,则将 options 的 目标地址 设置为 转换 attribs["as
"] 的结果。
如果 attribs["crossorigin
"] 存在 并且与 CORS 设置属性 的某个 关键字 进行 ASCII 不区分大小写 匹配,则将 options 的 crossorigin 设置为与该关键字对应的 CORS 设置属性 状态。
如果 attribs["integrity
"] 存在,则将 options 的 integrity 设置为 attribs["integrity
"]。
如果 attribs["referrerpolicy
"] 存在 并且与某个 referrer 策略 进行 ASCII 不区分大小写 匹配,则将 options 的 referrer 策略 设置为该 referrer 策略。
如果 attribs["nonce
"] 存在,则将 options 的 nonce 设置为 attribs["nonce
"]。
如果 attribs["type
"] 存在,则将 options 的 type 设置为 attribs["type
"]。
如果 attribs["fetchpriority
"] 存在 并且与 获取优先级属性 关键字进行 ASCII 不区分大小写 匹配,则将 options 的 获取优先级 设置为该 获取优先级属性 关键字。
预加载提示 允许用户代理执行某些操作,例如在服务器完全处理导航请求并提供响应代码之前,推测性地加载文档可能使用的资源。服务器可以通过在提供最终 响应 之前提供状态代码为 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
元素中。
令 earlyPolicyContainer 为给定 response 和 reservedEnvironment 的 从获取响应创建策略容器 的结果。
令 earlyHints 为一个空的 列表。
对于 links 中的每个 linkObject
当我们收到预加载提示链接标头时,我们开始 获取 earlyRequest。如果它在 文档
创建之前返回,我们将 earlyResponse 设置为该 获取 的 响应,并且一旦 文档
创建完成,我们就提交它(通过将其作为 link
元素一样在 预加载资源映射 中可用)。如果 文档
首先创建,则 响应 会在可用后立即提交。
令 rel 为 linkObject["relation_type
"]。
令 options 为一个新的 链接处理选项,其中包含
令 attribs 为 linkObject["target_attributes
"]。
只有 as
、crossorigin
、integrity
和 type
属性在预加载提示处理过程中会被处理。其他属性,特别是 blocking
、imagesrcset
、imagesizes
和 media
仅在 文档
创建后才适用。
应用从已解析标头属性中获取的链接选项 到给定 attribs 的 options。
对给定 options 的 rel 运行 处理链接标头 步骤。
追加 options 到 earlyHints。
link
元素创建的超链接的方法交互式用户代理可以为用户提供一种在用户界面中 跟随使用 link
元素创建的超链接 的方法。此类 跟随超链接 算法的调用必须将 userInvolvement 参数设置为 "
"。本规范未定义确切的界面,但它可以以某种形式包含以下信息(从元素的属性中获取,如以下定义),用于文档中每个 浏览器 UI
link
元素创建的每个 超链接(可能被简化)
用户代理还可以包含其他信息,例如资源的类型(由type
属性给出)。
meta
元素所有当前引擎都支持。
所有当前引擎都支持。
itemprop
属性:流内容。itemprop
属性:短语内容。charset
属性,或者元素的http-equiv
属性处于编码声明状态:在head
元素中。http-equiv
属性但不在编码声明状态:在head
元素中。http-equiv
属性但不在编码声明状态:在noscript
元素中,该元素是head
元素的子元素。name
属性:在预期元数据内容的位置。itemprop
属性:在预期元数据内容的位置。itemprop
属性:在预期短语内容的位置。name
— 元数据名称http-equiv
— 指令content
— 元素的值charset
— 字符编码声明media
— 适用媒体[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
元素表示各种无法使用title
、base
、link
、style
和script
元素表达的元数据。
meta
元素可以使用name
属性表示文档级元数据,使用http-equiv
属性表示指令,并在HTML文档序列化为字符串形式(例如,通过网络传输或磁盘存储)时使用charset
属性表示文件的字符编码声明。
必须且仅指定一个name
、http-equiv
、charset
和itemprop
属性。
如果指定了name
、http-equiv
或itemprop
,则还必须指定content
属性。否则,必须省略它。
charset
属性指定文档使用的字符编码。这是一个字符编码声明。如果存在该属性,则其值必须与字符串“utf-8
”进行ASCII不区分大小写匹配。
charset
属性在meta
元素上对XML文档没有影响,但在XML文档中允许使用它以方便迁移到和来自XML。
每个文档中,带有charset
属性的meta
元素不能超过一个。
content
属性在元素用于这些目的时给出文档元数据或指令的值。允许的值取决于确切的上下文,如本规范后续部分所述。
如果meta
元素具有name
属性,则它设置文档元数据。文档元数据以名称-值对的形式表达,meta
元素上的name
属性给出名称,同一元素上的content
属性给出值。名称指定正在设置的元数据的哪个方面;有效名称及其值的含义在以下部分中描述。如果meta
元素没有content
属性,则元数据名称-值对的值部分为空字符串。
media
属性说明元数据适用于哪些媒体。该值必须是有效的媒体查询列表。除非name
是theme-color
,否则media
属性对处理模型没有影响,并且作者不得使用它。
name
、content
和media
IDL属性必须反映同名的相应内容属性。IDL属性httpEquiv
必须反映内容属性http-equiv
。
所有当前引擎都支持。
名称不区分大小写,并且必须以ASCII不区分大小写的方式进行比较。
application-name
该值必须是简短的自由格式字符串,用于提供页面表示的网络应用程序的名称。如果页面不是网络应用程序,则不得使用application-name
元数据名称。可以使用lang
属性指定每个名称的语言,从而给出网络应用程序名称的翻译。
每个文档中,具有给定语言并且name
属性值与application-name
进行ASCII不区分大小写匹配的meta
元素不能超过一个。
用户代理可能会优先使用UI中的应用程序名称而不是页面的title
,因为标题可能包含与特定时间点页面状态相关的状态消息等,而不是仅仅是应用程序的名称。
为了找到给定语言的有序列表(例如,英国英语、美国英语和英语)要使用的应用程序名称,用户代理必须执行以下步骤
令languages为语言列表。
如果存在默认语言,并且它与languages中任何语言的语言都不相同,则将其附加到languages。
令获胜语言为languages中的第一个语言,对于该语言,Document
中存在一个meta
元素,其中name
属性值与application-name
进行ASCII不区分大小写匹配,并且其语言是所讨论的语言。
如果没有任何语言的文档包含这样的`meta
` 元素,则返回;没有给定的应用程序名称。
返回文档中第一个 `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 >
...
许多搜索引擎不考虑此类关键词,因为此功能历史上一直不可靠地使用,甚至被误导性地用作一种垃圾邮件搜索引擎结果的方式,这对用户没有帮助。
要获取作者指定为适用于页面的关键词列表,用户代理必须运行以下步骤。
令 `keywords` 为一个空列表。
对于每个 `meta
` 元素,该元素具有 `name
` 属性和 `content
` 属性,并且其中 `name
` 属性值与 `keywords
` 的 ASCII 不区分大小写 匹配。
将产生的令牌(如果有)添加到 `keywords` 中。
从 `keywords` 中删除任何重复项。
返回 `keywords`。这是作者指定为适用于页面的关键词列表。
当对值的可靠性缺乏足够信心时,用户代理不应使用此信息。
例如,对于内容管理系统来说,使用系统中页面的关键词信息来填充特定于站点的搜索引擎的索引是合理的,但是使用此信息的大规模内容聚合器可能会发现某些用户会尝试通过使用不合适的关键词来操纵其排名机制。
推荐来源
该值必须是 推荐来源策略,它定义了 `Document
` 的默认 推荐来源策略。 [REFERRERPOLICY]
如果任何 `meta
` 元素 `element` 插入到文档中,或其 `name
` 或 `content
` 属性发生更改,则用户代理必须运行以下算法。
如果 `element` 不在 文档树中,则返回。
如果 `element` 没有 `name
` 属性,其值与“`referrer
” 的 ASCII 不区分大小写 匹配,则返回。
如果 `element` 没有 `content
` 属性,或者该属性的值为空字符串,则返回。
令 `value` 为 `element` 的 `content
` 属性的值,转换为 ASCII 小写。
如果 `value` 是下表第一列中给出的值之一,则将 `value` 设置为第二列中给出的值。
旧值 | 推荐来源策略 |
---|---|
从不
| 无推荐来源
|
默认
| 默认推荐来源策略 |
总是
| 不安全 URL
|
跨域时为来源
| 跨域时为来源
|
如果 `value` 是 推荐来源策略,则将 `element` 的 节点文档 的 策略容器 的 推荐来源策略 设置为 `policy`。
出于历史原因,与其他标准元数据名称不同,`referrer
` 的处理模型对元素删除没有响应,并且不使用 树序。在此状态下,仅最近插入或最近修改的 `meta
` 元素有效。
主题颜色
该值必须是与 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)" >
...
要获取页面的主题颜色,用户代理必须运行以下步骤。
令 `candidate elements` 为满足以下条件的所有 `meta
` 元素的列表,按 树序 排列。
元素在 文档树中;
元素具有 `name
` 属性,其值与 `theme-color
` 的 ASCII 不区分大小写 匹配;以及
元素具有 `content
` 属性。
对于 `candidate elements` 中的每个 `element`。
不返回任何内容(页面没有主题颜色)。
如果文档中meta
元素被插入或移除,或者现有meta
元素的name
、content
或media
属性发生更改,或者环境发生变化,导致任何meta
元素的media
属性的值现在可能或不再匹配环境,则用户代理必须重新运行上述算法并将结果应用于任何受影响的UI。
在UI中使用主题颜色时,用户代理可能会以特定于实现的方式对其进行调整,以使其更适合所讨论的UI。例如,如果用户代理打算将主题颜色用作背景并在其上显示白色文本,则它可能会在UI的该部分使用主题颜色的较暗变体,以确保足够的对比度。
color-scheme
为了帮助用户代理立即以所需的配色方案渲染页面背景(而不是等待页面中的所有CSS加载),可以在meta
元素中提供'color-scheme'值。
该值必须是与CSS 'color-scheme'属性值语法匹配的字符串。它确定页面支持的配色方案。
每个文档中,meta
元素的name
属性值设置为与color-scheme
ASCII不区分大小写匹配的元素不能超过一个。
以下声明表示页面已知并可以处理具有深色背景颜色和浅色前景颜色的配色方案
< meta name = "color-scheme" content = "dark" >
要获取页面支持的配色方案,用户代理必须执行以下步骤
元素在文档树中;
元素具有name
属性,其值为与color-scheme
ASCII不区分大小写匹配的属性;以及
元素具有content
属性。
对于 `candidate elements` 中的每个 `element`。
content
属性的值解析组件值列表的结果。返回null。
如果文档中meta
元素被插入或移除,或者现有meta
元素的name
或content
属性发生更改,则用户代理必须重新运行上述算法。
因为这些规则会检查连续的元素直到找到匹配项,所以作者可以提供多个此类值来处理旧版用户代理的回退。与CSS属性回退的工作方式相反,多个meta元素需要将旧值放在新值之后。
任何人都可以创建和使用他们自己的对预定义元数据名称集的扩展。没有要求注册此类扩展。
但是,在以下任何情况下都不应创建新的元数据名称
如果名称是URL,或者其伴随的content
属性的值是URL;在这些情况下,建议将其注册为链接类型预定义集的扩展(而不是创建新的元数据名称)。
如果名称用于预期在用户代理中具有处理要求的内容;在这种情况下,应该对其进行标准化。
此外,在创建和使用新的元数据名称之前,建议参考WHATWG Wiki MetaExtensions页面——以避免选择已在使用的元数据名称,并避免重复任何已在使用的元数据名称的目的,并避免新的标准化名称与您选择的名称冲突。[WHATWGWIKI]
任何人都可以随时编辑WHATWG Wiki MetaExtensions页面以添加元数据名称。可以使用以下信息指定新的元数据名称
正在定义的实际名称。名称不应与任何其他定义的名称混淆(例如,仅在大小写方面有所不同)。
对元数据名称含义的简短非规范性描述,包括值需要具有的格式。
具有完全相同处理要求的其他名称列表。作者不应使用定义为同义词的名称(它们仅用于允许用户代理支持旧内容)。任何人都可以删除实践中未使用的同义词;仅需要以这种方式处理为同义词以与旧内容兼容的名称才应在此处注册。
以下之一
如果发现元数据名称与现有值冗余,则应将其删除并列为现有值的同义词。
如果在“已提议”状态下添加元数据名称一个月或更长时间而未被使用或指定,则可以将其从WHATWG Wiki MetaExtensions页面中删除。
如果以“已提议”状态添加元数据名称,并且发现它与现有值冗余,则应将其删除并列为现有值的同义词。如果以“已提议”状态添加元数据名称,并且发现它有害,则应将其更改为“已停用”状态。
任何人都可以随时更改状态,但应仅按照上述定义进行。
当在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
属性。
此编译指示设置编译指示设置默认语言。在成功处理此类编译指示之前,不存在编译指示设置默认语言。
如果元素的content
属性包含 U+002C 逗号字符 (,),则返回。
令input 为元素的content
属性的值。
令position 指向input 的第一个字符。
令candidate 为上一步产生的字符串。
如果candidate 为空字符串,则返回。
将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
"
)仅在一个引擎中受支持。
使用元素的content
属性的值作为名称,更改首选 CSS 样式表集名称。 [CSSOM]
http-equiv="refresh
"
)此 pragma 充当定时重定向。
Document
对象具有关联的将声明性刷新(一个布尔值)。它最初为 false。
令input 为元素的content
属性的值。
给定Document
对象document、字符串input以及可选的meta
元素meta,共享声明性刷新步骤如下所示
如果document的将声明性刷新为 true,则返回。
令position 指向input 的第一个代码点。
令time 为 0。
如果timeString 为空字符串,则
如果input 中position 指向的代码点不是 U+002E (.),则返回。
否则,将time 设置为使用解析非负整数的规则解析timeString 的结果。
在给定position 的情况下,收集input 中的一系列ASCII 数字和 U+002E FULL STOP 字符 (.)。忽略任何收集到的字符。
令urlRecord 为document的URL。
如果position 没有超过input 的末尾,则
如果position 没有超过input 的末尾,则
令urlString 为input 从position 处的代码点到字符串末尾的子字符串。
如果input 中position 指向的代码点是 U+0055 (U) 或 U+0075 (u),则将position 前移到下一个代码点。否则,跳转到标记为跳过引号的步骤。
如果input 中position 指向的代码点是 U+0052 (R) 或 U+0072 (r),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。
如果input 中position 指向的代码点是 U+004C (L) 或 U+006C (l),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。
如果input 中position 指向的代码点是 U+003D (=),则将position 前移到下一个代码点。否则,跳转到标记为解析的步骤。
跳过引号:如果input 中position 指向的代码点是 U+0027 (') 或 U+0022 ("),则令quote 为该代码点,并将position 前移到下一个代码点。否则,令quote 为空字符串。
将urlString 设置为input 从position 处的代码点到字符串末尾的子字符串。
如果quote不是空字符串,并且urlString中存在一个等于quote的代码点,则在该代码点处截断urlString,以便删除该代码点以及所有后续的代码点。
解析:将urlRecord设置为根据urlString(相对于document)编码解析 URL的结果。
如果urlRecord为失败,则返回。
将document的将声明性刷新设置为true。
执行以下一个或多个步骤
刷新到期后(如下所述),如果用户没有取消重定向,并且如果给定了meta,document的活动沙箱标志集没有设置沙箱自动功能浏览上下文标志,则使用document将document的节点可导航导航到urlRecord,并将historyHandling设置为"replace
"。
出于上一段的目的,刷新被认为是在以下两个条件中较晚的那个发生时到期
在此处使用document而不是meta的节点文档非常重要,因为在初始步骤集和刷新到期之间,该文档可能已发生更改,并且meta并不总是给定的(在HTTP `Refresh
`标头的情况下)。
不做任何事情。
此外,用户代理可以像处理任何其他事情一样,告知用户其操作的任何和所有方面,包括任何计时器的状态、任何定时重定向的目标等等。
对于meta
元素,如果其http-equiv
属性处于刷新状态,则content
属性的值必须是以下之一:
URL
”ASCII不区分大小写匹配,后跟一个U+003D等号字符(=),后跟一个有效的URL字符串,该字符串不能以文字U+0027撇号(')或U+0022双引号(")字符开头。在前一种情况下,整数表示页面重新加载之前的秒数;在后一种情况下,整数表示页面被给定URL上的页面替换之前的秒数。
新闻机构的首页可以在页面的head
元素中包含以下标记,以确保页面每五分钟自动从服务器重新加载
< meta http-equiv = "Refresh" content = "300" >
可以通过使每个页面刷新到序列中的下一个页面,使用如下标记,将一系列页面用作自动幻灯片放映
< meta http-equiv = "Refresh" content = "20; URL=page4.html" >
http-equiv="set-cookie
"
)此pragma不符合标准,没有任何效果。
用户代理必须忽略此pragma。
http-equiv="x-ua-compatible
"
)在实践中,此pragma鼓励Internet Explorer更密切地遵循规范。
对于meta
元素,如果其http-equiv
属性处于X-UA-Compatible状态,则content
属性的值必须与字符串“IE=edge
”ASCII不区分大小写匹配。
用户代理必须忽略此pragma。
http-equiv="content-security-policy
"
)令policy为对meta
元素的content
属性的值执行内容安全策略的解析序列化内容安全策略算法的结果,其来源为“meta”,处置为“enforce”。
从policy中删除report-uri
、frame-ancestors
和sandbox
指令的所有出现。
强制执行策略policy。
对于meta
元素,如果其http-equiv
属性处于内容安全策略状态,则content
属性的值必须包含一个有效的内容安全策略,但不能包含任何report-uri
、frame-ancestors
或sandbox
指令。content
属性中给定的内容安全策略将在当前文档上强制执行。[CSP]
在将meta
元素插入到文档时,某些资源可能已经获取。例如,在动态插入具有内容安全策略状态的http-equiv
属性的meta
元素之前,图像可能已存储在可用图像列表中。已获取的资源不能保证会被内容安全策略阻止,该策略是在稍后强制执行的。
页面可以选择通过阻止执行内联JavaScript以及阻止所有插件内容来降低跨站点脚本攻击的风险,使用如下策略
< meta http-equiv = "Content-Security-Policy" content = "script-src 'self'; object-src 'none'" >
在文档中,同一时间内,具有任何特定状态的meta
元素不能超过一个。
字符编码声明是一种机制,用于指定用于存储或传输文档的字符编码。
编码标准要求使用UTF-8字符编码,并要求使用“utf-8
”编码标签来标识它。这些要求需要文档的字符编码声明(如果存在)使用与“utf-8
”ASCII不区分大小写匹配的编码标签。无论字符编码声明是否存在,用于对文档进行编码的实际字符编码必须是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"?>
style
元素所有当前引擎都支持。
所有当前引擎都支持。
noscript
元素中,该元素是head
元素的子元素。media
— 适用的媒体blocking
— 元素是否可能阻塞渲染title
属性在此元素上具有特殊语义:CSS 样式表集名称[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 ;
元素允许作者在其文档中嵌入 CSS 样式表。style
元素是样式处理模型的多个输入之一。该元素不代表用户的内容。style
所有当前引擎都支持。
disabled
获取器步骤如下
如果this没有关联的 CSS 样式表,则返回 false。
如果this的关联的 CSS 样式表的disabled 标志已设置,则返回 true。
返回 false。
disabled
设置器步骤如下
如果this没有关联的 CSS 样式表,则返回。
如果给定的值为 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
属性是一个阻塞属性。
仅在一个引擎中受支持。
title
属性在style
元素上定义CSS 样式表集。如果style
元素没有title
属性,则它没有标题;祖先的title
属性不适用于style
元素。如果style
元素不在文档树中,则忽略title
属性。[CSSOM]
title
属性在style
元素上,类似于title
属性在link
元素上,与全局title
属性的不同之处在于,没有标题的style
块不会继承父元素的标题:它只是没有标题。
如果元素由其节点文档的解析器创建,则style
元素隐式地可能阻塞渲染。
每当发生以下任何情况时,用户代理必须运行更新 style
块算法
更新 style
块算法如下
令element为style
元素。
如果element具有关联的 CSS 样式表,则移除相关的 CSS 样式表。
如果element未连接,则返回。
如果element的type
属性存在,并且其值既不是空字符串,也不是"text/css
"的ASCII 不区分大小写匹配,则返回。
特别是,带有参数的type
值,例如"text/css; charset=utf-8
",将导致此算法提前返回。
如果内容安全策略是否应阻止元素的内联行为?算法在对style
元素、"style
"和style
元素的子文本内容执行时返回"Blocked
",则返回。 [CSP]
创建一个CSS样式表,具有以下属性
如果element 贡献了一个阻止脚本的样式表,则附加element到其节点文档的阻止脚本的样式表集。
一旦尝试获取样式表的关键子资源(如果有)完成,或者,如果样式表没有关键子资源,则在样式表被解析和处理后,用户代理必须运行以下步骤
获取关键子资源没有明确定义;可能问题 #968是解决该问题的最佳方案。同时,任何关键子资源请求都应将其渲染阻塞设置为style
元素当前是否渲染阻塞。
令element为与相关样式表关联的style
元素。
令success 为 true。
如果由于任何原因(例如,DNS错误、HTTP 404响应、连接过早关闭、不支持的Content-Type)尝试获取样式表的任何关键子资源失败,则将success设置为false。
请注意,内容特定的错误(例如,CSS 解析错误或 PNG 解码错误)不会影响success。
在给定element和以下步骤的网络任务源上排队一个元素任务
如果success为true,则在element上触发名为load
的事件。
否则,在element上触发名为error
的事件。
如果element 贡献了一个阻止脚本的样式表
在element上解除渲染阻塞。
该元素必须延迟元素的节点文档的加载事件,直到所有获取样式表的关键子资源(如果有)的尝试都完成。
本规范未指定样式系统,但大多数网络浏览器预计支持CSS。[CSS]
所有当前引擎都支持。
media
和blocking
IDL属性必须分别反映同名内容属性。
以下文档将其强调内容样式化为亮红色文本而不是斜体文本,同时保留作品标题和拉丁语单词的默认斜体样式。它展示了如何使用适当的元素可以更轻松地重新设置文档样式。
<!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 >
如果引用的样式表没有引用其他资源(例如,它是由style
元素给出的内部样式表,并且没有@import
规则),则样式规则必须立即提供给脚本;否则,样式规则必须仅在事件循环到达其更新渲染步骤时才提供给脚本。
在Document
(HTML解析器或XML解析器的上下文中的元素el贡献了一个阻止脚本的样式表,如果以下所有条件都为真
el是由该Document
的解析器创建的。
el要么是style
元素,要么是link
元素,在el由解析器创建时,它是外部资源链接,对样式处理模型有贡献。
el的media
属性的值与环境匹配。
在元素由解析器创建时,el的样式表已启用。
用户代理尚未放弃加载该特定样式表。用户代理可以随时放弃加载样式表。
如果样式表最终确实加载,则在样式表加载之前放弃样式表意味着脚本最终可能会使用不正确的信息进行操作。例如,如果样式表将元素的颜色设置为绿色,但检查结果样式的脚本在样式表加载之前执行,则脚本会发现该元素为黑色(或任何默认颜色),因此可能会做出错误的选择(例如,决定在页面其他位置使用黑色作为颜色,而不是绿色)。实现者必须在脚本使用不正确信息的可能性与在等待缓慢的网络请求完成时什么都不做带来的性能影响之间进行权衡。
预计上述规则的对应规则也适用于<?xml-stylesheet?>
PI。但是,这尚未得到彻底调查。
Document
具有阻止脚本的样式表集,它是一个有序集,最初为空。
Document
document具有阻止脚本的样式表,如果以下步骤返回true
如果document的节点可导航为null,则返回false。
如果containerDocument不为null且containerDocument的阻止脚本的样式表集不是空的,则返回true。
返回 false。
如果一个文档
没有阻止脚本的样式表,则表示它没有阻止脚本的样式表。