diff --git a/draft-marchan-kdl2.html b/draft-marchan-kdl2.html index bf9d43a..273ed38 100644 --- a/draft-marchan-kdl2.html +++ b/draft-marchan-kdl2.html @@ -20,13 +20,13 @@ oficial version of the language, see https://kdl.dev/spec. " name="description"> - + " - } - - "\" can only be represented in the\n DOM, not in the HTML and XML syntaxes." - } - - "\n\n\n " - h3 id="structure-of-this-specification" { - span class="secno" { - - "1.9" - } - - " Structure of this specification" - a href="#structure-of-this-specification" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "This specification is divided into the following major sections:" - } - - "\n\n " - dl { - dt { - a href="#introduction" { - - "Introduction" - } - } - dd { - - "Non-normative materials providing a context for the HTML standard." - } - dt { - a href="#infrastructure" { - - "Common infrastructure" - } - } - dd { - - "The conformance classes, algorithms, definitions, and the common underpinnings of the rest of\n the specification." - } - dt { - a href="#dom" { - - "Semantics, structure, and APIs of HTML documents" - } - } - dd { - - "Documents are built from elements. These elements form a tree using the DOM. This section\n defines the features of this DOM, as well as introducing the features common to all elements, and\n the concepts used in defining elements." - } - dt { - a href="#semantics" { - - "The elements of HTML" - } - } - dd { - - "Each element has a predefined meaning, which is explained in this section. Rules for authors\n on how to use the element, along with user agent requirements for how to\n handle each element, are also given. This includes large signature features of HTML such\n as video playback and subtitles, form controls and form submission, and a 2D graphics API known\n as the HTML canvas." - } - dt { - a href="#microdata" { - - "Microdata" - } - } - dd { - - "This specification introduces a mechanism for adding machine-readable annotations to\n documents, so that tools can extract trees of name-value pairs from the document. This section\n describes this mechanism and some algorithms that can be used to convert HTML\n documents into other formats. This section also defines some sample Microdata vocabularies\n for contact information, calendar events, and licensing works." - } - dt { - a href="#editing" { - - "User interaction" - } - } - dd { - - "HTML documents can provide a number of mechanisms for users to interact with and modify\n content, which are described in this section, such as how focus works, and drag-and-drop." - } - dt { - a href="#browsers" { - - "Loading web pages" - } - } - dd { - - "HTML documents do not exist in a vacuum — this section defines many of the features\n that affect environments that deal with multiple pages, such as web browsers." - } - dt { - a href="#webappapis" { - - "Web application APIs" - } - } - dd { - - "This section introduces basic features for scripting of applications in HTML." - } - dt { - a href="#workers" { - - "Web workers" - } - } - dd { - - "This section defines an API for background threads in JavaScript." - } - dt { - a href="#worklets" { - - "Worklets" - } - } - dd { - - "This section defines infrastructure for APIs that need to run JavaScript separately from the\n main JavaScript execution environment." - } - dt { - a href="#comms" { - - "The communication APIs" - } - } - dd { - - "This section describes some mechanisms that applications written in HTML can use to\n communicate with other applications from different domains running on the same client. It also\n introduces a server-push event stream mechanism known as Server Sent Events or\n " - code id="structure-of-this-specification:eventsource" { - a href="#eventsource" { - - "EventSource" - } - } - - ", and a two-way full-duplex socket protocol for scripts known as Web\n Sockets." - } - dt { - a href="#webstorage" { - - "Web storage" - } - } - dd { - - "This section defines a client-side storage mechanism based on name-value pairs." - } - dt { - a href="#syntax" { - - "The HTML syntax" - } - } - dt { - a href="#xhtml" { - - "The XML syntax" - } - } - dd { - - "All of these features would be for naught if they couldn't be represented in a serialized\n form and sent to other people, and so these sections define the syntaxes of HTML and XML, along with rules for how to parse content using those syntaxes." - } - dt { - a href="#rendering" { - - "Rendering" - } - } - dd { - - "This section defines the default rendering rules for web browsers." - } - } - - "\n\n " - p { - - "There are also some appendices, listing " - a href="#obsolete" { - - "obsolete features" - } - - " and " - a href="#iana" { - - "IANA considerations" - } - - ", and several indices." - } - - "\n\n\n \n\n " - h4 id="how-to-read-this-specification" { - span class="secno" { - - "1.9.1" - } - - " How to read this specification" - a href="#how-to-read-this-specification" class="self-link" - } - - "\n\n " - p { - - "This specification should be read like all other specifications. First, it should be read\n cover-to-cover, multiple times. Then, it should be read backwards at least once. Then it should be\n read by picking random sections from the contents list and following all the cross-references." - } - - "\n\n " - p { - - "As described in the conformance requirements section below, this specification describes\n conformance criteria for a variety of conformance classes. In particular, there are conformance\n requirements that apply to " - em { - - "producers" - } - - ", for example authors and the documents they create,\n and there are conformance requirements that apply to " - em { - - "consumers" - } - - ", for example web browsers.\n They can be distinguished by what they are requiring: a requirement on a producer states what is\n allowed, while a requirement on a consumer states how software is to act." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, \"the " - code { - - "foo" - } - - " attribute's value must be a " - a href="#valid-integer" id="how-to-read-this-specification:valid-integer" { - - "valid\n integer" - } - - "\" is a requirement on producers, as it lays out the allowed values; in contrast,\n the requirement \"the " - code { - - "foo" - } - - " attribute's value must be parsed using the\n " - a href="#rules-for-parsing-integers" id="how-to-read-this-specification:rules-for-parsing-integers" { - - "rules for parsing integers" - } - - "\" is a requirement on consumers, as it describes how to\n process the content." - } - - "\n\n " - } - - "\n\n " - p { - strong { - - "Requirements on producers have no bearing whatsoever on consumers." - } - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "Continuing the above example, a requirement stating that a particular attribute's value is\n constrained to being a " - a href="#valid-integer" id="how-to-read-this-specification:valid-integer-2" { - - "valid integer" - } - - " emphatically does " - em { - - "not" - } - - " imply anything\n about the requirements on consumers. It might be that the consumers are in fact required to treat\n the attribute as an opaque string, completely unaffected by whether the value conforms to the\n requirements or not. It might be (as in the previous example) that the consumers are required to\n parse the value using specific rules that define how invalid (non-numeric in this case) values\n are to be processed." - } - - "\n\n " - } - - "\n\n \n\n\n\n " - h4 id="typographic-conventions" { - span class="secno" { - - "1.9.2" - } - - " Typographic conventions" - a href="#typographic-conventions" class="self-link" - } - - "\n\n " - p { - - "This is a definition, requirement, or explanation." - } - - "\n\n " - p class="note" { - - "This is a note." - } - - "\n\n " - p class="example" { - - "This is an example." - } - - "\n\n " - p class="XXX" { - - "This is an open issue." - } - - "\n\n " - p class="warning" { - - "This is a warning." - } - - "\n\n " - pre class="extract" { - code class="idl" { - - "[" - c- g="" { - - "Exposed" - } - - "=" - c- n="" { - - "Window" - } - - "]\n" - c- b="" { - - "interface" - } - - " " - dfn { - c- g="" { - - "Example" - } - } - - " {\n // this is an IDL definition\n};" - } - } - - "\n\n " - dl class="domintro" { - dt { - code { - var { - - "variable" - } - - " = " - var { - - "object" - } - - "." - a href="#x-that" id="typographic-conventions:x-that" { - - "method" - } - - "([" - var { - - "optionalArgument" - } - - "])" - } - } - dd { - p { - - "This is a note to authors describing the usage of an interface." - } - } - } - - "\n\n " - pre { - code class="css" { - c- c="" { - - "/* this is a CSS fragment */" - } - } - } - - "\n\n " - p { - - "The defining instance of a term is marked up like " - dfn id="x-this" { - - "this" - } - - ". Uses of that\n term are marked up like " - a href="#x-this" id="typographic-conventions:x-this" { - - "this" - } - - " or like " - i id="typographic-conventions:x-this-2" { - a href="#x-this" { - - "this" - } - } - - "." - } - - "\n\n " - p { - - "The defining instance of an element, attribute, or API is marked up like " - dfn id="x-that" { - code { - - "this" - } - } - - ". References to that element, attribute, or API are marked up\n like " - code id="typographic-conventions:x-that-2" { - a href="#x-that" { - - "this" - } - } - - "." - } - - "\n\n " - p { - - "Other code fragments are marked up " - code { - - "like this" - } - - "." - } - - "\n\n " - p { - - "Variables are marked up like " - var { - - "this" - } - - "." - } - - "\n\n " - p { - - "In an algorithm, steps in " - a href="#synchronous-section" id="typographic-conventions:synchronous-section" { - - "synchronous\n sections" - } - - " are marked with ⌛." - } - - "\n\n " - p { - - "In some cases, requirements are given in the form of lists with conditions and corresponding\n requirements. In such cases, the requirements that apply to a condition are always the first set\n of requirements that follow the condition, even in the case of there being multiple sets of\n conditions for those requirements. Such cases are presented as follows:" - } - - "\n\n " - dl class="switch" { - dt { - - "This is a condition\n " - } - dt { - - "This is another condition\n " - } - dd { - - "This is the requirement that applies to the conditions above.\n\n " - } - dt { - - "This is a third condition\n " - } - dd { - - "This is the requirement that applies to the third condition.\n " - } - } - - "\n\n\n\n\n " - h3 id="a-quick-introduction-to-html" { - span class="secno" { - - "1.10" - } - - " A quick introduction to HTML" - a href="#a-quick-introduction-to-html" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "A basic HTML document looks like this:" - } - - "\n\n " - pre id="intro-early-example" { - code class="html" { - c- cp="" { - - "" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "html" - } - - " " - c- e="" { - - "lang" - } - c- o="" { - - "=" - } - c- s="" { - - "\"en\"" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "head" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "title" - } - c- p="" { - - ">" - } - - "Sample page" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "body" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "h1" - } - c- p="" { - - ">" - } - - "Sample page" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "This is a " - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"demo.html\"" - } - c- p="" { - - ">" - } - - "simple" - c- p="" { - - "" - } - - " sample." - c- p="" { - - "" - } - - "\n " - c- c="" { - - "" - } - - "\n " - c- p="" { - - "" - } - - "\n" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "HTML documents consist of a tree of elements and text. Each element is denoted in the source by\n a " - a href="#syntax-start-tag" id="a-quick-introduction-to-html:syntax-start-tag" { - - "start tag" - } - - ", such as \"" - code { - - "" - } - - "\", and\n an " - a href="#syntax-end-tag" id="a-quick-introduction-to-html:syntax-end-tag" { - - "end tag" - } - - ", such as \"" - code { - - "" - } - - "\".\n (Certain start tags and end tags can in certain cases be " - a href="#syntax-tag-omission" id="a-quick-introduction-to-html:syntax-tag-omission" { - - "omitted" - } - - " and are implied by other tags.)" - } - - "\n\n " - p { - - "Tags have to be nested such that elements are all completely within each other, without\n overlapping:" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "This is " - c- p="" { - - "<" - } - c- f="" { - - "em" - } - c- p="" { - - ">" - } - - "very " - c- p="" { - - "<" - } - c- f="" { - - "strong" - } - c- p="" { - - ">" - } - - "wrong" - c- p="" { - - "" - } - - "!" - c- p="" { - - "" - } - } - } - - "\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "This " - c- p="" { - - "<" - } - c- f="" { - - "em" - } - c- p="" { - - ">" - } - - "is " - c- p="" { - - "<" - } - c- f="" { - - "strong" - } - c- p="" { - - ">" - } - - "correct" - c- p="" { - - "" - } - - "." - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "This specification defines a set of elements that can be used in HTML, along with rules about\n the ways in which the elements can be nested." - } - - "\n\n " - p { - - "Elements can have attributes, which control how the elements work. In the example below, there\n is a " - a href="#hyperlink" id="a-quick-introduction-to-html:hyperlink" { - - "hyperlink" - } - - ", formed using the " - code id="a-quick-introduction-to-html:the-a-element" { - a href="#the-a-element" { - - "a" - } - } - - " element and its " - code id="a-quick-introduction-to-html:attr-hyperlink-href" { - a href="#attr-hyperlink-href" { - - "href" - } - } - - " attribute:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"demo.html\"" - } - c- p="" { - - ">" - } - - "simple" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - a href="#syntax-attributes" id="a-quick-introduction-to-html:syntax-attributes" { - - "Attributes" - } - - " are placed inside the start tag, and consist\n of a " - a href="#syntax-attribute-name" id="a-quick-introduction-to-html:syntax-attribute-name" { - - "name" - } - - " and a " - a href="#syntax-attribute-value" id="a-quick-introduction-to-html:syntax-attribute-value" { - - "value" - } - - ", separated by an \"" - code { - - "=" - } - - "\" character.\n The attribute value can remain " - a href="#unquoted" { - - "unquoted" - } - - " if it doesn't contain " - a id="a-quick-introduction-to-html:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII\n whitespace" - } - - " or any of " - code { - - "\"" - } - - " " - code { - - "'" - } - - " " - code { - - "`" - } - - " " - code { - - "=" - } - - " " - code { - - "<" - } - - " or " - code { - - ">" - } - - ". Otherwise, it has to be quoted using either single or double quotes. The\n value, along with the \"" - code { - - "=" - } - - "\" character, can be omitted altogether if the value\n is the empty string." - } - - "\n\n " - pre { - code class="html" { - c- c="" { - - "" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "address" - } - - " " - c- e="" { - - "disabled" - } - c- p="" { - - ">" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "address" - } - - " " - c- e="" { - - "disabled" - } - c- o="" { - - "=" - } - c- s="" { - - "\"\"" - } - c- p="" { - - ">" - } - - "\n\n" - c- c="" { - - "" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "address" - } - - " " - c- e="" { - - "maxlength" - } - c- o="" { - - "=" - } - c- s="" { - - "200" - } - c- p="" { - - ">" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "address" - } - - " " - c- e="" { - - "maxlength" - } - c- o="" { - - "=" - } - c- s="" { - - "'200'" - } - c- p="" { - - ">" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "address" - } - - " " - c- e="" { - - "maxlength" - } - c- o="" { - - "=" - } - c- s="" { - - "\"200\"" - } - c- p="" { - - ">" - } - } - } - - "\n\n " - p { - - "HTML user agents (e.g., web browsers) then " - i { - - "parse" - } - - " this markup, turning it into a DOM\n (Document Object Model) tree. A DOM tree is an in-memory representation of a document." - } - - "\n\n " - p { - - "DOM trees contain several kinds of nodes, in particular a " - code id="a-quick-introduction-to-html:documenttype" { - a data-x-internal="documenttype" href="https://dom.spec.whatwg.org/#interface-documenttype" { - - "DocumentType" - } - } - - " node,\n " - code id="a-quick-introduction-to-html:element" { - a data-x-internal="element" href="https://dom.spec.whatwg.org/#interface-element" { - - "Element" - } - } - - " nodes, " - code id="a-quick-introduction-to-html:text" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " nodes, " - code id="a-quick-introduction-to-html:comment-2" { - a data-x-internal="comment-2" href="https://dom.spec.whatwg.org/#interface-comment" { - - "Comment" - } - } - - " nodes, and in some cases\n " - code id="a-quick-introduction-to-html:processinginstruction" { - a data-x-internal="processinginstruction" href="https://dom.spec.whatwg.org/#interface-processinginstruction" { - - "ProcessingInstruction" - } - } - - " nodes." - } - - "\n\n " - p { - - "The " - a href="#intro-early-example" { - - "markup snippet at the top of this section" - } - - " would be\n turned into the following DOM tree:" - } - - "\n\n " - ul class="domTree" { - li class="t10" { - - "DOCTYPE: " - code { - - "html" - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-html-element" { - a href="#the-html-element" { - - "html" - } - } - - " " - span class="t2" { - code id="a-quick-introduction-to-html:attr-lang" class="attribute name" { - a href="#attr-lang" { - - "lang" - } - } - - "=\"" - code class="attribute value" { - - "en" - } - - "\"" - } - ul { - li class="t1" { - code id="a-quick-introduction-to-html:the-head-element" { - a href="#the-head-element" { - - "head" - } - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-2" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣␣" - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-title-element" { - a href="#the-title-element" { - - "title" - } - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-3" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "Sample page" - } - } - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-4" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣" - } - } - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-5" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣" - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-body-element" { - a href="#the-body-element" { - - "body" - } - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-6" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣␣" - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - a href="#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - - "h1" - } - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-7" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "Sample page" - } - } - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-8" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣␣" - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-p-element" { - a href="#the-p-element" { - - "p" - } - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-9" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "This is a " - } - } - li class="t1" { - code id="a-quick-introduction-to-html:the-a-element-2" { - a href="#the-a-element" { - - "a" - } - } - - " " - span class="t2" { - code id="a-quick-introduction-to-html:attr-hyperlink-href-2" class="attribute name" { - a href="#attr-hyperlink-href" { - - "href" - } - } - - "=\"" - code class="attribute value" { - - "demo.html" - } - - "\"" - } - ul { - li class="t3" { - code id="a-quick-introduction-to-html:text-10" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "simple" - } - } - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-11" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - " sample." - } - } - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-12" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣␣" - } - } - li class="t8" { - code id="a-quick-introduction-to-html:comment-2-2" { - a data-x-internal="comment-2" href="https://dom.spec.whatwg.org/#interface-comment" { - - "#comment" - } - } - - ": " - span { - - " this is a comment " - } - } - li class="t3" { - code id="a-quick-introduction-to-html:text-13" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "⏎␣⏎" - } - } - } - } - } - } - } - - "\n\n " - p { - - "The " - a id="a-quick-introduction-to-html:document-element" href="https://dom.spec.whatwg.org/#document-element" data-x-internal="document-element" { - - "document element" - } - - " of this tree is the " - code id="a-quick-introduction-to-html:the-html-element-2" { - a href="#the-html-element" { - - "html" - } - } - - " element, which is the\n element always found in that position in HTML documents. It contains two elements,\n " - code id="a-quick-introduction-to-html:the-head-element-2" { - a href="#the-head-element" { - - "head" - } - } - - " and " - code id="a-quick-introduction-to-html:the-body-element-2" { - a href="#the-body-element" { - - "body" - } - } - - ", as well as a " - code id="a-quick-introduction-to-html:text-14" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " node between them." - } - - "\n\n " - p { - - "There are many more " - code id="a-quick-introduction-to-html:text-15" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " nodes in the DOM tree than one would initially expect,\n because the source contains a number of spaces (represented here by \"␣\") and line breaks\n (\"⏎\") that all end up as " - code id="a-quick-introduction-to-html:text-16" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " nodes in the DOM. However, for historical\n reasons not all of the spaces and line breaks in the original markup appear in the DOM. In\n particular, all the whitespace before " - code id="a-quick-introduction-to-html:the-head-element-3" { - a href="#the-head-element" { - - "head" - } - } - - " start tag ends up being dropped silently,\n and all the whitespace after the " - code id="a-quick-introduction-to-html:the-body-element-3" { - a href="#the-body-element" { - - "body" - } - } - - " end tag ends up placed at the end of the\n " - code id="a-quick-introduction-to-html:the-body-element-4" { - a href="#the-body-element" { - - "body" - } - } - - "." - } - - "\n\n " - p { - - "The " - code id="a-quick-introduction-to-html:the-head-element-4" { - a href="#the-head-element" { - - "head" - } - } - - " element contains a " - code id="a-quick-introduction-to-html:the-title-element-2" { - a href="#the-title-element" { - - "title" - } - } - - " element, which itself contains a\n " - code id="a-quick-introduction-to-html:text-17" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " node with the text \"Sample page\". Similarly, the " - code id="a-quick-introduction-to-html:the-body-element-5" { - a href="#the-body-element" { - - "body" - } - } - - " element\n contains an " - code id="a-quick-introduction-to-html:the-h1,-h2,-h3,-h4,-h5,-and-h6-elements-2" { - a href="#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - - "h1" - } - } - - " element, a " - code id="a-quick-introduction-to-html:the-p-element-2" { - a href="#the-p-element" { - - "p" - } - } - - " element, and a comment." - } - - "\n\n " - hr - - "\n\n " - p { - - "This DOM tree can be manipulated from scripts in the page. Scripts (typically in JavaScript)\n are small programs that can be embedded using the " - code id="a-quick-introduction-to-html:the-script-element" { - a href="#the-script-element" { - - "script" - } - } - - " element or using " - a href="#event-handler-content-attributes" id="a-quick-introduction-to-html:event-handler-content-attributes" { - - "event\n handler content attributes" - } - - ". For example, here is a form with a script that sets the value\n of the form's " - code id="a-quick-introduction-to-html:the-output-element" { - a href="#the-output-element" { - - "output" - } - } - - " element to say \"Hello World\":" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - a href="#the-form-element" id="a-quick-introduction-to-html:the-form-element" { - c- f="" { - - "form" - } - } - - " " - a href="#attr-form-name" id="a-quick-introduction-to-html:attr-form-name" { - c- e="" { - - "name" - } - } - c- o="" { - - "=" - } - c- s="" { - - "\"main\"" - } - c- p="" { - - ">" - } - - "\n Result: " - c- p="" { - - "<" - } - a href="#the-output-element" id="a-quick-introduction-to-html:the-output-element-2" { - c- f="" { - - "output" - } - } - - " " - a href="#attr-fe-name" id="a-quick-introduction-to-html:attr-fe-name" { - c- e="" { - - "name" - } - } - c- o="" { - - "=" - } - c- s="" { - - "\"result\"" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - a href="#the-script-element" id="a-quick-introduction-to-html:the-script-element-2" { - c- f="" { - - "script" - } - } - c- p="" { - - ">" - } - - "\n " - a href="#document" id="a-quick-introduction-to-html:document" { - - "document" - } - c- p="" { - - "." - } - a href="#dom-document-forms" id="a-quick-introduction-to-html:dom-document-forms" { - - "forms" - } - c- p="" { - - "." - } - - "main" - c- p="" { - - "." - } - a href="#dom-form-elements" id="a-quick-introduction-to-html:dom-form-elements" { - - "elements" - } - c- p="" { - - "." - } - - "result" - c- p="" { - - "." - } - a href="#dom-output-value" id="a-quick-introduction-to-html:dom-output-value" { - - "value" - } - - " " - c- o="" { - - "=" - } - - " " - c- t="" { - - "'Hello World'" - } - c- p="" { - - ";" - } - - "\n " - c- p="" { - - "" - } - - "\n" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "Each element in the DOM tree is represented by an object, and these objects have APIs so that\n they can be manipulated. For instance, a link (e.g. the " - code id="a-quick-introduction-to-html:the-a-element-3" { - a href="#the-a-element" { - - "a" - } - } - - " element in the tree above)\n can have its \"" - code id="a-quick-introduction-to-html:attr-hyperlink-href-3" { - a href="#attr-hyperlink-href" { - - "href" - } - } - - "\" attribute changed in several\n ways:" - } - - "\n\n " - pre { - code class="js" { - c- a="" { - - "var" - } - - " a " - c- o="" { - - "=" - } - - " " - a href="#document" id="a-quick-introduction-to-html:document-2" { - - "document" - } - c- p="" { - - "." - } - a href="#dom-document-links" id="a-quick-introduction-to-html:dom-document-links" { - - "links" - } - c- p="" { - - "[" - } - c- mf="" { - - "0" - } - c- p="" { - - "];" - } - - " " - c- c1="" { - - "// obtain the first link in the document" - } - - "\na" - c- p="" { - - "." - } - a href="#dom-hyperlink-href" id="a-quick-introduction-to-html:dom-hyperlink-href" { - - "href" - } - - " " - c- o="" { - - "=" - } - - " " - c- t="" { - - "'sample.html'" - } - c- p="" { - - ";" - } - - " " - c- c1="" { - - "// change the destination URL of the link" - } - - "\na" - c- p="" { - - "." - } - a href="#dom-hyperlink-protocol" id="a-quick-introduction-to-html:dom-hyperlink-protocol" { - - "protocol" - } - - " " - c- o="" { - - "=" - } - - " " - c- t="" { - - "'https'" - } - c- p="" { - - ";" - } - - " " - c- c1="" { - - "// change just the scheme part of the URL" - } - - "\na" - c- p="" { - - "." - } - - "setAttribute" - c- p="" { - - "(" - } - c- t="" { - - "'href'" - } - c- p="" { - - "," - } - - " " - c- t="" { - - "'https://example.com/'" - } - c- p="" { - - ");" - } - - " " - c- c1="" { - - "// change the content attribute directly" - } - } - } - - "\n\n " - p { - - "Since DOM trees are used as the way to represent HTML documents when they are processed and\n presented by implementations (especially interactive implementations like web browsers), this\n specification is mostly phrased in terms of DOM trees, instead of the markup described above." - } - - "\n\n " - hr - - "\n\n " - p { - - "HTML documents represent a media-independent description of interactive content. HTML documents\n might be rendered to a screen, or through a speech synthesizer, or on a braille display. To\n influence exactly how such rendering takes place, authors can use a styling language such as\n CSS." - } - - "\n\n " - p { - - "In the following example, the page has been made yellow-on-blue using CSS." - } - - "\n\n " - pre { - code class="html" { - c- cp="" { - - "" - } - - "\n" - c- p="" { - - "<" - } - c- f="" { - - "html" - } - - " " - c- e="" { - - "lang" - } - c- o="" { - - "=" - } - c- s="" { - - "\"en\"" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "head" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "title" - } - c- p="" { - - ">" - } - - "Sample styled page" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "style" - } - c- p="" { - - ">" - } - - "\n " - c- f="" { - - "body" - } - - " " - c- p="" { - - "{" - } - - " " - c- k="" { - - "background" - } - c- p="" { - - ":" - } - - " " - c- kc="" { - - "navy" - } - c- p="" { - - ";" - } - - " " - c- k="" { - - "color" - } - c- p="" { - - ":" - } - - " " - c- kc="" { - - "yellow" - } - c- p="" { - - ";" - } - - " " - c- p="" { - - "}" - } - - "\n " - c- p="" { - - "" - } - - "\n " - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "body" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "h1" - } - c- p="" { - - ">" - } - - "Sample styled page" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "This page is just a demo." - c- p="" { - - "" - } - - "\n " - c- p="" { - - "" - } - - "\n" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "For more details on how to use HTML, authors are encouraged to consult tutorials and guides.\n Some of the examples included in this specification might also be of use, but the novice author is\n cautioned that this specification, by necessity, defines the language with a level of detail that\n might be difficult to understand at first." - } - - "\n\n\n\n " - h4 id="writing-secure-applications-with-html" { - span class="secno" { - - "1.10.1" - } - - " Writing secure applications with HTML" - a href="#writing-secure-applications-with-html" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "When HTML is used to create interactive sites, care needs to be taken to avoid introducing\n vulnerabilities through which attackers can compromise the integrity of the site itself or of the\n site's users." - } - - "\n\n " - p { - - "A comprehensive study of this matter is beyond the scope of this document, and authors are\n strongly encouraged to study the matter in more detail. However, this section attempts to provide\n a quick introduction to some common pitfalls in HTML application development." - } - - "\n\n " - p { - - "The security model of the web is based on the concept of \"origins\", and correspondingly many of\n the potential attacks on the web involve cross-origin actions. " - a href="#refsORIGIN" { - - "[ORIGIN]" - } - } - - "\n\n " - dl { - dt { - - "Not validating user input" - } - dt { - - "Cross-site scripting (XSS)" - } - dt { - - "SQL injection" - } - dd { - - "\n " - p { - - "When accepting untrusted input, e.g. user-generated content such as text comments, values in\n URL parameters, messages from third-party sites, etc, it is imperative that the data be\n validated before use, and properly escaped when displayed. Failing to do this can allow a\n hostile user to perform a variety of attacks, ranging from the potentially benign, such as\n providing bogus user information like a negative age, to the serious, such as running scripts\n every time a user looks at a page that includes the information, potentially propagating the\n attack in the process, to the catastrophic, such as deleting all data in the server." - } - - "\n\n " - p { - - "When writing filters to validate user input, it is imperative that filters always be\n safelist-based, allowing known-safe constructs and disallowing all other input. Blocklist-based\n filters that disallow known-bad inputs and allow everything else are not secure, as not\n everything that is bad is yet known (for example, because it might be invented in the\n future)." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, suppose a page looked at its URL's query string to determine what to display,\n and the site then redirected the user to that page to display a message, as in:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "ul" - } - c- p="" { - - ">" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "li" - } - c- p="" { - - "><" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"message.cgi?say=Hello\"" - } - c- p="" { - - ">" - } - - "Say Hello" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "li" - } - c- p="" { - - "><" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"message.cgi?say=Welcome\"" - } - c- p="" { - - ">" - } - - "Say Welcome" - c- p="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "li" - } - c- p="" { - - "><" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"message.cgi?say=Kittens\"" - } - c- p="" { - - ">" - } - - "Say Kittens" - c- p="" { - - "" - } - - "\n" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "If the message was just displayed to the user without escaping, a hostile attacker could\n then craft a URL that contained a script element:" - } - - "\n\n " - pre { - - "https://example.com/message.cgi?say=%3Cscript%3Ealert%28%27Oh%20no%21%27%29%3C/script%3E" - } - - "\n\n " - p { - - "If the attacker then convinced a victim user to visit this page, a script of the attacker's\n choosing would run on the page. Such a script could do any number of hostile actions, limited\n only by what the site offers: if the site is an e-commerce shop, for instance, such a script\n could cause the user to unknowingly make arbitrarily many unwanted purchases." - } - - "\n\n " - p { - - "This is called a cross-site scripting attack." - } - - "\n\n " - } - - "\n\n " - p { - - "There are many constructs that can be used to try to trick a site into executing code. Here\n are some that authors are encouraged to consider when writing safelist filters:" - } - - "\n\n " - ul { - li { - - "When allowing harmless-seeming elements like " - code id="writing-secure-applications-with-html:the-img-element" { - a href="#the-img-element" { - - "img" - } - } - - ", it is important to safelist\n any provided attributes as well. If one allowed all attributes then an attacker could, for\n instance, use the " - code id="writing-secure-applications-with-html:handler-onload" { - a href="#handler-onload" { - - "onload" - } - } - - " attribute to run arbitrary\n script." - } - li { - - "When allowing URLs to be provided (e.g. for links), the scheme of each URL also needs to be\n explicitly safelisted, as there are many schemes that can be abused. The most prominent\n example is \"" - code id="writing-secure-applications-with-html:the-javascript:-url-special-case" { - a href="#the-javascript:-url-special-case" { - - "javascript:" - } - } - - "\", but user agents can\n implement (and indeed, have historically implemented) others." - } - li { - - "Allowing a " - code id="writing-secure-applications-with-html:the-base-element" { - a href="#the-base-element" { - - "base" - } - } - - " element to be inserted means any " - code id="writing-secure-applications-with-html:the-script-element" { - a href="#the-script-element" { - - "script" - } - } - - " elements\n in the page with relative links can be hijacked, and similarly that any form submissions can\n get redirected to a hostile site." - } - } - - "\n " - } - dt { - - "Cross-site request forgery (CSRF)" - } - dd { - - "\n " - p { - - "If a site allows a user to make form submissions with user-specific side-effects, for example\n posting messages on a forum under the user's name, making purchases, or applying for a passport,\n it is important to verify that the request was made by the user intentionally, rather than by\n another site tricking the user into making the request unknowingly." - } - - "\n\n " - p { - - "This problem exists because HTML forms can be submitted to other origins." - } - - "\n\n " - p { - - "Sites can prevent such attacks by populating forms with user-specific hidden tokens, or by\n checking `" - code id="writing-secure-applications-with-html:http-origin" { - a data-x-internal="http-origin" href="https://fetch.spec.whatwg.org/#http-origin" { - - "Origin" - } - } - - "` headers on all requests." - } - - "\n " - } - dt { - - "Clickjacking" - } - dd { - - "\n " - p { - - "A page that provides users with an interface to perform actions that the user might not wish\n to perform needs to be designed so as to avoid the possibility that users can be tricked into\n activating the interface." - } - - "\n\n " - p { - - "One way that a user could be so tricked is if a hostile site places the victim site in a\n small " - code id="writing-secure-applications-with-html:the-iframe-element" { - a href="#the-iframe-element" { - - "iframe" - } - } - - " and then convinces the user to click, for instance by having the user\n play a reaction game. Once the user is playing the game, the hostile site can quickly position\n the iframe under the mouse cursor just as the user is about to click, thus tricking the user\n into clicking the victim site's interface." - } - - "\n\n " - p { - - "To avoid this, sites that do not expect to be used in frames are encouraged to only enable\n their interface if they detect that they are not in a frame (e.g. by comparing the " - code id="writing-secure-applications-with-html:dom-window" { - a href="#dom-window" { - - "window" - } - } - - " object to the value of the " - code id="writing-secure-applications-with-html:dom-top" { - a href="#dom-top" { - - "top" - } - } - - "\n attribute)." - } - - "\n " - } - } - - "\n\n\n " - h4 id="common-pitfalls-to-avoid-when-using-the-scripting-apis" { - span class="secno" { - - "1.10.2" - } - - " Common pitfalls to avoid when using the scripting APIs" - a href="#common-pitfalls-to-avoid-when-using-the-scripting-apis" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "Scripts in HTML have \"run-to-completion\" semantics, meaning that the browser will generally run\n the script uninterrupted before doing anything else, such as firing further events or continuing\n to parse the document." - } - - "\n\n " - p { - - "On the other hand, parsing of HTML files happens incrementally, meaning that\n the parser can pause at any point to let scripts run. This is generally a good thing, but it does\n mean that authors need to be careful to avoid hooking event handlers after the events could have\n possibly fired." - } - - "\n\n " - p { - - "There are two techniques for doing this reliably: use " - a href="#event-handler-content-attributes" id="common-pitfalls-to-avoid-when-using-the-scripting-apis:event-handler-content-attributes" { - - "event handler content\n attributes" - } - - ", or create the element and add the event handlers in the same script. The latter\n is safe because, as mentioned earlier, scripts are run to completion before further events can\n fire." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "One way this could manifest itself is with " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:the-img-element" { - a href="#the-img-element" { - - "img" - } - } - - " elements and the " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:event-load" { - a href="#event-load" { - - "load" - } - } - - " event. The event could fire as soon as the element has been\n parsed, especially if the image has already been cached (which is common)." - } - - "\n\n " - p { - - "Here, the author uses the " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:handler-onload" { - a href="#handler-onload" { - - "onload" - } - } - - " handler on an\n " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:the-img-element-2" { - a href="#the-img-element" { - - "img" - } - } - - " element to catch the " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:event-load-2" { - a href="#event-load" { - - "load" - } - } - - " event:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "img" - } - - " " - c- e="" { - - "src" - } - c- o="" { - - "=" - } - c- s="" { - - "\"games.png\"" - } - - " " - c- e="" { - - "alt" - } - c- o="" { - - "=" - } - c- s="" { - - "\"Games\"" - } - - " " - c- e="" { - - "onload" - } - c- o="" { - - "=" - } - c- s="" { - - "\"gamesLogoHasLoaded(event)\"" - } - c- p="" { - - ">" - } - } - } - - "\n\n " - p { - - "If the element is being added by script, then so long as the event handlers are added in the\n same script, the event will still not be missed:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "script" - } - c- p="" { - - ">" - } - - "\n " - c- a="" { - - "var" - } - - " img " - c- o="" { - - "=" - } - - " " - c- k="" { - - "new" - } - - " Image" - c- p="" { - - "();" - } - - "\n img" - c- p="" { - - "." - } - - "src " - c- o="" { - - "=" - } - - " " - c- t="" { - - "'games.png'" - } - c- p="" { - - ";" - } - - "\n img" - c- p="" { - - "." - } - - "alt " - c- o="" { - - "=" - } - - " " - c- t="" { - - "'Games'" - } - c- p="" { - - ";" - } - - "\n img" - c- p="" { - - "." - } - - "onload " - c- o="" { - - "=" - } - - " gamesLogoHasLoaded" - c- p="" { - - ";" - } - - "\n " - c- c1="" { - - "// img.addEventListener('load', gamesLogoHasLoaded, false); // would work also" - } - - "\n" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "However, if the author first created the " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:the-img-element-3" { - a href="#the-img-element" { - - "img" - } - } - - " element and then in a separate\n script added the event listeners, there's a chance that the " - code id="common-pitfalls-to-avoid-when-using-the-scripting-apis:event-load-3" { - a href="#event-load" { - - "load" - } - } - - "\n event would be fired in between, leading it to be missed:" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- c="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "img" - } - - " " - c- e="" { - - "id" - } - c- o="" { - - "=" - } - c- s="" { - - "\"games\"" - } - - " " - c- e="" { - - "src" - } - c- o="" { - - "=" - } - c- s="" { - - "\"games.png\"" - } - - " " - c- e="" { - - "alt" - } - c- o="" { - - "=" - } - c- s="" { - - "\"Games\"" - } - c- p="" { - - ">" - } - - "\n " - c- c="" { - - "" - } - - "\n " - c- p="" { - - "<" - } - c- f="" { - - "script" - } - c- p="" { - - ">" - } - - "\n " - c- a="" { - - "var" - } - - " img " - c- o="" { - - "=" - } - - " document" - c- p="" { - - "." - } - - "getElementById" - c- p="" { - - "(" - } - c- t="" { - - "'games'" - } - c- p="" { - - ");" - } - - "\n img" - c- p="" { - - "." - } - - "onload " - c- o="" { - - "=" - } - - " gamesLogoHasLoaded" - c- p="" { - - ";" - } - - " " - c- c1="" { - - "// might never fire!" - } - - "\n " - c- p="" { - - "" - } - } - } - - "\n\n " - } - - "\n\n\n\n " - h4 id="how-to-catch-mistakes-when-writing-html:-validators-and-conformance-checkers" { - span class="secno" { - - "1.10.3" - } - - " How to catch mistakes when writing HTML: validators and conformance checkers" - a href="#how-to-catch-mistakes-when-writing-html:-validators-and-conformance-checkers" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "Authors are encouraged to make use of conformance checkers (also known as " - i { - - "validators" - } - - ") to\n catch common mistakes. The WHATWG maintains a list of such tools at: " - a href="https://whatwg.org/validator/" { - - "https://whatwg.org/validator/" - } - } - - "\n\n\n\n " - h3 id="conformance-requirements-for-authors" { - span class="secno" { - - "1.11" - } - - " Conformance requirements for authors" - a href="#conformance-requirements-for-authors" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "Unlike previous versions of the HTML specification, this specification defines in some detail\n the required processing for invalid documents as well as valid documents." - } - - " \n\n " - p { - - "However, even though the processing of invalid content is in most cases well-defined,\n conformance requirements for documents are still important: in practice, interoperability (the\n situation in which all implementations process particular content in a reliable and identical or\n equivalent way) is not the only goal of document conformance requirements. This section details\n some of the more common reasons for still distinguishing between a conforming document and one\n with errors." - } - - "\n\n\n " - h4 id="presentational-markup" { - span class="secno" { - - "1.11.1" - } - - " Presentational markup" - a href="#presentational-markup" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "The majority of presentational features from previous versions of HTML are no longer allowed.\n Presentational markup in general has been found to have a number of problems:" - } - - "\n\n " - dl { - dt { - - "The use of presentational elements leads to poorer accessibility" - } - dd { - - "\n " - p { - - "While it is possible to use presentational markup in a way that provides users of assistive\n technologies (ATs) with an acceptable experience (e.g. using ARIA), doing so is significantly\n more difficult than doing so when using semantically-appropriate markup. Furthermore, even using\n such techniques doesn't help make pages accessible for non-AT non-graphical users, such as users\n of text-mode browsers." - } - - "\n\n " - p { - - "Using media-independent markup, on the other hand, provides an easy way for documents to be\n authored in such a way that they work for more users (e.g. users of text browsers)." - } - - "\n " - } - dt { - - "Higher cost of maintenance" - } - dd { - - "\n " - p { - - "It is significantly easier to maintain a site written in such a way that the markup is\n style-independent. For example, changing the color of a site that uses " - code { - - "" - } - - " throughout requires changes across the entire site,\n whereas a similar change to a site based on CSS can be done by changing a single file." - } - - "\n " - } - dt { - - "Larger document sizes" - } - dd { - - "\n " - p { - - "Presentational markup tends to be much more redundant, and thus results in larger document\n sizes." - } - - "\n " - } - } - - "\n\n " - p { - - "For those reasons, presentational markup has been removed from HTML in this version. This\n change should not come as a surprise; HTML4 deprecated presentational markup many years ago and\n provided a mode (HTML4 Transitional) to help authors move away from presentational markup; later,\n XHTML 1.1 went further and obsoleted those features altogether." - } - - "\n\n " - p { - - "The only remaining presentational markup features in HTML are the " - code id="presentational-markup:attr-style" { - a href="#attr-style" { - - "style" - } - } - - " attribute and the " - code id="presentational-markup:the-style-element" { - a href="#the-style-element" { - - "style" - } - } - - " element. Use of the " - code id="presentational-markup:attr-style-2" { - a href="#attr-style" { - - "style" - } - } - - " attribute is somewhat discouraged in production environments, but\n it can be useful for rapid prototyping (where its rules can be directly moved into a separate\n style sheet later) and for providing specific styles in unusual cases where a separate style sheet\n would be inconvenient. Similarly, the " - code id="presentational-markup:the-style-element-2" { - a href="#the-style-element" { - - "style" - } - } - - " element can be useful in syndication or\n for page-specific styles, but in general an external style sheet is likely to be more convenient\n when the styles apply to multiple pages." - } - - "\n\n " - p { - - "It is also worth noting that some elements that were previously presentational have been\n redefined in this specification to be media-independent: " - code id="presentational-markup:the-b-element" { - a href="#the-b-element" { - - "b" - } - } - - ", " - code id="presentational-markup:the-i-element" { - a href="#the-i-element" { - - "i" - } - } - - ",\n " - code id="presentational-markup:the-hr-element" { - a href="#the-hr-element" { - - "hr" - } - } - - ", " - code id="presentational-markup:the-s-element" { - a href="#the-s-element" { - - "s" - } - } - - ", " - code id="presentational-markup:the-small-element" { - a href="#the-small-element" { - - "small" - } - } - - ", and " - code id="presentational-markup:the-u-element" { - a href="#the-u-element" { - - "u" - } - } - - "." - } - - "\n\n\n " - h4 id="syntax-errors" { - span class="secno" { - - "1.11.2" - } - - " Syntax errors" - a href="#syntax-errors" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "The syntax of HTML is constrained to avoid a wide variety of problems." - } - - "\n\n " - dl { - dt { - - "Unintuitive error-handling behavior" - } - dd { - - "\n " - p { - - "Certain invalid syntax constructs, when parsed, result in DOM trees that are highly\n unintuitive." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, the following markup fragment results in a DOM with an " - code id="syntax-errors:the-hr-element" { - a href="#the-hr-element" { - - "hr" - } - } - - " element\n that is an " - em { - - "earlier" - } - - " sibling of the corresponding " - code id="syntax-errors:the-table-element" { - a href="#the-table-element" { - - "table" - } - } - - " element:" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "table" - } - c- p="" { - - "><" - } - c- f="" { - - "hr" - } - c- p="" { - - ">" - } - - "..." - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors with optional error recovery" - } - dd { - - "\n " - p { - - "To allow user agents to be used in controlled environments without having to implement the\n more bizarre and convoluted error handling rules, user agents are permitted to fail whenever\n encountering a " - a href="#parse-errors" id="syntax-errors:parse-errors" { - - "parse error" - } - - "." - } - - "\n " - } - dt { - - "Errors where the error-handling behavior is not compatible with streaming user agents" - } - dd { - - "\n " - p { - - "Some error-handling behavior, such as the behavior for the " - code { - - "
..." - } - - " example mentioned above, are incompatible with streaming\n user agents (user agents that process HTML files in one pass, without storing state). To avoid\n interoperability problems with such user agents, any syntax resulting in such behavior is\n considered invalid." - } - - "\n " - } - dt { - - "Errors that can result in infoset coercion" - } - dd { - - "\n " - p { - - "When a user agent based on XML is connected to an HTML parser, it is possible that certain\n invariants that XML enforces, such as element or attribute names never contain multiple colons,\n will be violated by an HTML file. Handling this can require that the parser coerce the HTML DOM\n into an XML-compatible infoset. Most syntax constructs that require such handling are considered\n invalid. (Comments containing two consecutive hyphens, or ending with a hyphen, are exceptions\n that are allowed in the HTML syntax.)" - } - - "\n " - } - dt { - - "Errors that result in disproportionately poor performance" - } - dd { - - "\n " - p { - - "Certain syntax constructs can result in disproportionately poor performance. To discourage the\n use of such constructs, they are typically made non-conforming." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, the following markup results in poor performance, since all the unclosed\n " - code id="syntax-errors:the-i-element" { - a href="#the-i-element" { - - "i" - } - } - - " elements have to be reconstructed in each paragraph, resulting in progressively\n more elements in each paragraph:" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - "><" - } - c- f="" { - - "i" - } - c- p="" { - - ">" - } - - "She dreamt.\n" - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - "><" - } - c- f="" { - - "i" - } - c- p="" { - - ">" - } - - "She dreamt that she ate breakfast.\n" - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - "><" - } - c- f="" { - - "i" - } - c- p="" { - - ">" - } - - "Then lunch.\n" - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - "><" - } - c- f="" { - - "i" - } - c- p="" { - - ">" - } - - "And finally dinner." - } - } - - "\n\n " - p { - - "The resulting DOM for this fragment would be:" - } - - "\n\n " - ul class="domTree" { - li class="t1" { - code id="syntax-errors:the-p-element" { - a href="#the-p-element" { - - "p" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-2" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t3" { - code id="syntax-errors:text" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "She dreamt." - } - } - } - } - } - } - li class="t1" { - code id="syntax-errors:the-p-element-2" { - a href="#the-p-element" { - - "p" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-3" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-4" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t3" { - code id="syntax-errors:text-2" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "She dreamt that she ate breakfast." - } - } - } - } - } - } - } - } - li class="t1" { - code id="syntax-errors:the-p-element-3" { - a href="#the-p-element" { - - "p" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-5" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-6" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-7" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t3" { - code id="syntax-errors:text-3" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "Then lunch." - } - } - } - } - } - } - } - } - } - } - li class="t1" { - code id="syntax-errors:the-p-element-4" { - a href="#the-p-element" { - - "p" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-8" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-9" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-10" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t1" { - code id="syntax-errors:the-i-element-11" { - a href="#the-i-element" { - - "i" - } - } - ul { - li class="t3" { - code id="syntax-errors:text-4" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "#text" - } - } - - ": " - span { - - "And finally dinner." - } - } - } - } - } - } - } - } - } - } - } - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors involving fragile syntax constructs" - } - dd { - - "\n " - p { - - "There are syntax constructs that, for historical reasons, are relatively fragile. To help\n reduce the number of users who accidentally run into such problems, they are made\n non-conforming." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, the parsing of certain named character references in attributes happens even\n with the closing semicolon being omitted. It is safe to include an ampersand followed by\n letters that do not form a named character reference, but if the letters are changed to a\n string that " - em { - - "does" - } - - " form a named character reference, they will be interpreted as that\n character instead." - } - - "\n\n " - p { - - "In this fragment, the attribute's value is \"" - code { - - "?bill&ted" - } - - "\":" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"?bill&ted\"" - } - c- p="" { - - ">" - } - - "Bill and Ted" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "In the following fragment, however, the attribute's value is actually \"" - code { - - "?art©" - } - - "\", " - em { - - "not" - } - - " the intended \"" - code { - - "?art©" - } - - "\",\n because even without the final semicolon, \"" - code { - - "©" - } - - "\" is handled the same\n as \"" - code { - - "©" - } - - "\" and thus gets interpreted as \"" - code { - - "©" - } - - "\":" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"?art©\"" - } - c- p="" { - - ">" - } - - "Art and Copy" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "To avoid this problem, all named character references are required to end with a semicolon,\n and uses of named character references without a semicolon are flagged as errors." - } - - "\n\n " - p { - - "Thus, the correct way to express the above cases is as\n follows:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"?bill&ted\"" - } - c- p="" { - - ">" - } - - "Bill and Ted" - c- p="" { - - "" - } - - " " - c- c="" { - - "" - } - } - } - - "\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "a" - } - - " " - c- e="" { - - "href" - } - c- o="" { - - "=" - } - c- s="" { - - "\"?art&copy\"" - } - c- p="" { - - ">" - } - - "Art and Copy" - c- p="" { - - "" - } - - " " - c- c="" { - - "" - } - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors involving known interoperability problems in legacy user agents" - } - dd { - - "\n " - p { - - "Certain syntax constructs are known to cause especially subtle or serious problems in legacy\n user agents, and are therefore marked as non-conforming to help authors avoid them." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, this is why the U+0060 GRAVE ACCENT character (`) is not allowed in unquoted\n attributes. In certain legacy user agents, it is sometimes treated as a\n quote character." - } - - "\n\n " - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "Another example of this is the DOCTYPE, which is required to trigger " - a id="syntax-errors:no-quirks-mode" href="https://dom.spec.whatwg.org/#concept-document-no-quirks" data-x-internal="no-quirks-mode" { - - "no-quirks\n mode" - } - - ", because the behavior of legacy user agents in " - a id="syntax-errors:quirks-mode" href="https://dom.spec.whatwg.org/#concept-document-quirks" data-x-internal="quirks-mode" { - - "quirks mode" - } - - " is often\n largely undocumented." - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors that risk exposing authors to security attacks" - } - dd { - - "\n " - p { - - "Certain restrictions exist purely to avoid known security problems." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, the restriction on using UTF-7 exists purely to avoid authors falling prey to a\n known cross-site-scripting attack using UTF-7. " - a href="#refsUTF7" { - - "[UTF7]" - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Cases where the author's intent is unclear" - } - dd { - - "\n " - p { - - "Markup where the author's intent is very unclear is often made non-conforming. Correcting\n these errors early makes later maintenance easier." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, it is unclear whether the author intended the following to be an\n " - code id="syntax-errors:the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - a href="#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - - "h1" - } - } - - " heading or an " - code id="syntax-errors:the-h1,-h2,-h3,-h4,-h5,-and-h6-elements-2" { - a href="#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements" { - - "h2" - } - } - - " heading:" - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "h1" - } - c- p="" { - - ">" - } - - "Contact details" - c- p="" { - - "" - } - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Cases that are likely to be typos" - } - dd { - - "\n " - p { - - "When a user makes a simple typo, it is helpful if the error can be caught early, as this can\n save the author a lot of debugging time. This specification therefore usually considers it an\n error to use element names, attribute names, and so forth, that do not match the names defined\n in this specification." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, if the author typed " - code { - - "" - } - - " instead of " - code { - - "
" - } - - ", this would be flagged as an error and the author could correct\n the typo immediately." - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors that could interfere with new syntax in the future" - } - dd { - - "\n " - p { - - "In order to allow the language syntax to be extended in the future, certain otherwise\n harmless features are disallowed." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, \"attributes\" in end tags are ignored currently, but they are invalid, in case a\n future change to the language makes use of that syntax feature without conflicting with\n already-deployed (and valid!) content." - } - - "\n\n " - } - - "\n " - } - } - - "\n\n " - p { - - "Some authors find it helpful to be in the practice of always quoting all attributes and always\n including all optional tags, preferring the consistency derived from such custom over the minor\n benefits of terseness afforded by making use of the flexibility of the HTML syntax. To aid such\n authors, conformance checkers can provide modes of operation wherein such conventions are\n enforced." - } - - "\n\n\n\n " - h4 id="restrictions-on-content-models-and-on-attribute-values" { - span class="secno" { - - "1.11.3" - } - - " Restrictions on content models and on attribute values" - a href="#restrictions-on-content-models-and-on-attribute-values" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "Beyond the syntax of the language, this specification also places restrictions on how elements\n and attributes can be specified. These restrictions are present for similar reasons:" - } - - "\n\n " - dl { - dt { - - "Errors involving content with dubious semantics" - } - dd { - - "\n " - p { - - "To avoid misuse of elements with defined meanings, content models are defined that restrict\n how elements can be nested when such nestings would be of dubious value." - } - - "\n\n " - p class="example" { - - "For example, this specification disallows nesting a " - code id="restrictions-on-content-models-and-on-attribute-values:the-section-element" { - a href="#the-section-element" { - - "section" - } - } - - "\n element inside a " - code id="restrictions-on-content-models-and-on-attribute-values:the-kbd-element" { - a href="#the-kbd-element" { - - "kbd" - } - } - - " element, since it is highly unlikely for an author to indicate\n that an entire section should be keyed in." - } - - "\n " - } - dt { - - "Errors that involve a conflict in expressed semantics" - } - dd { - - "\n " - p { - - "Similarly, to draw the author's attention to mistakes in the use of elements, clear\n contradictions in the semantics expressed are also considered conformance errors." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "In the fragments below, for example, the semantics are nonsensical: a separator cannot\n simultaneously be a cell, nor can a radio button be a progress bar." - } - - "\n\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "hr" - } - - " " - c- e="" { - - "role" - } - c- o="" { - - "=" - } - c- s="" { - - "\"cell\"" - } - c- p="" { - - ">" - } - } - } - - "\n " - pre class="bad" { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "type" - } - c- o="" { - - "=" - } - c- s="" { - - "radio" - } - - " " - c- e="" { - - "role" - } - c- o="" { - - "=" - } - c- s="" { - - "progressbar" - } - c- p="" { - - ">" - } - } - } - - "\n\n " - } - - "\n\n " - p class="example" { - - "Another example is the restrictions on the content models of the\n " - code id="restrictions-on-content-models-and-on-attribute-values:the-ul-element" { - a href="#the-ul-element" { - - "ul" - } - } - - " element, which only allows " - code id="restrictions-on-content-models-and-on-attribute-values:the-li-element" { - a href="#the-li-element" { - - "li" - } - } - - " element children. Lists by definition\n consist just of zero or more list items, so if a " - code id="restrictions-on-content-models-and-on-attribute-values:the-ul-element-2" { - a href="#the-ul-element" { - - "ul" - } - } - - " element contains something\n other than an " - code id="restrictions-on-content-models-and-on-attribute-values:the-li-element-2" { - a href="#the-li-element" { - - "li" - } - } - - " element, it's not clear what was meant." - } - - "\n " - } - dt { - - "Cases where the default styles are likely to lead to confusion" - } - dd { - - "\n " - p { - - "Certain elements have default styles or behaviors that make certain combinations likely to\n lead to confusion. Where these have equivalent alternatives without this problem, the confusing\n combinations are disallowed." - } - - "\n\n " - p class="example" { - - "For example, " - code id="restrictions-on-content-models-and-on-attribute-values:the-div-element" { - a href="#the-div-element" { - - "div" - } - } - - " elements are rendered as " - a href="https://drafts.csswg.org/css2/#block-boxes%E2%91%A0" id="restrictions-on-content-models-and-on-attribute-values:block-box" data-x-internal="block-box" { - - "block boxes" - } - - ", and " - code id="restrictions-on-content-models-and-on-attribute-values:the-span-element" { - a href="#the-span-element" { - - "span" - } - } - - " elements as " - a href="https://drafts.csswg.org/css2/#inline-box" id="restrictions-on-content-models-and-on-attribute-values:inline-box" data-x-internal="inline-box" { - - "inline boxes" - } - - ". Putting a " - a id="restrictions-on-content-models-and-on-attribute-values:block-box-2" href="https://drafts.csswg.org/css2/#block-boxes%E2%91%A0" data-x-internal="block-box" { - - "block box" - } - - " in an\n " - a id="restrictions-on-content-models-and-on-attribute-values:inline-box-2" href="https://drafts.csswg.org/css2/#inline-box" data-x-internal="inline-box" { - - "inline box" - } - - " is unnecessarily confusing; since either nesting just " - code id="restrictions-on-content-models-and-on-attribute-values:the-div-element-2" { - a href="#the-div-element" { - - "div" - } - } - - "\n elements, or nesting just " - code id="restrictions-on-content-models-and-on-attribute-values:the-span-element-2" { - a href="#the-span-element" { - - "span" - } - } - - " elements, or nesting " - code id="restrictions-on-content-models-and-on-attribute-values:the-span-element-3" { - a href="#the-span-element" { - - "span" - } - } - - " elements\n inside " - code id="restrictions-on-content-models-and-on-attribute-values:the-div-element-3" { - a href="#the-div-element" { - - "div" - } - } - - " elements all serve the same purpose as nesting a " - code id="restrictions-on-content-models-and-on-attribute-values:the-div-element-4" { - a href="#the-div-element" { - - "div" - } - } - - "\n element in a " - code id="restrictions-on-content-models-and-on-attribute-values:the-span-element-4" { - a href="#the-span-element" { - - "span" - } - } - - " element, but only the latter involves a " - a id="restrictions-on-content-models-and-on-attribute-values:block-box-3" href="https://drafts.csswg.org/css2/#block-boxes%E2%91%A0" data-x-internal="block-box" { - - "block box" - } - - " in\n an " - a id="restrictions-on-content-models-and-on-attribute-values:inline-box-3" href="https://drafts.csswg.org/css2/#inline-box" data-x-internal="inline-box" { - - "inline box" - } - - ", the latter combination is disallowed." - } - - "\n\n " - p class="example" { - - "Another example would be the way " - a href="#interactive-content-2" id="restrictions-on-content-models-and-on-attribute-values:interactive-content-2" { - - "interactive content" - } - - " cannot be\n nested. For example, a " - code id="restrictions-on-content-models-and-on-attribute-values:the-button-element" { - a href="#the-button-element" { - - "button" - } - } - - " element cannot contain a " - code id="restrictions-on-content-models-and-on-attribute-values:the-textarea-element" { - a href="#the-textarea-element" { - - "textarea" - } - } - - "\n element. This is because the default behavior of such nesting interactive elements would be\n highly confusing to users. Instead of nesting these elements, they can be placed side by\n side." - } - - "\n " - } - dt { - - "Errors that indicate a likely misunderstanding of the specification" - } - dd { - - "\n " - p { - - "Sometimes, something is disallowed because allowing it would likely cause author\n confusion." - } - - "\n\n " - p class="example" { - - "For example, setting the " - code id="restrictions-on-content-models-and-on-attribute-values:attr-fe-disabled" { - a href="#attr-fe-disabled" { - - "disabled" - } - } - - "\n attribute to the value \"" - code { - - "false" - } - - "\" is disallowed, because despite the\n appearance of meaning that the element is enabled, it in fact means that the element is\n " - em { - - "disabled" - } - - " (what matters for implementations is the presence of the attribute, not its\n value)." - } - - "\n " - } - dt { - - "Errors involving limits that have been imposed merely to simplify the language" - } - dd { - - "\n " - p { - - "Some conformance errors simplify the language that authors need to learn." - } - - "\n\n " - p class="example" { - - "For example, the " - code id="restrictions-on-content-models-and-on-attribute-values:the-area-element" { - a href="#the-area-element" { - - "area" - } - } - - " element's " - code id="restrictions-on-content-models-and-on-attribute-values:attr-area-shape" { - a href="#attr-area-shape" { - - "shape" - } - } - - " attribute, despite accepting both " - code id="restrictions-on-content-models-and-on-attribute-values:attr-area-shape-keyword-circ" { - a href="#attr-area-shape-keyword-circ" { - - "circ" - } - } - - " and " - code id="restrictions-on-content-models-and-on-attribute-values:attr-area-shape-keyword-circle" { - a href="#attr-area-shape-keyword-circle" { - - "circle" - } - } - - " values in practice as synonyms, disallows\n the use of the " - code id="restrictions-on-content-models-and-on-attribute-values:attr-area-shape-keyword-circ-2" { - a href="#attr-area-shape-keyword-circ" { - - "circ" - } - } - - " value, so as to simplify\n tutorials and other learning aids. There would be no benefit to allowing both, but it would\n cause extra confusion when teaching the language." - } - - "\n " - } - dt { - - "Errors that involve peculiarities of the parser" - } - dd { - - "\n " - p { - - "Certain elements are parsed in somewhat eccentric ways (typically for historical reasons),\n and their content model restrictions are intended to avoid exposing the author to these\n issues." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "For example, a " - code id="restrictions-on-content-models-and-on-attribute-values:the-form-element" { - a href="#the-form-element" { - - "form" - } - } - - " element isn't allowed inside " - a href="#phrasing-content-2" id="restrictions-on-content-models-and-on-attribute-values:phrasing-content-2" { - - "phrasing content" - } - - ",\n because when parsed as HTML, a " - code id="restrictions-on-content-models-and-on-attribute-values:the-form-element-2" { - a href="#the-form-element" { - - "form" - } - } - - " element's start tag will imply a\n " - code id="restrictions-on-content-models-and-on-attribute-values:the-p-element" { - a href="#the-p-element" { - - "p" - } - } - - " element's end tag. Thus, the following markup results in two " - a href="#paragraph" id="restrictions-on-content-models-and-on-attribute-values:paragraph" { - - "paragraphs" - } - - ", not one:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "Welcome. " - c- p="" { - - "<" - } - c- f="" { - - "form" - } - c- p="" { - - "><" - } - c- f="" { - - "label" - } - c- p="" { - - ">" - } - - "Name:" - c- p="" { - - "" - } - - " " - c- p="" { - - "<" - } - c- f="" { - - "input" - } - c- p="" { - - ">" - } - } - } - - "\n\n " - p { - - "It is parsed exactly like the following:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "p" - } - c- p="" { - - ">" - } - - "Welcome. " - c- p="" { - - "<" - } - c- f="" { - - "form" - } - c- p="" { - - "><" - } - c- f="" { - - "label" - } - c- p="" { - - ">" - } - - "Name:" - c- p="" { - - "" - } - - " " - c- p="" { - - "<" - } - c- f="" { - - "input" - } - c- p="" { - - ">" - } - } - } - - "\n\n " - } - - "\n " - } - dt { - - "Errors that would likely result in scripts failing in hard-to-debug ways" - } - dd { - - "\n " - p { - - "Some errors are intended to help prevent script problems that would be hard to debug." - } - - "\n\n " - p class="example" { - - "This is why, for instance, it is non-conforming to have two " - code id="restrictions-on-content-models-and-on-attribute-values:the-id-attribute" { - a href="#the-id-attribute" { - - "id" - } - } - - " attributes with the same value. Duplicate IDs lead to the wrong\n element being selected, with sometimes disastrous effects whose cause is hard to determine." - } - - "\n " - } - dt { - - "Errors that waste authoring time" - } - dd { - - "\n " - p { - - "Some constructs are disallowed because historically they have been the cause of a lot of\n wasted authoring time, and by encouraging authors to avoid making them, authors can save time in\n future efforts." - } - - "\n\n " - p class="example" { - - "For example, a " - code id="restrictions-on-content-models-and-on-attribute-values:the-script-element" { - a href="#the-script-element" { - - "script" - } - } - - " element's " - code id="restrictions-on-content-models-and-on-attribute-values:attr-script-src" { - a href="#attr-script-src" { - - "src" - } - } - - " attribute causes the element's contents to be ignored.\n However, this isn't obvious, especially if the element's contents appear to be executable script\n — which can lead to authors spending a lot of time trying to debug the inline script\n without realizing that it is not executing. To reduce this problem, this specification makes it\n non-conforming to have executable script in a " - code id="restrictions-on-content-models-and-on-attribute-values:the-script-element-2" { - a href="#the-script-element" { - - "script" - } - } - - " element when the " - code id="restrictions-on-content-models-and-on-attribute-values:attr-script-src-2" { - a href="#attr-script-src" { - - "src" - } - } - - " attribute is present. This means that authors who are\n validating their documents are less likely to waste time with this kind of mistake." - } - - "\n " - } - dt { - - "Errors that involve areas that affect authors migrating between the HTML and XML\n syntaxes" - } - dd { - - "\n " - p { - - "Some authors like to write files that can be interpreted as both XML and HTML with similar\n results. Though this practice is discouraged in general due to the myriad of subtle\n complications involved (especially when involving scripting, styling, or any kind of automated\n serialization), this specification has a few restrictions intended to at least somewhat mitigate\n the difficulties. This makes it easier for authors to use this as a transitionary step when\n migrating between the HTML and XML syntaxes." - } - - "\n\n " - p class="example" { - - "For example, there are somewhat complicated rules surrounding the " - code id="restrictions-on-content-models-and-on-attribute-values:attr-lang" { - a href="#attr-lang" { - - "lang" - } - } - - " and " - code id="restrictions-on-content-models-and-on-attribute-values:attr-xml-lang" { - a data-x-internal="attr-xml-lang" href="https://www.w3.org/TR/xml/#sec-lang-tag" { - - "xml:lang" - } - } - - " attributes\n intended to keep the two synchronized." - } - - "\n\n " - p class="example" { - - "Another example would be the restrictions on the values of " - code { - - "xmlns" - } - - " attributes in the HTML serialization, which are intended to ensure that\n elements in conforming documents end up in the same namespaces whether processed as HTML or\n XML." - } - - "\n " - } - dt { - - "Errors that involve areas reserved for future expansion" - } - dd { - - "\n " - p { - - "As with the restrictions on the syntax intended to allow for new syntax in future revisions\n of the language, some restrictions on the content models of elements and values of attributes\n are intended to allow for future expansion of the HTML vocabulary." - } - - "\n\n " - p class="example" { - - "For example, limiting the values of the " - code id="restrictions-on-content-models-and-on-attribute-values:attr-hyperlink-target" { - a href="#attr-hyperlink-target" { - - "target" - } - } - - " attribute that start with an U+005F LOW LINE\n character (_) to only specific predefined values allows new predefined values to be introduced\n at a future time without conflicting with author-defined values." - } - - "\n " - } - dt { - - "Errors that indicate a mis-use of other specifications" - } - dd { - - "\n " - p { - - "Certain restrictions are intended to support the restrictions made by other\n specifications." - } - - "\n\n " - p class="example" { - - "For example, requiring that attributes that take media query lists use only\n " - em { - - "valid" - } - - " media query lists reinforces the importance of following the conformance rules of\n that specification." - } - - "\n " - } - } - - "\n\n\n\n " - h3 id="suggested-reading" { - span class="secno" { - - "1.12" - } - - " Suggested reading" - a href="#suggested-reading" class="self-link" - } - - "\n\n " - p { - i { - - "This section is non-normative." - } - } - - "\n\n " - p { - - "The following documents might be of interest to readers of this specification." - } - - "\n\n " - dl { - dt { - cite { - - "Character Model for the World Wide Web 1.0: Fundamentals" - } - - " " - a href="#refsCHARMOD" { - - "[CHARMOD]" - } - } - dd { - blockquote { - p { - - "This Architectural Specification provides authors of specifications, software\n developers, and content developers with a common reference for interoperable text manipulation on\n the World Wide Web, building on the Universal Character Set, defined jointly by the Unicode\n Standard and ISO/IEC 10646. Topics addressed include use of the terms 'character', 'encoding' and\n 'string', a reference processing model, choice and identification of character encodings,\n character escaping, and string indexing." - } - } - } - dt { - cite { - - "Unicode Security Considerations" - } - - " " - a href="#refsUTR36" { - - "[UTR36]" - } - } - dd { - blockquote { - p { - - "Because Unicode contains such a large number of characters and incorporates\n the varied writing systems of the world, incorrect usage can expose programs or systems to\n possible security attacks. This is especially important as more and more products are\n internationalized. This document describes some of the security considerations that programmers,\n system analysts, standards developers, and users should take into account, and provides specific\n recommendations to reduce the risk of problems." - } - } - } - dt { - cite { - - "Web Content Accessibility Guidelines (WCAG)" - } - - " " - a href="#refsWCAG" { - - "[WCAG]" - } - } - dd { - blockquote { - p { - - "Web Content Accessibility Guidelines (WCAG) covers a wide range of\n recommendations for making web content more accessible. Following these guidelines will make\n content accessible to a wider range of people with disabilities, including blindness and low\n vision, deafness and hearing loss, learning disabilities, cognitive limitations, limited\n movement, speech disabilities, photosensitivity and combinations of these. Following these\n guidelines will also often make your web content more usable to users in\n general." - } - } - } - dt { - cite { - - "Authoring Tool Accessibility Guidelines (ATAG) 2.0" - } - - " " - a href="#refsATAG" { - - "[ATAG]" - } - } - dd { - blockquote { - p { - - "This specification provides guidelines for designing web content\n authoring tools that are more accessible for people with disabilities. An authoring tool that\n conforms to these guidelines will promote accessibility by providing an accessible user interface\n to authors with disabilities as well as by enabling, supporting, and promoting the production of\n accessible web content by all authors." - } - } - } - dt { - cite { - - "User Agent Accessibility Guidelines (UAAG) 2.0" - } - - " " - a href="#refsUAAG" { - - "[UAAG]" - } - } - dd { - blockquote { - p { - - "This document provides guidelines for designing user agents that\n lower barriers to web accessibility for people with disabilities. User agents include browsers\n and other types of software that retrieve and render web content. A user agent that conforms to\n these guidelines will promote accessibility through its own user interface and through other\n internal facilities, including its ability to communicate with other technologies (especially\n assistive technologies). Furthermore, all users, not just users with disabilities, should find\n conforming user agents to be more usable." - } - } - } - } - - "\n\n\n\n " - h2 id="infrastructure" { - span class="secno" { - - "2" - } - - " Common infrastructure" - a href="#infrastructure" class="self-link" - } - - "\n\n " - p { - - "This specification depends on " - cite { - - "Infra" - } - - ". " - a href="#refsINFRA" { - - "[INFRA]" - } - } - - "\n\n " - h3 id="terminology" { - span class="secno" { - - "2.1" - } - - " Terminology" - a href="#terminology" class="self-link" - } - - "\n\n " - p { - - "This specification refers to both HTML and XML attributes and IDL attributes, often in the same\n context. When it is not clear which is being referred to, they are referred to as " - dfn data-lt="content attribute" data-export="" { - - "content attributes" - } - - " for HTML and XML attributes,\n and " - dfn { - - "IDL attributes" - } - - " for those defined on IDL interfaces. Similarly, the term\n \"properties\" is used for both JavaScript object properties and CSS properties. When these are\n ambiguous they are qualified as " - dfn { - - "object properties" - } - - " and " - dfn { - - "CSS properties" - } - - " respectively." - } - - "\n\n " - p { - - "Generally, when the specification states that a feature applies to " - a href="#syntax" id="terminology:syntax" { - - "the HTML syntax" - } - - "\n or " - a href="#the-xhtml-syntax" id="terminology:the-xhtml-syntax" { - - "the XML syntax" - } - - ", it also includes the other. When a feature specifically only\n applies to one of the two languages, it is called out by explicitly stating that it does not apply\n to the other format, as in \"for HTML, ... (this does not apply to XML)\"." - } - - "\n\n " - p { - - "This specification uses the term " - dfn { - - "document" - } - - " to refer to any use of HTML,\n ranging from short static documents to long essays or reports with rich multimedia, as well as to\n fully-fledged interactive applications. The term is used to refer both to " - code id="terminology:document" { - a href="#document" { - - "Document" - } - } - - "\n objects and their descendant DOM trees, and to serialized byte streams using the " - a href="#syntax" id="terminology:syntax-2" { - - "HTML syntax" - } - - " or the " - a href="#the-xhtml-syntax" id="terminology:the-xhtml-syntax-2" { - - "XML syntax" - } - - ", depending\n on context." - } - - "\n\n " - p { - - "In the context of the DOM structures, the terms " - a href="https://dom.spec.whatwg.org/#html-document" id="terminology:html-documents" data-x-internal="html-documents" { - - "HTML\n document" - } - - " and " - a href="https://dom.spec.whatwg.org/#xml-document" id="terminology:xml-documents" data-x-internal="xml-documents" { - - "XML document" - } - - " are used as defined in\n " - cite { - - "DOM" - } - - ", and refer specifically to two different modes that " - code id="terminology:document-2" { - a href="#document" { - - "Document" - } - } - - " objects\n can find themselves in. " - a href="#refsDOM" { - - "[DOM]" - } - - " (Such uses are always hyperlinked to their\n definition.)" - } - - "\n\n " - p { - - "In the context of byte streams, the term HTML document refers to resources labeled as\n " - code id="terminology:text/html" { - a href="#text/html" { - - "text/html" - } - } - - ", and the term XML document refers to resources labeled with an " - a id="terminology:xml-mime-type" href="https://mimesniff.spec.whatwg.org/#xml-mime-type" data-x-internal="xml-mime-type" { - - "XML\n MIME type" - } - - "." - } - - "\n\n " - hr - - "\n\n " - p { - - "For simplicity, terms such as " - dfn { - - "shown" - } - - ", " - dfn { - - "displayed" - } - - ", and\n " - dfn { - - "visible" - } - - " might sometimes be used when referring to the way a document is\n rendered to the user. These terms are not meant to imply a visual medium; they must be considered\n to apply to other media in equivalent ways." - } - - "\n\n\n \n\n " - h4 id="parallelism" { - span class="secno" { - - "2.1.1" - } - - " Parallelism" - a href="#parallelism" class="self-link" - } - - "\n\n " - p { - - "To run steps " - dfn id="in-parallel" data-export="" { - - "in parallel" - } - - " means those steps are to be run, one after another,\n at the same time as other logic in the standard (e.g., at the same time as the " - a href="#event-loop" id="parallelism:event-loop" { - - "event\n loop" - } - - "). This standard does not define the precise mechanism by which this is achieved, be it\n time-sharing cooperative multitasking, fibers, threads, processes, using different hyperthreads,\n cores, CPUs, machines, etc. By contrast, an operation that is to run " - dfn id="immediately" { - - "immediately" - } - - " must\n interrupt the currently running task, run itself, and then resume the previously running task." - } - - "\n\n " - p class="note" { - - "For guidance on writing specifications that leverage parallelism, see " - a href="#event-loop-for-spec-authors" { - - "Dealing with the event loop from other specifications" - } - - "." - } - - "\n\n " - p { - - "To avoid race conditions between different " - a href="#in-parallel" id="parallelism:in-parallel" { - - "in parallel" - } - - " algorithms that operate on\n the same data, a " - a href="#parallel-queue" id="parallelism:parallel-queue" { - - "parallel queue" - } - - " can be used." - } - - "\n\n " - p { - - "A " - dfn id="parallel-queue" data-export="" { - - "parallel queue" - } - - " represents a queue of algorithm steps that must be run in\n series." - } - - "\n\n " - p { - - "A " - a href="#parallel-queue" id="parallelism:parallel-queue-2" { - - "parallel queue" - } - - " has an " - dfn id="algorithm-queue" { - - "algorithm queue" - } - - " (a " - a id="parallelism:queue" href="https://infra.spec.whatwg.org/#queue" data-x-internal="queue" { - - "queue" - } - - "),\n initially empty." - } - - "\n\n " - p { - - "To " - dfn data-dfn-for="parallel queue" id="enqueue-the-following-steps" data-lt="enqueue steps|enqueue the following\n steps" data-export="" { - - "enqueue steps" - } - - " to a " - a href="#parallel-queue" id="parallelism:parallel-queue-3" { - - "parallel queue" - } - - ",\n " - a id="parallelism:enqueue" href="https://infra.spec.whatwg.org/#queue-enqueue" data-x-internal="enqueue" { - - "enqueue" - } - - " the algorithm steps to the " - a href="#parallel-queue" id="parallelism:parallel-queue-4" { - - "parallel queue" - } - - "'s " - a href="#algorithm-queue" id="parallelism:algorithm-queue" { - - "algorithm\n queue" - } - - "." - } - - "\n\n " - p { - - "To " - dfn id="starting-a-new-parallel-queue" data-lt="start a new parallel queue|starting a\n new parallel queue" data-export="" { - - "start a new parallel queue" - } - - ", run the following steps:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "parallelQueue" - } - - " be a new " - a href="#parallel-queue" id="parallelism:parallel-queue-5" { - - "parallel queue" - } - - "." - } - } - li { - - "\n " - p { - - "Run the following steps " - a href="#in-parallel" id="parallelism:in-parallel-2" { - - "in parallel" - } - - ":" - } - - "\n\n " - ol { - li { - - "\n " - p { - - "While true:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "steps" - } - - " be the result of " - a href="https://infra.spec.whatwg.org/#queue-dequeue" id="parallelism:dequeue" data-x-internal="dequeue" { - - "dequeueing" - } - - " from\n " - var { - - "parallelQueue" - } - - "'s " - a href="#algorithm-queue" id="parallelism:algorithm-queue-2" { - - "algorithm queue" - } - - "." - } - } - li { - p { - - "If " - var { - - "steps" - } - - " is not nothing, then run " - var { - - "steps" - } - - "." - } - } - li { - p { - a id="parallelism:assert" href="https://infra.spec.whatwg.org/#assert" data-x-internal="assert" { - - "Assert" - } - - ": running " - var { - - "steps" - } - - " did not throw an exception, as steps\n running " - a href="#in-parallel" id="parallelism:in-parallel-3" { - - "in parallel" - } - - " are not allowed to throw." - } - } - } - - "\n\n " - p class="note" { - - "Implementations are not expected to implement this as a continuously running\n loop. Algorithms in standards are to be easy to understand and are not necessarily great for\n battery life or performance." - } - - "\n " - } - } - - "\n " - } - li { - p { - - "Return " - var { - - "parallelQueue" - } - - "." - } - } - } - - "\n\n " - p class="note" { - - "Steps running " - a href="#in-parallel" id="parallelism:in-parallel-4" { - - "in parallel" - } - - " can themselves run other steps in " - a href="#in-parallel" id="parallelism:in-parallel-5" { - - "in\n parallel" - } - - ". E.g., inside a " - a href="#parallel-queue" id="parallelism:parallel-queue-6" { - - "parallel queue" - } - - " it can be useful to run a series of\n steps in parallel with the queue." - } - - "\n\n " - div class="example" { - - "\n " - p { - - "Imagine a standard defined " - var { - - "nameList" - } - - " (a " - a id="parallelism:list" href="https://infra.spec.whatwg.org/#list" data-x-internal="list" { - - "list" - } - - "), along with a method to\n add a " - var { - - "name" - } - - " to " - var { - - "nameList" - } - - ", unless " - var { - - "nameList" - } - - " already " - a href="https://infra.spec.whatwg.org/#list-contain" id="parallelism:list-contains" data-x-internal="list-contains" { - - "contains" - } - - " " - var { - - "name" - } - - ", in which case it rejects." - } - - "\n\n " - p { - - "The following solution suffers from race conditions:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "p" - } - - " be a new promise created in " - a id="parallelism:this" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-realm" id="parallelism:concept-relevant-realm" { - - "relevant realm" - } - - "." - } - } - li { - - "\n " - p { - - "Run the following steps " - a href="#in-parallel" id="parallelism:in-parallel-6" { - - "in parallel" - } - - ":" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "nameList" - } - - " " - a href="https://infra.spec.whatwg.org/#list-contain" id="parallelism:list-contains-2" data-x-internal="list-contains" { - - "contains" - } - - " " - var { - - "name" - } - - ",\n then " - a href="#queue-a-global-task" id="parallelism:queue-a-global-task" { - - "queue a global task" - } - - " on the " - a href="#dom-manipulation-task-source" id="parallelism:dom-manipulation-task-source" { - - "DOM manipulation task source" - } - - " given\n " - a id="parallelism:this-2" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-global" id="parallelism:concept-relevant-global" { - - "relevant global object" - } - - " to reject " - var { - - "p" - } - - " with a\n " - code id="parallelism:typeerror" { - a data-x-internal="typeerror" href="https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" { - - "TypeError" - } - } - - ", and abort these steps." - } - } - li { - p { - - "Do some potentially lengthy work." - } - } - li { - p { - a href="https://infra.spec.whatwg.org/#list-append" id="parallelism:list-append" data-x-internal="list-append" { - - "Append" - } - - " " - var { - - "name" - } - - " to\n " - var { - - "nameList" - } - - "." - } - } - li { - p { - a href="#queue-a-global-task" id="parallelism:queue-a-global-task-2" { - - "Queue a global task" - } - - " on the " - a href="#dom-manipulation-task-source" id="parallelism:dom-manipulation-task-source-2" { - - "DOM manipulation task source" - } - - "\n given " - a id="parallelism:this-3" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-global" id="parallelism:concept-relevant-global-2" { - - "relevant global object" - } - - " to resolve " - var { - - "p" - } - - " with\n undefined." - } - } - } - - "\n " - } - li { - p { - - "Return " - var { - - "p" - } - - "." - } - } - } - - "\n\n " - p { - - "Two invocations of the above could run simultaneously, meaning " - var { - - "name" - } - - " isn't in\n " - var { - - "nameList" - } - - " during step 2.1, but it " - em { - - "might be added" - } - - " before step 2.3 runs,\n meaning " - var { - - "name" - } - - " ends up in " - var { - - "nameList" - } - - " twice." - } - - "\n\n " - p { - - "Parallel queues solve this. The standard would let " - var { - - "nameListQueue" - } - - " be the result of\n " - a href="#starting-a-new-parallel-queue" id="parallelism:starting-a-new-parallel-queue" { - - "starting a new parallel queue" - } - - ", then:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "p" - } - - " be a new promise created in " - a id="parallelism:this-4" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-realm" id="parallelism:concept-relevant-realm-2" { - - "relevant realm" - } - - "." - } - } - li { - - "\n " - p { - mark { - a href="#enqueue-the-following-steps" id="parallelism:enqueue-the-following-steps" { - - "Enqueue the following steps" - } - - " to " - var { - - "nameListQueue" - } - - ":" - } - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "nameList" - } - - " " - a href="https://infra.spec.whatwg.org/#list-contain" id="parallelism:list-contains-3" data-x-internal="list-contains" { - - "contains" - } - - " " - var { - - "name" - } - - ",\n then " - a href="#queue-a-global-task" id="parallelism:queue-a-global-task-3" { - - "queue a global task" - } - - " on the " - a href="#dom-manipulation-task-source" id="parallelism:dom-manipulation-task-source-3" { - - "DOM manipulation task source" - } - - " given\n " - a id="parallelism:this-5" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-global" id="parallelism:concept-relevant-global-3" { - - "relevant global object" - } - - " to reject " - var { - - "p" - } - - " with a\n " - code id="parallelism:typeerror-2" { - a data-x-internal="typeerror" href="https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" { - - "TypeError" - } - } - - ", and abort these steps." - } - } - li { - p { - - "Do some potentially lengthy work." - } - } - li { - p { - a href="https://infra.spec.whatwg.org/#list-append" id="parallelism:list-append-2" data-x-internal="list-append" { - - "Append" - } - - " " - var { - - "name" - } - - " to\n " - var { - - "nameList" - } - - "." - } - } - li { - p { - a href="#queue-a-global-task" id="parallelism:queue-a-global-task-4" { - - "Queue a global task" - } - - " on the " - a href="#dom-manipulation-task-source" id="parallelism:dom-manipulation-task-source-4" { - - "DOM manipulation task source" - } - - "\n given " - a id="parallelism:this-6" href="https://webidl.spec.whatwg.org/#this" data-x-internal="this" { - - "this" - } - - "'s " - a href="#concept-relevant-global" id="parallelism:concept-relevant-global-4" { - - "relevant global object" - } - - " to resolve " - var { - - "p" - } - - " with\n undefined." - } - } - } - - "\n " - } - li { - p { - - "Return " - var { - - "p" - } - - "." - } - } - } - - "\n\n " - p { - - "The steps would now queue and the race is avoided." - } - - "\n " - } - - "\n\n \n\n\n " - h4 id="resources" { - span class="secno" { - - "2.1.2" - } - - " Resources" - a href="#resources" class="self-link" - } - - "\n\n " - p { - - "The specification uses the term " - dfn { - - "supported" - } - - " when referring to whether a user\n agent has an implementation capable of decoding the semantics of an external resource. A format or\n type is said to be " - i { - - "supported" - } - - " if the implementation can process an external resource of that\n format or type without critical aspects of the resource being ignored. Whether a specific resource\n is " - i { - - "supported" - } - - " can depend on what features of the resource's format are in use." - } - - "\n\n " - p class="example" { - - "For example, a PNG image would be considered to be in a supported format if its\n pixel data could be decoded and rendered, even if, unbeknownst to the implementation, the image\n also contained animation data." - } - - "\n\n " - p class="example" { - - "An MPEG-4 video file would not be considered to be in a supported format if the\n compression format used was not supported, even if the implementation could determine the\n dimensions of the movie from the file's metadata." - } - - "\n\n " - p { - - "What some specifications, in particular the HTTP specifications, refer to as a\n " - i { - - "representation" - } - - " is referred to in this specification as a " - dfn { - - "resource" - } - - ".\n " - a href="#refsHTTP" { - - "[HTTP]" - } - } - - "\n\n " - p { - - "A resource's " - dfn id="critical-subresources" { - - "critical subresources" - } - - " are those that the resource needs to have\n available to be correctly processed. Which resources are considered critical or not is defined by\n the specification that defines the resource's format." - } - - "\n\n " - p { - - "For " - a href="https://drafts.csswg.org/cssom/#css-style-sheet" id="resources:css-style-sheet" data-x-internal="css-style-sheet" { - - "CSS style sheets" - } - - ", we tentatively define here that\n their critical subresources are other style sheets imported via " - code { - - "@import" - } - - "\n rules, including those indirectly imported by other imported style sheets." - } - - "\n\n " - p class="XXX" { - - "This definition is not fully interoperable; furthermore, some user agents seem to\n count resources like background images or web fonts as critical subresources. Ideally, the CSS\n Working Group would define this; see " - a href="https://github.com/w3c/csswg-drafts/issues/1088" { - - "w3c/csswg-drafts issue #1088" - } - - " to track\n progress on that front." - } - - "\n\n\n " - h4 id="xml" { - span class="secno" { - - "2.1.3" - } - - " XML compatibility" - a href="#xml" class="self-link" - } - - "\n\n " - p id="html-namespace" { - - "To ease migration from HTML to XML, user agents conforming to this\n specification will place elements in HTML in the " - code id="xml:html-namespace-2" { - a data-x-internal="html-namespace-2" href="https://infra.spec.whatwg.org/#html-namespace" { - - "http://www.w3.org/1999/xhtml" - } - } - - " namespace, at least for the purposes of the DOM and\n CSS. The term \"" - dfn id="html-elements" data-export="" { - - "HTML elements" - } - - "\" refers to any element in that namespace, even in\n XML documents." - } - - "\n\n " - p { - - "Except where otherwise stated, all elements defined or mentioned in this specification are in\n the " - a id="xml:html-namespace-2-2" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - " (\"" - code { - - "http://www.w3.org/1999/xhtml" - } - - "\"), and all\n attributes defined or mentioned in this specification have no namespace." - } - - "\n\n " - p { - - "The term " - dfn id="element-type" { - - "element type" - } - - " is used to refer to the set of elements that have a given\n local name and namespace. For example, " - code id="xml:the-button-element" { - a href="#the-button-element" { - - "button" - } - } - - " elements are elements with the element\n type " - code id="xml:the-button-element-2" { - a href="#the-button-element" { - - "button" - } - } - - ", meaning they have the local name \"" - code { - - "button" - } - - "\" and\n (implicitly as defined above) the " - a id="xml:html-namespace-2-3" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - "." - } - - "\n\n " - p { - - "Attribute names are said to be " - dfn id="xml-compatible" { - - "XML-compatible" - } - - " if they match the " - code id="xml:xml-name" { - a data-x-internal="xml-name" href="https://www.w3.org/TR/xml/#NT-Name" { - - "Name" - } - } - - " production defined in XML and they contain no U+003A COLON\n characters (:). " - a href="#refsXML" { - - "[XML]" - } - } - - "\n\n\n " - h4 id="dom-trees" { - span class="secno" { - - "2.1.4" - } - - " DOM trees" - a href="#dom-trees" class="self-link" - } - - "\n\n " - p { - - "When it is stated that some element or attribute is " - dfn id="ignore" { - - "ignored" - } - - ", or\n treated as some other value, or handled as if it was something else, this refers only to the\n processing of the node after it is in the DOM. A user agent must not mutate the\n DOM in such situations." - } - - "\n\n " - p { - - "A content attribute is said to " - dfn { - - "change" - } - - " value only if its new value is\n different than its previous value; setting an attribute to a value it already has does not change\n it." - } - - "\n\n " - p { - - "The term " - dfn { - - "empty" - } - - ", when used for an attribute value, " - code id="dom-trees:text" { - a data-x-internal="text" href="https://dom.spec.whatwg.org/#interface-text" { - - "Text" - } - } - - " node,\n or string, means that the " - a id="dom-trees:length" href="https://infra.spec.whatwg.org/#string-length" data-x-internal="length" { - - "length" - } - - " of the text is zero (i.e., not even containing " - a href="https://infra.spec.whatwg.org/#control" id="dom-trees:control" data-x-internal="control" { - - "controls" - } - - " or U+0020 SPACE)." - } - - "\n\n " - p { - - "An HTML element can have specific " - dfn id="html-element-insertion-steps" { - - "HTML element insertion steps" - } - - ", " - dfn id="html-element-post-connection-steps" { - - "HTML element\n post-connection steps" - } - - ", and " - dfn id="html-element-removing-steps" { - - "HTML element removing steps" - } - - ", all defined for the\n element's " - a href="https://dom.spec.whatwg.org/#concept-element-local-name" id="dom-trees:concept-element-local-name" data-x-internal="concept-element-local-name" { - - "local name" - } - - "." - } - - "\n\n " - p { - - "The " - a href="https://dom.spec.whatwg.org/#concept-node-insert-ext" id="dom-trees:concept-node-insert-ext" data-x-internal="concept-node-insert-ext" { - - "insertion steps" - } - - " for the HTML Standard, given\n " - var { - - "insertedNode" - } - - ", are defined as the following:" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "insertedNode" - } - - " is an element whose " - a href="https://dom.spec.whatwg.org/#concept-element-namespace" id="dom-trees:concept-element-namespace" data-x-internal="concept-element-namespace" { - - "namespace" - } - - " is the " - a id="dom-trees:html-namespace-2" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - ", and this\n standard defines " - a href="#html-element-insertion-steps" id="dom-trees:html-element-insertion-steps" { - - "HTML element insertion steps" - } - - "\n for " - var { - - "insertedNode" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-element-local-name" id="dom-trees:concept-element-local-name-2" data-x-internal="concept-element-local-name" { - - "local name" - } - - ", then\n run the corresponding " - a href="#html-element-insertion-steps" id="dom-trees:html-element-insertion-steps-2" { - - "HTML element insertion steps" - } - - " given\n " - var { - - "insertedNode" - } - - "." - } - } - li { - - "\n " - p { - - "If " - var { - - "insertedNode" - } - - " is a " - a href="#form-associated-element" id="dom-trees:form-associated-element" { - - "form-associated element" - } - - " or the ancestor of a\n " - a href="#form-associated-element" id="dom-trees:form-associated-element-2" { - - "form-associated element" - } - - ", then:" - } - - "\n\n " - ol { - li { - p { - - "If the " - a href="#form-associated-element" id="dom-trees:form-associated-element-3" { - - "form-associated element" - } - - "'s " - a href="#parser-inserted-flag" id="dom-trees:parser-inserted-flag" { - - "parser inserted flag" - } - - " is set,\n then return." - } - } - li { - p { - a href="#reset-the-form-owner" id="dom-trees:reset-the-form-owner" { - - "Reset the form owner" - } - - " of the " - a href="#form-associated-element" id="dom-trees:form-associated-element-4" { - - "form-associated element" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "If " - var { - - "insertedNode" - } - - " is an " - code id="dom-trees:element" { - a data-x-internal="element" href="https://dom.spec.whatwg.org/#interface-element" { - - "Element" - } - } - - " that is not on the\n " - a href="#stack-of-open-elements" id="dom-trees:stack-of-open-elements" { - - "stack of open elements" - } - - " of an " - a href="#html-parser" id="dom-trees:html-parser" { - - "HTML parser" - } - - ", then\n " - a href="#process-internal-resource-links" id="dom-trees:process-internal-resource-links" { - - "process internal resource links" - } - - " given " - var { - - "insertedNode" - } - - "'s\n " - a id="dom-trees:node-document" href="https://dom.spec.whatwg.org/#concept-node-document" data-x-internal="node-document" { - - "node document" - } - - "." - } - } - } - - "\n\n " - p { - - "The " - a href="https://dom.spec.whatwg.org/#concept-node-post-connection-ext" id="dom-trees:concept-node-post-connection-ext" data-x-internal="concept-node-post-connection-ext" { - - "post-connection steps" - } - - " for the HTML\n Standard, given " - var { - - "insertedNode" - } - - ", are defined as the following:" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "insertedNode" - } - - " is an element whose " - a href="https://dom.spec.whatwg.org/#concept-element-namespace" id="dom-trees:concept-element-namespace-2" data-x-internal="concept-element-namespace" { - - "namespace" - } - - " is the " - a id="dom-trees:html-namespace-2-2" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - ", and this\n standard defines " - a href="#html-element-post-connection-steps" id="dom-trees:html-element-post-connection-steps" { - - "HTML element post-connection\n steps" - } - - " for " - var { - - "insertedNode" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-element-local-name" id="dom-trees:concept-element-local-name-3" data-x-internal="concept-element-local-name" { - - "local\n name" - } - - ", then run the corresponding " - a href="#html-element-post-connection-steps" id="dom-trees:html-element-post-connection-steps-2" { - - "HTML element post-connection steps" - } - - " given\n " - var { - - "insertedNode" - } - - "." - } - } - } - - "\n\n " - p { - - "The " - a href="https://dom.spec.whatwg.org/#concept-node-remove-ext" id="dom-trees:concept-node-remove-ext" data-x-internal="concept-node-remove-ext" { - - "removing steps" - } - - " for the HTML Standard, given\n " - var { - - "removedNode" - } - - " and " - var { - - "oldParent" - } - - ", are defined as the following:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "document" - } - - " be " - var { - - "removedNode" - } - - "'s " - a id="dom-trees:node-document-2" href="https://dom.spec.whatwg.org/#concept-node-document" data-x-internal="node-document" { - - "node document" - } - - "." - } - } - li id="node-remove-focus-fixup" { - - "\n " - p { - - "If " - var { - - "document" - } - - "'s " - a href="#focused-area-of-the-document" id="dom-trees:focused-area-of-the-document" { - - "focused area" - } - - " is\n " - var { - - "removedNode" - } - - ", then set " - var { - - "document" - } - - "'s " - a href="#focused-area-of-the-document" id="dom-trees:focused-area-of-the-document-2" { - - "focused area" - } - - " to " - var { - - "document" - } - - "'s " - a id="dom-trees:viewport" href="https://drafts.csswg.org/css2/#viewport" data-x-internal="viewport" { - - "viewport" - } - - ", and set\n " - var { - - "document" - } - - "'s " - a href="#concept-relevant-global" id="dom-trees:concept-relevant-global" { - - "relevant global object" - } - - "'s " - a href="#window-navigation-api" id="dom-trees:window-navigation-api" { - - "navigation API" - } - - "'s " - a href="#focus-changed-during-ongoing-navigation" id="dom-trees:focus-changed-during-ongoing-navigation" { - - "focus changed during ongoing\n navigation" - } - - " to false." - } - - "\n\n " - p class="note" { - - "This does " - em { - - "not" - } - - " perform the " - a href="#unfocusing-steps" id="dom-trees:unfocusing-steps" { - - "unfocusing steps" - } - - ",\n " - a href="#focusing-steps" id="dom-trees:focusing-steps" { - - "focusing steps" - } - - ", or " - a href="#focus-update-steps" id="dom-trees:focus-update-steps" { - - "focus update steps" - } - - ", and thus no " - code id="dom-trees:event-blur" { - a href="#event-blur" { - - "blur" - } - } - - " or " - code id="dom-trees:event-change" { - a href="#event-change" { - - "change" - } - } - - " events are\n fired." - } - - "\n " - } - li { - p { - - "If " - var { - - "removedNode" - } - - " is an element whose " - a href="https://dom.spec.whatwg.org/#concept-element-namespace" id="dom-trees:concept-element-namespace-3" data-x-internal="concept-element-namespace" { - - "namespace" - } - - " is the " - a id="dom-trees:html-namespace-2-3" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - ", and this\n standard defines " - a href="#html-element-removing-steps" id="dom-trees:html-element-removing-steps" { - - "HTML element removing steps" - } - - "\n for " - var { - - "removedNode" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-element-local-name" id="dom-trees:concept-element-local-name-4" data-x-internal="concept-element-local-name" { - - "local name" - } - - ", then\n run the corresponding " - a href="#html-element-removing-steps" id="dom-trees:html-element-removing-steps-2" { - - "HTML element removing steps" - } - - " given " - var { - - "removedNode" - } - - " and\n " - var { - - "oldParent" - } - - "." - } - } - li { - - "\n " - p { - - "If " - var { - - "removedNode" - } - - " is a " - a href="#form-associated-element" id="dom-trees:form-associated-element-5" { - - "form-associated element" - } - - " or the ancestor of a\n " - a href="#form-associated-element" id="dom-trees:form-associated-element-6" { - - "form-associated element" - } - - ", then:" - } - - "\n\n " - ol { - li { - p { - - "If the " - a href="#form-associated-element" id="dom-trees:form-associated-element-7" { - - "form-associated element" - } - - " has a " - a href="#form-owner" id="dom-trees:form-owner" { - - "form owner" - } - - " and the\n " - a href="#form-associated-element" id="dom-trees:form-associated-element-8" { - - "form-associated element" - } - - " and its " - a href="#form-owner" id="dom-trees:form-owner-2" { - - "form owner" - } - - " are no longer in the same\n " - a id="dom-trees:tree" href="https://dom.spec.whatwg.org/#concept-tree" data-x-internal="tree" { - - "tree" - } - - ", then " - a href="#reset-the-form-owner" id="dom-trees:reset-the-form-owner-2" { - - "reset the form owner" - } - - " of the " - a href="#form-associated-element" id="dom-trees:form-associated-element-9" { - - "form-associated\n element" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "If " - var { - - "removedNode" - } - - "'s " - code id="dom-trees:attr-popover" { - a href="#attr-popover" { - - "popover" - } - } - - " attribute is not in\n the " - a href="#attr-popover-none-state" id="dom-trees:attr-popover-none-state" { - - "no popover state" - } - - ", then run the " - a href="#hide-popover-algorithm" id="dom-trees:hide-popover-algorithm" { - - "hide\n popover algorithm" - } - - " given " - var { - - "removedNode" - } - - ", false, false, and false." - } - } - } - - "\n\n " - p { - - "A " - dfn id="insert-an-element-into-a-document" data-lt="inserted into a document|node is inserted into a document" data-export="" { - - "node is inserted into a\n document" - } - - " when the " - a href="https://dom.spec.whatwg.org/#concept-node-insert-ext" id="dom-trees:concept-node-insert-ext-2" data-x-internal="concept-node-insert-ext" { - - "insertion steps" - } - - " are invoked\n with it as the argument and it is now " - a id="dom-trees:in-a-document-tree" href="https://dom.spec.whatwg.org/#in-a-document-tree" data-x-internal="in-a-document-tree" { - - "in a document tree" - } - - ". Analogously, a " - dfn id="remove-an-element-from-a-document" data-lt="removed\n from a document|node is removed from a document" data-export="" { - - "node is removed from a document" - } - - " when\n the " - a href="https://dom.spec.whatwg.org/#concept-node-remove-ext" id="dom-trees:concept-node-remove-ext-2" data-x-internal="concept-node-remove-ext" { - - "removing steps" - } - - " are invoked with it as the\n argument and it is now no longer " - a id="dom-trees:in-a-document-tree-2" href="https://dom.spec.whatwg.org/#in-a-document-tree" data-x-internal="in-a-document-tree" { - - "in a document tree" - } - - "." - } - - "\n\n " - p { - - "A node " - dfn id="becomes-connected" data-export="" { - - "becomes connected" - } - - " when the " - a href="https://dom.spec.whatwg.org/#concept-node-insert-ext" id="dom-trees:concept-node-insert-ext-3" data-x-internal="concept-node-insert-ext" { - - "insertion steps" - } - - " are invoked with it as the argument and it\n is now " - a id="dom-trees:connected" href="https://dom.spec.whatwg.org/#connected" data-x-internal="connected" { - - "connected" - } - - ". Analogously, a node " - dfn id="becomes-disconnected" data-lt="become disconnected" data-export="" { - - "becomes disconnected" - } - - " when the " - a href="https://dom.spec.whatwg.org/#concept-node-remove-ext" id="dom-trees:concept-node-remove-ext-3" data-x-internal="concept-node-remove-ext" { - - "removing\n steps" - } - - " are invoked with it as the argument and it is now no longer\n " - a id="dom-trees:connected-2" href="https://dom.spec.whatwg.org/#connected" data-x-internal="connected" { - - "connected" - } - - "." - } - - "\n\n " - p { - - "A node is " - dfn id="browsing-context-connected" data-export="" { - - "browsing-context connected" - } - - " when it is " - a id="dom-trees:connected-3" href="https://dom.spec.whatwg.org/#connected" data-x-internal="connected" { - - "connected" - } - - " and\n its " - a href="https://dom.spec.whatwg.org/#concept-shadow-including-root" id="dom-trees:shadow-including-root" data-x-internal="shadow-including-root" { - - "shadow-including root" - } - - "'s " - a href="#concept-document-bc" id="dom-trees:concept-document-bc" { - - "browsing context" - } - - " is non-null. A node " - dfn id="becomes-browsing-context-connected" data-lt="become\n browsing-context connected" data-export="" { - - "becomes browsing-context connected" - } - - " when the " - a href="https://dom.spec.whatwg.org/#concept-node-insert-ext" id="dom-trees:concept-node-insert-ext-4" data-x-internal="concept-node-insert-ext" { - - "insertion steps" - } - - " are invoked with it as the argument and it\n is now " - a href="#browsing-context-connected" id="dom-trees:browsing-context-connected" { - - "browsing-context connected" - } - - ". A node " - dfn id="becomes-browsing-context-disconnected" data-lt="become browsing-context\n disconnected" data-export="" { - - "becomes browsing-context disconnected" - } - - " either when the " - a href="https://dom.spec.whatwg.org/#concept-node-remove-ext" id="dom-trees:concept-node-remove-ext-4" data-x-internal="concept-node-remove-ext" { - - "removing steps" - } - - " are invoked with it as the argument and it\n is now no longer " - a href="#browsing-context-connected" id="dom-trees:browsing-context-connected-2" { - - "browsing-context connected" - } - - ", or when its " - a id="dom-trees:shadow-including-root-2" href="https://dom.spec.whatwg.org/#concept-shadow-including-root" data-x-internal="shadow-including-root" { - - "shadow-including\n root" - } - - "'s " - a href="#concept-document-bc" id="dom-trees:concept-document-bc-2" { - - "browsing context" - } - - " becomes null.\n\n\n " - } - h4 id="scripting-2" { - span class="secno" { - - "2.1.5" - } - - " Scripting" - a href="#scripting-2" class="self-link" - } - - "\n\n " - p { - - "The construction \"a " - code { - - "Foo" - } - - " object\", where " - code { - - "Foo" - } - - " is\n actually an interface, is sometimes used instead of the more accurate \"an object implementing the\n interface " - code { - - "Foo" - } - - "\"." - } - - "\n\n " - p { - - "An IDL attribute is said to be " - dfn { - - "getting" - } - - " when its value is being retrieved\n (e.g. by author script), and is said to be " - dfn { - - "setting" - } - - " when a new value is\n assigned to it." - } - - "\n\n " - p { - - "If a DOM object is said to be " - dfn id="live" { - - "live" - } - - ", then the attributes and methods on that object\n must operate on the actual underlying data, not a snapshot of the\n data." - } - - "\n\n\n " - h4 id="plugins" { - span class="secno" { - - "2.1.6" - } - - " Plugins" - a href="#plugins" class="self-link" - } - - "\n\n " - p { - - "The term " - dfn id="plugin" { - - "plugin" - } - - " refers to an " - a id="plugins:implementation-defined" href="https://infra.spec.whatwg.org/#implementation-defined" data-x-internal="implementation-defined" { - - "implementation-defined" - } - - " set of content\n handlers used by the user agent that can take part in the user agent's rendering of a\n " - code id="plugins:document" { - a href="#document" { - - "Document" - } - } - - " object, but that neither act as " - a href="#child-navigable" id="plugins:child-navigable" { - - "child\n navigables" - } - - " of the " - code id="plugins:document-2" { - a href="#document" { - - "Document" - } - } - - " nor introduce any " - code id="plugins:node" { - a data-x-internal="node" href="https://dom.spec.whatwg.org/#interface-node" { - - "Node" - } - } - - " objects to the\n " - code id="plugins:document-3" { - a href="#document" { - - "Document" - } - } - - "'s DOM." - } - - "\n\n " - p { - - "Typically such content handlers are provided by third parties, though a user agent can also\n designate built-in content handlers as plugins." - } - - "\n\n \n\n " - p { - - "A user agent must not consider the types " - code id="plugins:text/plain" { - a data-x-internal="text/plain" href="https://www.rfc-editor.org/rfc/rfc2046#section-4.1.3" { - - "text/plain" - } - } - - " and\n " - code id="plugins:application/octet-stream" { - a data-x-internal="application/octet-stream" href="https://www.rfc-editor.org/rfc/rfc2046#section-4.5.1" { - - "application/octet-stream" - } - } - - " as having a registered " - a href="#plugin" id="plugins:plugin" { - - "plugin" - } - - "." - } - - " \n\n \n\n " - p class="example" { - - "One example of a plugin would be a PDF viewer that is instantiated in a\n " - a href="#navigable" id="plugins:navigable" { - - "navigable" - } - - " when the user navigates to a PDF file. This would count as a plugin\n regardless of whether the party that implemented the PDF viewer component was the same as that\n which implemented the user agent itself. However, a PDF viewer application that launches separate\n from the user agent (as opposed to using the same interface) is not a plugin by this\n definition." - } - - "\n\n " - p class="note" { - - "This specification does not define a mechanism for interacting with plugins, as it\n is expected to be user-agent- and platform-specific. Some UAs might opt to support a plugin\n mechanism such as the Netscape Plugin API; others might use remote content converters or have\n built-in support for certain types. Indeed, this specification doesn't require user agents to\n support plugins at all. " - a href="#refsNPAPI" { - - "[NPAPI]" - } - } - - "\n\n \n\n " - p class="warning" { - - "Browsers should take extreme care when interacting with external content\n intended for " - a href="#plugin" id="plugins:plugin-2" { - - "plugins" - } - - ". When third-party software is run with the same\n privileges as the user agent itself, vulnerabilities in the third-party software become as\n dangerous as those in the user agent." - } - - "\n\n " - p { - - "\n " - a id="plugins:tracking-vector" title="There is a tracking vector here." href="https://infra.spec.whatwg.org/#tracking-vector" class="tracking-vector" data-x-internal="tracking-vector" { - img width="46" alt="(This is a tracking vector.)" crossorigin="" src="https://resources.whatwg.org/tracking-vector.svg" height="64" - } - - "\n Since different users having different sets of " - a href="#plugin" id="plugins:plugin-3" { - - "plugins" - } - - " provides a\n tracking vector that increases the chances of users being uniquely identified, user agents are\n encouraged to support the exact same set of " - a href="#plugin" id="plugins:plugin-4" { - - "plugins" - } - - " for each\n user." - } - - "\n\n \n\n\n\n " - h4 id="encoding-terminology" { - span class="secno" { - - "2.1.7" - } - - " Character encodings" - a href="#encoding-terminology" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="encoding" { - a href="https://encoding.spec.whatwg.org/#encoding" { - - "character\n encoding" - } - } - - ", or just " - i { - - "encoding" - } - - " where that is not ambiguous, is a defined way to convert\n between byte streams and Unicode strings, as defined in " - cite { - - "Encoding" - } - - ". An\n " - a id="encoding-terminology:encoding" href="https://encoding.spec.whatwg.org/#encoding" data-x-internal="encoding" { - - "encoding" - } - - " has an " - dfn id="encoding-name" { - a href="https://encoding.spec.whatwg.org/#name" { - - "encoding\n name" - } - } - - " and one or more " - dfn id="encoding-label" { - a href="https://encoding.spec.whatwg.org/#label" { - - "encoding labels" - } - } - - ", referred to as the\n encoding's " - i { - - "name" - } - - " and " - i { - - "labels" - } - - " in the Encoding standard. " - a href="#refsENCODING" { - - "[ENCODING]" - } - } - - "\n\n\n\n \n\n " - h4 id="conformance-classes" { - span class="secno" { - - "2.1.8" - } - - " Conformance classes" - a href="#conformance-classes" class="self-link" - } - - "\n\n " - p { - - "This specification describes the conformance criteria for user agents\n (relevant to implementers) and documents (relevant to authors and\n authoring tool implementers)." - } - - "\n\n " - p { - dfn id="conforming-documents" { - - "Conforming documents" - } - - " are those that comply with all the conformance criteria for\n documents. For readability, some of these conformance requirements are phrased as conformance\n requirements on authors; such requirements are implicitly requirements on documents: by\n definition, all documents are assumed to have had an author. (In some cases, that author may\n itself be a user agent — such user agents are subject to additional rules, as explained\n below.)" - } - - "\n\n " - p class="example" { - - "For example, if a requirement states that \"authors must not\n use the " - code { - - "foobar" - } - - " element\", it would imply that documents are not allowed to\n contain elements named " - code { - - "foobar" - } - - "." - } - - "\n\n " - p class="note impl" { - - "There is no implied relationship between document conformance requirements\n and implementation conformance requirements. User agents are not free to handle non-conformant\n documents as they please; the processing model described in this specification applies to\n implementations regardless of the conformity of the input documents." - } - - "\n\n " - p { - - "User agents fall into several (overlapping) categories with different conformance\n requirements." - } - - "\n\n " - dl { - dt id="interactive" { - - "Web browsers and other interactive user agents" - } - dd { - - "\n " - p { - - "Web browsers that support " - a href="#the-xhtml-syntax" id="conformance-classes:the-xhtml-syntax" { - - "the XML syntax" - } - - " must process elements and attributes\n from the " - a id="conformance-classes:html-namespace-2" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - " found in XML documents as described in this specification,\n so that users can interact with them, unless the semantics of those elements have been\n overridden by other specifications." - } - - "\n\n " - p class="example" { - - "A conforming web browser would, upon finding a " - code id="conformance-classes:the-script-element" { - a href="#the-script-element" { - - "script" - } - } - - " element in\n an XML document, execute the script contained in that element. However, if the element is found\n within a transformation expressed in XSLT (assuming the user agent also supports XSLT), then the\n processor would instead treat the " - code id="conformance-classes:the-script-element-2" { - a href="#the-script-element" { - - "script" - } - } - - " element as an opaque element that forms\n part of the transform." - } - - "\n\n " - p { - - "Web browsers that support " - a href="#syntax" id="conformance-classes:syntax" { - - "the HTML syntax" - } - - " must process documents labeled with an\n " - a id="conformance-classes:html-mime-type" href="https://mimesniff.spec.whatwg.org/#html-mime-type" data-x-internal="html-mime-type" { - - "HTML MIME type" - } - - " as described in this specification, so that users can interact with\n them." - } - - "\n\n " - p { - - "User agents that support scripting must also be conforming implementations of the IDL\n fragments in this specification, as described in " - cite { - - "Web IDL" - } - - ". " - a href="#refsWEBIDL" { - - "[WEBIDL]" - } - } - - "\n\n " - p class="note" { - - "Unless explicitly stated, specifications that override the semantics of HTML\n elements do not override the requirements on DOM objects representing those elements. For\n example, the " - code id="conformance-classes:the-script-element-3" { - a href="#the-script-element" { - - "script" - } - } - - " element in the example above would still implement the\n " - code id="conformance-classes:htmlscriptelement" { - a href="#htmlscriptelement" { - - "HTMLScriptElement" - } - } - - " interface." - } - - "\n " - } - dt id="non-interactive" { - - "Non-interactive presentation user agents" - } - dd { - - "\n " - p { - - "User agents that process HTML and XML documents purely to render non-interactive versions of\n them must comply to the same conformance criteria as web browsers, except that they are exempt\n from requirements regarding user interaction." - } - - "\n\n " - p class="note" { - - "Typical examples of non-interactive presentation user agents are printers\n (static UAs) and overhead displays (dynamic UAs). It is expected that most static\n non-interactive presentation user agents will also opt to " - a href="#non-scripted" { - - "lack scripting\n support" - } - - "." - } - - "\n\n " - p class="example" { - - "A non-interactive but dynamic presentation UA would still execute scripts,\n allowing forms to be dynamically submitted, and so forth. However, since the concept of \"focus\"\n is irrelevant when the user cannot interact with the document, the UA would not need to support\n any of the focus-related DOM APIs." - } - - "\n " - } - dt id="renderingUA" { - - "Visual user agents that support the suggested default rendering" - } - dd { - - "\n " - p { - - "User agents, whether interactive or not, may be designated (possibly as a user option) as\n supporting the suggested default rendering defined by this specification." - } - - "\n\n " - p { - - "This is not required. In particular, even user agents that do implement the suggested default\n rendering are encouraged to offer settings that override this default to improve the experience\n for the user, e.g. changing the color contrast, using different focus styles, or otherwise\n making the experience more accessible and usable to the user." - } - - "\n\n " - p { - - "User agents that are designated as supporting the suggested default rendering must, while so\n designated, implement the rules " - a href="#rendering" { - - "the Rendering section" - } - - " defines as the\n behavior that user agents are " - em { - - "expected" - } - - " to implement." - } - - "\n " - } - dt id="non-scripted" { - - "User agents with no scripting support" - } - dd { - - "\n " - p { - - "Implementations that do not support scripting (or which have their scripting features\n disabled entirely) are exempt from supporting the events and DOM interfaces mentioned in this\n specification. For the parts of this specification that are defined in terms of an events model\n or in terms of the DOM, such user agents must still act as if events and the DOM were\n supported." - } - - "\n\n " - p class="note" { - - "Scripting can form an integral part of an application. Web browsers that do not\n support scripting, or that have scripting disabled, might be unable to fully convey the author's\n intent." - } - - "\n " - } - dt { - - "Conformance checkers" - } - dd id="conformance-checkers" { - - "\n\n " - p { - - "Conformance checkers must verify that a document conforms to the applicable conformance\n criteria described in this specification. Automated conformance checkers are exempt from\n detecting errors that require interpretation of the author's intent (for example, while a\n document is non-conforming if the content of a " - code id="conformance-classes:the-blockquote-element" { - a href="#the-blockquote-element" { - - "blockquote" - } - } - - " element is not a quote,\n conformance checkers running without the input of human judgement do not have to check that\n " - code id="conformance-classes:the-blockquote-element-2" { - a href="#the-blockquote-element" { - - "blockquote" - } - } - - " elements only contain quoted material)." - } - - "\n\n " - p { - - "Conformance checkers must check that the input document conforms when parsed without a\n " - a href="#concept-document-bc" id="conformance-classes:concept-document-bc" { - - "browsing context" - } - - " (meaning that no scripts are run, and\n that the parser's " - a href="#scripting-flag" id="conformance-classes:scripting-flag" { - - "scripting flag" - } - - " is disabled), and should also check that the input\n document conforms when parsed with a " - a href="#concept-document-bc" id="conformance-classes:concept-document-bc-2" { - - "browsing context" - } - - "\n in which scripts execute, and that the scripts never cause non-conforming states to occur other\n than transiently during script execution itself. (This is only a \"SHOULD\" and not a \"MUST\"\n requirement because it has been proven to be impossible. " - a href="#refsCOMPUTABLE" { - - "[COMPUTABLE]" - } - - ")" - } - - "\n\n " - p { - - "The term \"HTML validator\" can be used to refer to a conformance checker that itself conforms\n to the applicable requirements of this specification." - } - - "\n\n " - div class="note" { - - "\n\n " - p { - - "XML DTDs cannot express all the conformance requirements of this specification. Therefore, a\n validating XML processor and a DTD cannot constitute a conformance checker. Also, since neither\n of the two authoring formats defined in this specification are applications of SGML, a\n validating SGML system cannot constitute a conformance checker either." - } - - "\n\n " - p { - - "To put it another way, there are three types of conformance criteria:" - } - - "\n\n " - ol { - li { - - "Criteria that can be expressed in a DTD." - } - li { - - "Criteria that cannot be expressed by a DTD, but can still be checked by a machine." - } - li { - - "Criteria that can only be checked by a human." - } - } - - "\n\n " - p { - - "A conformance checker must check for the first two. A simple DTD-based validator only checks\n for the first class of errors and is therefore not a conforming conformance checker according\n to this specification." - } - - "\n\n " - } - - "\n " - } - dt { - - "Data mining tools" - } - dd id="data-mining" { - - "\n\n " - p { - - "Applications and tools that process HTML and XML documents for reasons other than to either\n render the documents or check them for conformance should act in accordance with the semantics\n of the documents that they process." - } - - "\n\n " - p class="example" { - - "A tool that generates " - a href="#outline" id="conformance-classes:outline" { - - "document outlines" - } - - " but\n increases the nesting level for each paragraph and does not increase the nesting level for\n " - a href="#concept-heading" id="conformance-classes:concept-heading" { - - "headings" - } - - " would not be conforming." - } - - "\n " - } - dt id="editors" { - - "Authoring tools and markup generators" - } - dd { - - "\n " - p { - - "Authoring tools and markup generators must generate " - a href="#conforming-documents" id="conformance-classes:conforming-documents" { - - "conforming documents" - } - - ".\n Conformance criteria that apply to authors also apply to authoring tools, where appropriate." - } - - "\n\n " - p { - - "Authoring tools are exempt from the strict requirements of using elements only for their\n specified purpose, but only to the extent that authoring tools are not yet able to determine\n author intent. However, authoring tools must not automatically misuse elements or encourage\n their users to do so." - } - - "\n\n " - p class="example" { - - "For example, it is not conforming to use an " - code id="conformance-classes:the-address-element" { - a href="#the-address-element" { - - "address" - } - } - - " element for\n arbitrary contact information; that element can only be used for marking up contact information\n for its nearest " - code id="conformance-classes:the-article-element" { - a href="#the-article-element" { - - "article" - } - } - - " or " - code id="conformance-classes:the-body-element" { - a href="#the-body-element" { - - "body" - } - } - - " element ancestor. However, since an\n authoring tool is likely unable to determine the difference, an authoring tool is exempt from\n that requirement. This does not mean, though, that authoring tools can use " - code id="conformance-classes:the-address-element-2" { - a href="#the-address-element" { - - "address" - } - } - - "\n elements for any block of italics text (for instance); it just means that the authoring tool\n doesn't have to verify that when the user uses a tool for inserting contact information for an\n " - code id="conformance-classes:the-article-element-2" { - a href="#the-article-element" { - - "article" - } - } - - " element, that the user really is doing that and not inserting something\n else instead." - } - - "\n\n " - p class="note" { - - "In terms of conformance checking, an editor has to output documents that conform\n to the same extent that a conformance checker will verify." - } - - "\n\n " - p { - - "When an authoring tool is used to edit a non-conforming document, it may preserve the\n conformance errors in sections of the document that were not edited during the editing session\n (i.e. an editing tool is allowed to round-trip erroneous content). However, an authoring tool\n must not claim that the output is conformant if errors have been so preserved." - } - - "\n\n " - p { - - "Authoring tools are expected to come in two broad varieties: tools that work from structure\n or semantic data, and tools that work on a What-You-See-Is-What-You-Get media-specific editing\n basis (WYSIWYG)." - } - - "\n\n " - p { - - "The former is the preferred mechanism for tools that author HTML, since the structure in the\n source information can be used to make informed choices regarding which HTML elements and\n attributes are most appropriate." - } - - "\n\n " - p { - - "However, WYSIWYG tools are legitimate. WYSIWYG tools should use elements they know are\n appropriate, and should not use elements that they do not know to be appropriate. This might in\n certain extreme cases mean limiting the use of flow elements to just a few elements, like\n " - code id="conformance-classes:the-div-element" { - a href="#the-div-element" { - - "div" - } - } - - ", " - code id="conformance-classes:the-b-element" { - a href="#the-b-element" { - - "b" - } - } - - ", " - code id="conformance-classes:the-i-element" { - a href="#the-i-element" { - - "i" - } - } - - ", and " - code id="conformance-classes:the-span-element" { - a href="#the-span-element" { - - "span" - } - } - - " and making liberal use\n of the " - code id="conformance-classes:attr-style" { - a href="#attr-style" { - - "style" - } - } - - " attribute." - } - - "\n\n " - p { - - "All authoring tools, whether WYSIWYG or not, should make a best effort attempt at enabling\n users to create well-structured, semantically rich, media-independent content." - } - - "\n " - } - } - - "\n\n " - p { - - "For compatibility with existing content and prior specifications, this specification describes\n two authoring formats: one based on " - a href="#the-xhtml-syntax" id="conformance-classes:the-xhtml-syntax-2" { - - "XML" - } - - ", and one using a " - a href="#writing" { - - "custom format" - } - - " inspired by SGML (referred to as " - a href="#syntax" id="conformance-classes:syntax-2" { - - "the HTML syntax" - } - - ").\n Implementations must support at least one of these two formats, although supporting both is\n encouraged." - } - - "\n\n " - p { - - "Some conformance requirements are phrased as requirements on elements, attributes, methods or\n objects. Such requirements fall into two categories: those describing content model restrictions,\n and those describing implementation behavior. Those in the former category are requirements on\n documents and authoring tools. Those in the second category are requirements on user agents.\n Similarly, some conformance requirements are phrased as requirements on authors; such requirements\n are to be interpreted as conformance requirements on the documents that authors produce. (In other\n words, this specification does not distinguish between conformance criteria on authors and\n conformance criteria on documents.)" - } - - "\n\n \n\n\n " - h4 id="dependencies" { - span class="secno" { - - "2.1.9" - } - - " Dependencies" - a href="#dependencies" class="self-link" - } - - "\n\n \n " - div data-noexport="" { - - "\n\n " - p { - - "This specification relies on several other underlying specifications." - } - - "\n\n " - dl { - dt { - - "Infra" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Infra" - } - - ": " - a href="#refsINFRA" { - - "[INFRA]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The general iteration terms " - dfn id="while" { - a href="https://infra.spec.whatwg.org/#iteration-while" { - - "while" - } - } - - ",\n " - dfn id="continue" { - a href="https://infra.spec.whatwg.org/#iteration-continue" { - - "continue" - } - } - - ", and\n " - dfn id="break" { - a href="https://infra.spec.whatwg.org/#iteration-break" { - - "break" - } - } - - "." - } - li { - dfn id="assert" { - a href="https://infra.spec.whatwg.org/#assert" { - - "Assert" - } - } - } - li { - dfn id="implementation-defined" { - a href="https://infra.spec.whatwg.org/#implementation-defined" { - - "implementation-defined" - } - } - } - li id="fingerprint" { - span id="fingerprinting-vector" - - "\n \n " - dfn id="tracking-vector" { - a href="https://infra.spec.whatwg.org/#tracking-vector" { - - "tracking vector" - } - } - } - li { - dfn id="code-point" { - a href="https://infra.spec.whatwg.org/#code-point" { - - "code point" - } - } - - " and its synonym\n " - dfn id="character" { - a href="https://infra.spec.whatwg.org/#code-point" { - - "character" - } - } - } - li { - dfn id="surrogate" { - a href="https://infra.spec.whatwg.org/#surrogate" { - - "surrogate" - } - } - } - li { - dfn id="scalar-value" { - a href="https://infra.spec.whatwg.org/#scalar-value" { - - "scalar value" - } - } - } - li { - dfn id="tuple" { - a href="https://infra.spec.whatwg.org/#tuple" { - - "tuple" - } - } - } - li { - dfn id="noncharacter" { - a href="https://infra.spec.whatwg.org/#noncharacter" { - - "noncharacter" - } - } - } - li { - dfn id="string" { - a href="https://infra.spec.whatwg.org/#string" { - - "string" - } - } - - ",\n " - dfn id="code-unit" { - a href="https://infra.spec.whatwg.org/#code-unit" { - - "code unit" - } - } - - ",\n " - dfn id="code-unit-prefix" { - a href="https://infra.spec.whatwg.org/#code-unit-prefix" { - - "code unit prefix" - } - } - - ",\n " - dfn id="code-unit-less-than" { - a href="https://infra.spec.whatwg.org/#code-unit-less-than" { - - "code unit less than" - } - } - - ",\n " - dfn id="starts-with" { - a href="https://infra.spec.whatwg.org/#string-starts-with" { - - "starts with" - } - } - - ",\n " - dfn id="ends-with" { - a href="https://infra.spec.whatwg.org/#string-ends-with" { - - "ends with" - } - } - - ",\n " - dfn id="length" { - a href="https://infra.spec.whatwg.org/#string-length" { - - "length" - } - } - - ", and\n " - dfn id="code-point-length" { - a href="https://infra.spec.whatwg.org/#string-code-point-length" { - - "code point length" - } - } - } - li id="case-sensitive" { - - "The string equality operations " - dfn id="is" { - a href="https://infra.spec.whatwg.org/#string-is" { - - "is" - } - } - - " and\n " - dfn id="identical-to" { - a href="https://infra.spec.whatwg.org/#string-is" { - - "identical to" - } - } - } - li { - dfn id="scalar-value-string" { - a href="https://infra.spec.whatwg.org/#scalar-value-string" { - - "scalar value string" - } - } - } - li { - dfn id="convert" { - a href="https://infra.spec.whatwg.org/#javascript-string-convert" { - - "convert" - } - } - } - li { - dfn id="ascii-string" { - a href="https://infra.spec.whatwg.org/#ascii-string" { - - "ASCII string" - } - } - } - li { - dfn id="ascii-tab-or-newline" { - a href="https://infra.spec.whatwg.org/#ascii-tab-or-newline" { - - "ASCII tab or newline" - } - } - } - li { - dfn id="space-characters" { - a href="https://infra.spec.whatwg.org/#ascii-whitespace" { - - "ASCII whitespace" - } - } - } - li { - dfn id="control" { - a href="https://infra.spec.whatwg.org/#control" { - - "control" - } - } - } - li { - dfn id="ascii-digits" { - a href="https://infra.spec.whatwg.org/#ascii-digit" { - - "ASCII digit" - } - } - } - li { - dfn id="uppercase-ascii-hex-digits" { - a href="https://infra.spec.whatwg.org/#ascii-upper-hex-digit" { - - "ASCII upper hex digit" - } - } - } - li { - dfn id="lowercase-ascii-hex-digits" { - a href="https://infra.spec.whatwg.org/#ascii-lower-hex-digit" { - - "ASCII lower hex digit" - } - } - } - li { - dfn id="ascii-hex-digits" { - a href="https://infra.spec.whatwg.org/#ascii-hex-digit" { - - "ASCII hex digit" - } - } - } - li { - dfn id="uppercase-ascii-letters" { - a href="https://infra.spec.whatwg.org/#ascii-upper-alpha" { - - "ASCII upper alpha" - } - } - } - li { - dfn id="lowercase-ascii-letters" { - a href="https://infra.spec.whatwg.org/#ascii-lower-alpha" { - - "ASCII lower alpha" - } - } - } - li { - dfn id="ascii-letters" { - a href="https://infra.spec.whatwg.org/#ascii-alpha" { - - "ASCII alpha" - } - } - } - li { - dfn id="alphanumeric-ascii-characters" { - a href="https://infra.spec.whatwg.org/#ascii-alphanumeric" { - - "ASCII alphanumeric" - } - } - } - li { - dfn id="isomorphic-decode" { - a href="https://infra.spec.whatwg.org/#isomorphic-decode" { - - "isomorphic decode" - } - } - } - li { - dfn id="isomorphic-encode" { - a href="https://infra.spec.whatwg.org/#isomorphic-encode" { - - "isomorphic encode" - } - } - } - li { - dfn id="converted-to-ascii-lowercase" { - a href="https://infra.spec.whatwg.org/#ascii-lowercase" { - - "ASCII lowercase" - } - } - } - li { - dfn id="converted-to-ascii-uppercase" { - a href="https://infra.spec.whatwg.org/#ascii-uppercase" { - - "ASCII uppercase" - } - } - } - li { - dfn id="ascii-case-insensitive" { - a href="https://infra.spec.whatwg.org/#ascii-case-insensitive" { - - "ASCII case-insensitive" - } - } - } - li { - dfn id="strip-newlines" { - a href="https://infra.spec.whatwg.org/#strip-newlines" { - - "strip newlines" - } - } - } - li { - dfn id="normalize-newlines" { - a href="https://infra.spec.whatwg.org/#normalize-newlines" { - - "normalize newlines" - } - } - } - li { - dfn id="strip-leading-and-trailing-ascii-whitespace" { - a href="https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace" { - - "strip leading and trailing ASCII whitespace" - } - } - } - li { - dfn id="strip-and-collapse-ascii-whitespace" { - a href="https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace" { - - "strip and collapse ASCII whitespace" - } - } - } - li { - dfn id="split-a-string-on-spaces" { - a href="https://infra.spec.whatwg.org/#split-on-ascii-whitespace" { - - "split a string on ASCII whitespace" - } - } - } - li { - dfn id="split-a-string-on-commas" { - a href="https://infra.spec.whatwg.org/#split-on-commas" { - - "split a string on commas" - } - } - } - li { - dfn id="collect-a-sequence-of-code-points" { - a href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" { - - "collect a sequence of code points" - } - } - - " and its associated\n " - dfn id="position-variable" { - a href="https://infra.spec.whatwg.org/#string-position-variable" { - - "position variable" - } - } - } - li { - dfn id="skip-ascii-whitespace" { - a href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" { - - "skip ASCII whitespace" - } - } - } - li { - - "The " - dfn id="ordered-map" { - a href="https://infra.spec.whatwg.org/#ordered-map" { - - "ordered map" - } - } - - " data structure and the associated definitions for\n " - dfn id="map-key" { - a href="https://infra.spec.whatwg.org/#map-key" { - - "key" - } - } - - ",\n " - dfn id="map-value" { - a href="https://infra.spec.whatwg.org/#map-value" { - - "value" - } - } - - ",\n " - dfn id="map-empty" { - a href="https://infra.spec.whatwg.org/#map-is-empty" { - - "empty" - } - } - - ",\n " - dfn id="map-entry" { - a href="https://infra.spec.whatwg.org/#map-entry" { - - "entry" - } - } - - ",\n " - dfn id="map-exists" { - a href="https://infra.spec.whatwg.org/#map-exists" { - - "exists" - } - } - - ",\n " - dfn id="map-get" { - a href="https://infra.spec.whatwg.org/#map-get" { - - "getting the value of an entry" - } - } - - ",\n " - dfn id="map-set" { - a href="https://infra.spec.whatwg.org/#map-set" { - - "setting the value of an entry" - } - } - - ",\n " - dfn id="map-remove" { - a href="https://infra.spec.whatwg.org/#map-remove" { - - "removing an entry" - } - } - - ",\n " - dfn id="map-clear" { - a href="https://infra.spec.whatwg.org/#map-clear" { - - "clear" - } - } - - ",\n " - dfn id="map-get-the-keys" { - a href="https://infra.spec.whatwg.org/#map-getting-the-keys" { - - "getting the keys" - } - } - - ",\n " - dfn id="map-get-the-values" { - a href="https://infra.spec.whatwg.org/#map-getting-the-values" { - - "getting the values" - } - } - - ",\n " - dfn id="map-sort-descending" { - a href="https://infra.spec.whatwg.org/#map-sort-in-descending-order" { - - "sorting in descending order" - } - } - - ",\n " - dfn id="map-size" { - a href="https://infra.spec.whatwg.org/#map-size" { - - "size" - } - } - - ", and\n " - dfn id="map-iterate" { - a href="https://infra.spec.whatwg.org/#map-iterate" { - - "iterate" - } - } - } - li { - - "The " - dfn id="list" { - a href="https://infra.spec.whatwg.org/#list" { - - "list" - } - } - - " data structure and the associated definitions for\n " - dfn id="list-append" { - a href="https://infra.spec.whatwg.org/#list-append" { - - "append" - } - } - - ",\n " - dfn id="list-extend" { - a href="https://infra.spec.whatwg.org/#list-extend" { - - "extend" - } - } - - ",\n " - dfn id="list-prepend" { - a href="https://infra.spec.whatwg.org/#list-prepend" { - - "prepend" - } - } - - ",\n " - dfn id="list-replace" { - a href="https://infra.spec.whatwg.org/#list-replace" { - - "replace" - } - } - - ",\n " - dfn id="list-remove" { - a href="https://infra.spec.whatwg.org/#list-remove" { - - "remove" - } - } - - ",\n " - dfn id="list-empty" { - a href="https://infra.spec.whatwg.org/#list-empty" { - - "empty" - } - } - - ",\n " - dfn id="list-contains" { - a href="https://infra.spec.whatwg.org/#list-contain" { - - "contains" - } - } - - ",\n " - dfn id="list-size" { - a href="https://infra.spec.whatwg.org/#list-size" { - - "size" - } - } - - ",\n " - dfn id="indices" { - a href="https://infra.spec.whatwg.org/#list-get-the-indices" { - - "indices" - } - } - - ",\n " - dfn id="list-is-empty" { - a href="https://infra.spec.whatwg.org/#list-is-empty" { - - "is empty" - } - } - - ",\n " - dfn id="list-item" { - a href="https://infra.spec.whatwg.org/#list-item" { - - "item" - } - } - - ",\n " - dfn id="list-iterate" { - a href="https://infra.spec.whatwg.org/#list-iterate" { - - "iterate" - } - } - - ", and\n " - dfn id="list-clone" { - a href="https://infra.spec.whatwg.org/#list-clone" { - - "clone" - } - } - - "\n " - dfn id="list-sort" { - a href="https://infra.spec.whatwg.org/#list-sort-in-ascending-order" { - - "sort in ascending order" - } - } - - "\n " - dfn id="list-sort-descending" { - a href="https://infra.spec.whatwg.org/#list-sort-in-descending-order" { - - "sort in descending order" - } - } - } - li { - - "The " - dfn id="stack" { - a href="https://infra.spec.whatwg.org/#stack" { - - "stack" - } - } - - " data structure and the associated definitions for\n " - dfn id="stack-push" { - a href="https://infra.spec.whatwg.org/#stack-push" { - - "push" - } - } - - " and\n " - dfn id="stack-pop" { - a href="https://infra.spec.whatwg.org/#stack-pop" { - - "pop" - } - } - } - li { - - "The " - dfn id="queue" { - a href="https://infra.spec.whatwg.org/#queue" { - - "queue" - } - } - - " data structure and the associated definitions for\n " - dfn id="enqueue" { - a href="https://infra.spec.whatwg.org/#queue-enqueue" { - - "enqueue" - } - } - - " and\n " - dfn id="dequeue" { - a href="https://infra.spec.whatwg.org/#queue-dequeue" { - - "dequeue" - } - } - } - li { - - "The " - dfn id="set" { - a href="https://infra.spec.whatwg.org/#ordered-set" { - - "ordered set" - } - } - - " data structure and the associated definition for\n " - dfn id="set-append" { - a href="https://infra.spec.whatwg.org/#set-append" { - - "append" - } - } - - " and\n " - dfn id="set-union" { - a href="https://infra.spec.whatwg.org/#set-union" { - - "union" - } - } - } - li { - - "The " - dfn id="struct" { - a href="https://infra.spec.whatwg.org/#struct" { - - "struct" - } - } - - " specification type and the associated definition for\n " - dfn id="struct-item" { - a href="https://infra.spec.whatwg.org/#struct-item" { - - "item" - } - } - } - li { - - "The " - dfn id="byte-sequence" { - a href="https://infra.spec.whatwg.org/#byte-sequence" { - - "byte sequence" - } - } - - " data structure" - } - li { - - "The " - dfn id="forgiving-base64-encode" { - a href="https://infra.spec.whatwg.org/#forgiving-base64-encode" { - - "forgiving-base64 encode" - } - } - - " and\n " - dfn id="forgiving-base64-decode" { - a href="https://infra.spec.whatwg.org/#forgiving-base64-decode" { - - "forgiving-base64 decode" - } - } - - " algorithms" - } - li { - dfn id="exclusive-range" { - a href="https://infra.spec.whatwg.org/#the-exclusive-range" { - - "exclusive range" - } - } - } - li { - dfn id="parse-a-json-string-to-an-infra-value" { - a href="https://infra.spec.whatwg.org/#parse-a-json-string-to-an-infra-value" { - - "parse a JSON string to an Infra value" - } - } - } - li { - dfn id="html-namespace-2" { - a href="https://infra.spec.whatwg.org/#html-namespace" { - - "HTML namespace" - } - } - } - li { - dfn id="mathml-namespace" { - a href="https://infra.spec.whatwg.org/#mathml-namespace" { - - "MathML namespace" - } - } - } - li { - dfn id="svg-namespace" { - a href="https://infra.spec.whatwg.org/#svg-namespace" { - - "SVG namespace" - } - } - } - li { - dfn id="xlink-namespace" { - a href="https://infra.spec.whatwg.org/#xlink-namespace" { - - "XLink namespace" - } - } - } - li { - dfn id="xml-namespace" { - a href="https://infra.spec.whatwg.org/#xml-namespace" { - - "XML namespace" - } - } - } - li { - dfn id="xmlns-namespace" { - a href="https://infra.spec.whatwg.org/#xmlns-namespace" { - - "XMLNS namespace" - } - } - } - } - - "\n " - } - dt { - - "Unicode and Encoding" - } - dd { - - "\n " - p { - - "The Unicode character set is used to represent textual data, and " - cite { - - "Encoding" - } - - "\n defines requirements around " - a href="https://encoding.spec.whatwg.org/#encoding" id="dependencies:encoding" data-x-internal="encoding" { - - "character encodings" - } - - ".\n " - a href="#refsUNICODE" { - - "[UNICODE]" - } - } - - "\n\n " - p class="note" { - - "This specification " - a href="#encoding-terminology" { - - "introduces terminology" - } - - "\n based on the terms defined in those specifications, as described earlier." - } - - "\n\n " - p { - - "The following terms are used as defined in " - cite { - - "Encoding" - } - - ": " - a href="#refsENCODING" { - - "[ENCODING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="getting-an-encoding" { - a href="https://encoding.spec.whatwg.org/#concept-encoding-get" { - - "Getting an\n encoding" - } - } - } - li { - dfn id="get-an-output-encoding" { - a href="https://encoding.spec.whatwg.org/#get-an-output-encoding" { - - "Get an output\n encoding" - } - } - } - li { - - "The generic " - dfn id="decode" { - a href="https://encoding.spec.whatwg.org/#decode" { - - "decode" - } - } - - "\n algorithm which takes a byte stream and an encoding and returns a character stream" - } - li { - - "The " - dfn id="utf-8-decode" { - a href="https://encoding.spec.whatwg.org/#utf-8-decode" { - - "UTF-8 decode" - } - } - - "\n algorithm which takes a byte stream and returns a character stream, additionally stripping one\n leading UTF-8 Byte Order Mark (BOM), if any" - } - li { - - "The " - dfn id="utf-8-decode-without-bom" { - a href="https://encoding.spec.whatwg.org/#utf-8-decode-without-bom" { - - "UTF-8\n decode without BOM" - } - } - - " algorithm which is identical to " - a id="dependencies:utf-8-decode" href="https://encoding.spec.whatwg.org/#utf-8-decode" data-x-internal="utf-8-decode" { - - "UTF-8 decode" - } - - " except that\n it does not strip one leading UTF-8 Byte Order Mark (BOM)" - } - li { - - "The " - dfn id="encode" { - a href="https://encoding.spec.whatwg.org/#encode" { - - "encode" - } - } - - " algorithm\n which takes a character stream and an encoding and returns a byte stream" - } - li { - - "The " - dfn id="utf-8-encode" { - a href="https://encoding.spec.whatwg.org/#utf-8-encode" { - - "UTF-8 encode" - } - } - - "\n algorithm which takes a character stream and returns a byte stream" - } - li { - - "The " - dfn id="bom-sniff" { - a href="https://encoding.spec.whatwg.org/#bom-sniff" { - - "BOM sniff" - } - } - - "\n algorithm which takes a byte stream and returns an encoding or null." - } - } - - "\n " - } - dt { - - "XML and related specifications" - } - dd { - - "\n " - p { - - "Implementations that support " - a href="#the-xhtml-syntax" id="dependencies:the-xhtml-syntax" { - - "the XML syntax" - } - - " for HTML must support some version\n of XML, as well as its corresponding namespaces specification, because that syntax uses an XML\n serialization with namespaces. " - a href="#refsXML" { - - "[XML]" - } - - " " - a href="#refsXMLNS" { - - "[XMLNS]" - } - } - - "\n\n " - p { - - "Data mining tools and other user agents that perform operations on content without running\n scripts, evaluating CSS or XPath expressions, or otherwise exposing the resulting DOM to\n arbitrary content, may \"support namespaces\" by just asserting that their DOM node analogues are\n in certain namespaces, without actually exposing the namespace strings." - } - - "\n\n " - p class="note" { - - "In " - a href="#syntax" id="dependencies:syntax" { - - "the HTML syntax" - } - - ", namespace prefixes and namespace declarations\n do not have the same effect as in XML. For instance, the colon has no special meaning in HTML\n element names." - } - - "\n\n " - hr - - "\n\n " - p { - - "The attribute with the name " - dfn id="attr-xml-space" { - a href="https://www.w3.org/TR/xml/#sec-white-space" { - code { - - "space" - } - } - } - - " in the " - a id="dependencies:xml-namespace" href="https://infra.spec.whatwg.org/#xml-namespace" data-x-internal="xml-namespace" { - - "XML namespace" - } - - " is defined by\n " - cite { - - "Extensible Markup Language" - } - - " (" - cite { - - "XML" - } - - "). " - a href="#refsXML" { - - "[XML]" - } - } - - "\n\n " - p { - - "The " - dfn id="xml-name" { - a href="https://www.w3.org/TR/xml/#NT-Name" { - code { - - "Name" - } - } - } - - " production is defined in " - cite { - - "XML" - } - - ".\n " - a href="#refsXML" { - - "[XML]" - } - } - - "\n\n " - p { - - "This specification also references the " - dfn id="xml-stylesheet" { - a href="https://www.w3.org/TR/xml-stylesheet/#the-xml-stylesheet-processing-instruction" { - code { - - "" - } - } - } - - "\n processing instruction, defined in " - cite { - - "Associating Style Sheets with XML documents" - } - - ".\n " - a href="#refsXMLSSPI" { - - "[XMLSSPI]" - } - } - - "\n\n " - p { - - "This specification also non-normatively mentions the " - dfn id="xsltprocessor" { - code { - - "XSLTProcessor" - } - } - - "\n interface and its " - dfn id="dom-xsltprocessor-transformtofragment" { - code { - - "transformToFragment()" - } - } - - " and " - dfn id="dom-xsltprocessor-transformtodocument" { - code { - - "transformToDocument()" - } - } - - " methods.\n " - a href="#refsXSLTP" { - - "[XSLTP]" - } - } - - "\n " - } - dt { - - "URLs" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "URL" - } - - ": " - a href="#refsURL" { - - "[URL]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="concept-host" { - a href="https://url.spec.whatwg.org/#concept-host" { - - "host" - } - } - } - li { - dfn id="public-suffix" { - a href="https://url.spec.whatwg.org/#host-public-suffix" { - - "public suffix" - } - } - } - li { - dfn id="concept-domain" { - a href="https://url.spec.whatwg.org/#concept-domain" { - - "domain" - } - } - } - li { - dfn id="ip-address" { - a href="https://url.spec.whatwg.org/#ip-address" { - - "IP address" - } - } - } - li { - dfn id="url" { - a href="https://url.spec.whatwg.org/#concept-url" { - - "URL" - } - } - } - li { - dfn id="concept-url-origin" { - a href="https://url.spec.whatwg.org/#concept-url-origin" { - - "Origin" - } - } - - " of URLs" - } - li { - dfn id="absolute-url" { - a href="https://url.spec.whatwg.org/#syntax-url-absolute" { - - "Absolute URL" - } - } - } - li { - dfn id="relative-url" { - a href="https://url.spec.whatwg.org/#syntax-url-relative" { - - "Relative URL" - } - } - } - li { - dfn id="registrable-domain" { - a href="https://url.spec.whatwg.org/#host-registrable-domain" { - - "registrable domain" - } - } - } - li { - - "The " - dfn id="url-parser" { - a href="https://url.spec.whatwg.org/#concept-url-parser" { - - "URL parser" - } - } - - "\n " - } - li { - - "The " - dfn id="basic-url-parser" { - a href="https://url.spec.whatwg.org/#concept-basic-url-parser" { - - "basic URL parser" - } - } - - " and its\n " - dfn id="basic-url-parser-url" { - a href="https://url.spec.whatwg.org/#basic-url-parser-url" { - var { - - "url" - } - } - } - - " and\n " - dfn id="basic-url-parser-state-override" { - a href="https://url.spec.whatwg.org/#basic-url-parser-state-override" { - var { - - "state override" - } - } - } - - "\n arguments, as well as these parser states:\n " - ul class="brief" { - li { - dfn id="scheme-start-state" { - a href="https://url.spec.whatwg.org/#scheme-start-state" { - - "scheme start state" - } - } - } - li { - dfn id="host-state" { - a href="https://url.spec.whatwg.org/#host-state" { - - "host state" - } - } - } - li { - dfn id="hostname-state" { - a href="https://url.spec.whatwg.org/#hostname-state" { - - "hostname state" - } - } - } - li { - dfn id="port-state" { - a href="https://url.spec.whatwg.org/#port-state" { - - "port state" - } - } - } - li { - dfn id="path-start-state" { - a href="https://url.spec.whatwg.org/#path-start-state" { - - "path start state" - } - } - } - li { - dfn id="query-state" { - a href="https://url.spec.whatwg.org/#query-state" { - - "query state" - } - } - } - li { - dfn id="fragment-state" { - a href="https://url.spec.whatwg.org/#fragment-state" { - - "fragment state" - } - } - } - } - - "\n " - } - li { - - "\n " - dfn id="url-record" { - a href="https://url.spec.whatwg.org/#concept-url" { - - "URL record" - } - } - - ", as well as its\n individual components:\n " - ul class="brief" { - li { - dfn id="concept-url-scheme" { - a href="https://url.spec.whatwg.org/#concept-url-scheme" { - - "scheme" - } - } - } - li { - dfn id="concept-url-username" { - a href="https://url.spec.whatwg.org/#concept-url-username" { - - "username" - } - } - } - li { - dfn id="concept-url-password" { - a href="https://url.spec.whatwg.org/#concept-url-password" { - - "password" - } - } - } - li { - dfn id="concept-url-host" { - a href="https://url.spec.whatwg.org/#concept-url-host" { - - "host" - } - } - } - li { - dfn id="concept-url-port" { - a href="https://url.spec.whatwg.org/#concept-url-port" { - - "port" - } - } - } - li { - dfn id="concept-url-path" { - a href="https://url.spec.whatwg.org/#concept-url-path" { - - "path" - } - } - } - li { - dfn id="concept-url-query" { - a href="https://url.spec.whatwg.org/#concept-url-query" { - - "query" - } - } - } - li { - dfn id="concept-url-fragment" { - a href="https://url.spec.whatwg.org/#concept-url-fragment" { - - "fragment" - } - } - } - li { - dfn id="concept-url-blob-entry" { - a href="https://url.spec.whatwg.org/#concept-url-blob-entry" { - - "blob URL entry" - } - } - } - } - - "\n " - } - li { - dfn id="valid-url-string" { - a href="https://url.spec.whatwg.org/#valid-url-string" { - - "valid URL string" - } - } - } - li { - - "The " - dfn id="cannot-have-a-username/password/port" { - a href="https://url.spec.whatwg.org/#cannot-have-a-username-password-port" { - - "cannot have a username/password/port" - } - } - - " concept" - } - li { - - "The " - dfn id="opaque-path" { - a href="https://url.spec.whatwg.org/#url-opaque-path" { - - "opaque path" - } - } - - " concept" - } - li { - dfn id="concept-url-serializer" { - a href="https://url.spec.whatwg.org/#concept-url-serializer" { - - "URL serializer" - } - } - - " and its\n " - dfn id="url-serializer-exclude-fragment" { - a href="https://url.spec.whatwg.org/#url-serializer-exclude-fragment" { - - "exclude fragment" - } - } - - " argument" - } - li { - dfn id="url-path-serializer" { - a href="https://url.spec.whatwg.org/#url-path-serializer" { - - "URL path serializer" - } - } - } - li { - - "The " - dfn id="host-parser" { - a href="https://url.spec.whatwg.org/#concept-host-parser" { - - "host parser" - } - } - } - li { - - "The " - dfn id="host-serializer" { - a href="https://url.spec.whatwg.org/#concept-host-serializer" { - - "host serializer" - } - } - } - li { - dfn id="host-equals" { - a href="https://url.spec.whatwg.org/#concept-host-equals" { - - "Host equals" - } - } - } - li { - dfn id="concept-url-equals" { - a href="https://url.spec.whatwg.org/#concept-url-equals" { - - "URL equals" - } - } - - " and its\n " - dfn id="url-equals-exclude-fragments" { - a href="https://url.spec.whatwg.org/#url-equals-exclude-fragments" { - - "exclude fragments" - } - } - - " argument" - } - li { - dfn id="serialize-an-integer" { - a href="https://url.spec.whatwg.org/#serialize-an-integer" { - - "serialize an integer" - } - } - } - li { - dfn id="default-encode-set" { - a href="https://url.spec.whatwg.org/#default-encode-set" { - - "Default encode set" - } - } - } - li { - dfn id="component-percent-encode-set" { - a href="https://url.spec.whatwg.org/#component-percent-encode-set" { - - "component percent-encode set" - } - } - } - li { - dfn id="utf-8-percent-encode" { - a href="https://url.spec.whatwg.org/#string-utf-8-percent-encode" { - - "UTF-8 percent-encode" - } - } - } - li { - dfn id="percent-decode" { - a href="https://url.spec.whatwg.org/#string-percent-decode" { - - "percent-decode" - } - } - } - li { - dfn id="set-the-username" { - a href="https://url.spec.whatwg.org/#set-the-username" { - - "set the username" - } - } - } - li { - dfn id="set-the-password" { - a href="https://url.spec.whatwg.org/#set-the-password" { - - "set the password" - } - } - } - li { - - "The " - dfn id="application/x-www-form-urlencoded" { - a href="https://url.spec.whatwg.org/#concept-urlencoded" { - code { - - "application/x-www-form-urlencoded" - } - } - } - - " format" - } - li { - - "The " - dfn id="application/x-www-form-urlencoded-serializer" { - a href="https://url.spec.whatwg.org/#concept-urlencoded-serializer" { - code { - - "application/x-www-form-urlencoded" - } - - " serializer" - } - } - } - li { - dfn id="is-special" { - a href="https://url.spec.whatwg.org/#is-special" { - - "is special" - } - } - } - } - - "\n\n " - p { - - "A number of schemes and protocols are referenced by this specification also:" - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="about-protocol" { - a href="https://www.rfc-editor.org/rfc/rfc6694#section-2" { - code { - - "about:" - } - } - } - - " scheme\n " - a href="#refsABOUT" { - - "[ABOUT]" - } - } - li { - - "The " - dfn id="blob-protocol" { - a href="https://w3c.github.io/FileAPI/#DefinitionOfScheme" { - code { - - "blob:" - } - } - } - - " scheme\n " - a href="#refsFILEAPI" { - - "[FILEAPI]" - } - } - li { - - "The " - dfn id="data-protocol" { - a href="https://www.rfc-editor.org/rfc/rfc2397#section-2" { - code { - - "data:" - } - } - } - - " scheme\n " - a href="#refsRFC2397" { - - "[RFC2397]" - } - } - li { - - "The " - dfn id="http-protocol" { - a href="https://httpwg.org/specs/rfc7230.html#http.uri" { - code { - - "http:" - } - } - } - - " scheme\n " - a href="#refsHTTP" { - - "[HTTP]" - } - } - li { - - "The " - dfn id="https-protocol" { - a href="https://httpwg.org/specs/rfc7230.html#https.uri" { - code { - - "https:" - } - } - } - - " scheme\n " - a href="#refsHTTP" { - - "[HTTP]" - } - } - li { - - "The " - dfn id="mailto-protocol" { - a href="https://www.rfc-editor.org/rfc/rfc6068#section-2" { - code { - - "mailto:" - } - } - } - - "\n scheme " - a href="#refsMAILTO" { - - "[MAILTO]" - } - } - li { - - "The " - dfn id="sms-protocol" { - a href="https://www.rfc-editor.org/rfc/rfc5724#section-2" { - code { - - "sms:" - } - } - } - - " scheme\n " - a href="#refsSMS" { - - "[SMS]" - } - } - li { - - "The " - dfn id="urn-protocol" { - a href="https://www.rfc-editor.org/rfc/rfc2141#section-2" { - code { - - "urn:" - } - } - } - - " scheme\n " - a href="#refsURN" { - - "[URN]" - } - } - } - - "\n\n " - p { - dfn id="media-fragment-syntax" { - a href="https://www.w3.org/TR/media-frags/#media-fragment-syntax" { - - "Media fragment\n syntax" - } - } - - " is defined in " - cite { - - "Media Fragments URI" - } - - ". " - a href="#refsMEDIAFRAG" { - - "[MEDIAFRAG]" - } - } - - "\n " - } - dt { - - "HTTP and related specifications" - } - dd { - - "\n " - p { - - "The following terms are defined in the HTTP specifications: " - a href="#refsHTTP" { - - "[HTTP]" - } - } - - "\n\n " - ul class="brief" { - li { - - "`" - dfn id="http-accept" { - a href="https://httpwg.org/specs/rfc7231.html#header.accept" { - code { - - "Accept" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-accept-language" { - a href="https://httpwg.org/specs/rfc7231.html#header.accept-language" { - code { - - "Accept-Language" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-cache-control" { - a href="https://httpwg.org/specs/rfc7234.html#header.cache-control" { - code { - - "Cache-Control" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-content-disposition" { - a href="https://httpwg.org/specs/rfc6266.html" { - code { - - "Content-Disposition" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-content-language" { - a href="https://httpwg.org/specs/rfc7231.html#header.content-language" { - code { - - "Content-Language" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-content-range" { - a href="https://httpwg.org/specs/rfc7233.html#header.content-range" { - code { - - "Content-Range" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-last-modified" { - a href="https://httpwg.org/specs/rfc7232.html#header.last-modified" { - code { - - "Last-Modified" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-range" { - a href="https://httpwg.org/specs/rfc7233.html#header.range" { - code { - - "Range" - } - } - } - - "` header" - } - li { - - "`" - dfn id="http-referer" { - a href="https://httpwg.org/specs/rfc7231.html#header.referer" { - code { - - "Referer" - } - } - } - - "` header" - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "HTTP State Management Mechanism" - } - - ":\n " - a href="#refsCOOKIES" { - - "[COOKIES]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="cookie-string" { - a href="https://httpwg.org/specs/rfc6265.html#sane-cookie-syntax" { - - "cookie-string" - } - } - } - li { - dfn id="receives-a-set-cookie-string" { - a href="https://httpwg.org/specs/rfc6265.html#storage-model" { - - "receives a set-cookie-string" - } - } - } - li { - - "`" - dfn id="http-cookie" { - a href="https://httpwg.org/specs/rfc6265.html#cookie" { - code { - - "Cookie" - } - } - } - - "` header" - } - } - - "\n\n " - p { - - "The following term is defined in " - cite { - - "Web Linking" - } - - ": " - a href="#refsWEBLINK" { - - "[WEBLINK]" - } - } - - "\n\n " - ul class="brief" { - li { - - "`" - dfn id="http-link" { - a href="https://httpwg.org/specs/rfc8288.html#header" { - code { - - "Link" - } - } - } - - "` header" - } - li { - dfn id="parsing-a-link-field-value" { - a href="https://httpwg.org/specs/rfc8288.html#parse-fv" { - - "Parsing a `" - code { - - "Link" - } - - "` field value" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Structured Field Values for HTTP" - } - - ":\n " - a href="#refsSTRUCTURED-FIELDS" { - - "[STRUCTURED-FIELDS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="http-structured-header" { - a href="https://httpwg.org/specs/rfc8941.html" { - - "structured header" - } - } - } - li { - dfn id="http-structured-header-boolean" { - a href="https://httpwg.org/specs/rfc8941.html#boolean" { - - "boolean" - } - } - } - li { - dfn id="http-structured-header-token" { - a href="https://httpwg.org/specs/rfc8941.html#token" { - - "token" - } - } - } - li { - dfn id="http-structured-header-parameters" { - a href="https://httpwg.org/specs/rfc8941.html#param" { - - "parameters" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "MIME Sniffing" - } - - ": " - a href="#refsMIMESNIFF" { - - "[MIMESNIFF]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="mime-type" { - a href="https://mimesniff.spec.whatwg.org/#mime-type" { - - "MIME type" - } - } - } - li { - dfn id="mime-type-essence" { - a href="https://mimesniff.spec.whatwg.org/#mime-type-essence" { - - "MIME type essence" - } - } - } - li { - dfn id="valid-mime-type-string" { - a href="https://mimesniff.spec.whatwg.org/#valid-mime-type" { - - "valid MIME type string" - } - } - } - li { - dfn id="valid-mime-type-string-with-no-parameters" { - a href="https://mimesniff.spec.whatwg.org/#valid-mime-type-with-no-parameters" { - - "valid MIME type string with no parameters" - } - } - } - li { - dfn id="html-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#html-mime-type" { - - "HTML MIME type" - } - } - } - li { - dfn id="javascript-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#javascript-mime-type" { - - "JavaScript MIME type" - } - } - - " and\n " - dfn id="javascript-mime-type-essence-match" { - a href="https://mimesniff.spec.whatwg.org/#javascript-mime-type-essence-match" { - - "JavaScript MIME type essence match" - } - } - } - li { - dfn id="json-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#json-mime-type" { - - "JSON MIME type" - } - } - } - li { - dfn id="xml-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#xml-mime-type" { - - "XML MIME type" - } - } - } - li { - dfn id="image-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#image-mime-type" { - - "image MIME type" - } - } - } - li { - dfn id="audio-or-video-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#audio-or-video-mime-type" { - - "audio or video MIME type" - } - } - } - li { - dfn id="font-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#font-mime-type" { - - "font MIME type" - } - } - } - li { - dfn id="parse-a-mime-type" { - a href="https://mimesniff.spec.whatwg.org/#parse-a-mime-type" { - - "parse a MIME type" - } - } - } - li { - dfn id="is-mime-type-supported-by-the-user-agent" { - a href="https://mimesniff.spec.whatwg.org/#supported-by-the-user-agent" { - - "is MIME type supported by the user agent?" - } - } - } - } - - "\n " - } - dt { - - "Fetch" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Fetch" - } - - ": " - a href="#refsFETCH" { - - "[FETCH]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="header-abnf" { - a href="https://fetch.spec.whatwg.org/#abnf" { - - "ABNF" - } - } - } - li { - dfn id="about:blank" { - code { - - "about:blank" - } - } - } - li { - - "An " - dfn id="http(s)-scheme" { - a href="https://fetch.spec.whatwg.org/#http-scheme" { - - "HTTP(S) scheme" - } - } - } - li { - - "A URL which " - dfn id="is-local" { - a href="https://fetch.spec.whatwg.org/#is-local" { - - "is local" - } - } - } - li { - - "A " - dfn id="local-scheme" { - a href="https://fetch.spec.whatwg.org/#local-scheme" { - - "local scheme" - } - } - } - li { - - "A " - dfn id="fetch-scheme" { - a href="https://fetch.spec.whatwg.org/#fetch-scheme" { - - "fetch scheme" - } - } - } - li { - dfn id="cors-protocol" { - a href="https://fetch.spec.whatwg.org/#http-cors-protocol" { - - "CORS protocol" - } - } - } - li { - dfn id="default-user-agent-value" { - a href="https://fetch.spec.whatwg.org/#default-user-agent-value" { - - "default `" - code { - - "User-Agent" - } - - "` value" - } - } - } - li { - dfn id="extract-a-mime-type" { - a href="https://fetch.spec.whatwg.org/#concept-header-extract-mime-type" { - - "extract a MIME type" - } - } - } - li { - dfn id="legacy-extract-an-encoding" { - a href="https://fetch.spec.whatwg.org/#legacy-extract-an-encoding" { - - "legacy extract an encoding" - } - } - } - li { - dfn id="concept-fetch" { - a href="https://fetch.spec.whatwg.org/#concept-fetch" { - - "fetch" - } - } - } - li { - dfn id="fetch-controller" { - a href="https://fetch.spec.whatwg.org/#fetch-controller" { - - "fetch controller" - } - } - } - li { - dfn id="process-the-next-manual-redirect" { - a href="https://fetch.spec.whatwg.org/#fetch-controller-process-the-next-manual-redirect" { - - "process the next manual redirect" - } - } - } - li { - dfn id="ok-status" { - a href="https://fetch.spec.whatwg.org/#ok-status" { - - "ok status" - } - } - } - li { - dfn id="navigation-request" { - a href="https://fetch.spec.whatwg.org/#navigation-request" { - - "navigation request" - } - } - } - li { - dfn id="network-error" { - a href="https://fetch.spec.whatwg.org/#concept-network-error" { - - "network error" - } - } - } - li { - dfn id="aborted-network-error" { - a href="https://fetch.spec.whatwg.org/#concept-aborted-network-error" { - - "aborted network error" - } - } - } - li { - - "`" - dfn id="http-origin" { - a href="https://fetch.spec.whatwg.org/#http-origin" { - code { - - "Origin" - } - } - } - - "` header" - } - li { - - "`" - dfn id="cross-origin-resource-policy" { - a href="https://fetch.spec.whatwg.org/#http-cross-origin-resource-policy" { - code { - - "Cross-Origin-Resource-Policy" - } - } - } - - "` header" - } - li { - dfn id="getting-a-structured-field-value" { - a href="https://fetch.spec.whatwg.org/#concept-header-list-get-structured-header" { - - "getting a structured field value" - } - } - } - li { - dfn id="concept-header-list" { - a href="https://fetch.spec.whatwg.org/#concept-header-list" { - - "header list" - } - } - } - li { - dfn id="concept-header-list-set" { - a href="https://fetch.spec.whatwg.org/#concept-header-list-set" { - - "set" - } - } - } - li { - dfn id="concept-header-list-get-decode-split" { - a href="https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split" { - - "get, decode, and split" - } - } - } - li { - dfn id="fetch-controller-abort" { - a href="https://fetch.spec.whatwg.org/#fetch-controller-abort" { - - "abort" - } - } - } - li { - dfn id="cross-origin-resource-policy-check" { - a href="https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check" { - - "cross-origin resource policy check" - } - } - } - li { - - "the " - dfn id="requestcredentials" { - a href="https://fetch.spec.whatwg.org/#requestcredentials" { - code { - - "RequestCredentials" - } - } - } - - " enumeration" - } - li { - - "the " - dfn id="requestdestination" { - a href="https://fetch.spec.whatwg.org/#requestdestination" { - code { - - "RequestDestination" - } - } - } - - " enumeration" - } - li { - - "the " - dfn id="fetch()" { - a href="https://fetch.spec.whatwg.org/#dom-global-fetch" { - code { - - "fetch()" - } - } - } - - " method" - } - li { - dfn id="report-timing" { - a href="https://fetch.spec.whatwg.org/#finalize-and-report-timing" { - - "report timing" - } - } - } - li { - dfn id="serialize-a-response-url-for-reporting" { - a href="https://fetch.spec.whatwg.org/#serialize-a-response-url-for-reporting" { - - "serialize a response URL for reporting" - } - } - } - li { - dfn id="body-safely-extract" { - a href="https://fetch.spec.whatwg.org/#bodyinit-safely-extract" { - - "safely extracting a body" - } - } - } - li { - dfn id="body-incrementally-read" { - a href="https://fetch.spec.whatwg.org/#body-incrementally-read" { - - "incrementally reading a body" - } - } - } - li { - dfn id="processresponseconsumebody" { - a href="https://fetch.spec.whatwg.org/#process-response-end-of-body" { - - "processResponseConsumeBody" - } - } - } - li { - dfn id="processresponseendofbody" { - a href="https://fetch.spec.whatwg.org/#fetch-processresponseendofbody" { - - "processResponseEndOfBody" - } - } - } - li { - dfn id="processresponse" { - a href="https://fetch.spec.whatwg.org/#process-response" { - - "processResponse" - } - } - } - li { - dfn id="useparallelqueue" { - a href="https://fetch.spec.whatwg.org/#fetch-useparallelqueue" { - - "useParallelQueue" - } - } - } - li { - dfn id="processearlyhintsresponse" { - a href="https://fetch.spec.whatwg.org/#fetch-processearlyhintsresponse" { - - "processEarlyHintsResponse" - } - } - } - li { - dfn id="connection-pool" { - a href="https://fetch.spec.whatwg.org/#concept-connection-pool" { - - "connection pool" - } - } - } - li { - dfn id="obtain-a-connection" { - a href="https://fetch.spec.whatwg.org/#concept-connection-obtain" { - - "obtain a connection" - } - } - } - li { - dfn id="determine-the-network-partition-key" { - a href="https://fetch.spec.whatwg.org/#determine-the-network-partition-key" { - - "determine the network partition key" - } - } - } - li { - dfn id="extract-full-timing-info" { - a href="https://fetch.spec.whatwg.org/#extract-full-timing-info" { - - "extract full timing info" - } - } - } - li { - dfn id="as-a-body" { - a href="https://fetch.spec.whatwg.org/#byte-sequence-as-a-body" { - - "as a body" - } - } - } - li { - dfn id="response-body-info" { - a href="https://fetch.spec.whatwg.org/#response-body-info" { - - "response body info" - } - } - } - li { - dfn id="resolve-an-origin" { - a href="https://fetch.spec.whatwg.org/#resolve-an-origin" { - - "resolve an origin" - } - } - } - li { - - "\n " - dfn id="concept-response" { - a href="https://fetch.spec.whatwg.org/#concept-response" { - - "response" - } - } - - " and its\n associated:\n " - ul class="brief" { - li { - dfn id="concept-response-type" { - a href="https://fetch.spec.whatwg.org/#concept-response-type" { - - "type" - } - } - } - li { - dfn id="concept-response-url" { - a href="https://fetch.spec.whatwg.org/#concept-response-url" { - - "URL" - } - } - } - li { - dfn id="concept-response-url-list" { - a href="https://fetch.spec.whatwg.org/#concept-response-url-list" { - - "URL list" - } - } - } - li { - dfn id="concept-response-status" { - a href="https://fetch.spec.whatwg.org/#concept-response-status" { - - "status" - } - } - } - li { - dfn id="concept-response-header-list" { - a href="https://fetch.spec.whatwg.org/#concept-response-header-list" { - - "header list" - } - } - } - li { - dfn id="concept-response-body" { - a href="https://fetch.spec.whatwg.org/#concept-response-body" { - - "body" - } - } - } - li { - dfn id="concept-response-body-info" { - a href="https://fetch.spec.whatwg.org/#concept-response-body-info" { - - "body info" - } - } - } - li { - dfn id="concept-internal-response" { - a href="https://fetch.spec.whatwg.org/#concept-internal-response" { - - "internal response" - } - } - } - li { - dfn id="concept-response-location-url" { - a href="https://fetch.spec.whatwg.org/#concept-response-location-url" { - - "location URL" - } - } - } - li { - dfn id="concept-response-timing-info" { - a href="https://fetch.spec.whatwg.org/#concept-response-timing-info" { - - "timing info" - } - } - } - li { - dfn id="concept-response-service-worker-timing-info" { - a href="https://fetch.spec.whatwg.org/#response-service-worker-timing-info" { - - "service worker timing info" - } - } - } - li { - dfn id="concept-response-has-cross-origin-redirects" { - a href="https://fetch.spec.whatwg.org/#response-has-cross-origin-redirects" { - - "has-cross-origin-redirects" - } - } - } - li { - dfn id="concept-response-timing-allow-passed" { - a href="https://fetch.spec.whatwg.org/#concept-response-timing-allow-passed" { - - "timing allow passed" - } - } - } - li { - - "\n " - dfn id="extract-content-range-values" { - a href="https://wicg.github.io/background-fetch/#extract-content-range-values" { - - "extract content-range values" - } - } - - "\n \n " - } - } - - "\n " - } - li { - - "\n " - dfn id="concept-request" { - a href="https://fetch.spec.whatwg.org/#concept-request" { - - "request" - } - } - - " and its associated:\n " - ul class="brief" { - li { - dfn id="concept-request-url" { - a href="https://fetch.spec.whatwg.org/#concept-request-url" { - - "URL" - } - } - } - li { - dfn id="concept-request-method" { - a href="https://fetch.spec.whatwg.org/#concept-request-method" { - - "method" - } - } - } - li { - dfn id="concept-request-header-list" { - a href="https://fetch.spec.whatwg.org/#concept-request-header-list" { - - "header list" - } - } - } - li { - dfn id="concept-request-body" { - a href="https://fetch.spec.whatwg.org/#concept-request-body" { - - "body" - } - } - } - li { - dfn id="concept-request-client" { - a href="https://fetch.spec.whatwg.org/#concept-request-client" { - - "client" - } - } - } - li { - dfn id="concept-request-url-list" { - a href="https://fetch.spec.whatwg.org/#concept-request-url-list" { - - "URL list" - } - } - } - li { - dfn id="concept-request-current-url" { - a href="https://fetch.spec.whatwg.org/#concept-request-current-url" { - - "current URL" - } - } - } - li { - dfn id="concept-request-reserved-client" { - a href="https://fetch.spec.whatwg.org/#concept-request-reserved-client" { - - "reserved client" - } - } - } - li { - dfn id="concept-request-replaces-client-id" { - a href="https://fetch.spec.whatwg.org/#concept-request-replaces-client-id" { - - "replaces client id" - } - } - } - li { - dfn id="concept-request-initiator" { - a href="https://fetch.spec.whatwg.org/#concept-request-initiator" { - - "initiator" - } - } - } - li { - dfn id="concept-request-destination" { - a href="https://fetch.spec.whatwg.org/#concept-request-destination" { - - "destination" - } - } - } - li { - dfn id="concept-potential-destination" { - a href="https://fetch.spec.whatwg.org/#concept-potential-destination" { - - "potential destination" - } - } - } - li { - dfn id="concept-potential-destination-translate" { - a href="https://fetch.spec.whatwg.org/#concept-potential-destination-translate" { - - "translating" - } - } - - " a " - a href="https://fetch.spec.whatwg.org/#concept-potential-destination" id="dependencies:concept-potential-destination" data-x-internal="concept-potential-destination" { - - "potential destination" - } - } - li { - dfn id="concept-script-like-destination" { - a href="https://fetch.spec.whatwg.org/#request-destination-script-like" { - - "script-like" - } - } - - " " - a href="https://fetch.spec.whatwg.org/#concept-request-destination" id="dependencies:concept-request-destination" data-x-internal="concept-request-destination" { - - "destinations" - } - } - li { - dfn id="concept-request-priority" { - a href="https://fetch.spec.whatwg.org/#request-priority" { - - "priority" - } - } - } - li { - dfn id="concept-request-origin" { - a href="https://fetch.spec.whatwg.org/#concept-request-origin" { - - "origin" - } - } - } - li { - dfn id="concept-request-referrer" { - a href="https://fetch.spec.whatwg.org/#concept-request-referrer" { - - "referrer" - } - } - } - li { - dfn id="synchronous-flag" { - a href="https://fetch.spec.whatwg.org/#synchronous-flag" { - - "synchronous flag" - } - } - } - li { - dfn id="concept-request-mode" { - a href="https://fetch.spec.whatwg.org/#concept-request-mode" { - - "mode" - } - } - } - li { - dfn id="concept-request-credentials-mode" { - a href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode" { - - "credentials mode" - } - } - } - li { - dfn id="use-url-credentials-flag" { - a href="https://fetch.spec.whatwg.org/#concept-request-use-url-credentials-flag" { - - "use-URL-credentials flag" - } - } - } - li { - dfn id="unsafe-request-flag" { - a href="https://fetch.spec.whatwg.org/#unsafe-request-flag" { - - "unsafe-request flag" - } - } - } - li { - dfn id="concept-request-cache-mode" { - a href="https://fetch.spec.whatwg.org/#concept-request-cache-mode" { - - "cache mode" - } - } - } - li { - dfn id="concept-request-redirect-count" { - a href="https://fetch.spec.whatwg.org/#concept-request-redirect-count" { - - "redirect count" - } - } - } - li { - dfn id="concept-request-redirect-mode" { - a href="https://fetch.spec.whatwg.org/#concept-request-redirect-mode" { - - "redirect mode" - } - } - } - li { - dfn id="concept-request-policy-container" { - a href="https://fetch.spec.whatwg.org/#concept-request-policy-container" { - - "policy container" - } - } - } - li { - dfn id="concept-request-referrer-policy" { - a href="https://fetch.spec.whatwg.org/#concept-request-referrer-policy" { - - "referrer policy" - } - } - } - li { - dfn id="concept-request-nonce-metadata" { - a href="https://fetch.spec.whatwg.org/#concept-request-nonce-metadata" { - - "cryptographic nonce metadata" - } - } - } - li { - dfn id="concept-request-integrity-metadata" { - a href="https://fetch.spec.whatwg.org/#concept-request-integrity-metadata" { - - "integrity metadata" - } - } - } - li { - dfn id="concept-request-parser-metadata" { - a href="https://fetch.spec.whatwg.org/#concept-request-parser-metadata" { - - "parser metadata" - } - } - } - li { - dfn id="concept-request-reload-navigation-flag" { - a href="https://fetch.spec.whatwg.org/#concept-request-reload-navigation-flag" { - - "reload-navigation flag" - } - } - } - li { - dfn id="concept-request-history-navigation-flag" { - a href="https://fetch.spec.whatwg.org/#concept-request-history-navigation-flag" { - - "history-navigation flag" - } - } - } - li { - dfn id="concept-request-user-activation" { - a href="https://fetch.spec.whatwg.org/#request-user-activation" { - - "user-activation" - } - } - } - li { - dfn id="concept-request-render-blocking" { - a href="https://fetch.spec.whatwg.org/#request-render-blocking" { - - "render-blocking" - } - } - } - li { - dfn id="concept-request-initiator-type" { - a href="https://fetch.spec.whatwg.org/#request-initiator-type" { - - "initiator type" - } - } - } - li { - dfn id="add-a-range-header" { - a href="https://fetch.spec.whatwg.org/#concept-request-add-range-header" { - - "add a range header" - } - } - } - } - - "\n " - } - li { - - "\n " - dfn id="fetch-timing-info" { - a href="https://fetch.spec.whatwg.org/#fetch-timing-info" { - - "fetch timing info" - } - } - - " and its\n associated:\n " - ul class="brief" { - li { - dfn id="fetch-timing-info-start-time" { - a href="https://fetch.spec.whatwg.org/#fetch-timing-info-start-time" { - - "start time" - } - } - } - li { - dfn id="fetch-timing-info-end-time" { - a href="https://fetch.spec.whatwg.org/#fetch-timing-info-end-time" { - - "end time" - } - } - } - } - - "\n " - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Referrer Policy" - } - - ":\n " - a href="#refsREFERRERPOLICY" { - - "[REFERRERPOLICY]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="referrer-policy" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy" { - - "referrer policy" - } - } - } - li { - - "The `" - dfn id="http-referrer-policy" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header-dfn" { - code { - - "Referrer-Policy" - } - } - } - - "` HTTP header" - } - li { - - "The " - dfn id="parse-referrer-policy-header" { - a href="https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header" { - - "parse a referrer policy from a `" - code { - - "Referrer-Policy" - } - - "` header" - } - } - - " algorithm" - } - li { - - "The \"" - dfn id="referrer-policy-no-referrer" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer" { - code { - - "no-referrer" - } - } - } - - "\",\n \"" - dfn id="referrer-policy-no-referrer-when-downgrade" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade" { - code { - - "no-referrer-when-downgrade" - } - } - } - - "\",\n \"" - dfn id="referrer-policy-origin-when-cross-origin" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin" { - code { - - "origin-when-cross-origin" - } - } - } - - "\", and\n \"" - dfn id="referrer-policy-unsafe-url" { - a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url" { - code { - - "unsafe-url" - } - } - } - - "\" referrer policies" - } - li { - - "The " - dfn id="default-referrer-policy" { - a href="https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy" { - - "default referrer policy" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Mixed Content" - } - - ": " - a href="#refsMIX" { - - "[MIX]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="a-priori-authenticated-url" { - a href="https://w3c.github.io/webappsec-mixed-content/#a-priori-authenticated-url" { - i { - - "a priori" - } - - " authenticated URL" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Subresource Integrity" - } - - ": " - a href="#refsSRI" { - - "[SRI]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="parse-integrity-metadata" { - a href="https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata" { - - "parse integrity metadata" - } - } - } - li { - dfn id="the-requirements-of-the-integrity-attribute" { - a href="https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute" { - - "the requirements of the integrity attribute" - } - } - } - li { - dfn id="get-the-strongest-metadata-from-set" { - a href="https://w3c.github.io/webappsec-subresource-integrity/#get-the-strongest-metadata" { - - "get the strongest metadata from set" - } - } - } - } - - "\n " - } - dt { - - "Paint Timing" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Paint Timing" - } - - ": " - a href="#refsPAINTTIMING" { - - "[PAINTTIMING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="mark-paint-timing" { - a href="https://w3c.github.io/paint-timing/#mark-paint-timing" { - - "mark paint timing" - } - } - } - } - - "\n " - } - dt { - - "Navigation Timing" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Navigation Timing" - } - - ":\n " - a href="#refsNAVIGATIONTIMING" { - - "[NAVIGATIONTIMING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="create-the-navigation-timing-entry" { - a href="https://w3c.github.io/navigation-timing/#dfn-create-the-navigation-timing-entry" { - - "create the navigation timing entry" - } - } - } - li { - dfn id="queue-the-navigation-timing-entry" { - a href="https://w3c.github.io/navigation-timing/#dfn-queue-the-navigation-timing-entry" { - - "queue the navigation timing entry" - } - } - } - li { - dfn id="navigationtimingtype" { - a href="https://w3c.github.io/navigation-timing/#dom-navigationtimingtype" { - code { - - "NavigationTimingType" - } - } - } - - " and its\n \"" - dfn id="dom-navigationtimingtype-navigate" { - a href="https://w3c.github.io/navigation-timing/#dom-navigationtimingtype-navigate" { - code { - - "navigate" - } - } - } - - "\",\n \"" - dfn id="dom-navigationtimingtype-reload" { - a href="https://w3c.github.io/navigation-timing/#dom-navigationtimingtype-reload" { - code { - - "reload" - } - } - } - - "\", and\n \"" - dfn id="dom-navigationtimingtype-back_forward" { - a href="https://w3c.github.io/navigation-timing/#dom-navigationtimingtype-back_forward" { - code { - - "back_forward" - } - } - } - - "\" values." - } - } - - "\n " - } - dt { - - "Resource Timing" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Resource Timing" - } - - ":\n " - a href="#refsRESOURCETIMING" { - - "[RESOURCETIMING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="mark-resource-timing" { - a href="https://w3c.github.io/resource-timing/#dfn-mark-resource-timing" { - - "Mark resource timing" - } - } - } - } - - "\n\n " - } - dt { - - "Performance Timeline" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Performance Timeline" - } - - ":\n " - a href="#refsPERFORMANCETIMELINE" { - - "[PERFORMANCETIMELINE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="performanceentry" { - a href="https://w3c.github.io/performance-timeline/#dom-performanceentry" { - code { - - "PerformanceEntry" - } - } - } - - " and its\n " - dfn id="performanceentry-name" { - a href="https://w3c.github.io/performance-timeline/#dom-performanceentry-name" { - code { - - "name" - } - } - } - - ",\n " - dfn id="performanceentry-entrytype" { - a href="https://w3c.github.io/performance-timeline/#dom-performanceentry-entrytype" { - code { - - "entryType" - } - } - } - - ",\n " - dfn id="performanceentry-starttime" { - a href="https://w3c.github.io/performance-timeline/#dom-performanceentry-starttime" { - code { - - "startTime" - } - } - } - - ", and\n " - dfn id="performanceentry-duration" { - a href="https://w3c.github.io/performance-timeline/#dom-performanceentry-duration" { - code { - - "duration" - } - } - } - - " attributes." - } - li { - dfn id="queue-a-performance-entry" { - a href="https://w3c.github.io/performance-timeline/#queue-a-performanceentry" { - - "Queue a performance entry" - } - } - } - } - - "\n " - } - dt { - - "Long Animation Frames" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Long Animation Frames" - } - - ": " - a href="#refsLONGANIMATIONFRAMES" { - - "[LONGANIMATIONFRAMES]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="record-task-start-time" { - a href="https://w3c.github.io/long-animation-frames/#record-task-start-time" { - - "record task start time" - } - } - } - li { - dfn id="record-task-end-time" { - a href="https://w3c.github.io/long-animation-frames/#record-task-end-time" { - - "record task end time" - } - } - } - li { - dfn id="record-rendering-time" { - a href="https://w3c.github.io/long-animation-frames/#record-rendering-time" { - - "record rendering time" - } - } - } - li { - dfn id="record-classic-script-creation-time" { - a href="https://w3c.github.io/long-animation-frames/#record-classic-script-creation-time" { - - "record classic script creation time" - } - } - } - li { - dfn id="record-classic-script-execution-start-time" { - a href="https://w3c.github.io/long-animation-frames/#record-classic-script-execution-start-time" { - - "record classic script execution start time" - } - } - } - li { - dfn id="record-module-script-execution-start-time" { - a href="https://w3c.github.io/long-animation-frames/#record-module-script-execution-start-time" { - - "record module script execution start time" - } - } - } - li { - dfn id="record-pause-duration" { - a href="https://w3c.github.io/long-animation-frames/#record-pause-duration" { - - "Record pause duration" - } - } - } - li { - dfn id="record-timing-info-for-timer-handler" { - a href="https://w3c.github.io/long-animation-frames/#record-timing-info-for-timer-handler" { - - "record timing info for timer handler" - } - } - } - li { - dfn id="record-timing-info-for-microtask-checkpoint" { - a href="https://w3c.github.io/long-animation-frames/#record-timing-info-for-microtask-checkpoint" { - - "record timing info for microtask checkpoint" - } - } - } - } - - "\n " - } - dt { - - "Long Tasks" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Long Tasks" - } - - ": " - a href="#refsLONGTASKS" { - - "[LONGTASKS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="report-long-tasks" { - a href="https://w3c.github.io/longtasks/#report-long-tasks" { - - "report long tasks" - } - } - } - } - - "\n " - } - dt { - - "Web IDL" - } - dd { - - "\n " - p { - - "The IDL fragments in this specification must be interpreted as required for conforming IDL\n fragments, as described in " - cite { - - "Web IDL" - } - - ". " - a href="#refsWEBIDL" { - - "[WEBIDL]" - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Web IDL" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="this" { - a href="https://webidl.spec.whatwg.org/#this" { - - "this" - } - } - } - li { - dfn id="extended-attribute" { - a href="https://webidl.spec.whatwg.org/#dfn-extended-attribute" { - - "extended attribute" - } - } - } - li { - dfn id="named-constructor" { - a href="https://webidl.spec.whatwg.org/#dfn-named-constructor" { - - "named constructor" - } - } - } - li { - dfn id="constructor-operation" { - a href="https://webidl.spec.whatwg.org/#idl-constructors" { - - "constructor operation" - } - } - } - li { - dfn id="overridden-constructor-steps" { - a href="https://webidl.spec.whatwg.org/#overridden-constructor-steps" { - - "overridden constructor steps" - } - } - } - li { - dfn id="internally-create-a-new-object-implementing-the-interface" { - a href="https://webidl.spec.whatwg.org/#internally-create-a-new-object-implementing-the-interface" { - - "internally create a new object implementing the interface" - } - } - } - li { - dfn id="array-index-property-name" { - a href="https://webidl.spec.whatwg.org/#dfn-array-index-property-name" { - - "array index property name" - } - } - } - li { - dfn id="supports-indexed-properties" { - a href="https://webidl.spec.whatwg.org/#dfn-support-indexed-properties" { - - "supports indexed properties" - } - } - } - li { - dfn id="supported-property-indices" { - a href="https://webidl.spec.whatwg.org/#dfn-supported-property-indices" { - - "supported property indices" - } - } - } - li { - dfn id="determine-the-value-of-an-indexed-property" { - a href="https://webidl.spec.whatwg.org/#dfn-determine-the-value-of-an-indexed-property" { - - "determine the value of an indexed property" - } - } - } - li { - dfn id="set-the-value-of-an-existing-indexed-property" { - a href="https://webidl.spec.whatwg.org/#dfn-set-the-value-of-an-existing-indexed-property" { - - "set the value of an existing indexed property" - } - } - } - li { - dfn id="set-the-value-of-a-new-indexed-property" { - a href="https://webidl.spec.whatwg.org/#dfn-set-the-value-of-a-new-indexed-property" { - - "set the value of a new indexed property" - } - } - } - li { - dfn id="support-named-properties" { - a href="https://webidl.spec.whatwg.org/#dfn-support-named-properties" { - - "support named properties" - } - } - } - li { - dfn id="supported-property-names" { - a href="https://webidl.spec.whatwg.org/#dfn-supported-property-names" { - - "supported property names" - } - } - } - li { - dfn id="determine-the-value-of-a-named-property" { - a href="https://webidl.spec.whatwg.org/#dfn-determine-the-value-of-a-named-property" { - - "determine the value of a named property" - } - } - } - li { - dfn id="set-the-value-of-an-existing-named-property" { - a href="https://webidl.spec.whatwg.org/#dfn-set-the-value-of-an-existing-named-property" { - - "set the value of an existing named property" - } - } - } - li { - dfn id="set-the-value-of-a-new-named-property" { - a href="https://webidl.spec.whatwg.org/#dfn-set-the-value-of-a-new-named-property" { - - "set the value of a new named property" - } - } - } - li { - dfn id="delete-an-existing-named-property" { - a href="https://webidl.spec.whatwg.org/#dfn-delete-an-existing-named-property" { - - "delete an existing named property" - } - } - } - li { - dfn id="perform-a-security-check" { - a href="https://webidl.spec.whatwg.org/#dfn-perform-a-security-check" { - - "perform a security check" - } - } - } - li { - dfn id="platform-object" { - a href="https://webidl.spec.whatwg.org/#dfn-platform-object" { - - "platform object" - } - } - } - li { - dfn id="legacy-platform-object" { - a href="https://webidl.spec.whatwg.org/#dfn-legacy-platform-object" { - - "legacy platform object" - } - } - } - li { - dfn id="primary-interface" { - a href="https://webidl.spec.whatwg.org/#dfn-primary-interface" { - - "primary interface" - } - } - } - li { - dfn id="interface-object" { - a href="https://webidl.spec.whatwg.org/#dfn-interface-object" { - - "interface object" - } - } - } - li { - dfn id="named-properties-object" { - a href="https://webidl.spec.whatwg.org/#dfn-named-properties-object" { - - "named properties object" - } - } - } - li { - dfn id="include" { - a href="https://webidl.spec.whatwg.org/#include" { - - "include" - } - } - } - li { - dfn id="inherit" { - a href="https://webidl.spec.whatwg.org/#dfn-inherit" { - - "inherit" - } - } - } - li { - dfn id="interface-prototype-object" { - a href="https://webidl.spec.whatwg.org/#dfn-interface-prototype-object" { - - "interface prototype object" - } - } - } - li { - dfn id="implements" { - a href="https://webidl.spec.whatwg.org/#implements" { - - "implements" - } - } - } - li { - dfn id="associated-realm" { - a href="https://webidl.spec.whatwg.org/#dfn-associated-realm" { - - "associated realm" - } - } - } - li { - dfn id="realm-field-of-a-platform-object" { - a href="https://webidl.spec.whatwg.org/#es-platform-objects" { - - "[[Realm]] field of a platform object" - } - } - } - li { - dfn id="named-properties-object-getownproperty" { - a href="https://webidl.spec.whatwg.org/#named-properties-object-getownproperty" { - - "[[GetOwnProperty]] internal method of a named properties object" - } - } - } - li { - dfn id="callback-context" { - a href="https://webidl.spec.whatwg.org/#dfn-callback-context" { - - "callback context" - } - } - } - li { - dfn id="frozen-array" { - a href="https://webidl.spec.whatwg.org/#dfn-frozen-array-type" { - - "frozen array" - } - } - - " and\n " - dfn id="creating-a-frozen-array" { - a href="https://webidl.spec.whatwg.org/#dfn-create-frozen-array" { - - "creating a frozen array" - } - } - } - li { - dfn id="new" { - a href="https://webidl.spec.whatwg.org/#new" { - - "create a new object implementing the interface" - } - } - } - li { - dfn id="dfn-callback-this-value" { - a href="https://webidl.spec.whatwg.org/#dfn-callback-this-value" { - - "callback this value" - } - } - } - li { - dfn id="concept-idl-convert" { - a href="https://webidl.spec.whatwg.org/#es-type-mapping" { - - "converting" - } - } - - " between Web IDL types and JS types" - } - li { - dfn id="es-invoking-callback-functions" { - a href="https://webidl.spec.whatwg.org/#invoke-a-callback-function" { - - "invoking" - } - } - - " and\n " - dfn id="es-constructing-callback-functions" { - a href="https://webidl.spec.whatwg.org/#construct-a-callback-function" { - - "constructing" - } - } - - " callback functions" - } - li { - dfn id="overload-resolution-algorithm" { - a href="https://webidl.spec.whatwg.org/#dfn-overload-resolution-algorithm" { - - "overload resolution algorithm" - } - } - } - li { - dfn id="idl-exposed" { - a href="https://webidl.spec.whatwg.org/#dfn-exposed" { - - "exposed" - } - } - } - li { - dfn id="a-promise-resolved-with" { - a href="https://webidl.spec.whatwg.org/#a-promise-resolved-with" { - - "a promise resolved with" - } - } - } - li { - dfn id="a-promise-rejected-with" { - a href="https://webidl.spec.whatwg.org/#a-promise-rejected-with" { - - "a promise rejected with" - } - } - } - li { - dfn id="wait-for-all" { - a href="https://webidl.spec.whatwg.org/#wait-for-all" { - - "wait for all" - } - } - } - li { - dfn id="upon-rejection" { - a href="https://webidl.spec.whatwg.org/#upon-rejection" { - - "upon rejection" - } - } - } - li { - dfn id="upon-fulfillment" { - a href="https://webidl.spec.whatwg.org/#upon-fulfillment" { - - "upon fulfillment" - } - } - } - li { - dfn id="mark-as-handled" { - a href="https://webidl.spec.whatwg.org/#mark-a-promise-as-handled" { - - "mark as handled" - } - } - } - li { - dfn id="global" { - a href="https://webidl.spec.whatwg.org/#Global" { - code { - - "[Global]" - } - } - } - } - li { - dfn id="legacyfactoryfunction" { - a href="https://webidl.spec.whatwg.org/#LegacyFactoryFunction" { - code { - - "[LegacyFactoryFunction]" - } - } - } - } - li { - dfn id="legacylenientthis" { - a href="https://webidl.spec.whatwg.org/#LegacyLenientThis" { - code { - - "[LegacyLenientThis]" - } - } - } - } - li { - dfn id="legacynulltoemptystring" { - a href="https://webidl.spec.whatwg.org/#LegacyNullToEmptyString" { - code { - - "[LegacyNullToEmptyString]" - } - } - } - } - li { - dfn id="legacyoverridebuiltins" { - a href="https://webidl.spec.whatwg.org/#LegacyOverrideBuiltIns" { - code { - - "[LegacyOverrideBuiltIns]" - } - } - } - } - li { - dfn id="legacyplatformobjectgetownproperty" { - a href="https://webidl.spec.whatwg.org/#LegacyPlatformObjectGetOwnProperty" { - - "LegacyPlatformObjectGetOwnProperty" - } - } - } - li { - dfn id="legacytreatnonobjectasnull" { - a href="https://webidl.spec.whatwg.org/#LegacyTreatNonObjectAsNull" { - code { - - "[LegacyTreatNonObjectAsNull]" - } - } - } - } - li { - dfn id="legacyunenumerablenamedproperties" { - a href="https://webidl.spec.whatwg.org/#LegacyUnenumerableNamedProperties" { - code { - - "[LegacyUnenumerableNamedProperties]" - } - } - } - } - li { - dfn id="legacyunforgeable" { - a href="https://webidl.spec.whatwg.org/#LegacyUnforgeable" { - code { - - "[LegacyUnforgeable]" - } - } - } - } - li { - dfn id="set-entries" { - a href="https://webidl.spec.whatwg.org/#dfn-set-entries" { - - "set entries" - } - } - } - } - - "\n\n " - p { - cite { - - "Web IDL" - } - - " also defines the following types that are used in Web IDL fragments in\n this specification:" - } - - "\n\n " - ul class="brief" { - li { - dfn id="idl-arraybuffer" { - a href="https://webidl.spec.whatwg.org/#idl-ArrayBuffer" { - code { - - "ArrayBuffer" - } - } - } - } - li { - dfn id="idl-arraybufferview" { - a href="https://webidl.spec.whatwg.org/#common-ArrayBufferView" { - code { - - "ArrayBufferView" - } - } - } - } - li { - dfn id="idl-boolean" { - a href="https://webidl.spec.whatwg.org/#idl-boolean" { - code { - - "boolean" - } - } - } - } - li { - dfn id="idl-domstring" { - a href="https://webidl.spec.whatwg.org/#idl-DOMString" { - code { - - "DOMString" - } - } - } - } - li { - dfn id="idl-double" { - a href="https://webidl.spec.whatwg.org/#idl-double" { - code { - - "double" - } - } - } - } - li { - dfn id="idl-enumeration" { - a href="https://webidl.spec.whatwg.org/#idl-enums" { - - "enumeration" - } - } - } - li { - dfn id="idl-function" { - a href="https://webidl.spec.whatwg.org/#common-Function" { - code { - - "Function" - } - } - } - } - li { - dfn id="idl-long" { - a href="https://webidl.spec.whatwg.org/#idl-long" { - code { - - "long" - } - } - } - } - li { - dfn id="idl-object" { - a href="https://webidl.spec.whatwg.org/#idl-object" { - code { - - "object" - } - } - } - } - li { - dfn id="idl-promise" { - a href="https://webidl.spec.whatwg.org/#idl-promise" { - code { - - "Promise" - } - } - } - } - li { - dfn id="idl-uint8clampedarray" { - a href="https://webidl.spec.whatwg.org/#idl-Uint8ClampedArray" { - code { - - "Uint8ClampedArray" - } - } - } - } - li { - dfn id="idl-unrestricted-double" { - a href="https://webidl.spec.whatwg.org/#idl-unrestricted-double" { - code { - - "unrestricted double" - } - } - } - } - li { - dfn id="idl-unsigned-long" { - a href="https://webidl.spec.whatwg.org/#idl-unsigned-long" { - code { - - "unsigned long" - } - } - } - } - li { - dfn id="idl-usvstring" { - a href="https://webidl.spec.whatwg.org/#idl-USVString" { - code { - - "USVString" - } - } - } - } - li { - dfn id="idl-voidfunction" { - a href="https://webidl.spec.whatwg.org/#VoidFunction" { - code { - - "VoidFunction" - } - } - } - } - } - - "\n\n " - p { - - "The term " - dfn id="throw" { - a href="https://webidl.spec.whatwg.org/#dfn-throw" { - - "throw" - } - } - - " in this\n specification is used as defined in " - cite { - - "Web IDL" - } - - ". The " - dfn id="domexception" { - a href="https://webidl.spec.whatwg.org/#dfn-DOMException" { - code { - - "DOMException" - } - } - } - - "\n type and the following exception names are defined by Web IDL and used by this\n specification:" - } - - "\n\n " - ul class="brief" { - li { - dfn id="indexsizeerror" { - a href="https://webidl.spec.whatwg.org/#indexsizeerror" { - - "\"" - code { - - "IndexSizeError" - } - - "\"" - } - } - } - li { - dfn id="hierarchyrequesterror" { - a href="https://webidl.spec.whatwg.org/#hierarchyrequesterror" { - - "\"" - code { - - "HierarchyRequestError" - } - - "\"" - } - } - } - li { - dfn id="invalidcharactererror" { - a href="https://webidl.spec.whatwg.org/#invalidcharactererror" { - - "\"" - code { - - "InvalidCharacterError" - } - - "\"" - } - } - } - li { - dfn id="nomodificationallowederror" { - a href="https://webidl.spec.whatwg.org/#nomodificationallowederror" { - - "\"" - code { - - "NoModificationAllowedError" - } - - "\"" - } - } - } - li { - dfn id="notfounderror" { - a href="https://webidl.spec.whatwg.org/#notfounderror" { - - "\"" - code { - - "NotFoundError" - } - - "\"" - } - } - } - li { - dfn id="notsupportederror" { - a href="https://webidl.spec.whatwg.org/#notsupportederror" { - - "\"" - code { - - "NotSupportedError" - } - - "\"" - } - } - } - li { - dfn id="invalidstateerror" { - a href="https://webidl.spec.whatwg.org/#invalidstateerror" { - - "\"" - code { - - "InvalidStateError" - } - - "\"" - } - } - } - li { - dfn id="syntaxerror" { - a href="https://webidl.spec.whatwg.org/#syntaxerror" { - - "\"" - code { - - "SyntaxError" - } - - "\"" - } - } - } - li { - dfn id="invalidaccesserror" { - a href="https://webidl.spec.whatwg.org/#invalidaccesserror" { - - "\"" - code { - - "InvalidAccessError" - } - - "\"" - } - } - } - li { - dfn id="securityerror" { - a href="https://webidl.spec.whatwg.org/#securityerror" { - - "\"" - code { - - "SecurityError" - } - - "\"" - } - } - } - li { - dfn id="networkerror" { - a href="https://webidl.spec.whatwg.org/#networkerror" { - - "\"" - code { - - "NetworkError" - } - - "\"" - } - } - } - li { - dfn id="aborterror" { - a href="https://webidl.spec.whatwg.org/#aborterror" { - - "\"" - code { - - "AbortError" - } - - "\"" - } - } - } - li { - dfn id="quotaexceedederror" { - a href="https://webidl.spec.whatwg.org/#quotaexceedederror" { - - "\"" - code { - - "QuotaExceededError" - } - - "\"" - } - } - } - li { - dfn id="datacloneerror" { - a href="https://webidl.spec.whatwg.org/#datacloneerror" { - - "\"" - code { - - "DataCloneError" - } - - "\"" - } - } - } - li { - dfn id="encodingerror" { - a href="https://webidl.spec.whatwg.org/#encodingerror" { - - "\"" - code { - - "EncodingError" - } - - "\"" - } - } - } - li { - dfn id="notallowederror" { - a href="https://webidl.spec.whatwg.org/#notallowederror" { - - "\"" - code { - - "NotAllowedError" - } - - "\"" - } - } - } - } - - "\n\n " - p { - - "When this specification requires a user agent to " - dfn id="create-a-date-object" { - - "create a " - code { - - "Date" - } - - " object" - } - - "\n representing a particular time (which could be the special value Not-a-Number), the milliseconds\n component of that time, if any, must be truncated to an integer, and the time value of the newly\n created " - code id="dependencies:date" { - a data-x-internal="date" href="https://tc39.es/ecma262/#sec-date-objects" { - - "Date" - } - } - - " object must represent the resulting truncated time." - } - - "\n\n " - p class="example" { - - "For instance, given the time 23045 millionths of a second after 01:00 UTC on\n January 1st 2000, i.e. the time 2000-01-01T00:00:00.023045Z, then the " - code id="dependencies:date-2" { - a data-x-internal="date" href="https://tc39.es/ecma262/#sec-date-objects" { - - "Date" - } - } - - " object\n created representing that time would represent the same time as that created representing the\n time 2000-01-01T00:00:00.023Z, 45 millionths earlier. If the given time is NaN, then the result\n is a " - code id="dependencies:date-3" { - a data-x-internal="date" href="https://tc39.es/ecma262/#sec-date-objects" { - - "Date" - } - } - - " object that represents a time value NaN (indicating that the object does\n not represent a specific instant of time)." - } - - "\n " - } - dt { - - "JavaScript" - } - dd { - - "\n " - p { - - "Some parts of the language described by this specification only support JavaScript as the\n underlying scripting language. " - a href="#refsJAVASCRIPT" { - - "[JAVASCRIPT]" - } - } - - "\n\n " - p class="note" { - - "The term \"JavaScript\" is used to refer to ECMA-262, rather than the official\n term ECMAScript, since the term JavaScript is more widely known." - } - - "\n\n " - p { - - "The following terms are defined in the JavaScript specification and used in this\n specification:" - } - - "\n\n " - ul class="brief" { - li { - dfn id="active-function-object" { - a href="https://tc39.es/ecma262/#active-function-object" { - - "active function object" - } - } - } - li { - dfn id="agent" { - a href="https://tc39.es/ecma262/#sec-agents" { - - "agent" - } - } - - " and\n " - dfn id="agent-cluster" { - a href="https://tc39.es/ecma262/#sec-agent-clusters" { - - "agent cluster" - } - } - } - li { - dfn id="automatic-semicolon-insertion" { - a href="https://tc39.es/ecma262/#sec-automatic-semicolon-insertion" { - - "automatic semicolon insertion" - } - } - } - li { - dfn id="candidate-execution" { - a href="https://tc39.es/ecma262/#sec-candidate-executions" { - - "candidate execution" - } - } - } - li { - - "The " - dfn id="current-realm" { - a href="https://tc39.es/ecma262/#current-realm" { - - "current realm" - } - } - } - li { - dfn id="clamping" { - a href="https://tc39.es/ecma262/#clamping" { - - "clamping" - } - } - - " a mathematical value" - } - li { - dfn id="early-error" { - a href="https://tc39.es/ecma262/#early-error-rule" { - - "early error" - } - } - } - li { - dfn id="forward-progress" { - a href="https://tc39.es/ecma262/#sec-forward-progress" { - - "forward progress" - } - } - } - li { - dfn id="invariants-of-the-essential-internal-methods" { - a href="https://tc39.es/ecma262/#sec-invariants-of-the-essential-internal-methods" { - - "invariants of the essential internal methods" - } - } - } - li { - dfn id="javascript-execution-context" { - a href="https://tc39.es/ecma262/#sec-execution-contexts" { - - "JavaScript execution context" - } - } - } - li { - dfn id="javascript-execution-context-stack" { - a href="https://tc39.es/ecma262/#execution-context-stack" { - - "JavaScript execution context stack" - } - } - } - li { - dfn id="realm" { - a href="https://tc39.es/ecma262/#sec-code-realms" { - - "realm" - } - } - } - li { - dfn id="jobcallback-record" { - a href="https://tc39.es/ecma262/#sec-jobcallback-records" { - - "JobCallback Record" - } - } - } - li { - dfn id="newtarget" { - a href="https://tc39.es/ecma262/#sec-built-in-function-objects" { - - "NewTarget" - } - } - } - li { - dfn id="running-javascript-execution-context" { - a href="https://tc39.es/ecma262/#running-execution-context" { - - "running JavaScript execution context" - } - } - } - li { - dfn id="surrounding-agent" { - a href="https://tc39.es/ecma262/#surrounding-agent" { - - "surrounding agent" - } - } - } - li { - dfn id="abstract-closure" { - a href="https://tc39.es/ecma262/#sec-abstract-closure" { - - "abstract closure" - } - } - } - li { - dfn id="immutable-prototype-exotic-object" { - a href="https://tc39.es/ecma262/#immutable-prototype-exotic-object" { - - "immutable prototype exotic object" - } - } - } - li { - dfn id="well-known-symbols" { - a href="https://tc39.es/ecma262/#sec-well-known-symbols" { - - "Well-Known Symbols" - } - } - - ", including\n " - dfn id="symbol.hasinstance" { - - "%Symbol.hasInstance%" - } - - ",\n " - dfn id="symbol.isconcatspreadable" { - - "%Symbol.isConcatSpreadable%" - } - - ",\n " - dfn id="symbol.toprimitive" { - - "%Symbol.toPrimitive%" - } - - ", and\n " - dfn id="symbol.tostringtag" { - - "%Symbol.toStringTag%" - } - } - li { - dfn id="well-known-intrinsic-objects" { - a href="https://tc39.es/ecma262/#sec-well-known-intrinsic-objects" { - - "Well-Known Intrinsic Objects" - } - } - - ", including\n " - dfn id="array.prototype" { - a href="https://tc39.es/ecma262/#sec-properties-of-the-array-prototype-object" { - - "%Array.prototype%" - } - } - - ",\n " - dfn id="error.prototype" { - a href="https://tc39.es/ecma262/#sec-properties-of-the-error-prototype-object" { - - "%Error.prototype%" - } - } - - ",\n " - dfn id="evalerror.prototype" { - - "%EvalError.prototype%" - } - - ",\n " - dfn id="function.prototype" { - a href="https://tc39.es/ecma262/#sec-properties-of-the-function-prototype-object" { - - "%Function.prototype%" - } - } - - ",\n " - dfn id="json.parse" { - a href="https://tc39.es/ecma262/#sec-json.parse" { - - "%JSON.parse%" - } - } - - ",\n " - dfn id="object.prototype" { - a href="https://tc39.es/ecma262/#sec-properties-of-the-object-prototype-object" { - - "%Object.prototype%" - } - } - - ",\n " - dfn id="object.prototype.valueof" { - a href="https://tc39.es/ecma262/#sec-object.prototype.valueof" { - - "%Object.prototype.valueOf%" - } - } - - ",\n " - dfn id="rangeerror.prototype" { - - "%RangeError.prototype%" - } - - ",\n " - dfn id="referenceerror.prototype" { - - "%ReferenceError.prototype%" - } - - ",\n " - dfn id="syntaxerror.prototype" { - - "%SyntaxError.prototype%" - } - - ",\n " - dfn id="typeerror.prototype" { - - "%TypeError.prototype%" - } - - ", and\n " - dfn id="urierror.prototype" { - - "%URIError.prototype%" - } - } - li { - - "The " - dfn id="js-prod-functionbody" { - a href="https://tc39.es/ecma262/#prod-FunctionBody" { - i { - - "FunctionBody" - } - } - } - - " production" - } - li { - - "The " - dfn id="js-prod-module" { - a href="https://tc39.es/ecma262/#prod-Module" { - i { - - "Module" - } - } - } - - " production" - } - li { - - "The " - dfn id="js-prod-pattern" { - a href="https://tc39.es/ecma262/#prod-Pattern" { - i { - - "Pattern" - } - } - } - - " production" - } - li { - - "The " - dfn id="js-prod-script" { - a href="https://tc39.es/ecma262/#prod-Script" { - i { - - "Script" - } - } - } - - " production" - } - li { - - "The\n " - dfn id="js-bigint" { - a href="https://tc39.es/ecma262/#sec-ecmascript-language-types-bigint-type" { - - "BigInt" - } - } - - ",\n " - dfn id="js-boolean" { - a href="https://tc39.es/ecma262/#sec-ecmascript-language-types-boolean-type" { - - "Boolean" - } - } - - ",\n " - dfn id="js-number" { - a href="https://tc39.es/ecma262/#sec-ecmascript-language-types-number-type" { - - "Number" - } - } - - ",\n " - dfn id="js-string" { - a href="https://tc39.es/ecma262/#sec-ecmascript-language-types-string-type" { - - "String" - } - } - - ",\n " - dfn id="js-symbol" { - a href="https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type" { - - "Symbol" - } - } - - ",\n and " - dfn id="js-object" { - a href="https://tc39.es/ecma262/#sec-object-type" { - - "Object" - } - } - - " ECMAScript language types" - } - li { - - "The " - dfn id="completion-record" { - a href="https://tc39.es/ecma262/#sec-completion-record-specification-type" { - - "Completion Record" - } - } - - " specification type" - } - li { - - "The " - dfn id="js-list" { - a href="https://tc39.es/ecma262/#sec-list-and-record-specification-type" { - - "List" - } - } - - " and\n " - dfn id="record" { - a href="https://tc39.es/ecma262/#sec-list-and-record-specification-type" { - - "Record" - } - } - - " specification types" - } - li { - - "The " - dfn id="propertydescriptor" { - a href="https://tc39.es/ecma262/#sec-property-descriptor-specification-type" { - - "Property Descriptor" - } - } - - " specification type" - } - li { - - "The " - dfn id="script-record" { - a href="https://tc39.es/ecma262/#sec-script-records" { - - "Script Record" - } - } - - " specification type" - } - li { - - "The " - dfn id="cyclic-module-record" { - a href="https://tc39.es/ecma262/#sec-cyclic-module-records" { - - "Cyclic Module Record" - } - } - - " specification type" - } - li { - - "The " - dfn id="source-text-module-record" { - a href="https://tc39.es/ecma262/#sec-source-text-module-records" { - - "Source Text Module Record" - } - } - - " specification type and its\n " - dfn id="js-evaluate" { - a href="https://tc39.es/ecma262/#sec-moduleevaluation" { - - "Evaluate" - } - } - - ",\n " - dfn id="js-link" { - a href="https://tc39.es/ecma262/#sec-moduledeclarationlinking" { - - "Link" - } - } - - " and\n " - dfn id="js-loadrequestedmodules" { - a href="https://tc39.es/ecma262/#sec-LoadRequestedModules" { - - "LoadRequestedModules" - } - } - - " methods" - } - li { - - "The " - dfn id="arraycreate" { - a href="https://tc39.es/ecma262/#sec-arraycreate" { - - "ArrayCreate" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="call" { - a href="https://tc39.es/ecma262/#sec-call" { - - "Call" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="clearkeptobjects" { - a href="https://tc39.es/ecma262/#sec-clear-kept-objects" { - - "ClearKeptObjects" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="cleanupfinalizationregistry" { - a href="https://tc39.es/ecma262/#sec-cleanup-finalization-registry" { - - "CleanupFinalizationRegistry" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="construct" { - a href="https://tc39.es/ecma262/#sec-construct" { - - "Construct" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="copydatablockbytes" { - a href="https://tc39.es/ecma262/#sec-copydatablockbytes" { - - "CopyDataBlockBytes" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="createbuiltinfunction" { - a href="https://tc39.es/ecma262/#sec-createbuiltinfunction" { - - "CreateBuiltinFunction" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="createbytedatablock" { - a href="https://tc39.es/ecma262/#sec-createbytedatablock" { - - "CreateByteDataBlock" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="createdataproperty" { - a href="https://tc39.es/ecma262/#sec-createdataproperty" { - - "CreateDataProperty" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="definepropertyorthrow" { - a href="https://tc39.es/ecma262/#sec-definepropertyorthrow" { - - "DefinePropertyOrThrow" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="detacharraybuffer" { - a href="https://tc39.es/ecma262/#sec-detacharraybuffer" { - - "DetachArrayBuffer" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="enumerableownproperties" { - a href="https://tc39.es/ecma262/#sec-enumerableownproperties" { - - "EnumerableOwnProperties" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="finishloadingimportedmodule" { - a href="https://tc39.es/ecma262/#sec-FinishLoadingImportedModule" { - - "FinishLoadingImportedModule" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-ordinaryfunctioncreate" { - a href="https://tc39.es/ecma262/#sec-ordinaryfunctioncreate" { - - "OrdinaryFunctionCreate" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-get" { - a href="https://tc39.es/ecma262/#sec-get-o-p" { - - "Get" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="getactivescriptormodule" { - a href="https://tc39.es/ecma262/#sec-getactivescriptormodule" { - - "GetActiveScriptOrModule" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="getfunctionrealm" { - a href="https://tc39.es/ecma262/#sec-getfunctionrealm" { - - "GetFunctionRealm" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="hasownproperty" { - a href="https://tc39.es/ecma262/#sec-hasownproperty" { - - "HasOwnProperty" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostcalljobcallback" { - a href="https://tc39.es/ecma262/#sec-hostcalljobcallback" { - - "HostCallJobCallback" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostenqueuefinalizationregistrycleanupjob" { - a href="https://tc39.es/ecma262/#sec-host-cleanup-finalization-registry" { - - "HostEnqueueFinalizationRegistryCleanupJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostenqueuegenericjob" { - a href="https://tc39.es/ecma262/#sec-hostenqueuegenericjob" { - - "HostEnqueueGenericJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostenqueuepromisejob" { - a href="https://tc39.es/ecma262/#sec-hostenqueuepromisejob" { - - "HostEnqueuePromiseJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostenqueuetimeoutjob" { - a href="https://tc39.es/ecma262/#sec-hostenqueuetimeoutjob" { - - "HostEnqueueTimeoutJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostensurecanaddprivateelement" { - a href="https://tc39.es/ecma262/#sec-hostensurecanaddprivateelement" { - - "HostEnsureCanAddPrivateElement" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostloadimportedmodule" { - a href="https://tc39.es/proposal-import-attributes/#sec-HostLoadImportedModule" { - - "HostLoadImportedModule" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostmakejobcallback" { - a href="https://tc39.es/ecma262/#sec-hostmakejobcallback" { - - "HostMakeJobCallback" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostpromiserejectiontracker" { - a href="https://tc39.es/ecma262/#sec-host-promise-rejection-tracker" { - - "HostPromiseRejectionTracker" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-initializehostdefinedrealm" { - a href="https://tc39.es/ecma262/#sec-initializehostdefinedrealm" { - - "InitializeHostDefinedRealm" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="isaccessordescriptor" { - a href="https://tc39.es/ecma262/#sec-isaccessordescriptor" { - - "IsAccessorDescriptor" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="iscallable" { - a href="https://tc39.es/ecma262/#sec-iscallable" { - - "IsCallable" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="isconstructor" { - a href="https://tc39.es/ecma262/#sec-isconstructor" { - - "IsConstructor" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="isdatadescriptor" { - a href="https://tc39.es/ecma262/#sec-isdatadescriptor" { - - "IsDataDescriptor" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="isdetachedbuffer" { - a href="https://tc39.es/ecma262/#sec-isdetachedbuffer" { - - "IsDetachedBuffer" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="issharedarraybuffer" { - a href="https://tc39.es/ecma262/#sec-issharedarraybuffer" { - - "IsSharedArrayBuffer" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-newobjectenvironment" { - a href="https://tc39.es/ecma262/#sec-newobjectenvironment" { - - "NewObjectEnvironment" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="normalcompletion" { - a href="https://tc39.es/ecma262/#sec-normalcompletion" { - - "NormalCompletion" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarygetprototypeof" { - a href="https://tc39.es/ecma262/#sec-ordinarygetprototypeof" { - - "OrdinaryGetPrototypeOf" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarysetprototypeof" { - a href="https://tc39.es/ecma262/#sec-ordinarysetprototypeof" { - - "OrdinarySetPrototypeOf" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinaryisextensible" { - a href="https://tc39.es/ecma262/#sec-ordinaryisextensible" { - - "OrdinaryIsExtensible" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarypreventextensions" { - a href="https://tc39.es/ecma262/#sec-ordinarypreventextensions" { - - "OrdinaryPreventExtensions" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarygetownproperty" { - a href="https://tc39.es/ecma262/#sec-ordinarygetownproperty" { - - "OrdinaryGetOwnProperty" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarydefineownproperty" { - a href="https://tc39.es/ecma262/#sec-ordinarydefineownproperty" { - - "OrdinaryDefineOwnProperty" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinaryget" { - a href="https://tc39.es/ecma262/#sec-ordinaryget" { - - "OrdinaryGet" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinaryset" { - a href="https://tc39.es/ecma262/#sec-ordinaryset" { - - "OrdinarySet" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinarydelete" { - a href="https://tc39.es/ecma262/#sec-ordinarydelete" { - - "OrdinaryDelete" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinaryownpropertykeys" { - a href="https://tc39.es/ecma262/#sec-ordinaryownpropertykeys" { - - "OrdinaryOwnPropertyKeys" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="ordinaryobjectcreate" { - a href="https://tc39.es/ecma262/#sec-objectcreate" { - - "OrdinaryObjectCreate" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-parsemodule" { - a href="https://tc39.es/ecma262/#sec-parsemodule" { - - "ParseModule" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-parsescript" { - a href="https://tc39.es/ecma262/#sec-parse-script" { - - "ParseScript" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="newpromisereactionjob" { - a href="https://tc39.es/ecma262/#sec-newpromisereactionjob" { - - "NewPromiseReactionJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="newpromiseresolvethenablejob" { - a href="https://tc39.es/ecma262/#sec-newpromiseresolvethenablejob" { - - "NewPromiseResolveThenableJob" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="regexpbuiltinexec" { - a href="https://tc39.es/ecma262/#sec-regexpbuiltinexec" { - - "RegExpBuiltinExec" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="regexpcreate" { - a href="https://tc39.es/ecma262/#sec-regexpcreate" { - - "RegExpCreate" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="runjobs" { - a href="https://tc39.es/ecma262/#sec-runjobs" { - - "RunJobs" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="samevalue" { - a href="https://tc39.es/ecma262/#sec-samevalue" { - - "SameValue" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-scriptevaluation" { - a href="https://tc39.es/ecma262/#sec-runtime-semantics-scriptevaluation" { - - "ScriptEvaluation" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="setimmutableprototype" { - a href="https://tc39.es/ecma262/#sec-set-immutable-prototype" { - - "SetImmutablePrototype" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-toboolean" { - a href="https://tc39.es/ecma262/#sec-toboolean" { - - "ToBoolean" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="tostring" { - a href="https://tc39.es/ecma262/#sec-tostring" { - - "ToString" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="touint32" { - a href="https://tc39.es/ecma262/#sec-touint32" { - - "ToUint32" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="typedarraycreate" { - a href="https://tc39.es/ecma262/#typedarray-create" { - - "TypedArrayCreate" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-abstract-equality" { - a href="https://tc39.es/ecma262/#sec-islooselyequal" { - - "IsLooselyEqual" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-strict-equality" { - a href="https://tc39.es/ecma262/#sec-isstrictlyequal" { - - "IsStrictlyEqual" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="atomics" { - a href="https://tc39.es/ecma262/#sec-atomics-object" { - code { - - "Atomics" - } - } - } - - " object" - } - li { - - "The " - dfn id="atomics.waitasync" { - a href="https://tc39.es/ecma262/#sec-atomics.waitasync" { - code { - - "Atomics.waitAsync" - } - } - } - - " object" - } - li { - - "The " - dfn id="date" { - a href="https://tc39.es/ecma262/#sec-date-objects" { - code { - - "Date" - } - } - } - - " class" - } - li { - - "The " - dfn id="finalizationregistry" { - a href="https://tc39.es/ecma262/#sec-finalization-registry-objects" { - code { - - "FinalizationRegistry" - } - } - } - - " class" - } - li { - - "The " - dfn id="regexp" { - a href="https://tc39.es/ecma262/#sec-regexp-regular-expression-objects" { - code { - - "RegExp" - } - } - } - - " class" - } - li { - - "The " - dfn id="sharedarraybuffer" { - a href="https://tc39.es/ecma262/#sec-sharedarraybuffer-objects" { - code { - - "SharedArrayBuffer" - } - } - } - - " class" - } - li { - - "The " - dfn id="syntaxerror-2" { - a href="https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard-syntaxerror" { - code { - - "SyntaxError" - } - } - } - - " class" - } - li { - - "The " - dfn id="typeerror" { - a href="https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" { - code { - - "TypeError" - } - } - } - - " class" - } - li { - - "The " - dfn id="js-rangeerror" { - a href="https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" { - code { - - "RangeError" - } - } - } - - " class" - } - li { - - "The " - dfn id="weakref" { - a href="https://tc39.es/ecma262/#sec-weak-ref-objects" { - code { - - "WeakRef" - } - } - } - - " class" - } - li { - - "The " - dfn id="eval()" { - a href="https://tc39.es/ecma262/#sec-eval-x" { - code { - - "eval()" - } - } - } - - " function" - } - li { - - "The " - dfn id="weakref.prototype.deref()" { - a href="https://tc39.es/ecma262/#sec-weak-ref.prototype.deref" { - code { - - "WeakRef.prototype.deref()" - } - } - } - - " function" - } - li { - - "The " - dfn id="ishtmldda" { - a href="https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot" { - - "[[IsHTMLDDA]]" - } - } - - " internal slot" - } - li { - dfn id="import()" { - a href="https://tc39.es/ecma262/#sec-import-calls" { - code { - - "import()" - } - } - } - } - li { - dfn id="import.meta" { - a href="https://tc39.es/ecma262/#sec-meta-properties" { - code { - - "import.meta" - } - } - } - } - li { - - "The " - dfn id="js-hostgetimportmetaproperties" { - a href="https://tc39.es/ecma262/#sec-hostgetimportmetaproperties" { - - "HostGetImportMetaProperties" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-typeof" { - a href="https://tc39.es/ecma262/#sec-typeof-operator" { - code { - - "typeof" - } - } - } - - " operator" - } - li { - - "The " - dfn id="delete" { - a href="https://tc39.es/ecma262/#sec-delete-operator" { - code { - - "delete" - } - } - } - - " operator" - } - li { - dfn id="the-typedarray-constructors" { - a href="https://tc39.es/ecma262/#table-49" { - - "The " - var { - - "TypedArray" - } - - " Constructors" - } - } - - " table" - } - } - - "\n\n " - p { - - "Users agents that support JavaScript must also implement the " - cite { - - "Dynamic Code Brand\n Checks" - } - - " proposal. The following terms are defined there, and used in this specification:\n " - a href="#refsJSDYNAMICCODEBRANDCHECKS" { - - "[JSDYNAMICCODEBRANDCHECKS]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="js-hostensurecancompilestrings" { - a href="https://tc39.es/proposal-dynamic-code-brand-checks/#sec-hostensurecancompilestrings" { - - "HostEnsureCanCompileStrings" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="js-hostgetcodeforeval" { - a href="https://tc39.es/proposal-dynamic-code-brand-checks/#sec-hostgetcodeforeval" { - - "HostGetCodeForEval" - } - } - - " abstract operation" - } - } - - "\n\n " - p { - - "Users agents that support JavaScript must also implement " - cite { - - "ECMAScript\n Internationalization API" - } - - ". " - a href="#refsJSINTL" { - - "[JSINTL]" - } - } - - "\n\n " - p { - - "User agents that support JavaScript must also implement the " - cite { - - "Import Attributes" - } - - "\n proposal. The following terms are defined there, and used in this specification:\n " - a href="#refsJSIMPORTATTRIBUTES" { - - "[JSIMPORTATTRIBUTES]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="modulerequest-record" { - a href="https://tc39.es/proposal-import-attributes/#sec-modulerequest-record" { - - "ModuleRequest Record" - } - } - - " specification type" - } - li { - - "The " - dfn id="js-hostgetsupportedimportattributes" { - a href="https://tc39.es/proposal-import-attributes/#sec-hostgetsupportedimportattributes" { - - "HostGetSupportedImportAttributes" - } - } - - " abstract operation" - } - } - - "\n\n " - p { - - "User agents that support JavaScript must also implement the " - cite { - - "JSON modules" - } - - "\n proposal. The following terms are defined there, and used in this specification:\n " - a href="#refsJSJSONMODULES" { - - "[JSJSONMODULES]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="createdefaultexportsyntheticmodule" { - a href="https://tc39.es/proposal-json-modules/#sec-create-default-export-synthetic-module" { - - "CreateDefaultExportSyntheticModule" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="setsyntheticmoduleexport" { - a href="https://tc39.es/proposal-json-modules/#sec-setsyntheticmoduleexport" { - - "SetSyntheticModuleExport" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="synthetic-module-record" { - a href="https://tc39.es/proposal-json-modules/#sec-synthetic-module-records" { - - "Synthetic Module Record" - } - } - - " specification type" - } - li { - - "The " - dfn id="parsejsonmodule" { - a href="https://tc39.es/proposal-json-modules/#sec-parse-json-module" { - - "ParseJSONModule" - } - } - - " abstract operation" - } - } - - "\n\n " - p { - - "User agents that support JavaScript must also implement the " - cite { - - "Resizable ArrayBuffer and\n growable SharedArrayBuffer" - } - - " proposal. The following terms are defined there, and used in\n this specification: " - a href="#refsJSRESIZABLEBUFFERS" { - - "[JSRESIZABLEBUFFERS]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="isarraybufferviewoutofbounds" { - a href="https://tc39.es/proposal-resizablearraybuffer/#sec-isarraybufferviewoutofbounds" { - - "IsArrayBufferViewOutOfBounds" - } - } - - " abstract operation" - } - } - - "\n\n " - p { - - "User agents that support JavaScript must also implement the " - cite { - - "Temporal" - } - - " proposal.\n The following terms are defined there, and used in this specification: " - a href="#refsJSTEMPORAL" { - - "[JSTEMPORAL]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="js-hostsystemutcepochnanoseconds" { - a href="https://tc39.es/proposal-temporal/#sec-hostsystemutcepochnanoseconds" { - - "HostSystemUTCEpochNanoseconds" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="nsmaxinstant" { - a href="https://tc39.es/proposal-temporal/#eqn-nsMaxInstant" { - - "nsMaxInstant" - } - } - - " and\n " - dfn id="nsmininstant" { - a href="https://tc39.es/proposal-temporal/#eqn-nsMinInstant" { - - "nsMinInstant" - } - } - - " values" - } - } - - "\n " - } - dt { - - "WebAssembly" - } - dd { - - "\n " - p { - - "The following term is defined in " - cite { - - "WebAssembly JavaScript Interface" - } - - ":\n " - a href="#refsWASMJS" { - - "[WASMJS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="webassembly.module" { - a href="https://webassembly.github.io/spec/js-api/#module" { - code { - - "WebAssembly.Module" - } - } - } - } - } - - "\n " - } - dt { - - "DOM" - } - dd { - - "\n " - p { - - "The Document Object Model (DOM) is a representation — a model — of a document and\n its content. The DOM is not just an API; the conformance criteria of HTML implementations are\n defined, in this specification, in terms of operations on the DOM. " - a href="#refsDOM" { - - "[DOM]" - } - } - - "\n\n " - p { - - "Implementations must support DOM and the events defined in UI Events, because this\n specification is defined in terms of the DOM, and some of the features are defined as extensions\n to the DOM interfaces. " - a href="#refsDOM" { - - "[DOM]" - } - - " " - a href="#refsUIEVENTS" { - - "[UIEVENTS]" - } - } - - "\n\n " - p { - - "In particular, the following features are defined in " - cite { - - "DOM" - } - - ": " - a href="#refsDOM" { - - "[DOM]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="attr" { - a href="https://dom.spec.whatwg.org/#interface-attr" { - code { - - "Attr" - } - } - } - - " interface" - } - li { - dfn id="characterdata" { - a href="https://dom.spec.whatwg.org/#interface-characterdata" { - code { - - "CharacterData" - } - } - } - - " interface" - } - li { - dfn id="comment-2" { - a href="https://dom.spec.whatwg.org/#interface-comment" { - code { - - "Comment" - } - } - } - - " interface" - } - li { - dfn id="domimplementation" { - a href="https://dom.spec.whatwg.org/#interface-domimplementation" { - code { - - "DOMImplementation" - } - } - } - - " interface" - } - li { - dfn id="dom-document" { - a href="https://dom.spec.whatwg.org/#interface-document" { - code { - - "Document" - } - } - } - - " interface and its\n " - dfn id="dom-document-doctype" { - a href="https://dom.spec.whatwg.org/#dom-document-doctype" { - code { - - "doctype" - } - } - } - - " attribute\n " - } - li { - dfn id="dom-documentorshadowroot" { - a href="https://dom.spec.whatwg.org/#documentorshadowroot" { - code { - - "DocumentOrShadowRoot" - } - } - } - - " interface" - } - li { - dfn id="documentfragment" { - a href="https://dom.spec.whatwg.org/#interface-documentfragment" { - code { - - "DocumentFragment" - } - } - } - - " interface" - } - li { - dfn id="documenttype" { - a href="https://dom.spec.whatwg.org/#interface-documenttype" { - code { - - "DocumentType" - } - } - } - - " interface" - } - li { - dfn id="childnode" { - a href="https://dom.spec.whatwg.org/#interface-childnode" { - code { - - "ChildNode" - } - } - } - - " interface" - } - li { - dfn id="element" { - a href="https://dom.spec.whatwg.org/#interface-element" { - code { - - "Element" - } - } - } - - " interface" - } - li { - dfn id="dom-element-attachshadow" { - a href="https://dom.spec.whatwg.org/#dom-element-attachshadow" { - code { - - "attachShadow()" - } - } - } - - " method." - } - li { - - "An element's " - dfn id="concept-element-shadow-root" { - a href="https://dom.spec.whatwg.org/#concept-element-shadow-root" { - - "shadow root" - } - } - } - li { - - "A " - a href="https://dom.spec.whatwg.org/#concept-element-shadow-root" id="dependencies:concept-element-shadow-root" data-x-internal="concept-element-shadow-root" { - - "shadow root" - } - - "'s " - dfn id="concept-shadow-root-mode" { - a href="https://dom.spec.whatwg.org/#shadowroot-mode" { - - "mode" - } - } - } - li { - - "A " - a href="https://dom.spec.whatwg.org/#concept-element-shadow-root" id="dependencies:concept-element-shadow-root-2" data-x-internal="concept-element-shadow-root" { - - "shadow root" - } - - "'s " - dfn id="concept-shadow-root-declarative" { - a href="https://dom.spec.whatwg.org/#shadowroot-declarative" { - - "declarative" - } - } - - " member" - } - li { - - "The " - dfn id="concept-attach-a-shadow-root" { - a href="https://dom.spec.whatwg.org/#concept-attach-a-shadow-root" { - - "attach a shadow root" - } - } - - " algorithm" - } - li { - - "The " - dfn id="dom-retarget" { - a href="https://dom.spec.whatwg.org/#retarget" { - - "retargeting algorithm" - } - } - } - li { - dfn id="node" { - a href="https://dom.spec.whatwg.org/#interface-node" { - code { - - "Node" - } - } - } - - " interface" - } - li { - dfn id="nodelist" { - a href="https://dom.spec.whatwg.org/#interface-nodelist" { - code { - - "NodeList" - } - } - } - - " interface" - } - li { - dfn id="processinginstruction" { - a href="https://dom.spec.whatwg.org/#interface-processinginstruction" { - code { - - "ProcessingInstruction" - } - } - } - - " interface" - } - li { - dfn id="shadowroot" { - a href="https://dom.spec.whatwg.org/#interface-shadowroot" { - code { - - "ShadowRoot" - } - } - } - - " interface" - } - li { - dfn id="text" { - a href="https://dom.spec.whatwg.org/#interface-text" { - code { - - "Text" - } - } - } - - " interface" - } - li { - dfn id="range" { - a href="https://dom.spec.whatwg.org/#interface-range" { - code { - - "Range" - } - } - } - - " interface" - } - li { - dfn id="node-document" { - a href="https://dom.spec.whatwg.org/#concept-node-document" { - - "node document" - } - } - - " concept" - } - li { - dfn id="concept-document-type" { - a href="https://dom.spec.whatwg.org/#concept-document-type" { - - "document type" - } - } - - " concept" - } - li { - dfn id="concept-documentfragment-host" { - a href="https://dom.spec.whatwg.org/#concept-documentfragment-host" { - - "host" - } - } - - " concept" - } - li { - - "The " - dfn id="shadow-root" { - a href="https://dom.spec.whatwg.org/#concept-shadow-root" { - - "shadow root" - } - } - - " concept, and its " - dfn id="delegates-focus" { - a href="https://dom.spec.whatwg.org/#shadowroot-delegates-focus" { - - "delegates focus" - } - } - - ", " - dfn id="available-to-element-internals" { - a href="https://dom.spec.whatwg.org/#shadowroot-available-to-element-internals" { - - "available to element internals" - } - } - - ", " - dfn id="clonable" { - a href="https://dom.spec.whatwg.org/#shadowroot-clonable" { - - "clonable" - } - } - - ", and " - dfn id="shadow-serializable" { - a href="https://dom.spec.whatwg.org/#shadowroot-serializable" { - - "serializable" - } - } - - "." - } - li { - - "The " - dfn id="shadow-host" { - a href="https://dom.spec.whatwg.org/#element-shadow-host" { - - "shadow host" - } - } - - " concept" - } - li { - dfn id="htmlcollection" { - a href="https://dom.spec.whatwg.org/#interface-htmlcollection" { - code { - - "HTMLCollection" - } - } - } - - " interface, its\n " - dfn id="dom-htmlcollection-length" { - a href="https://dom.spec.whatwg.org/#dom-htmlcollection-length" { - code { - - "length" - } - } - } - - " attribute, and its\n " - dfn id="dom-htmlcollection-item" { - a href="https://dom.spec.whatwg.org/#dom-htmlcollection-item" { - code { - - "item()" - } - } - } - - " and\n " - dfn id="dom-htmlcollection-nameditem" { - a href="https://dom.spec.whatwg.org/#dom-htmlcollection-nameditem" { - code { - - "namedItem()" - } - } - } - - " methods" - } - li { - - "The terms " - dfn id="concept-collection" { - a href="https://dom.spec.whatwg.org/#concept-collection" { - - "collection" - } - } - - " and " - dfn id="represented-by-the-collection" { - a href="https://dom.spec.whatwg.org/#represented-by-the-collection" { - - "represented by the collection" - } - } - } - li { - dfn id="domtokenlist" { - a href="https://dom.spec.whatwg.org/#interface-domtokenlist" { - code { - - "DOMTokenList" - } - } - } - - " interface, and its\n " - dfn id="dom-domtokenlist-value" { - a href="https://dom.spec.whatwg.org/#dom-domtokenlist-value" { - code { - - "value" - } - } - } - - " attribute and\n " - dfn id="dom-domtokenlist-supports" { - a href="https://dom.spec.whatwg.org/#dom-domtokenlist-supports" { - code { - - "supports" - } - } - } - - " operation" - } - li { - dfn id="dom-domimplementation-createdocument" { - a href="https://dom.spec.whatwg.org/#dom-domimplementation-createdocument" { - code { - - "createDocument()" - } - } - } - - " method" - } - li { - dfn id="dom-domimplementation-createhtmldocument" { - a href="https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument" { - code { - - "createHTMLDocument()" - } - } - } - - " method" - } - li { - dfn id="dom-document-createelement" { - a href="https://dom.spec.whatwg.org/#dom-document-createelement" { - code { - - "createElement()" - } - } - } - - " method" - } - li { - dfn id="dom-document-createelementns" { - a href="https://dom.spec.whatwg.org/#dom-document-createelementns" { - code { - - "createElementNS()" - } - } - } - - " method" - } - li { - dfn id="dom-document-getelementbyid" { - a href="https://dom.spec.whatwg.org/#dom-nonelementparentnode-getelementbyid" { - code { - - "getElementById()" - } - } - } - - " method" - } - li { - dfn id="dom-document-getelementsbyclassname" { - a href="https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname" { - code { - - "getElementsByClassName()" - } - } - } - - " method" - } - li { - dfn id="dom-node-append" { - a href="https://dom.spec.whatwg.org/#dom-node-append" { - code { - - "append()" - } - } - } - - " method" - } - li { - dfn id="dom-node-appendchild" { - a href="https://dom.spec.whatwg.org/#dom-node-appendchild" { - code { - - "appendChild()" - } - } - } - - " method" - } - li { - dfn id="dom-node-clonenode" { - a href="https://dom.spec.whatwg.org/#dom-node-clonenode" { - code { - - "cloneNode()" - } - } - } - - " method" - } - li { - dfn id="dom-document-importnode" { - a href="https://dom.spec.whatwg.org/#dom-document-importnode" { - code { - - "importNode()" - } - } - } - - " method" - } - li { - dfn id="dom-event-preventdefault" { - a href="https://dom.spec.whatwg.org/#dom-event-preventdefault" { - code { - - "preventDefault()" - } - } - } - - " method" - } - li { - dfn id="dom-element-id" { - a href="https://dom.spec.whatwg.org/#dom-element-id" { - code { - - "id" - } - } - } - - " attribute" - } - li { - dfn id="dom-element-setattribute" { - a href="https://dom.spec.whatwg.org/#dom-element-setattribute" { - code { - - "setAttribute()" - } - } - } - - " method" - } - li { - dfn id="textcontent" { - a href="https://dom.spec.whatwg.org/#dom-node-textcontent" { - code { - - "textContent" - } - } - } - - " attribute" - } - li { - - "The " - dfn id="tree" { - a href="https://dom.spec.whatwg.org/#concept-tree" { - - "tree" - } - } - - ", " - dfn id="shadow-tree" { - a href="https://dom.spec.whatwg.org/#concept-shadow-tree" { - - "shadow tree" - } - } - - ", and " - dfn id="node-tree" { - a href="https://dom.spec.whatwg.org/#concept-node-tree" { - - "node tree" - } - } - - " concepts" - } - li { - - "The " - dfn id="tree-order" { - a href="https://dom.spec.whatwg.org/#concept-tree-order" { - - "tree order" - } - } - - " and " - dfn id="shadow-including-tree-order" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-tree-order" { - - "shadow-including tree order" - } - } - - " concepts" - } - li { - - "The " - dfn id="concept-element" { - a href="https://dom.spec.whatwg.org/#concept-element" { - - "element" - } - } - - " concept" - } - li { - - "The " - dfn id="concept-tree-child" { - a href="https://dom.spec.whatwg.org/#concept-tree-child" { - - "child" - } - } - - " concept" - } - li { - - "The " - dfn id="root" { - a href="https://dom.spec.whatwg.org/#concept-tree-root" { - - "root" - } - } - - " and " - dfn id="shadow-including-root" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-root" { - - "shadow-including root" - } - } - - " concepts" - } - li { - - "The " - dfn id="inclusive-ancestor" { - a href="https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor" { - - "inclusive ancestor" - } - } - - ",\n " - dfn id="descendant" { - a href="https://dom.spec.whatwg.org/#concept-tree-descendant" { - - "descendant" - } - } - - ",\n " - dfn id="concept-shadow-including-ancestor" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-ancestor" { - - "shadow-including ancestor" - } - } - - ",\n " - dfn id="shadow-including-descendant" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-descendant" { - - "shadow-including descendant" - } - } - - ",\n " - dfn id="shadow-including-inclusive-descendant" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-inclusive-descendant" { - - "shadow-including inclusive descendant" - } - } - - ", and\n " - dfn id="shadow-including-inclusive-ancestor" { - a href="https://dom.spec.whatwg.org/#concept-shadow-including-inclusive-ancestor" { - - "shadow-including inclusive ancestor" - } - } - - " concepts" - } - li { - - "The " - dfn id="first-child" { - a href="https://dom.spec.whatwg.org/#concept-tree-first-child" { - - "first child" - } - } - - ",\n " - dfn id="next-sibling" { - a href="https://dom.spec.whatwg.org/#concept-tree-next-sibling" { - - "next sibling" - } - } - - ",\n " - dfn id="previous-sibling" { - a href="https://dom.spec.whatwg.org/#concept-tree-previous-sibling" { - - "previous sibling" - } - } - - ", and\n " - dfn id="parent" { - a href="https://dom.spec.whatwg.org/#concept-tree-parent" { - - "parent" - } - } - - " concepts" - } - li { - - "The " - dfn id="parent-element" { - a href="https://dom.spec.whatwg.org/#parent-element" { - - "parent element" - } - } - - " concept" - } - li { - - "The " - dfn id="document-element" { - a href="https://dom.spec.whatwg.org/#document-element" { - - "document element" - } - } - - " concept" - } - li { - - "The " - dfn id="in-a-document-tree" { - a href="https://dom.spec.whatwg.org/#in-a-document-tree" { - - "in a document tree" - } - } - - ", " - dfn id="in-a-document" { - a href="https://dom.spec.whatwg.org/#in-a-document" { - - "in a document" - } - } - - " (legacy), and " - dfn id="connected" { - a href="https://dom.spec.whatwg.org/#connected" { - - "connected" - } - } - - " concepts" - } - li { - - "The " - dfn id="concept-slot" { - a href="https://dom.spec.whatwg.org/#concept-slot" { - - "slot" - } - } - - " concept, and its " - dfn id="slot-name" { - a href="https://dom.spec.whatwg.org/#slot-name" { - - "name" - } - } - - " and " - dfn id="assigned-nodes" { - a href="https://dom.spec.whatwg.org/#slot-assigned-nodes" { - - "assigned nodes" - } - } - } - li { - - "The " - dfn id="assigned-slot" { - a href="https://dom.spec.whatwg.org/#slotable-assigned-slot" { - - "assigned slot" - } - } - - " concept" - } - li { - - "The " - dfn id="slot-assignment" { - a href="https://dom.spec.whatwg.org/#dom-shadowroot-slot-assignment" { - - "slot assignment" - } - } - - " concept" - } - li { - - "The " - dfn id="slottable" { - a href="https://dom.spec.whatwg.org/#concept-slotable" { - - "slottable" - } - } - - " concept" - } - li { - - "The " - dfn id="assign-slottables-for-a-tree" { - a href="https://dom.spec.whatwg.org/#assign-slotables-for-a-tree" { - - "assign slottables for a tree" - } - } - - " algorithm" - } - li { - - "The " - dfn id="event-slotchange" { - a href="https://dom.spec.whatwg.org/#eventdef-htmlslotelement-slotchange" { - code { - - "slotchange" - } - } - } - - " event" - } - li { - - "The " - dfn id="inclusive-descendant" { - a href="https://dom.spec.whatwg.org/#concept-tree-inclusive-descendant" { - - "inclusive descendant" - } - } - - " concept" - } - li { - - "The " - dfn id="finding-flattened-slottables" { - a href="https://dom.spec.whatwg.org/#find-flattened-slotables" { - - "find flattened slottables" - } - } - - " algorithm" - } - li { - - "The " - dfn id="manual-slot-assignment" { - a href="https://dom.spec.whatwg.org/#slottable-manual-slot-assignment" { - - "manual slot assignment" - } - } - - " concept" - } - li { - - "The " - dfn id="assign-a-slot" { - a href="https://dom.spec.whatwg.org/#assign-a-slot" { - - "assign a slot" - } - } - - " algorithm" - } - li { - - "The " - dfn id="pre-insert" { - a href="https://dom.spec.whatwg.org/#concept-node-pre-insert" { - - "pre-insert" - } - } - - ", " - dfn id="concept-node-insert" { - a href="https://dom.spec.whatwg.org/#concept-node-insert" { - - "insert" - } - } - - ", " - dfn id="concept-node-append" { - a href="https://dom.spec.whatwg.org/#concept-node-append" { - - "append" - } - } - - ", " - dfn id="concept-node-replace" { - a href="https://dom.spec.whatwg.org/#concept-node-replace" { - - "replace" - } - } - - ", " - dfn id="concept-node-replace-all" { - a href="https://dom.spec.whatwg.org/#concept-node-replace-all" { - - "replace all" - } - } - - ", " - dfn id="string-replace-all" { - a href="https://dom.spec.whatwg.org/#string-replace-all" { - - "string replace all" - } - } - - ", " - dfn id="concept-node-remove" { - a href="https://dom.spec.whatwg.org/#concept-node-remove" { - - "remove" - } - } - - ", and " - dfn id="concept-node-adopt" { - a href="https://dom.spec.whatwg.org/#concept-node-adopt" { - - "adopt" - } - } - - " algorithms for nodes" - } - li { - - "The " - dfn id="concept-tree-descendant" { - a href="https://dom.spec.whatwg.org/#concept-tree-descendant" { - - "descendant" - } - } - - " concept" - } - li { - - "The " - dfn id="concept-node-insert-ext" { - a href="https://dom.spec.whatwg.org/#concept-node-insert-ext" { - - "insertion steps" - } - } - - ",\n " - } - li { - - "The " - dfn id="concept-node-post-connection-ext" { - a href="https://dom.spec.whatwg.org/#concept-node-post-connection-ext" { - - "post-connection steps" - } - } - - ",\n " - dfn id="concept-node-remove-ext" { - a href="https://dom.spec.whatwg.org/#concept-node-remove-ext" { - - "removing steps" - } - } - - ",\n " - dfn id="concept-node-adopt-ext" { - a href="https://dom.spec.whatwg.org/#concept-node-adopt-ext" { - - "adopting steps" - } - } - - ", and\n " - dfn id="children-changed-steps" { - a href="https://dom.spec.whatwg.org/#concept-node-children-changed-ext" { - - "children changed steps" - } - } - - " hooks for elements" - } - li { - - "The " - dfn id="concept-element-attributes-change" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-change" { - - "change" - } - } - - ", " - dfn id="concept-element-attributes-append" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-append" { - - "append" - } - } - - ", " - dfn id="concept-element-attributes-remove" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-remove" { - - "remove" - } - } - - ", " - dfn id="concept-element-attributes-replace" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-replace" { - - "replace" - } - } - - ", " - dfn id="concept-element-attributes-get-by-namespace" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace" { - - "get an attribute by namespace and local name" - } - } - - ", " - dfn id="concept-element-attributes-set-value" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-set-value" { - - "set value" - } - } - - ", and " - dfn id="concept-element-attributes-remove-by-namespace" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-remove-by-namespace" { - - "remove an attribute by namespace and local name" - } - } - - " algorithms for attributes" - } - li { - - "The " - dfn id="concept-element-attributes-change-ext" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-change-ext" { - - "attribute change steps" - } - } - - " hook for attributes" - } - li { - - "The " - dfn id="concept-attribute-value" { - a href="https://dom.spec.whatwg.org/#concept-attribute-value" { - - "value" - } - } - - " concept for attributes" - } - li { - - "The " - dfn id="concept-attribute-local-name" { - a href="https://dom.spec.whatwg.org/#concept-attribute-local-name" { - - "local name" - } - } - - " concept for attributes" - } - li { - - "The " - dfn id="attribute-list" { - a href="https://dom.spec.whatwg.org/#concept-element-attribute" { - - "attribute list" - } - } - - " concept" - } - li { - - "The " - dfn id="concept-cd-data" { - a href="https://dom.spec.whatwg.org/#concept-cd-data" { - - "data" - } - } - - " of a " - code id="dependencies:characterdata" { - a data-x-internal="characterdata" href="https://dom.spec.whatwg.org/#interface-characterdata" { - - "CharacterData" - } - } - - " node and its\n " - dfn id="replace-data" { - a href="https://dom.spec.whatwg.org/#concept-cd-replace" { - - "replace data" - } - } - - " algorithm" - } - li { - - "The " - dfn id="child-text-content" { - a href="https://dom.spec.whatwg.org/#concept-child-text-content" { - - "child text content" - } - } - - " of a node" - } - li { - - "The " - dfn id="descendant-text-content" { - a href="https://dom.spec.whatwg.org/#concept-descendant-text-content" { - - "descendant text content" - } - } - - " of a node" - } - li { - - "The " - dfn id="concept-doctype-name" { - a href="https://dom.spec.whatwg.org/#concept-doctype-name" { - - "name" - } - } - - ",\n " - dfn id="concept-doctype-publicid" { - a href="https://dom.spec.whatwg.org/#concept-doctype-publicid" { - - "public ID" - } - } - - ", and\n " - dfn id="concept-doctype-systemid" { - a href="https://dom.spec.whatwg.org/#concept-doctype-systemid" { - - "system ID" - } - } - - " of a doctype" - } - li { - dfn id="event" { - a href="https://dom.spec.whatwg.org/#interface-event" { - code { - - "Event" - } - } - } - - " interface" - } - li { - dfn id="dom-event-constructor" { - a href="https://dom.spec.whatwg.org/#concept-event-constructor" { - code { - - "Event" - } - - " and derived interfaces constructor behavior" - } - } - } - li { - dfn id="eventtarget" { - a href="https://dom.spec.whatwg.org/#interface-eventtarget" { - code { - - "EventTarget" - } - } - } - - " interface" - } - li { - - "The " - dfn id="activation-behaviour" { - a href="https://dom.spec.whatwg.org/#eventtarget-activation-behavior" { - - "activation behavior" - } - } - - " hook" - } - li { - - "The " - dfn id="legacy-pre-activation-behavior" { - a href="https://dom.spec.whatwg.org/#eventtarget-legacy-pre-activation-behavior" { - - "legacy-pre-activation behavior" - } - } - - " hook" - } - li { - - "The " - dfn id="legacy-canceled-activation-behavior" { - a href="https://dom.spec.whatwg.org/#eventtarget-legacy-canceled-activation-behavior" { - - "legacy-canceled-activation behavior" - } - } - - " hook" - } - li { - - "The " - dfn id="creating-an-event" { - a href="https://dom.spec.whatwg.org/#concept-event-create" { - - "create an event" - } - } - - " algorithm" - } - li { - - "The " - dfn id="concept-event-fire" { - a href="https://dom.spec.whatwg.org/#concept-event-fire" { - - "fire an event" - } - } - - " algorithm" - } - li { - - "The " - dfn id="canceled-flag" { - a href="https://dom.spec.whatwg.org/#canceled-flag" { - - "canceled flag" - } - } - } - li { - - "The " - dfn id="dispatch-flag" { - a href="https://dom.spec.whatwg.org/#dispatch-flag" { - - "dispatch flag" - } - } - } - li { - - "The " - dfn id="concept-event-dispatch" { - a href="https://dom.spec.whatwg.org/#concept-event-dispatch" { - - "dispatch" - } - } - - " algorithm" - } - li { - dfn id="eventinit" { - a href="https://dom.spec.whatwg.org/#dictdef-eventinit" { - code { - - "EventInit" - } - } - } - - " dictionary type" - } - li { - dfn id="dom-event-type" { - a href="https://dom.spec.whatwg.org/#dom-event-type" { - code { - - "type" - } - } - } - - " attribute" - } - li { - - "An event's " - dfn id="concept-event-target" { - a href="https://dom.spec.whatwg.org/#concept-event-target" { - - "target" - } - } - } - li { - dfn id="dom-event-currenttarget" { - a href="https://dom.spec.whatwg.org/#dom-event-currenttarget" { - code { - - "currentTarget" - } - } - } - - " attribute" - } - li { - dfn id="dom-event-bubbles" { - a href="https://dom.spec.whatwg.org/#dom-event-bubbles" { - code { - - "bubbles" - } - } - } - - " attribute" - } - li { - dfn id="dom-event-cancelable" { - a href="https://dom.spec.whatwg.org/#dom-event-cancelable" { - code { - - "cancelable" - } - } - } - - " attribute" - } - li { - dfn id="dom-event-composed" { - a href="https://dom.spec.whatwg.org/#dom-event-composed" { - code { - - "composed" - } - } - } - - " attribute" - } - li { - dfn id="composed-flag" { - a href="https://dom.spec.whatwg.org/#composed-flag" { - - "composed flag" - } - } - } - li { - dfn id="dom-event-istrusted" { - a href="https://dom.spec.whatwg.org/#dom-event-istrusted" { - code { - - "isTrusted" - } - } - } - - " attribute" - } - li { - dfn id="dom-event-initevent" { - a href="https://dom.spec.whatwg.org/#dom-event-initevent" { - code { - - "initEvent()" - } - } - } - - " method" - } - li { - dfn id="add-an-event-listener" { - a href="https://dom.spec.whatwg.org/#add-an-event-listener" { - - "add an event listener" - } - } - } - li { - dfn id="dom-eventtarget-addeventlistener" { - a href="https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener" { - code { - - "addEventListener()" - } - } - } - - " method" - } - li { - - "The " - dfn id="remove-an-event-listener" { - a href="https://dom.spec.whatwg.org/#remove-an-event-listener" { - - "remove an event listener" - } - } - - " and\n " - dfn id="remove-all-event-listeners" { - a href="https://dom.spec.whatwg.org/#remove-all-event-listeners" { - - "remove all event listeners" - } - } - - " algorithms" - } - li { - dfn id="dom-eventlistener" { - a href="https://dom.spec.whatwg.org/#callbackdef-eventlistener" { - code { - - "EventListener" - } - } - } - - " callback interface" - } - li { - - "The " - dfn id="concept-event-type" { - a href="https://dom.spec.whatwg.org/#dom-event-type" { - - "type" - } - } - - " of an event" - } - li { - - "An " - dfn id="event-listener" { - a href="https://dom.spec.whatwg.org/#concept-event-listener" { - - "event listener" - } - } - - " and its\n " - dfn id="event-listener-type" { - a href="https://dom.spec.whatwg.org/#event-listener-type" { - - "type" - } - } - - " and\n " - dfn id="event-listener-callback" { - a href="https://dom.spec.whatwg.org/#event-listener-callback" { - - "callback" - } - } - } - li { - - "The " - dfn id="document's-character-encoding" { - a href="https://dom.spec.whatwg.org/#concept-document-encoding" { - - "encoding" - } - } - - " (herein the " - i { - - "character encoding" - } - - "),\n " - dfn id="concept-document-mode" { - a href="https://dom.spec.whatwg.org/#concept-document-mode" { - - "mode" - } - } - - ",\n " - dfn id="concept-document-allow-declarative-shadow-roots" { - a href="https://dom.spec.whatwg.org/#concept-document-allow-declarative-shadow-roots" { - - "allow declarative shadow roots" - } - } - - ", and\n " - dfn id="concept-document-content-type" { - a href="https://dom.spec.whatwg.org/#concept-document-content-type" { - - "content type" - } - } - - " of a " - code id="dependencies:document" { - a href="#document" { - - "Document" - } - } - } - li { - - "The distinction between " - dfn id="xml-documents" { - a href="https://dom.spec.whatwg.org/#xml-document" { - - "XML documents" - } - } - - " and\n " - dfn id="html-documents" { - a href="https://dom.spec.whatwg.org/#html-document" { - - "HTML documents" - } - } - } - li { - - "The terms " - dfn id="quirks-mode" { - a href="https://dom.spec.whatwg.org/#concept-document-quirks" { - - "quirks mode" - } - } - - ",\n " - dfn id="limited-quirks-mode" { - a href="https://dom.spec.whatwg.org/#concept-document-limited-quirks" { - - "limited-quirks mode" - } - } - - ", and\n " - dfn id="no-quirks-mode" { - a href="https://dom.spec.whatwg.org/#concept-document-no-quirks" { - - "no-quirks mode" - } - } - } - li { - - "The algorithm " - dfn id="concept-node-clone" { - a href="https://dom.spec.whatwg.org/#concept-node-clone" { - - "clone a node" - } - } - - " with its arguments\n " - dfn id="concept-node-clone-document" { - a href="https://dom.spec.whatwg.org/#clone-a-node-document" { - var { - - "document" - } - } - } - - ",\n " - dfn id="concept-node-clone-subtree" { - a href="https://dom.spec.whatwg.org/#clone-a-node-subtree" { - var { - - "subtree" - } - } - } - - ", and\n " - dfn id="concept-node-clone-parent" { - a href="https://dom.spec.whatwg.org/#clone-a-node-parent" { - var { - - "parent" - } - } - } - - ", and the concept of\n " - dfn id="concept-node-clone-ext" { - a href="https://dom.spec.whatwg.org/#concept-node-clone-ext" { - - "cloning steps" - } - } - } - li { - - "The concept of " - dfn id="base-url-change-steps" { - - "base URL change steps" - } - - " and the definition of what happens when an element is " - dfn id="affected-by-a-base-url-change" { - - "affected by a base URL change" - } - } - li { - - "The concept of an element's " - dfn id="concept-id" { - a href="https://dom.spec.whatwg.org/#concept-id" { - - "unique identifier (ID)" - } - } - } - li { - - "The concept of an element's " - dfn id="concept-class" { - a href="https://dom.spec.whatwg.org/#concept-class" { - - "classes" - } - } - } - li { - - "The term " - dfn id="concept-supported-tokens" { - a href="https://dom.spec.whatwg.org/#concept-supported-tokens" { - - "supported tokens" - } - } - } - li { - - "The concept of a DOM " - dfn id="concept-range" { - a href="https://dom.spec.whatwg.org/#concept-range" { - - "range" - } - } - - ", and the terms\n " - dfn id="concept-range-start-node" { - a href="https://dom.spec.whatwg.org/#concept-range-start-node" { - - "start node" - } - } - - ",\n " - dfn id="concept-range-start" { - a href="https://dom.spec.whatwg.org/#concept-range-start" { - - "start" - } - } - - ",\n " - dfn id="concept-range-end" { - a href="https://dom.spec.whatwg.org/#concept-range-end" { - - "end" - } - } - - ", and\n " - dfn id="concept-range-bp" { - a href="https://dom.spec.whatwg.org/#concept-range-bp" { - - "boundary point" - } - } - - " as applied to ranges." - } - li { - - "The " - dfn id="create-an-element" { - a href="https://dom.spec.whatwg.org/#concept-create-element" { - - "create an element" - } - } - - " algorithm" - } - li { - - "The " - dfn id="element-interface" { - a href="https://dom.spec.whatwg.org/#concept-element-interface" { - - "element interface" - } - } - - " concept" - } - li { - - "The concepts of " - dfn id="custom-element-state" { - a href="https://dom.spec.whatwg.org/#concept-element-custom-element-state" { - - "custom element state" - } - } - - ", and of\n " - dfn id="concept-element-defined" { - a href="https://dom.spec.whatwg.org/#concept-element-defined" { - - "defined" - } - } - - " and\n " - dfn id="concept-element-custom" { - a href="https://dom.spec.whatwg.org/#concept-element-custom" { - - "custom" - } - } - - " elements" - } - li { - - "An element's " - dfn id="concept-element-namespace" { - a href="https://dom.spec.whatwg.org/#concept-element-namespace" { - - "namespace" - } - } - - ",\n " - dfn id="concept-element-namespace-prefix" { - a href="https://dom.spec.whatwg.org/#concept-element-namespace-prefix" { - - "namespace prefix" - } - } - - ",\n " - dfn id="concept-element-local-name" { - a href="https://dom.spec.whatwg.org/#concept-element-local-name" { - - "local name" - } - } - - ",\n " - dfn id="concept-element-custom-element-definition" { - a href="https://dom.spec.whatwg.org/#concept-element-custom-element-definition" { - - "custom element definition" - } - } - - ", and\n " - dfn id="concept-element-is-value" { - a href="https://dom.spec.whatwg.org/#concept-element-is-value" { - code { - - "is" - } - - " value" - } - } - } - li { - dfn id="mutationobserver" { - a href="https://dom.spec.whatwg.org/#mutationobserver" { - code { - - "MutationObserver" - } - } - } - - " interface and " - dfn id="mutation-observers" { - a href="https://dom.spec.whatwg.org/#mutation-observers" { - - "mutation observers" - } - } - - " in general" - } - li { - dfn id="abortcontroller" { - a href="https://dom.spec.whatwg.org/#abortcontroller" { - code { - - "AbortController" - } - } - } - - " and its\n " - dfn id="concept-abortcontroller-signal" { - a href="https://dom.spec.whatwg.org/#abortcontroller-signal" { - - "signal" - } - } - } - li { - dfn id="abortsignal" { - a href="https://dom.spec.whatwg.org/#abortsignal" { - code { - - "AbortSignal" - } - } - } - } - li { - dfn id="abortsignal-aborted" { - a href="https://dom.spec.whatwg.org/#abortsignal-aborted" { - - "aborted" - } - } - } - li { - dfn id="signal-abort" { - a href="https://dom.spec.whatwg.org/#abortcontroller-signal-abort" { - - "signal abort" - } - } - } - li { - dfn id="abortsignal-add" { - a href="https://dom.spec.whatwg.org/#abortsignal-add" { - - "add" - } - } - } - li { - - "The " - dfn id="get-an-attribute-by-name" { - a href="https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name" { - - "get an attribute by name" - } - } - - " algorithm" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "UI Events" - } - - ": " - a href="#refsUIEVENTS" { - - "[UIEVENTS]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="mouseevent" { - a href="https://w3c.github.io/uievents/#mouseevent" { - code { - - "MouseEvent" - } - } - } - - " interface" - } - li { - - "The " - code id="dependencies:mouseevent" { - a data-x-internal="mouseevent" href="https://w3c.github.io/uievents/#mouseevent" { - - "MouseEvent" - } - } - - " interface's " - dfn id="dom-mouseevent-relatedtarget" { - a href="https://w3c.github.io/uievents/#dom-mouseevent-relatedtarget" { - code { - - "relatedTarget" - } - } - } - - " attribute" - } - li { - dfn id="mouseeventinit" { - a href="https://w3c.github.io/uievents/#dictdef-mouseeventinit" { - code { - - "MouseEventInit" - } - } - } - - " dictionary type" - } - li { - - "The " - dfn id="focusevent" { - a href="https://w3c.github.io/uievents/#focusevent" { - code { - - "FocusEvent" - } - } - } - - " interface" - } - li { - - "The " - code id="dependencies:focusevent" { - a data-x-internal="focusevent" href="https://w3c.github.io/uievents/#focusevent" { - - "FocusEvent" - } - } - - " interface's " - dfn id="dom-focusevent-relatedtarget" { - a href="https://w3c.github.io/uievents/#dom-focusevent-relatedtarget" { - code { - - "relatedTarget" - } - } - } - - " attribute" - } - li { - - "The " - dfn id="uievent" { - a href="https://w3c.github.io/uievents/#uievent" { - code { - - "UIEvent" - } - } - } - - " interface" - } - li { - - "The " - code id="dependencies:uievent" { - a data-x-internal="uievent" href="https://w3c.github.io/uievents/#uievent" { - - "UIEvent" - } - } - - " interface's " - dfn id="dom-uievent-view" { - a href="https://w3c.github.io/uievents/#dom-uievent-view" { - code { - - "view" - } - } - } - - " attribute" - } - li { - dfn id="event-auxclick" { - a href="https://w3c.github.io/uievents/#event-type-auxclick" { - code { - - "auxclick" - } - } - } - - " event" - } - li { - dfn id="event-beforeinput" { - a href="https://w3c.github.io/uievents/#event-type-beforeinput" { - code { - - "beforeinput" - } - } - } - - " event" - } - li { - dfn id="event-click" { - a href="https://w3c.github.io/uievents/#event-type-click" { - code { - - "click" - } - } - } - - " event" - } - li { - dfn id="event-contextmenu" { - a href="https://w3c.github.io/uievents/#event-type-contextmenu" { - code { - - "contextmenu" - } - } - } - - " event" - } - li { - dfn id="event-dblclick" { - a href="https://w3c.github.io/uievents/#event-type-dblclick" { - code { - - "dblclick" - } - } - } - - " event" - } - li { - dfn id="event-input" { - a href="https://w3c.github.io/uievents/#event-type-input" { - code { - - "input" - } - } - } - - " event" - } - li { - dfn id="event-mousedown" { - a href="https://w3c.github.io/uievents/#event-type-mousedown" { - code { - - "mousedown" - } - } - } - - " event" - } - li { - dfn id="event-mouseenter" { - a href="https://w3c.github.io/uievents/#event-type-mouseenter" { - code { - - "mouseenter" - } - } - } - - " event" - } - li { - dfn id="event-mouseleave" { - a href="https://w3c.github.io/uievents/#event-type-mouseleave" { - code { - - "mouseleave" - } - } - } - - " event" - } - li { - dfn id="event-mousemove" { - a href="https://w3c.github.io/uievents/#event-type-mousemove" { - code { - - "mousemove" - } - } - } - - " event" - } - li { - dfn id="event-mouseout" { - a href="https://w3c.github.io/uievents/#event-type-mouseout" { - code { - - "mouseout" - } - } - } - - " event" - } - li { - dfn id="event-mouseover" { - a href="https://w3c.github.io/uievents/#event-type-mouseover" { - code { - - "mouseover" - } - } - } - - " event" - } - li { - dfn id="event-mouseup" { - a href="https://w3c.github.io/uievents/#event-type-mouseup" { - code { - - "mouseup" - } - } - } - - " event" - } - li { - dfn id="event-wheel" { - a href="https://w3c.github.io/uievents/#event-type-wheel" { - code { - - "wheel" - } - } - } - - " event" - } - li { - dfn id="event-keydown" { - a href="https://w3c.github.io/uievents/#event-type-keydown" { - code { - - "keydown" - } - } - } - - " event" - } - li { - dfn id="event-keypress" { - a href="https://w3c.github.io/uievents/#event-type-keypress" { - code { - - "keypress" - } - } - } - - " event" - } - li { - dfn id="event-keyup" { - a href="https://w3c.github.io/uievents/#event-type-keyup" { - code { - - "keyup" - } - } - } - - " event" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "Touch Events" - } - - ": " - a href="#refsTOUCH" { - - "[TOUCH]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="touch" { - a href="https://w3c.github.io/touch-events/#touch-interface" { - code { - - "Touch" - } - } - } - - " interface" - } - li { - dfn id="touch-point" { - a href="https://w3c.github.io/touch-events/#dfn-touch-point" { - - "Touch point" - } - } - - " concept" - } - li { - dfn id="event-touchend" { - a href="https://w3c.github.io/touch-events/#event-touchend" { - code { - - "touchend" - } - } - } - - " event" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "Pointer Events" - } - - ":\n " - a href="#refsPOINTEREVENTS" { - - "[POINTEREVENTS]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="pointerevent" { - a href="https://w3c.github.io/pointerevents/#pointerevent-interface" { - code { - - "PointerEvent" - } - } - } - - " interface" - } - li { - - "The " - code id="dependencies:pointerevent" { - a data-x-internal="pointerevent" href="https://w3c.github.io/pointerevents/#pointerevent-interface" { - - "PointerEvent" - } - } - - " interface's " - dfn id="pointertype" { - a href="https://w3c.github.io/pointerevents/#dom-pointerevent-pointertype" { - code { - - "pointerType" - } - } - } - - " attribute" - } - li { - dfn id="fire-a-pointer-event" { - a href="https://w3c.github.io/pointerevents/#dfn-fire-a-pointer-event" { - - "fire a pointer event" - } - } - } - li { - dfn id="event-pointerdown" { - a href="https://w3c.github.io/pointerevents/#the-pointerdown-event" { - code { - - "pointerdown" - } - } - } - - " event" - } - li { - dfn id="event-pointerup" { - a href="https://w3c.github.io/pointerevents/#the-pointerup-event" { - code { - - "pointerup" - } - } - } - - " event" - } - li { - dfn id="event-pointercancel" { - a href="https://w3c.github.io/pointerevents/#the-pointercancel-event" { - code { - - "pointercancel" - } - } - } - - " event" - } - } - - "\n\n " - p { - - "The following events are defined in " - cite { - - "Clipboard API and events" - } - - ":\n " - a href="#refsCLIPBOARD-APIS" { - - "[CLIPBOARD-APIS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="event-copy" { - a href="https://w3c.github.io/clipboard-apis/#clipboard-event-copy" { - code { - - "copy" - } - } - } - - " event" - } - li { - dfn id="event-cut" { - a href="https://w3c.github.io/clipboard-apis/#clipboard-event-cut" { - code { - - "cut" - } - } - } - - " event" - } - li { - dfn id="event-paste" { - a href="https://w3c.github.io/clipboard-apis/#clipboard-event-paste" { - code { - - "paste" - } - } - } - - " event" - } - } - - "\n\n " - p { - - "This specification sometimes uses the term " - dfn { - - "name" - } - - " to refer to the event's\n " - a href="https://dom.spec.whatwg.org/#dom-event-type" id="dependencies:concept-event-type" data-x-internal="concept-event-type" { - - "type" - } - - "; as in, \"an event named " - code { - - "click" - } - - "\" or \"if the event name is " - code { - - "keypress" - } - - "\". The terms\n \"name\" and \"type\" for events are synonymous." - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "DOM Parsing and Serialization" - } - - ":\n " - a href="#refsDOMPARSING" { - - "[DOMPARSING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="xml-serialization" { - a href="https://w3c.github.io/DOM-Parsing/#dfn-xml-serialization" { - code { - - "XML serialization" - } - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "Selection API" - } - - ": " - a href="#refsSELECTION" { - - "[SELECTION]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="document-selection" { - a href="https://w3c.github.io/selection-api/#dfn-selection" { - - "selection" - } - } - } - li { - dfn id="selection" { - a href="https://w3c.github.io/selection-api/#selection-interface" { - code { - - "Selection" - } - } - } - } - } - - "\n\n " - p class="note" { - - "User agents are encouraged to implement the features described in\n " - cite { - - "execCommand" - } - - ". " - a href="#refsEXECCOMMAND" { - - "[EXECCOMMAND]" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "Fullscreen API" - } - - ": " - a href="#refsFULLSCREEN" { - - "[FULLSCREEN]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="dom-element-requestfullscreen" { - a href="https://fullscreen.spec.whatwg.org/#dom-element-requestfullscreen" { - code { - - "requestFullscreen()" - } - } - } - } - li { - dfn id="event-fullscreenchange" { - a href="https://fullscreen.spec.whatwg.org/#eventdef-document-fullscreenchange" { - code { - - "fullscreenchange" - } - } - } - } - li { - dfn id="run-the-fullscreen-steps" { - a href="https://fullscreen.spec.whatwg.org/#run-the-fullscreen-steps" { - - "run the fullscreen steps" - } - } - } - li { - dfn id="fully-exit-fullscreen" { - a href="https://fullscreen.spec.whatwg.org/#fully-exit-fullscreen" { - - "fully exit fullscreen" - } - } - } - li { - dfn id="fullscreen-element" { - a href="https://fullscreen.spec.whatwg.org/#fullscreen-element" { - - "fullscreen element" - } - } - } - li { - dfn id="fullscreen-flag" { - a href="https://fullscreen.spec.whatwg.org/#fullscreen-flag" { - - "fullscreen flag" - } - } - } - } - - "\n\n " - p { - cite { - - "High Resolution Time" - } - - " provides the following features: " - a href="#refsHRT" { - - "[HRT]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="current-high-resolution-time" { - a href="https://w3c.github.io/hr-time/#dfn-current-high-resolution-time" { - - "current high resolution time" - } - } - } - li { - dfn id="relative-high-resolution-time" { - a href="https://w3c.github.io/hr-time/#dfn-relative-high-resolution-time" { - - "relative high resolution time" - } - } - } - li { - dfn id="unsafe-shared-current-time" { - a href="https://w3c.github.io/hr-time/#dfn-unsafe-shared-current-time" { - - "unsafe shared current time" - } - } - } - li { - dfn id="shared-monotonic-clock" { - a href="https://w3c.github.io/hr-time/#dfn-shared-monotonic-clock" { - - "shared monotonic clock" - } - } - } - li { - dfn id="unsafe-moment" { - a href="https://w3c.github.io/hr-time/#dfn-unsafe-moment" { - - "unsafe moment" - } - } - } - li { - dfn id="duration-from" { - a href="https://w3c.github.io/hr-time/#dfn-duration-from" { - - "duration from" - } - } - } - li { - dfn id="coarsen-time" { - a href="https://w3c.github.io/hr-time/#dfn-coarsen-time" { - - "coarsen time" - } - } - } - li { - dfn id="current-wall-time" { - a href="https://w3c.github.io/hr-time/#dfn-current-wall-time" { - - "current wall time" - } - } - } - li { - dfn id="unix-epoch" { - a href="https://w3c.github.io/hr-time/#dfn-unix-epoch" { - - "Unix epoch" - } - } - } - li { - dfn id="domhighrestimestamp" { - a href="https://w3c.github.io/hr-time/#dom-domhighrestimestamp" { - code { - - "DOMHighResTimeStamp" - } - } - } - } - } - - "\n " - } - dt { - - "File API" - } - dd { - - "\n " - p { - - "This specification uses the following features defined in " - cite { - - "File API" - } - - ":\n " - a href="#refsFILEAPI" { - - "[FILEAPI]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="blob" { - a href="https://w3c.github.io/FileAPI/#dfn-Blob" { - code { - - "Blob" - } - } - } - - " interface and its\n " - dfn id="dom-blob-type" { - a href="https://w3c.github.io/FileAPI/#dfn-type" { - code { - - "type" - } - } - } - - " attribute" - } - li { - - "The " - dfn id="file" { - a href="https://w3c.github.io/FileAPI/#dfn-file" { - code { - - "File" - } - } - } - - " interface and its\n " - dfn id="dom-file-name" { - a href="https://w3c.github.io/FileAPI/#dfn-name" { - code { - - "name" - } - } - } - - " and\n " - dfn id="dom-file-lastmodified" { - a href="https://w3c.github.io/FileAPI/#dfn-lastModified" { - code { - - "lastModified" - } - } - } - - " attributes" - } - li { - - "The " - dfn id="filelist" { - a href="https://w3c.github.io/FileAPI/#filelist-section" { - code { - - "FileList" - } - } - } - - " interface" - } - li { - - "The concept of a " - code id="dependencies:blob" { - a data-x-internal="blob" href="https://w3c.github.io/FileAPI/#dfn-Blob" { - - "Blob" - } - } - - "'s " - dfn id="snapshot-state" { - a href="https://w3c.github.io/FileAPI/#snapshot-state" { - - "snapshot state" - } - } - } - li { - - "The concept of " - dfn id="file-error-read" { - - "read errors" - } - } - li { - dfn id="blob-url-store" { - a href="https://w3c.github.io/FileAPI/#BlobURLStore" { - - "Blob URL Store" - } - } - } - li { - dfn id="blob-url-entry" { - a href="https://w3c.github.io/FileAPI/#blob-url-entry" { - - "blob URL entry" - } - } - - " and its\n " - dfn id="blob-url-entry-environment" { - a href="https://w3c.github.io/FileAPI/#blob-url-entry-environment" { - - "environment" - } - } - } - li { - - "The " - dfn id="blob-url-obtain-object" { - a href="https://w3c.github.io/FileAPI/#blob-url-obtain-object" { - - "obtain a blob object" - } - } - - " algorithm" - } - } - - "\n " - } - dt { - - "Indexed Database API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Indexed Database API" - } - - ":\n " - a href="#refsINDEXEDDB" { - - "[INDEXEDDB]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="cleanup-indexed-database-transactions" { - a href="https://w3c.github.io/IndexedDB/#cleanup-indexed-database-transactions" { - - "cleanup Indexed Database transactions" - } - } - } - li { - dfn id="idbversionchangeevent" { - a href="https://w3c.github.io/IndexedDB/#idbversionchangeevent" { - code { - - "IDBVersionChangeEvent" - } - } - } - } - } - - "\n " - } - dt { - - "Media Source Extensions" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Media Source Extensions" - } - - ":\n " - a href="#refsMEDIASOURCE" { - - "[MEDIASOURCE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="mediasource" { - a href="https://w3c.github.io/media-source/#idl-def-mediasource" { - code { - - "MediaSource" - } - } - } - - " interface" - } - li { - dfn id="detaching-from-a-media-element" { - a href="https://w3c.github.io/media-source/#mediasource-detach" { - - "detaching from a media element" - } - } - } - } - - "\n " - } - dt { - - "Media Capture and Streams" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Media Capture and Streams" - } - - ":\n " - a href="#refsMEDIASTREAM" { - - "[MEDIASTREAM]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="mediastream" { - a href="https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-mediastream" { - code { - - "MediaStream" - } - } - } - - " interface" - } - li { - dfn id="mediastreamtrack" { - a href="https://w3c.github.io/mediacapture-main/getusermedia.html#mediastreamtrack" { - code { - - "MediaStreamTrack" - } - } - } - } - li { - dfn id="live-state" { - a href="https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-MediaStreamTrackState.live" { - - "live state" - } - } - } - li { - dfn id="getusermedia()" { - a href="https://w3c.github.io/mediacapture-main/getusermedia.html#dom-mediadevices-getusermedia" { - code { - - "getUserMedia()" - } - } - } - } - } - - "\n " - } - dt { - - "Reporting" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Reporting" - } - - ": " - a href="#refsREPORTING" { - - "[REPORTING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="queue-a-report" { - a href="https://w3c.github.io/reporting/#queue-report" { - - "Queue a report" - } - } - } - li { - dfn id="report-type" { - a href="https://w3c.github.io/reporting/#report-type" { - - "report type" - } - } - } - li { - dfn id="visible-to-reportingobservers" { - a href="https://w3c.github.io/reporting/#visible-to-reportingobservers" { - - "visible to " - code { - - "ReportingObserver" - } - - "s" - } - } - } - } - - "\n " - } - dt { - - "XMLHttpRequest" - } - dd { - - "\n " - p { - - "The following features and terms are defined in " - cite { - - "XMLHttpRequest" - } - - ":\n " - a href="#refsXHR" { - - "[XHR]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="xmlhttprequest" { - a href="https://xhr.spec.whatwg.org/#xmlhttprequest" { - code { - - "XMLHttpRequest" - } - } - } - - " interface, and its\n " - dfn id="dom-xmlhttprequest-responsexml" { - a href="https://xhr.spec.whatwg.org/#dom-xmlhttprequest-responsexml" { - code { - - "responseXML" - } - } - } - - " attribute" - } - li { - - "The " - dfn id="progressevent" { - a href="https://xhr.spec.whatwg.org/#interface-progressevent" { - code { - - "ProgressEvent" - } - } - } - - " interface, and its\n " - dfn id="dom-progressevent-lengthcomputable" { - a href="https://xhr.spec.whatwg.org/#dom-progressevent-lengthcomputable" { - code { - - "lengthComputable" - } - } - } - - ",\n " - dfn id="dom-progressevent-loaded" { - a href="https://xhr.spec.whatwg.org/#dom-progressevent-loaded" { - code { - - "loaded" - } - } - } - - ", and\n " - dfn id="dom-progressevent-total" { - a href="https://xhr.spec.whatwg.org/#dom-progressevent-total" { - code { - - "total" - } - } - } - - " attributes" - } - li { - - "The " - dfn id="formdata" { - a href="https://xhr.spec.whatwg.org/#formdata" { - code { - - "FormData" - } - } - } - - " interface, and its associated\n " - dfn id="formdata-entry-list" { - a href="https://xhr.spec.whatwg.org/#concept-formdata-entry-list" { - - "entry list" - } - } - } - } - - "\n " - } - dt { - - "Battery Status" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "Battery Status API" - } - - ": " - a href="#refsBATTERY" { - - "[BATTERY]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="dom-navigator-getbattery" { - a href="https://w3c.github.io/battery/#widl-Navigator-getBattery-Promise-BatteryManager" { - code { - - "getBattery()" - } - } - } - - " method" - } - } - - "\n " - } - dt { - - "Media Queries" - } - dd { - - "\n " - p { - - "Implementations must support " - cite { - - "Media Queries" - } - - ". The " - dfn id="media-condition" { - a href="https://drafts.csswg.org/mediaqueries/#typedef-media-condition" { - - "" - } - } - - "\n feature is defined therein. " - a href="#refsMQ" { - - "[MQ]" - } - } - - "\n " - } - dt { - - "CSS modules" - } - dd { - - "\n " - p { - - "While support for CSS as a whole is not required of implementations of this specification\n (though it is encouraged, at least for web browsers), some features are defined in terms of\n specific CSS requirements." - } - - "\n\n " - p { - - "When this specification requires that something be " - dfn id="parse-something-according-to-a-css-grammar" { - a href="https://drafts.csswg.org/css-syntax/#parse-grammar" { - - "parsed according\n to a particular CSS grammar" - } - } - - ", the relevant algorithm in " - cite { - - "CSS Syntax" - } - - " must be\n followed, including error handling rules. " - a href="#refsCSSSYNTAX" { - - "[CSSSYNTAX]" - } - } - - "\n\n " - p class="example" { - - "For example, user agents are required to close all open constructs upon\n finding the end of a style sheet unexpectedly. Thus, when parsing the string \"" - code { - - "rgb(0,0,0" - } - - "\" (with a missing close-parenthesis) for a color value, the close\n parenthesis is implied by this error handling rule, and a value is obtained (the color 'black').\n However, the similar construct \"" - code { - - "rgb(0,0," - } - - "\" (with both a missing\n parenthesis and a missing \"blue\" value) cannot be parsed, as closing the open construct does not\n result in a viable value." - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "Cascading Style Sheets" - } - - "\n (" - cite { - - "CSS" - } - - "): " - a href="#refsCSS" { - - "[CSS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="viewport" { - a href="https://drafts.csswg.org/css2/#viewport" { - - "viewport" - } - } - } - li { - dfn id="line-box" { - a href="https://drafts.csswg.org/css2/#line-box" { - - "line box" - } - } - } - li { - dfn id="out-of-flow" { - a href="https://drafts.csswg.org/css2/#out-of-flow" { - - "out-of-flow" - } - } - } - li { - dfn id="in-flow" { - a href="https://drafts.csswg.org/css2/#in-flow" { - - "in-flow" - } - } - } - li { - dfn id="collapsing-margins" { - a href="https://drafts.csswg.org/css2/#collapsing-margins" { - - "collapsing margins" - } - } - } - li { - dfn id="containing-block" { - a href="https://drafts.csswg.org/css2/#containing-block-details" { - - "containing block" - } - } - } - li { - dfn id="inline-box" { - a href="https://drafts.csswg.org/css2/#inline-box" { - - "inline box" - } - } - } - li { - dfn id="block-box" { - a href="https://drafts.csswg.org/css2/#block-boxes%E2%91%A0" { - - "block box" - } - } - } - li { - - "The " - dfn id="'top'" { - a href="https://drafts.csswg.org/css2/#propdef-top" { - - "'top'" - } - } - - ",\n " - dfn id="'bottom'" { - a href="https://drafts.csswg.org/css2/#propdef-bottom" { - - "'bottom'" - } - } - - ",\n " - dfn id="'left'" { - a href="https://drafts.csswg.org/css2/#propdef-left" { - - "'left'" - } - } - - ", and\n " - dfn id="'right'" { - a href="https://drafts.csswg.org/css2/#propdef-right" { - - "'right'" - } - } - - " properties" - } - li { - - "The " - dfn id="'float'" { - a href="https://drafts.csswg.org/css2/#float-position" { - - "'float'" - } - } - - " property" - } - li { - - "The " - dfn id="'clear'" { - a href="https://drafts.csswg.org/css2/#flow-control" { - - "'clear'" - } - } - - " property" - } - li { - - "The " - dfn id="'width'" { - a href="https://drafts.csswg.org/css2/#the-width-property" { - - "'width'" - } - } - - " property" - } - li { - - "The " - dfn id="'height'" { - a href="https://drafts.csswg.org/css2/#the-height-property" { - - "'height'" - } - } - - " property" - } - li { - - "The " - dfn id="'min-width'" { - a href="https://drafts.csswg.org/css2/#min-max-widths" { - - "'min-width'" - } - } - - " property" - } - li { - - "The " - dfn id="'min-height'" { - a href="https://drafts.csswg.org/css2/#min-max-heights" { - - "'min-height'" - } - } - - " property" - } - li { - - "The " - dfn id="'max-width'" { - a href="https://drafts.csswg.org/css2/#min-max-widths" { - - "'max-width'" - } - } - - " property" - } - li { - - "The " - dfn id="'max-height'" { - a href="https://drafts.csswg.org/css2/#min-max-heights" { - - "'max-height'" - } - } - - " property" - } - li { - - "The " - dfn id="'line-height'" { - a href="https://drafts.csswg.org/css2/#propdef-line-height" { - - "'line-height'" - } - } - - " property" - } - li { - - "The " - dfn id="'vertical-align'" { - a href="https://drafts.csswg.org/css2/#propdef-vertical-align" { - - "'vertical-align'" - } - } - - " property" - } - li { - - "The " - dfn id="'content'" { - a href="https://drafts.csswg.org/css2/#content%E2%91%A0" { - - "'content'" - } - } - - " property" - } - li { - - "The " - dfn id="'inline-block'" { - a href="https://drafts.csswg.org/css2/#value-def-inline-block" { - - "'inline-block'" - } - } - - " value of the " - a id="dependencies:'display'" href="https://drafts.csswg.org/css2/#display-prop" data-x-internal="'display'" { - - "'display'" - } - - " property" - } - li { - - "The " - dfn id="'visibility'" { - a href="https://drafts.csswg.org/css2/#propdef-visibility" { - - "'visibility'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The basic version of the " - dfn id="'display'" { - a href="https://drafts.csswg.org/css2/#display-prop" { - - "'display'" - } - } - - " property\n is defined in " - cite { - - "CSS" - } - - ", and the property is extended by other CSS modules.\n " - a href="#refsCSS" { - - "[CSS]" - } - - " " - a href="#refsCSSRUBY" { - - "[CSSRUBY]" - } - - " " - a href="#refsCSSTABLE" { - - "[CSSTABLE]" - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Box Model" - } - - ":\n " - a href="#refsCSSBOX" { - - "[CSSBOX]" - } - } - - "\n\n " - ul { - li { - dfn id="content-area" { - a href="https://drafts.csswg.org/css-box/#content-area" { - - "content area" - } - } - } - li { - dfn id="content-box" { - a href="https://drafts.csswg.org/css-box/#content-box" { - - "content box" - } - } - } - li { - dfn id="border-box" { - a href="https://drafts.csswg.org/css-box/#border-box" { - - "border box" - } - } - } - li { - dfn id="margin-box" { - a href="https://drafts.csswg.org/css-box/#margin-box" { - - "margin box" - } - } - } - li { - dfn id="border-edge" { - a href="https://drafts.csswg.org/css-box/#border-edge" { - - "border edge" - } - } - } - li { - dfn id="margin-edge" { - a href="https://drafts.csswg.org/css-box/#margin-edge" { - - "margin edge" - } - } - } - li { - - "The " - dfn id="'margin-top'" { - a href="https://drafts.csswg.org/css-box/#propdef-margin-top" { - - "'margin-top'" - } - } - - ",\n " - dfn id="'margin-bottom'" { - a href="https://drafts.csswg.org/css-box/#propdef-margin-bottom" { - - "'margin-bottom'" - } - } - - ",\n " - dfn id="'margin-left'" { - a href="https://drafts.csswg.org/css-box/#propdef-margin-left" { - - "'margin-left'" - } - } - - ", and\n " - dfn id="'margin-right'" { - a href="https://drafts.csswg.org/css-box/#propdef-margin-right" { - - "'margin-right'" - } - } - - " properties" - } - li { - - "The " - dfn id="'padding-top'" { - a href="https://drafts.csswg.org/css-box/#propdef-padding-top" { - - "'padding-top'" - } - } - - ",\n " - dfn id="'padding-bottom'" { - a href="https://drafts.csswg.org/css-box/#propdef-padding-bottom" { - - "'padding-bottom'" - } - } - - ",\n " - dfn id="'padding-left'" { - a href="https://drafts.csswg.org/css-box/#propdef-padding-left" { - - "'padding-left'" - } - } - - ", and\n " - dfn id="'padding-right'" { - a href="https://drafts.csswg.org/css-box/#propdef-padding-right" { - - "'padding-right'" - } - } - - " properties" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Logical Properties" - } - - ":\n " - a href="#refsCSSLOGICAL" { - - "[CSSLOGICAL]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'margin-block'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-block" { - - "'margin-block'" - } - } - - ",\n " - dfn id="'margin-block-start'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-block-start" { - - "'margin-block-start'" - } - } - - ",\n " - dfn id="'margin-block-end'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-block-end" { - - "'margin-block-end'" - } - } - - ",\n " - dfn id="'margin-inline'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-inline" { - - "'margin-inline'" - } - } - - ",\n " - dfn id="'margin-inline-start'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-inline-start" { - - "'margin-inline-start'" - } - } - - ", and\n " - dfn id="'margin-inline-end'" { - a href="https://drafts.csswg.org/css-logical/#propdef-margin-inline-end" { - - "'margin-inline-end'" - } - } - - " properties" - } - li { - - "The " - dfn id="'padding-block'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-block" { - - "'padding-block'" - } - } - - ",\n " - dfn id="'padding-block-start'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-block-start" { - - "'padding-block-start'" - } - } - - ",\n " - dfn id="'padding-block-end'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-block-end" { - - "'padding-block-end'" - } - } - - ",\n " - dfn id="'padding-inline'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-inline" { - - "'padding-inline'" - } - } - - ",\n " - dfn id="'padding-inline-start'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-inline-start" { - - "'padding-inline-start'" - } - } - - ", and\n " - dfn id="'padding-inline-end'" { - a href="https://drafts.csswg.org/css-logical/#propdef-padding-inline-end" { - - "'padding-inline-end'" - } - } - - " properties" - } - li { - - "The " - dfn id="'border-block-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-width" { - - "'border-block-width'" - } - } - - ",\n " - dfn id="'border-block-start-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-start-width" { - - "'border-block-start-width'" - } - } - - ",\n " - dfn id="'border-block-end-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-end-width" { - - "'border-block-end-width'" - } - } - - ",\n " - dfn id="'border-inline-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-width" { - - "'border-inline-width'" - } - } - - ",\n " - dfn id="'border-inline-start-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-start-width" { - - "'border-inline-start-width'" - } - } - - ",\n " - dfn id="'border-inline-end-width'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-end-width" { - - "'border-inline-end-width'" - } - } - - ",\n " - dfn id="'border-block-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-style" { - - "'border-block-style'" - } - } - - ",\n " - dfn id="'border-block-start-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-start-style" { - - "'border-block-start-style'" - } - } - - ",\n " - dfn id="'border-block-end-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-end-style" { - - "'border-block-end-style'" - } - } - - ",\n " - dfn id="'border-inline-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-style" { - - "'border-inline-style'" - } - } - - ",\n " - dfn id="'border-inline-start-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-start-style" { - - "'border-inline-start-style'" - } - } - - ",\n " - dfn id="'border-inline-end-style'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-end-style" { - - "'border-inline-end-style'" - } - } - - ",\n " - dfn id="'border-block-start-color'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-start-color" { - - "'border-block-start-color'" - } - } - - ",\n " - dfn id="'border-block-end-color'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-block-end-color" { - - "'border-block-end-color'" - } - } - - ",\n " - dfn id="'border-inline-start-color'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-start-color" { - - "'border-inline-start-color'" - } - } - - ",\n " - dfn id="'border-inline-end-color'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-inline-end-color" { - - "'border-inline-end-color'" - } - } - - ",\n " - dfn id="'border-start-start-radius'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-start-start-radius" { - - "'border-start-start-radius'" - } - } - - ",\n " - dfn id="'border-start-end-radius'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-start-end-radius" { - - "'border-start-end-radius'" - } - } - - ",\n " - dfn id="'border-end-start-radius'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-end-start-radius" { - - "'border-end-start-radius'" - } - } - - ", and\n " - dfn id="'border-end-end-radius'" { - a href="https://drafts.csswg.org/css-logical/#propdef-border-end-end-radius" { - - "'border-end-end-radius'" - } - } - - "\n properties" - } - li { - - "The " - dfn id="'block-size'" { - a href="https://drafts.csswg.org/css-logical/#propdef-block-size" { - - "'block-size'" - } - } - - " property" - } - li { - - "The " - dfn id="'inline-size'" { - a href="https://drafts.csswg.org/css-logical/#propdef-inline-size" { - - "'inline-size'" - } - } - - " property" - } - li { - - "The " - dfn id="'inset-block-start'" { - a href="https://drafts.csswg.org/css-logical/#propdef-inset-block-start" { - - "'inset-block-start'" - } - } - - " property" - } - li { - - "The " - dfn id="'inset-block-end'" { - a href="https://drafts.csswg.org/css-logical/#propdef-inset-block-end" { - - "'inset-block-end'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Color" - } - - ":\n " - a href="#refsCSSCOLOR" { - - "[CSSCOLOR]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="named-color" { - a href="https://drafts.csswg.org/css-color/#named-color" { - - "named color" - } - } - } - li { - dfn id="color" { - a href="https://drafts.csswg.org/css-color/#typedef-color" { - - "" - } - } - } - li { - - "The " - dfn id="'color'" { - a href="https://drafts.csswg.org/css-color/#the-color-property" { - - "'color'" - } - } - - " property" - } - li { - - "The " - dfn id="currentcolor" { - a href="https://drafts.csswg.org/css-color/#valdef-color-currentcolor" { - - "'currentcolor'" - } - } - - " value" - } - li { - dfn id="opaque-black" { - a href="https://drafts.csswg.org/css-color/#opaque-black" { - - "opaque black" - } - } - } - li { - dfn id="transparent-black" { - a href="https://drafts.csswg.org/css-color/#transparent-black" { - - "transparent black" - } - } - } - li { - dfn id="'srgb'" { - a href="https://drafts.csswg.org/css-color/#valdef-color-srgb" { - - "'srgb'" - } - } - - " color space" - } - li { - dfn id="'display-p3'" { - a href="https://drafts.csswg.org/css-color/#valdef-color-display-p3" { - - "'display-p3'" - } - } - - " color space" - } - li { - dfn id="'relative-colorimetric'" { - a href="https://drafts.csswg.org/css-color-5/#valdef-color-profile-rendering-intent-relative-colorimetric" { - - "'relative-colorimetric'" - } - } - - " rendering intent" - } - li { - dfn id="parsed-as-a-css-color-value" { - a href="https://drafts.csswg.org/css-color/#parse-a-css-color-value" { - - "parse a CSS value" - } - } - } - li { - dfn id="serialisation-of-a-color" { - a href="https://drafts.csswg.org/css-color/#serializing-color-values" { - - "serialize a CSS value" - } - } - - " including " - dfn id="html-compatible-serialization-is-requested" { - a href="https://drafts.csswg.org/css-color/#color-serialization-html-compatible-serialization-is-requested" { - - "HTML-compatible serialization is requested" - } - } - } - li { - dfn id="converting-colors" { - a href="https://drafts.csswg.org/css-color/#color-conversion" { - - "Converting Colors" - } - } - } - li { - dfn id="color-function" { - a href="https://drafts.csswg.org/css-color/#color-function" { - - "'color()'" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "CSS Images" - } - - ": " - a href="#refsCSSIMAGES" { - - "[CSSIMAGES]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="default-object-size" { - a href="https://drafts.csswg.org/css-images/#default-object-size" { - - "default object size" - } - } - } - li { - dfn id="concrete-object-size" { - a href="https://drafts.csswg.org/css-images/#concrete-object-size" { - - "concrete object size" - } - } - } - li { - dfn id="natural-dimensions" { - a href="https://drafts.csswg.org/css-images/#natural-dimensions" { - - "natural dimensions" - } - } - } - li { - dfn id="natural-height" { - a href="https://drafts.csswg.org/css-images/#natural-height" { - - "natural height" - } - } - } - li { - dfn id="natural-width" { - a href="https://drafts.csswg.org/css-images/#natural-width" { - - "natural width" - } - } - } - li { - - "The " - dfn id="'image-orientation'" { - a href="https://drafts.csswg.org/css-images-3/#the-image-orientation" { - - "'image-orientation'" - } - } - - " property" - } - li { - dfn id="'conic-gradient'" { - a href="https://drafts.csswg.org/css-images-4/#funcdef-conic-gradient" { - - "'conic-gradient'" - } - } - } - li { - - "The " - dfn id="'object-fit'" { - a href="https://drafts.csswg.org/css-images/#the-object-fit" { - - "'object-fit'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The term " - dfn id="paint-source" { - a href="https://drafts.csswg.org/css-images-4/#paint-source" { - - "paint\n source" - } - } - - " is used as defined in " - cite { - - "CSS Images Level 4" - } - - "\n to define the interaction of certain HTML elements with the CSS 'element()' function.\n " - a href="#refsCSSIMAGES4" { - - "[CSSIMAGES4]" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Backgrounds and Borders" - } - - ":\n " - a href="#refsCSSBG" { - - "[CSSBG]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'background-color'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-color" { - - "'background-color'" - } - } - - ",\n " - dfn id="'background-image'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-image" { - - "'background-image'" - } - } - - ",\n " - dfn id="'background-repeat'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-repeat" { - - "'background-repeat'" - } - } - - ",\n " - dfn id="'background-attachment'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-attachment" { - - "'background-attachment'" - } - } - - ",\n " - dfn id="'background-position'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-position" { - - "'background-position'" - } - } - - ",\n " - dfn id="'background-clip'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-clip" { - - "'background-clip'" - } - } - - ",\n " - dfn id="'background-origin'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-origin" { - - "'background-origin'" - } - } - - ", and\n " - dfn id="'background-size'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-background-size" { - - "'background-size'" - } - } - - "\n properties" - } - li { - - "The " - dfn id="'border-radius'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-radius" { - - "'border-radius'" - } - } - - ",\n " - dfn id="'border-top-left-radius'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-top-left-radius" { - - "'border-top-left-radius'" - } - } - - ",\n " - dfn id="'border-top-right-radius'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-top-right-radius" { - - "'border-top-right-radius'" - } - } - - ",\n " - dfn id="'border-bottom-right-radius'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-bottom-right-radius" { - - "'border-bottom-right-radius'" - } - } - - ",\n " - dfn id="'border-bottom-left-radius'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-bottom-left-radius" { - - "'border-bottom-left-radius'" - } - } - - "\n properties" - } - li { - - "The " - dfn id="'border-image-source'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-image-source" { - - "'border-image-source'" - } - } - - ",\n " - dfn id="'border-image-slice'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-image-slice" { - - "'border-image-slice'" - } - } - - ",\n " - dfn id="'border-image-width'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-image-width" { - - "'border-image-width'" - } - } - - ",\n " - dfn id="'border-image-outset'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-image-outset" { - - "'border-image-outset'" - } - } - - ", and\n " - dfn id="'border-image-repeat'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-image-repeat" { - - "'border-image-repeat'" - } - } - - "\n properties" - } - } - - "\n\n " - p { - cite { - - "CSS Backgrounds and Borders" - } - - " also defines the following border properties:\n " - a href="#refsCSSBG" { - - "[CSSBG]" - } - } - - "\n\n " - table { - caption { - - "Border properties\n " - } - tbody { - tr { - td { - - "\n " - } - th { - - "Top\n " - } - th { - - "Bottom\n " - } - th { - - "Left\n " - } - th { - - "Right\n " - } - } - tr { - th { - - "Width\n " - } - td { - dfn id="'border-top-width'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-top-width" { - - "'border-top-width'" - } - } - - "\n " - } - td { - dfn id="'border-bottom-width'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-bottom-width" { - - "'border-bottom-width'" - } - } - - "\n " - } - td { - dfn id="'border-left-width'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-left-width" { - - "'border-left-width'" - } - } - - "\n " - } - td { - dfn id="'border-right-width'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-right-width" { - - "'border-right-width'" - } - } - - "\n " - } - } - tr { - th { - - "Style\n " - } - td { - dfn id="'border-top-style'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-top-style" { - - "'border-top-style'" - } - } - - "\n " - } - td { - dfn id="'border-bottom-style'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-bottom-style" { - - "'border-bottom-style'" - } - } - - "\n " - } - td { - dfn id="'border-left-style'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-left-style" { - - "'border-left-style'" - } - } - - "\n " - } - td { - dfn id="'border-right-style'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-right-style" { - - "'border-right-style'" - } - } - - "\n " - } - } - tr { - th { - - "Color\n " - } - td { - dfn id="'border-top-color'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-top-color" { - - "'border-top-color'" - } - } - - "\n " - } - td { - dfn id="'border-bottom-color'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-bottom-color" { - - "'border-bottom-color'" - } - } - - "\n " - } - td { - dfn id="'border-left-color'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-left-color" { - - "'border-left-color'" - } - } - - "\n " - } - td { - dfn id="'border-right-color'" { - a href="https://drafts.csswg.org/css-backgrounds/#propdef-border-right-color" { - - "'border-right-color'" - } - } - - "\n " - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Box Alignment" - } - - ": " - a href="#refsCSSALIGN" { - - "[CSSALIGN]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'align-content'" { - a href="https://drafts.csswg.org/css-align/#propdef-align-content" { - - "'align-content'" - } - } - - " property" - } - li { - - "The " - dfn id="'align-items'" { - a href="https://drafts.csswg.org/css-align/#propdef-align-items" { - - "'align-items'" - } - } - - " property" - } - li { - - "The " - dfn id="'align-self'" { - a href="https://drafts.csswg.org/css-align/#propdef-align-self" { - - "'align-self'" - } - } - - " property" - } - li { - - "The " - dfn id="'justify-self'" { - a href="https://drafts.csswg.org/css-align/#propdef-justify-self" { - - "'justify-self'" - } - } - - " property" - } - li { - - "The " - dfn id="'justify-content'" { - a href="https://drafts.csswg.org/css-align/#propdef-propdef-justify-content" { - - "'justify-content'" - } - } - - " property" - } - li { - - "The " - dfn id="'justify-items'" { - a href="https://drafts.csswg.org/css-align/#propdef-propdef-justify-items" { - - "'justify-items'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Display" - } - - ":\n " - a href="#refsCSSDISPLAY" { - - "[CSSDISPLAY]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="outer-display-type" { - a href="https://drafts.csswg.org/css-display/#outer-display-type" { - - "outer display type" - } - } - } - li { - dfn id="inner-display-type" { - a href="https://drafts.csswg.org/css-display/#inner-display-type" { - - "inner display type" - } - } - } - li { - dfn id="block-level" { - a href="https://drafts.csswg.org/css-display/#block-level" { - - "block-level" - } - } - } - li { - dfn id="block-container" { - a href="https://drafts.csswg.org/css-display/#block-container" { - - "block container" - } - } - } - li { - dfn id="formatting-context" { - a href="https://drafts.csswg.org/css-display/#formatting-context" { - - "formatting context" - } - } - } - li { - dfn id="block-formatting-context" { - a href="https://drafts.csswg.org/css-display/#block-formatting-context" { - - "block formatting context" - } - } - } - li { - dfn id="inline-formatting-context" { - a href="https://drafts.csswg.org/css-display/#inline-formatting-context" { - - "inline formatting context" - } - } - } - li { - dfn id="replaced-element" { - a href="https://drafts.csswg.org/css-display/#replaced-element" { - - "replaced element" - } - } - } - li { - dfn id="css-box" { - a href="https://drafts.csswg.org/css-display/#css-box" { - - "CSS box" - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Flexible Box Layout" - } - - ":\n " - a href="#refsCSSFLEXBOX" { - - "[CSSFLEXBOX]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'flex-direction'" { - a href="https://drafts.csswg.org/css-flexbox/#propdef-flex-direction" { - - "'flex-direction'" - } - } - - " property" - } - li { - - "The " - dfn id="'flex-wrap'" { - a href="https://drafts.csswg.org/css-flexbox/#propdef-flex-wrap" { - - "'flex-wrap'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Fonts" - } - - ":\n " - a href="#refsCSSFONTS" { - - "[CSSFONTS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="first-available-font" { - a href="https://drafts.csswg.org/css-fonts/#first-available-font" { - - "first available font" - } - } - } - li { - - "The " - dfn id="'font-family'" { - a href="https://drafts.csswg.org/css-fonts/#font-family-prop" { - - "'font-family'" - } - } - - " property" - } - li { - - "The " - dfn id="'font-weight'" { - a href="https://drafts.csswg.org/css-fonts/#font-weight-prop" { - - "'font-weight'" - } - } - - " property" - } - li { - - "The " - dfn id="'font-size'" { - a href="https://drafts.csswg.org/css-fonts/#font-size-prop" { - - "'font-size'" - } - } - - " property" - } - li { - - "The " - dfn id="'font'" { - a href="https://drafts.csswg.org/css-fonts/#font-prop" { - - "'font'" - } - } - - " property" - } - li { - - "The " - dfn id="'font-kerning'" { - a href="https://drafts.csswg.org/css-fonts/#propdef-font-kerning" { - - "'font-kerning'" - } - } - - " property" - } - li { - - "The " - dfn id="'font-stretch'" { - a href="https://drafts.csswg.org/css-fonts/#propdef-font-stretch" { - - "'font-stretch'" - } - } - - " property" - } - li { - - "The " - dfn id="'font-variant-caps'" { - a href="https://drafts.csswg.org/css-fonts/#propdef-font-variant-caps" { - - "'font-variant-caps'" - } - } - - " property" - } - li { - - "The " - dfn id="'small-caps'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-small-caps" { - - "'small-caps'" - } - } - - " value" - } - li { - - "The " - dfn id="'all-small-caps'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-all-small-caps" { - - "'all-small-caps'" - } - } - - " value" - } - li { - - "The " - dfn id="'petite-caps'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-petite-caps" { - - "'petite-caps'" - } - } - - " value" - } - li { - - "The " - dfn id="'all-petite-caps'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-all-petite-caps" { - - "'all-petite-caps'" - } - } - - " value" - } - li { - - "The " - dfn id="'unicase'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-unicase" { - - "'unicase'" - } - } - - " value" - } - li { - - "The " - dfn id="'titling-caps'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-variant-caps-titling-caps" { - - "'titling-caps'" - } - } - - " value" - } - li { - - "The " - dfn id="'ultra-condensed'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-ultra-condensed" { - - "'ultra-condensed'" - } - } - - " value" - } - li { - - "The " - dfn id="'extra-condensed'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-extra-condensed" { - - "'extra-condensed'" - } - } - - " value" - } - li { - - "The " - dfn id="'condensed'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-condensed" { - - "'condensed'" - } - } - - " value" - } - li { - - "The " - dfn id="'semi-condensed'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-semi-condensed" { - - "'semi-condensed'" - } - } - - " value" - } - li { - - "The " - dfn id="'semi-expanded'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-semi-expanded" { - - "'semi-expanded'" - } - } - - " value" - } - li { - - "The " - dfn id="'expanded'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-expanded" { - - "'expanded'" - } - } - - " value" - } - li { - - "The " - dfn id="'extra-expanded'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-extra-expanded" { - - "'extra-expanded'" - } - } - - " value" - } - li { - - "The " - dfn id="'ultra-expanded'" { - a href="https://drafts.csswg.org/css-fonts/#valdef-font-stretch-ultra-expanded" { - - "'ultra-expanded'" - } - } - - " value" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Grid Layout" - } - - ": " - a href="#refsCSSGRID" { - - "[CSSGRID]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'grid-auto-columns'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-auto-columns" { - - "'grid-auto-columns'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-auto-flow'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-auto-flow" { - - "'grid-auto-flow'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-auto-rows'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-auto-rows" { - - "'grid-auto-rows'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-column-gap'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-column-gap" { - - "'grid-column-gap'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-row-gap'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-row-gap" { - - "'grid-row-gap'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-template-areas'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-template-areas" { - - "'grid-template-areas'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-template-columns'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-template-columns" { - - "'grid-template-columns'" - } - } - - " property" - } - li { - - "The " - dfn id="'grid-template-rows'" { - a href="https://drafts.csswg.org/css-grid/#propdef-grid-template-rows" { - - "'grid-template-rows'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "CSS Inline Layout" - } - - ": " - a href="#refsCSSINLINE" { - - "[CSSINLINE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="alphabetic-baseline" { - a href="https://drafts.csswg.org/css-inline/#alphabetic-baseline" { - - "alphabetic baseline" - } - } - } - li { - dfn id="ascent-metric" { - a href="https://drafts.csswg.org/css-inline/#ascent-metric" { - - "ascent metric" - } - } - } - li { - dfn id="descent-metric" { - a href="https://drafts.csswg.org/css-inline/#descent-metric" { - - "descent metric" - } - } - } - li { - dfn id="em-over-baseline" { - a href="https://drafts.csswg.org/css-inline/#em-over-baseline" { - - "em-over baseline" - } - } - } - li { - dfn id="em-under-baseline" { - a href="https://drafts.csswg.org/css-inline/#em-under-baseline" { - - "em-under baseline" - } - } - } - li { - dfn id="hanging-baseline" { - a href="https://drafts.csswg.org/css-inline/#hanging-baseline" { - - "hanging baseline" - } - } - } - li { - dfn id="ideographic-under-baseline" { - a href="https://drafts.csswg.org/css-inline/#ideographic-under-baseline" { - - "ideographic-under baseline" - } - } - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Box Sizing" - } - - ":\n " - a href="#refsCSSSIZING" { - - "[CSSSIZING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="fit-content-inline-size" { - a href="https://drafts.csswg.org/css-sizing/#fit-content-inline-size" { - - "fit-content inline size" - } - } - } - li { - dfn id="'aspect-ratio'" { - a href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio" { - - "'aspect-ratio'" - } - } - - " property" - } - li { - dfn id="intrinsic-size" { - a href="https://drafts.csswg.org/css-sizing/#intrinsic-size" { - - "intrinsic size" - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Lists and Counters" - } - - ".\n " - a href="#refsCSSLISTS" { - - "[CSSLISTS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="css-list-item" { - a href="https://drafts.csswg.org/css-lists/#list-item" { - - "list item" - } - } - } - li { - - "The " - dfn id="'counter-reset'" { - a href="https://drafts.csswg.org/css-lists/#propdef-counter-reset" { - - "'counter-reset'" - } - } - - " property" - } - li { - - "The " - dfn id="'counter-set'" { - a href="https://drafts.csswg.org/css-lists/#propdef-counter-set" { - - "'counter-set'" - } - } - - " property" - } - li { - - "The " - dfn id="'list-style-type'" { - a href="https://drafts.csswg.org/css-lists/#propdef-list-style-type" { - - "'list-style-type'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Overflow" - } - - ". " - a href="#refsCSSOVERFLOW" { - - "[CSSOVERFLOW]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'overflow'" { - a href="https://drafts.csswg.org/css-overflow/#propdef-overflow" { - - "'overflow'" - } - } - - " property and its " - dfn id="'hidden'" { - a href="https://drafts.csswg.org/css-overflow/#valdef-overflow-hidden" { - - "'hidden'" - } - } - - " value" - } - li { - - "The " - dfn id="'text-overflow'" { - a href="https://drafts.csswg.org/css-overflow/#propdef-text-overflow" { - - "'text-overflow'" - } - } - - " property" - } - li { - - "The term " - dfn id="scroll-container" { - a href="https://drafts.csswg.org/css-overflow/#scroll-container" { - - "scroll container" - } - } - - "\n " - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Positioned Layout" - } - - ":\n " - a href="#refsCSSPOSITION" { - - "[CSSPOSITION]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="absolutely-positioned" { - a href="https://drafts.csswg.org/css-position/#absolute-position" { - - "absolutely-positioned" - } - } - } - li { - - "The " - dfn id="'position'" { - a href="https://drafts.csswg.org/css-position/#position-property" { - - "'position'" - } - } - - " property and its\n " - dfn id="'static'" { - a href="https://drafts.csswg.org/css-position/#valdef-position-static" { - - "'static'" - } - } - - " value" - } - li { - - "The " - dfn id="top-layer" { - a href="https://drafts.csswg.org/css-position-4/#document-top-layer" { - - "top layer" - } - } - - "\n (an " - a href="https://infra.spec.whatwg.org/#ordered-set" id="dependencies:set" data-x-internal="set" { - - "ordered set" - } - - ")" - } - li { - dfn id="add-an-element-to-the-top-layer" { - a href="https://drafts.csswg.org/css-position-4/#add-an-element-to-the-top-layer" { - - "add an element to the top layer" - } - } - } - li { - dfn id="request-an-element-to-be-removed-from-the-top-layer" { - a href="https://drafts.csswg.org/css-position-4/#request-an-element-to-be-removed-from-the-top-layer" { - - "request an element to be removed from the top layer" - } - } - } - li { - dfn id="remove-an-element-from-the-top-layer-immediately" { - a href="https://drafts.csswg.org/css-position-4/#remove-an-element-from-the-top-layer-immediately" { - - "remove an element from the top layer immediately" - } - } - } - li { - dfn id="process-top-layer-removals" { - a href="https://drafts.csswg.org/css-position-4/#process-top-layer-removals" { - - "process top layer removals" - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Multi-column Layout" - } - - ".\n " - a href="#refsCSSMULTICOL" { - - "[CSSMULTICOL]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'column-count'" { - a href="https://drafts.csswg.org/css-multicol/#propdef-column-count" { - - "'column-count'" - } - } - - " property" - } - li { - - "The " - dfn id="'column-fill'" { - a href="https://drafts.csswg.org/css-multicol/#propdef-column-fill" { - - "'column-fill'" - } - } - - " property" - } - li { - - "The " - dfn id="'column-gap'" { - a href="https://drafts.csswg.org/css-multicol/#propdef-column-gap" { - - "'column-gap'" - } - } - - " property" - } - li { - - "The " - dfn id="'column-rule'" { - a href="https://drafts.csswg.org/css-multicol/#propdef-column-rule" { - - "'column-rule'" - } - } - - " property" - } - li { - - "The " - dfn id="'column-width'" { - a href="https://drafts.csswg.org/css-multicol/#propdef-column-width" { - - "'column-width'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The " - dfn id="'ruby-base'" { - a href="https://drafts.csswg.org/css-ruby/#valdef-display-ruby-base" { - - "'ruby-base'" - } - } - - "\n value of the " - a id="dependencies:'display'-2" href="https://drafts.csswg.org/css2/#display-prop" data-x-internal="'display'" { - - "'display'" - } - - " property is defined in " - cite { - - "CSS Ruby Layout" - } - - ".\n " - a href="#refsCSSRUBY" { - - "[CSSRUBY]" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Table" - } - - ": " - a href="#refsCSSTABLE" { - - "[CSSTABLE]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'border-spacing'" { - a href="https://drafts.csswg.org/css-tables/#propdef-border-spacing" { - - "'border-spacing'" - } - } - - " property" - } - li { - - "The " - dfn id="'border-collapse'" { - a href="https://drafts.csswg.org/css-tables/#border-collapse-property" { - - "'border-collapse'" - } - } - - " property" - } - li { - - "The " - dfn id="'table-cell'" { - a href="https://drafts.csswg.org/css-tables/#table-cell" { - - "'table-cell'" - } - } - - ",\n " - dfn id="'table-row'" { - a href="https://drafts.csswg.org/css-tables/#table-row" { - - "'table-row'" - } - } - - ",\n " - dfn id="'table-caption'" { - a href="https://drafts.csswg.org/css-tables/#table-caption" { - - "'table-caption'" - } - } - - ", and\n " - dfn id="'table'" { - a href="https://drafts.csswg.org/css-tables/#table" { - - "'table'" - } - } - - " values of the " - a id="dependencies:'display'-3" href="https://drafts.csswg.org/css2/#display-prop" data-x-internal="'display'" { - - "'display'" - } - - " property" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Text" - } - - ": " - a href="#refsCSSTEXT" { - - "[CSSTEXT]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'text-transform'" { - a href="https://drafts.csswg.org/css-text/#text-transform-property" { - - "'text-transform'" - } - } - - " property" - } - li { - - "The " - dfn id="'white-space'" { - a href="https://drafts.csswg.org/css-text/#white-space-property" { - - "'white-space'" - } - } - - " property" - } - li { - - "The " - dfn id="'text-align'" { - a href="https://drafts.csswg.org/css-text/#text-align-property" { - - "'text-align'" - } - } - - " property" - } - li { - - "The " - dfn id="'letter-spacing'" { - a href="https://drafts.csswg.org/css-text/#letter-spacing-property" { - - "'letter-spacing'" - } - } - - " property" - } - li { - - "The " - dfn id="'word-spacing'" { - a href="https://drafts.csswg.org/css-text/#propdef-word-spacing" { - - "'word-spacing'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Writing Modes" - } - - ": " - a href="#refsCSSWM" { - - "[CSSWM]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'direction'" { - a href="https://drafts.csswg.org/css-writing-modes/#direction" { - - "'direction'" - } - } - - " property" - } - li { - - "The " - dfn id="'unicode-bidi'" { - a href="https://drafts.csswg.org/css-writing-modes/#unicode-bidi" { - - "'unicode-bidi'" - } - } - - " property" - } - li { - - "The " - dfn id="'writing-mode'" { - a href="https://drafts.csswg.org/css-writing-modes/#propdef-writing-mode" { - - "'writing-mode'" - } - } - - " property" - } - li { - - "The " - dfn id="block-flow-direction" { - a href="https://drafts.csswg.org/css-writing-modes/#block-flow-direction" { - - "block flow direction" - } - } - - ",\n " - dfn id="block-axis" { - a href="https://drafts.csswg.org/css-writing-modes/#block-axis" { - - "block axis" - } - } - - ",\n " - dfn id="inline-axis" { - a href="https://drafts.csswg.org/css-writing-modes/#inline-axis" { - - "inline axis" - } - } - - ",\n " - dfn id="block-size" { - a href="https://drafts.csswg.org/css-writing-modes/#block-size" { - - "block size" - } - } - - ",\n " - dfn id="inline-size" { - a href="https://drafts.csswg.org/css-writing-modes/#inline-size" { - - "inline size" - } - } - - ",\n " - dfn id="block-start" { - a href="https://drafts.csswg.org/css-writing-modes/#block-start" { - - "block-start" - } - } - - ",\n " - dfn id="block-end" { - a href="https://drafts.csswg.org/css-writing-modes/#block-end" { - - "block-end" - } - } - - ",\n " - dfn id="inline-start" { - a href="https://drafts.csswg.org/css-writing-modes/#inline-start" { - - "inline-start" - } - } - - ",\n " - dfn id="inline-end" { - a href="https://drafts.csswg.org/css-writing-modes/#inline-end" { - - "inline-end" - } - } - - ",\n " - dfn id="line-left" { - a href="https://drafts.csswg.org/css-writing-modes/#line-left" { - - "line-left" - } - } - - ", and\n " - dfn id="line-right" { - a href="https://drafts.csswg.org/css-writing-modes/#line-right" { - - "line-right" - } - } - - " concepts" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Basic User Interface" - } - - ":\n " - a href="#refsCSSUI" { - - "[CSSUI]" - } - } - - "\n\n " - ul class="brief" { - li { - - "The " - dfn id="'outline'" { - a href="https://drafts.csswg.org/css-ui/#outline" { - - "'outline'" - } - } - - " property" - } - li { - - "The " - dfn id="'cursor'" { - a href="https://drafts.csswg.org/css-ui/#cursor" { - - "'cursor'" - } - } - - " property" - } - li { - - "The " - dfn id="'appearance'" { - a href="https://drafts.csswg.org/css-ui/#appearance-switching" { - - "'appearance'" - } - } - - " property, its\n " - dfn id="compat-auto" { - a href="https://drafts.csswg.org/css-ui/#typedef-appearance-compat-auto" { - - "" - } - } - - " non-terminal value type, its\n " - dfn id="'textfield'" { - a href="https://drafts.csswg.org/css-ui/#valdef-appearance-textfield" { - - "'textfield'" - } - } - - " value, and its\n " - dfn id="'menulist-button'" { - a href="https://drafts.csswg.org/css-ui/#valdef-appearance-menulist-button" { - - "'menulist-button'" - } - } - - " value." - } - li { - - "The " - dfn id="'field-sizing'" { - a href="https://drafts.csswg.org/css-ui/#field-sizing" { - - "'field-sizing'" - } - } - - " property, and its\n " - dfn id="field-sizing-content" { - a href="https://drafts.csswg.org/css-ui/#valdef-field-sizing-content" { - - "'content'" - } - } - - " value." - } - li { - - "The concept " - dfn id="widget" { - a href="https://drafts.csswg.org/css-ui/#widget" { - - "widget" - } - } - } - li { - - "The concept " - dfn id="native-appearance" { - a href="https://drafts.csswg.org/css-ui/#native-appearance" { - - "native appearance" - } - } - } - li { - - "The concept " - dfn id="primitive-appearance" { - a href="https://drafts.csswg.org/css-ui/#primitive-appearance" { - - "primitive appearance" - } - } - } - li { - - "The concept " - dfn id="element-with-default-preferred-size" { - a href="https://drafts.csswg.org/css-ui/#element-with-default-preferred-size" { - - "element with default preferred size" - } - } - } - li { - - "The " - dfn id="non-devolvable-widget" { - a href="https://drafts.csswg.org/css-ui/#non-devolvable" { - - "non-devolvable widget" - } - } - - " and\n " - dfn id="devolvable-widget" { - a href="https://drafts.csswg.org/css-ui/#devolvable" { - - "devolvable widget" - } - } - - " classification, and the related\n " - dfn id="devolved-widget" { - a href="https://drafts.csswg.org/css-ui/#devolved" { - - "devolved widget" - } - } - - " state." - } - li { - - "The " - dfn id="'pointer-events'" { - a href="https://drafts.csswg.org/css-ui-4/#pointer-events-control" { - - "'pointer-events'" - } - } - - " property" - } - li { - - "The " - dfn id="'user-select'" { - a href="https://drafts.csswg.org/css-ui-4/#content-selection" { - - "'user-select'" - } - } - - " property" - } - } - - "\n\n " - p { - - "The algorithm to " - dfn id="update-animations-and-send-events" { - a href="https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events" { - - "update\n animations and send events" - } - } - - " is defined in " - cite { - - "Web Animations" - } - - ".\n " - a href="#refsWEBANIMATIONS" { - - "[WEBANIMATIONS]" - } - } - - "\n\n " - p { - - "Implementations that support scripting must support the CSS Object Model. The following\n features and terms are defined in the CSSOM specifications: " - a href="#refsCSSOM" { - - "[CSSOM]" - } - - "\n " - a href="#refsCSSOMVIEW" { - - "[CSSOMVIEW]" - } - - "\n\n " - } - ul class="brief" { - li { - dfn id="screen" { - a href="https://drafts.csswg.org/cssom-view/#the-screen-interface" { - code { - - "Screen" - } - } - } - - " interface" - } - li { - dfn id="linkstyle" { - a href="https://drafts.csswg.org/cssom/#the-linkstyle-interface" { - code { - - "LinkStyle" - } - } - } - - " interface" - } - li { - dfn id="cssstyledeclaration" { - a href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface" { - code { - - "CSSStyleDeclaration" - } - } - } - - " interface" - } - li { - dfn id="dom-style" { - a href="https://drafts.csswg.org/cssom/#dom-elementcssinlinestyle-style" { - code { - - "style" - } - } - } - - " IDL attribute" - } - li { - dfn id="dom-cssstyledeclaration-csstext" { - a href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-csstext" { - code { - - "cssText" - } - } - } - - " attribute of " - code id="dependencies:cssstyledeclaration" { - a data-x-internal="cssstyledeclaration" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface" { - - "CSSStyleDeclaration" - } - } - } - li { - dfn id="stylesheet" { - a href="https://drafts.csswg.org/cssom/#the-stylesheet-interface" { - code { - - "StyleSheet" - } - } - } - - " interface" - } - li { - dfn id="cssstylesheet" { - a href="https://drafts.csswg.org/cssom/#the-cssstylesheet-interface" { - code { - - "CSSStyleSheet" - } - } - } - - " interface" - } - li { - dfn id="create-a-css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#create-a-css-style-sheet" { - - "create a CSS style sheet" - } - } - } - li { - dfn id="remove-a-css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#remove-a-css-style-sheet" { - - "remove a CSS style sheet" - } - } - } - li { - dfn id="associated-css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#associated-css-style-sheet" { - - "associated CSS style sheet" - } - } - } - li { - dfn id="create-a-constructed-cssstylesheet" { - a href="https://drafts.csswg.org/cssom/#create-a-constructed-cssstylesheet" { - - "create a constructed " - code { - - "CSSStyleSheet" - } - } - } - } - li { - dfn id="synchronously-replace-the-rules-of-a-cssstylesheet" { - a href="https://drafts.csswg.org/cssom/#synchronously-replace-the-rules-of-a-cssstylesheet" { - - "synchronously replace the rules of a " - code { - - "CSSStyleSheet" - } - } - } - } - li { - dfn id="disable-a-css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#disable-a-css-style-sheet" { - - "disable a CSS style sheet" - } - } - } - li { - - "\n " - dfn id="css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#css-style-sheet" { - - "CSS style sheets" - } - } - - " and their\n properties:\n " - ul class="brief" { - li { - dfn id="concept-css-style-sheet-type" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-type" { - - "type" - } - } - } - li { - dfn id="concept-css-style-sheet-location" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-location" { - - "location" - } - } - } - li { - dfn id="concept-css-style-sheet-parent-css-style-sheet" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-parent-css-style-sheet" { - - "parent CSS style sheet" - } - } - } - li { - dfn id="concept-css-style-sheet-owner-node" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-owner-node" { - - "owner node" - } - } - } - li { - dfn id="concept-css-style-sheet-owner-css-rule" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-owner-css-rule" { - - "owner CSS rule" - } - } - } - li { - dfn id="concept-css-style-sheet-media" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-media" { - - "media" - } - } - } - li { - dfn id="concept-css-style-sheet-title" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-title" { - - "title" - } - } - } - li { - dfn id="concept-css-style-sheet-alternate-flag" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-alternate-flag" { - - "alternate flag" - } - } - } - li { - dfn id="concept-css-style-sheet-disabled-flag" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-disabled-flag" { - - "disabled flag" - } - } - } - li { - dfn id="concept-css-style-sheet-css-rules" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-css-rules" { - - "CSS rules" - } - } - } - li { - dfn id="concept-css-style-sheet-origin-clean-flag" { - a href="https://drafts.csswg.org/cssom/#concept-css-style-sheet-origin-clean-flag" { - - "origin-clean flag" - } - } - } - } - - "\n " - } - li { - dfn id="css-style-sheet-set" { - a href="https://drafts.csswg.org/cssom/#css-style-sheet-set" { - - "CSS style sheet set" - } - } - } - li { - dfn id="css-style-sheet-set-name" { - a href="https://drafts.csswg.org/cssom/#css-style-sheet-set-name" { - - "CSS style sheet set name" - } - } - } - li { - dfn id="preferred-css-style-sheet-set-name" { - a href="https://drafts.csswg.org/cssom/#preferred-css-style-sheet-set-name" { - - "preferred CSS style sheet set name" - } - } - } - li { - dfn id="change-the-preferred-css-style-sheet-set-name" { - a href="https://drafts.csswg.org/cssom/#change-the-preferred-css-style-sheet-set-name" { - - "change the preferred CSS style sheet set name" - } - } - } - li { - dfn id="serializing-a-css-value" { - a href="https://drafts.csswg.org/cssom/#serialize-a-css-value" { - - "Serializing a CSS value" - } - } - } - li { - dfn id="run-the-resize-steps" { - a href="https://drafts.csswg.org/cssom-view/#document-run-the-resize-steps" { - - "run the resize steps" - } - } - } - li { - dfn id="run-the-scroll-steps" { - a href="https://drafts.csswg.org/cssom-view/#document-run-the-scroll-steps" { - - "run the scroll steps" - } - } - } - li { - dfn id="evaluate-media-queries-and-report-changes" { - a href="https://drafts.csswg.org/cssom-view/#evaluate-media-queries-and-report-changes" { - - "evaluate media queries and report changes" - } - } - } - li { - dfn id="scroll-a-target-into-view" { - a href="https://drafts.csswg.org/cssom-view/#scroll-a-target-into-view" { - - "Scroll a target into view" - } - } - } - li { - dfn id="scroll-to-the-beginning-of-the-document" { - a href="https://drafts.csswg.org/cssom-view/#scroll-to-the-beginning-of-the-document" { - - "Scroll to the beginning of the document" - } - } - } - li { - - "The " - dfn id="event-resize" { - a href="https://drafts.csswg.org/cssom-view/#eventdef-window-resize" { - code { - - "resize" - } - } - } - - " event" - } - li { - - "The " - dfn id="event-scroll" { - a href="https://drafts.csswg.org/cssom-view/#eventdef-document-scroll" { - code { - - "scroll" - } - } - } - - " event" - } - li { - - "The " - dfn id="event-scrollend" { - a href="https://drafts.csswg.org/cssom-view/#eventdef-document-scrollend" { - code { - - "scrollend" - } - } - } - - " event" - } - li { - dfn id="set-up-browsing-context-features" { - a href="https://drafts.csswg.org/cssom-view/#set-up-browsing-context-features" { - - "set up browsing context features" - } - } - } - li { - - "The " - dfn id="mouseevent-clientx" { - a href="https://drafts.csswg.org/cssom-view/#dom-mouseevent-clientx" { - - "clientX" - } - } - - " and " - dfn id="mouseevent-clienty" { - a href="https://drafts.csswg.org/cssom-view/#dom-mouseevent-clienty" { - - "clientY" - } - } - - " extension attributes of the " - a id="dependencies:mouseevent-2" href="https://w3c.github.io/uievents/#mouseevent" data-x-internal="mouseevent" { - - "MouseEvent" - } - - " interface" - } - } - - "\n\n " - p { - - "The following features and terms are defined in " - cite { - - "CSS Syntax" - } - - ":\n " - a href="#refsCSSSYNTAX" { - - "[CSSSYNTAX]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="conformant-style-sheet" { - a href="https://drafts.csswg.org/css-syntax/#conform-classes" { - - "conformant style sheet" - } - } - } - li { - dfn id="parse-a-list-of-component-values" { - a href="https://drafts.csswg.org/css-syntax/#parse-a-list-of-component-values" { - - "parse a list of component values" - } - } - } - li { - dfn id="parse-a-comma-separated-list-of-component-values" { - a href="https://drafts.csswg.org/css-syntax/#parse-a-comma-separated-list-of-component-values" { - - "parse a comma-separated list of component values" - } - } - } - li { - dfn id="component-value" { - a href="https://drafts.csswg.org/css-syntax/#component-value" { - - "component value" - } - } - } - li { - dfn id="environment-encoding" { - a href="https://drafts.csswg.org/css-syntax/#environment-encoding" { - - "environment encoding" - } - } - } - li { - dfn id="whitespace-token" { - a href="https://drafts.csswg.org/css-syntax/#typedef-whitespace-token" { - - "" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "Selectors" - } - - ": " - a href="#refsSELECTORS" { - - "[SELECTORS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="type-selector" { - a href="https://drafts.csswg.org/selectors/#type-selector" { - - "type selector" - } - } - } - li { - dfn id="attribute-selector" { - a href="https://drafts.csswg.org/selectors/#attribute-selector" { - - "attribute selector" - } - } - } - li { - dfn id="pseudo-class" { - a href="https://drafts.csswg.org/selectors/#pseudo-class" { - - "pseudo-class" - } - } - } - li { - dfn id=":focus-visible" { - a href="https://drafts.csswg.org/selectors/#the-focus-visible-pseudo" { - code { - - ":focus-visible" - } - } - } - - "\n pseudo-class" - } - li { - dfn id="indicate-focus" { - a href="https://drafts.csswg.org/selectors/#indicate-focus" { - - "indicate focus" - } - } - } - li { - dfn id="pseudo-element" { - a href="https://drafts.csswg.org/selectors/#pseudo-element" { - - "pseudo-element" - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS Values and Units" - } - - ":\n " - a href="#refsCSSVALUES" { - - "[CSSVALUES]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="length-2" { - a href="https://drafts.csswg.org/css-values/#lengths" { - - "" - } - } - } - li { - - "The " - dfn id="'em'" { - a href="https://drafts.csswg.org/css-values/#em" { - - "'em'" - } - } - - " unit" - } - li { - - "The " - dfn id="'ex'" { - a href="https://drafts.csswg.org/css-values/#ex" { - - "'ex'" - } - } - - " unit" - } - li { - - "The " - dfn id="'vw'" { - a href="https://drafts.csswg.org/css-values/#vw" { - - "'vw'" - } - } - - " unit" - } - li { - - "The " - dfn id="'in'" { - a href="https://drafts.csswg.org/css-values/#in" { - - "'in'" - } - } - - " unit" - } - li { - - "The " - dfn id="'px'" { - a href="https://drafts.csswg.org/css-values/#px" { - - "'px'" - } - } - - " unit" - } - li { - - "The " - dfn id="'pt'" { - a href="https://drafts.csswg.org/css-values/#pt" { - - "'pt'" - } - } - - " unit" - } - li { - - "The " - dfn id="'attr()'" { - a href="https://drafts.csswg.org/css-values/#funcdef-attr" { - - "'attr()'" - } - } - - " function" - } - li { - - "The " - dfn id="math-functions" { - a href="https://drafts.csswg.org/css-values/#math-function" { - - "math functions" - } - } - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "CSS View Transitions" - } - - ":\n " - a href="#refsCSSVIEWTRANSITIONS" { - - "[CSSVIEWTRANSITIONS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="perform-pending-transition-operations" { - a href="https://drafts.csswg.org/css-view-transitions/#perform-pending-transition-operations" { - - "perform pending transition operations" - } - } - } - li { - dfn id="rendering-suppression-for-view-transitions" { - a href="https://drafts.csswg.org/css-view-transitions/#document-rendering-suppression-for-view-transitions" { - - "rendering suppression for view transitions" - } - } - } - li { - dfn id="activate-view-transition" { - a href="https://drafts.csswg.org/css-view-transitions/#activate-view-transition" { - - "activate view transition" - } - } - } - li { - dfn id="viewtransition" { - a href="https://drafts.csswg.org/css-view-transitions/#viewtransition" { - code { - - "ViewTransition" - } - } - } - } - li { - dfn id="view-transition-page-visibility-change-steps" { - a href="https://drafts.csswg.org/css-view-transitions/#view-transition-page-visibility-change-steps" { - - "view transition page visibility change steps" - } - } - } - li { - dfn id="resolving-inbound-cross-document-view-transition" { - a href="https://drafts.csswg.org/css-view-transitions-2/#resolve-inbound-cross-document-view-transition" { - - "resolving inbound cross-document view-transition" - } - } - } - li { - dfn id="setting-up-a-cross-document-view-transition" { - a href="https://drafts.csswg.org/css-view-transitions-2/#setup-cross-document-view-transition" { - - "setting up a cross-document view-transition" - } - } - } - li { - dfn id="can-navigation-trigger-a-cross-document-view-transition" { - a href="https://drafts.csswg.org/css-view-transitions-2/#can-navigation-trigger-a-cross-document-view-transition" { - - "can navigation trigger a cross-document view-transition?" - } - } - - "\n " - } - } - - "\n\n " - p { - - "The term " - dfn id="css-styling-attribute" { - a href="https://drafts.csswg.org/css-style-attr/#style-attribute" { - - "style attribute" - } - } - - " is\n defined in " - cite { - - "CSS Style Attributes" - } - - ". " - a href="#refsCSSATTR" { - - "[CSSATTR]" - } - } - - "\n\n " - p { - - "The following terms are defined in the " - cite { - - "CSS Cascading and Inheritance" - } - - ":\n " - a href="#refsCSSCASCADE" { - - "[CSSCASCADE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="cascaded-value" { - a href="https://drafts.csswg.org/css-cascade/#cascaded-value" { - - "cascaded value" - } - } - } - li { - dfn id="specified-value" { - a href="https://drafts.csswg.org/css-cascade/#specified-value" { - - "specified value" - } - } - } - li { - dfn id="computed-value" { - a href="https://drafts.csswg.org/css-cascade/#computed-value" { - - "computed value" - } - } - } - li { - dfn id="used-value" { - a href="https://drafts.csswg.org/css-cascade/#used-value" { - - "used value" - } - } - } - li { - dfn id="cascade-origin" { - a href="https://drafts.csswg.org/css-cascade/#origin" { - - "cascade origin" - } - } - } - li { - dfn id="author-origin" { - a href="https://drafts.csswg.org/css-cascade/#cascade-origin-author" { - - "Author Origin" - } - } - } - li { - dfn id="user-origin" { - a href="https://drafts.csswg.org/css-cascade/#cascade-origin-user" { - - "User Origin" - } - } - } - li { - dfn id="user-agent-origin" { - a href="https://drafts.csswg.org/css-cascade/#cascade-origin-ua" { - - "User Agent Origin" - } - } - } - li { - dfn id="animation-origin" { - a href="https://drafts.csswg.org/css-cascade/#cascade-origin-animation" { - - "Animation Origin" - } - } - } - li { - dfn id="transition-origin" { - a href="https://drafts.csswg.org/css-cascade/#cascade-origin-transition" { - - "Transition Origin" - } - } - } - li { - dfn id="initial-value" { - a href="https://drafts.csswg.org/css-cascade/#initial-value" { - - "initial value" - } - } - } - } - - "\n\n " - p { - - "The " - code id="dependencies:canvasrenderingcontext2d" { - a href="#canvasrenderingcontext2d" { - - "CanvasRenderingContext2D" - } - } - - " object's use of fonts depends on the features\n described in the CSS " - cite { - - "Fonts" - } - - " and " - cite { - - "Font Loading" - } - - " specifications, including\n in particular " - dfn id="fontface" { - code { - - "FontFace" - } - } - - " objects and the " - dfn id="font-source" { - a href="https://drafts.csswg.org/css-font-loading/#font-source" { - - "font source" - } - } - - " concept.\n " - a href="#refsCSSFONTS" { - - "[CSSFONTS]" - } - - " " - a href="#refsCSSFONTLOAD" { - - "[CSSFONTLOAD]" - } - } - - "\n\n " - p { - - "The following interfaces and terms are defined in " - cite { - - "Geometry Interfaces" - } - - ":\n " - a href="#refsGEOMETRY" { - - "[GEOMETRY]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="dommatrix" { - a href="https://drafts.fxtf.org/geometry/#dommatrix" { - code { - - "DOMMatrix" - } - } - } - - " interface, and associated\n " - dfn id="m11-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m11-element" { - - "m11 element" - } - } - - ",\n " - dfn id="m12-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m12-element" { - - "m12 element" - } - } - - ",\n " - dfn id="m21-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m21-element" { - - "m21 element" - } - } - - ",\n " - dfn id="m22-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m22-element" { - - "m22 element" - } - } - - ",\n " - dfn id="m41-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m41-element" { - - "m41 element" - } - } - - ", and\n " - dfn id="m42-element" { - a href="https://drafts.fxtf.org/geometry/#matrix-m42-element" { - - "m42 element" - } - } - } - li { - dfn id="dommatrix2dinit" { - a href="https://drafts.fxtf.org/geometry/#dictdef-dommatrix2dinit" { - code { - - "DOMMatrix2DInit" - } - } - } - - " and\n " - dfn id="dommatrixinit" { - a href="https://drafts.fxtf.org/geometry/#dictdef-dommatrixinit" { - code { - - "DOMMatrixInit" - } - } - } - - " dictionaries" - } - li { - - "The " - dfn id="create-a-dommatrix-from-a-dictionary" { - a href="https://drafts.fxtf.org/geometry/#create-a-dommatrix-from-the-dictionary" { - - "create a " - code { - - "DOMMatrix" - } - - " from a dictionary" - } - } - - "\n and " - dfn id="create-a-dommatrix-from-a-2d-dictionary" { - a href="https://drafts.fxtf.org/geometry/#create-a-dommatrix-from-the-2d-dictionary" { - - "create a " - code { - - "DOMMatrix" - } - - " from a 2D dictionary" - } - } - - "\n algorithms for " - code id="dependencies:dommatrix2dinit" { - a data-x-internal="dommatrix2dinit" href="https://drafts.fxtf.org/geometry/#dictdef-dommatrix2dinit" { - - "DOMMatrix2DInit" - } - } - - " or " - code id="dependencies:dommatrixinit" { - a data-x-internal="dommatrixinit" href="https://drafts.fxtf.org/geometry/#dictdef-dommatrixinit" { - - "DOMMatrixInit" - } - } - } - li { - - "The " - dfn id="dompointinit" { - a href="https://drafts.fxtf.org/geometry/#dictdef-dompointinit" { - code { - - "DOMPointInit" - } - } - } - - " dictionary, and associated\n " - dfn data-xref="https://drafts.fxtf.org/geometry/#dom-dompointinit-x" id="dompointinit-x" { - - "x" - } - - " and\n " - dfn data-xref="https://drafts.fxtf.org/geometry/#dom-dompointinit-y" id="dompointinit-y" { - - "y" - } - - " members" - } - li { - dfn id="matrix-multiplication" { - a href="https://drafts.fxtf.org/geometry/#matrix-multiply" { - - "Matrix multiplication" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in the " - cite { - - "CSS Scoping" - } - - ": " - a href="#refsCSSSCOPING" { - - "[CSSSCOPING]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="flat-tree" { - a href="https://drafts.csswg.org/css-scoping/#flat-tree" { - - "flat tree" - } - } - } - } - - "\n\n " - p { - - "The following terms and features are defined in " - cite { - - "CSS Color Adjustment" - } - - ":\n " - a href="#refsCSSCOLORADJUST" { - - "[CSSCOLORADJUST]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="'color-scheme'" { - a href="https://drafts.csswg.org/css-color-adjust/#color-scheme-prop" { - - "'color-scheme'" - } - } - } - li { - dfn id="page's-supported-color-schemes" { - a href="https://drafts.csswg.org/css-color-adjust/#pages-supported-color-schemes" { - - "page's supported color-schemes" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "CSS Pseudo-Elements" - } - - ": " - a href="#refsCSSPSEUDO" { - - "[CSSPSEUDO]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="'::details-content'" { - a href="https://drafts.csswg.org/css-pseudo/#details-content-pseudo" { - - "'::details-content'" - } - } - } - li { - dfn id="'::file-selector-button'" { - a href="https://drafts.csswg.org/css-pseudo/#file-selector-button-pseudo" { - - "'::file-selector-button'" - } - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "CSS Containment" - } - - ": " - a href="#refsCSSCONTAIN" { - - "[CSSCONTAIN]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="skips-its-contents" { - a href="https://drafts.csswg.org/css-contain/#skips-its-contents" { - - "skips its contents" - } - } - } - li { - dfn id="relevant-to-the-user" { - a href="https://drafts.csswg.org/css-contain/#relevant-to-the-user" { - - "relevant to the user" - } - } - } - li { - dfn id="proximity-to-the-viewport" { - a href="https://drafts.csswg.org/css-contain/#proximity-to-the-viewport" { - - "proximity to the viewport" - } - } - } - li { - dfn id="layout-containment" { - a href="https://drafts.csswg.org/css-contain/#containment-layout" { - - "layout containment" - } - } - } - li { - dfn id="'content-visibility'" { - a href="https://drafts.csswg.org/css-contain/#content-visibility" { - - "'content-visibility'" - } - } - - " property" - } - li { - dfn id="content-visibility-auto" { - a href="https://drafts.csswg.org/css-contain/#propdef-content-visibility" { - - "'auto'" - } - } - - " value for " - a id="dependencies:'content-visibility'" href="https://drafts.csswg.org/css-contain/#content-visibility" data-x-internal="'content-visibility'" { - - "'content-visibility'" - } - } - } - - "\n\n " - p { - - "The following terms are defined in " - cite { - - "CSS Anchor Positioning" - } - - ": " - a href="#refsCSSANCHOR" { - - "[CSSANCHOR]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="implicit-anchor-element" { - a href="https://drafts.csswg.org/css-anchor-position/#implicit-anchor-element" { - - "implicit anchor element" - } - } - } - } - - "\n " - } - dt { - - "Intersection Observer" - } - dd { - - "\n " - p { - - "The following term is defined in " - cite { - - "Intersection Observer" - } - - ":\n " - a href="#refsINTERSECTIONOBSERVER" { - - "[INTERSECTIONOBSERVER]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="run-the-update-intersection-observations-steps" { - a href="https://w3c.github.io/IntersectionObserver/#run-the-update-intersection-observations-steps" { - - "run the update intersection observations steps" - } - } - } - li { - dfn id="intersectionobserver" { - a href="https://w3c.github.io/IntersectionObserver/#intersectionobserver" { - code { - - "IntersectionObserver" - } - } - } - } - li { - dfn id="intersectionobserverinit" { - a href="https://w3c.github.io/IntersectionObserver/#dictdef-intersectionobserverinit" { - code { - - "IntersectionObserverInit" - } - } - } - } - li { - dfn id="dom-intersectionobserver-observe" { - a href="https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-observe" { - code { - - "observe" - } - } - } - } - li { - dfn id="dom-intersectionobserver-unobserve" { - a href="https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-unobserve" { - code { - - "unobserve" - } - } - } - } - li { - dfn id="dom-intersectionobserverentry-isintersecting" { - a href="https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentry-isintersecting" { - code { - - "isIntersecting" - } - } - } - } - li { - dfn id="dom-intersectionobserverentry-target" { - a href="https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentry-target" { - code { - - "target" - } - } - } - } - } - - "\n " - } - dt { - - "Resize Observer" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Resize Observer" - } - - ":\n " - a href="#refsRESIZEOBSERVER" { - - "[RESIZEOBSERVER]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="gather-active-resize-observations-at-depth" { - a href="https://w3c.github.io/csswg-drafts/resize-observer-1/#gather-active-observations-h" { - - "gather active resize observations at depth" - } - } - } - li { - dfn id="has-active-resize-observations" { - a href="https://w3c.github.io/csswg-drafts/resize-observer-1/#has-active-observations-h" { - - "has active resize observations" - } - } - } - li { - dfn id="has-skipped-resize-observations" { - a href="https://w3c.github.io/csswg-drafts/resize-observer-1/#has-skipped-observations-h" { - - "has skipped resize observations" - } - } - } - li { - dfn id="broadcast-active-resize-observations" { - a href="https://w3c.github.io/csswg-drafts/resize-observer-1/#broadcast-resize-notifications-h" { - - "broadcast active resize observations" - } - } - } - li { - dfn id="deliver-resize-loop-error" { - a href="https://w3c.github.io/csswg-drafts/resize-observer-1/#deliver-resize-error" { - - "deliver resize loop error" - } - } - } - } - - "\n " - } - dt { - - "WebGL" - } - dd { - - "\n " - p { - - "The following interfaces are defined in the WebGL specifications: " - a href="#refsWEBGL" { - - "[WEBGL]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="webglrenderingcontext" { - a href="https://www.khronos.org/registry/webgl/specs/latest/1.0/#WebGLRenderingContext" { - code { - - "WebGLRenderingContext" - } - } - } - - " interface" - } - li { - dfn id="webgl2renderingcontext" { - a href="https://www.khronos.org/registry/webgl/specs/latest/2.0/#WebGL2RenderingContext" { - code { - - "WebGL2RenderingContext" - } - } - } - - " interface" - } - li { - dfn id="webglcontextattributes" { - a href="https://www.khronos.org/registry/webgl/specs/latest/1.0/#WebGLContextAttributes" { - code { - - "WebGLContextAttributes" - } - } - } - - " dictionary" - } - } - - "\n " - } - dt { - - "WebGPU" - } - dd { - - "\n " - p { - - "The following interfaces are defined in " - cite { - - "WebGPU" - } - - ": " - a href="#refsWEBGPU" { - - "[WEBGPU]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="gpucanvascontext" { - a href="https://gpuweb.github.io/gpuweb/#canvas-context" { - code { - - "GPUCanvasContext" - } - } - } - - " interface" - } - } - - "\n " - } - dt { - - "WebVTT" - } - dd { - - "\n " - p { - - "Implementations may support WebVTT as a text track format for subtitles, captions, metadata,\n etc., for media resources. " - a href="#refsWEBVTT" { - - "[WEBVTT]" - } - } - - "\n\n " - p { - - "The following terms, used in this specification, are defined in " - cite { - - "WebVTT" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="webvtt-file" { - a href="https://w3c.github.io/webvtt/#webvtt-file" { - - "WebVTT file" - } - } - } - li { - dfn id="webvtt-file-using-cue-text" { - a href="https://w3c.github.io/webvtt/#webvtt-file-using-cue-text" { - - "WebVTT file using cue text" - } - } - } - li { - dfn id="webvtt-file-using-only-nested-cues" { - a href="https://w3c.github.io/webvtt/#webvtt-file-using-only-nested-cues" { - - "WebVTT file using only nested cues" - } - } - } - li { - dfn id="webvtt-parser" { - a href="https://w3c.github.io/webvtt/#webvtt-parser" { - - "WebVTT parser" - } - } - } - li { - - "The " - dfn id="rules-for-updating-the-display-of-webvtt-text-tracks" { - a href="https://w3c.github.io/webvtt/#rules-for-updating-the-display-of-webvtt-text-tracks" { - - "rules for updating the display of WebVTT text tracks" - } - } - } - li { - - "The WebVTT " - dfn id="text-track-cue-writing-direction" { - a href="https://w3c.github.io/webvtt/#webvtt-cue-writing-direction" { - - "text track cue writing direction" - } - } - } - li { - dfn id="vttcue" { - a href="https://w3c.github.io/webvtt/#vttcue" { - code { - - "VTTCue" - } - } - } - - " interface" - } - } - - "\n " - } - dt { - - "ARIA" - } - dd { - - "\n " - p { - - "The " - dfn id="attr-aria-role" data-dfn-type="element-attr" { - code { - - "role" - } - } - - " attribute is defined in\n " - cite { - - "Accessible Rich Internet Applications" - } - - " (" - cite { - - "ARIA" - } - - "), as are the following\n roles: " - a href="#refsARIA" { - - "[ARIA]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="attr-aria-role-button" { - a href="https://w3c.github.io/aria/#button" { - code { - - "button" - } - } - } - } - li { - dfn id="attr-aria-role-presentation" { - a href="https://w3c.github.io/aria/#presentation" { - code { - - "presentation" - } - } - } - } - } - - "\n\n " - p { - - "In addition, the following " - dfn id="attr-aria-*" { - code { - - "aria-*" - } - } - - " content\n attributes are defined in " - cite { - - "ARIA" - } - - ": " - a href="#refsARIA" { - - "[ARIA]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="attr-aria-checked" { - a href="https://w3c.github.io/aria/#aria-checked" { - code { - - "aria-checked" - } - } - } - } - li { - dfn id="attr-aria-describedby" { - a href="https://w3c.github.io/aria/#aria-describedby" { - code { - - "aria-describedby" - } - } - } - } - li { - dfn id="attr-aria-disabled" { - a href="https://w3c.github.io/aria/#aria-disabled" { - code { - - "aria-disabled" - } - } - } - } - li { - dfn id="attr-aria-label" { - a href="https://w3c.github.io/aria/#aria-label" { - code { - - "aria-label" - } - } - } - } - } - - "\n\n " - p { - - "Finally, the following terms are defined " - cite { - - "ARIA" - } - - ": " - a href="#refsARIA" { - - "[ARIA]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="role" { - a href="https://w3c.github.io/aria/#dfn-role" { - - "role" - } - } - } - li { - dfn id="concept-accessible-name" { - a href="https://w3c.github.io/aria/#dfn-accessible-name" { - - "accessible name" - } - } - } - li { - - "The " - dfn id="ariamixin" { - a href="https://w3c.github.io/aria/#ARIAMixin" { - code { - - "ARIAMixin" - } - } - } - - " interface, with its associated\n " - dfn id="ariamixin-getter-steps" { - a href="https://w3c.github.io/aria/#dfn-ariamixin-getter-steps" { - code { - - "ARIAMixin" - } - - " getter steps" - } - } - - " and\n " - dfn id="ariamixin-setter-steps" { - a href="https://w3c.github.io/aria/#dfn-ariamixin-setter-steps" { - code { - - "ARIAMixin" - } - - " setter steps" - } - } - - " hooks" - } - } - - "\n " - } - dt { - - "Content Security Policy" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Content Security Policy" - } - - ": " - a href="#refsCSP" { - - "[CSP]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#content-security-policy-object" { - - "Content Security Policy" - } - } - } - li { - dfn id="csp-disposition" { - a href="https://w3c.github.io/webappsec-csp/#policy-disposition" { - - "disposition" - } - } - } - li { - dfn id="csp-directive-set" { - a href="https://w3c.github.io/webappsec-csp/#policy-directive-set" { - - "directive set" - } - } - } - li { - dfn id="content-security-policy-directive" { - a href="https://w3c.github.io/webappsec-csp/#directives" { - - "Content Security Policy directive" - } - } - } - li { - dfn id="concept-csp-list" { - a href="https://w3c.github.io/webappsec-csp/#csp-list" { - - "CSP list" - } - } - } - li { - - "The " - dfn id="content-security-policy-syntax" { - a href="https://w3c.github.io/webappsec-csp/#grammardef-serialized-policy" { - - "Content Security Policy syntax" - } - } - } - li { - dfn id="enforce-the-policy" { - a href="https://w3c.github.io/webappsec-csp/#enforced" { - - "enforce the policy" - } - } - } - li { - - "The " - dfn id="parse-a-serialized-content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#parse-serialized-policy" { - - "parse a serialized Content Security Policy" - } - } - - " algorithm" - } - li { - - "The " - dfn id="run-csp-initialization-for-a-document" { - a href="https://w3c.github.io/webappsec-csp/#run-document-csp-initialization" { - - "Run CSP initialization for a Document" - } - } - - " algorithm" - } - li { - - "The " - dfn id="run-csp-initialization-for-a-global-object" { - a href="https://w3c.github.io/webappsec-csp/#run-global-object-csp-initialization" { - - "Run CSP initialization for a global object" - } - } - - " algorithm" - } - li { - - "The " - dfn id="should-element's-inline-behavior-be-blocked-by-content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#should-block-inline" { - - "Should element's inline behavior be blocked by Content Security Policy?" - } - } - - " algorithm" - } - li { - - "The " - dfn id="should-navigation-request-of-type-be-blocked-by-content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#should-block-navigation-request" { - - "Should navigation request of type be blocked by Content Security Policy?" - } - } - - " algorithm" - } - li { - - "The " - dfn id="should-navigation-response-to-navigation-request-of-type-in-target-be-blocked-by-content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#should-block-navigation-response" { - - "Should navigation response to navigation request of type in target be blocked by Content Security Policy?" - } - } - - " algorithm" - } - li { - - "The " - dfn id="report-uri-directive" { - a href="https://w3c.github.io/webappsec-csp/#report-uri" { - code { - - "report-uri" - } - - " directive" - } - } - } - li { - - "The " - dfn id="csp-ensurecspdoesnotblockstringcompilation" { - a href="https://w3c.github.io/webappsec-csp/#can-compile-strings" { - - "EnsureCSPDoesNotBlockStringCompilation" - } - } - - " abstract operation" - } - li { - - "The " - dfn id="is-base-allowed-for-document" { - a href="https://w3c.github.io/webappsec-csp/#allow-base-for-document" { - - "Is base allowed for Document?" - } - } - - " algorithm" - } - li { - - "The " - dfn id="frame-ancestors-directive" { - a href="https://w3c.github.io/webappsec-csp/#frame-ancestors" { - code { - - "frame-ancestors" - } - - " directive" - } - } - } - li { - - "The " - dfn id="sandbox-directive" { - a href="https://w3c.github.io/webappsec-csp/#sandbox" { - code { - - "sandbox" - } - - " directive" - } - } - } - li { - - "The " - dfn id="contains-a-header-delivered-content-security-policy" { - a href="https://w3c.github.io/webappsec-csp/#contains-a-header-delivered-content-security-policy" { - - "contains a header-delivered Content Security Policy" - } - } - - " property." - } - li { - - "The " - dfn id="parse-response-csp" { - a href="https://w3c.github.io/webappsec-csp/#parse-response-csp" { - - "Parse a response's Content Security Policies" - } - } - - " algorithm." - } - li { - dfn id="securitypolicyviolationevent" { - a href="https://w3c.github.io/webappsec-csp/#securitypolicyviolationevent" { - code { - - "SecurityPolicyViolationEvent" - } - } - } - - " interface" - } - li { - - "The " - dfn id="event-securitypolicyviolation" { - a href="https://w3c.github.io/webappsec-csp/#eventdef-globaleventhandlers-securitypolicyviolation" { - code { - - "securitypolicyviolation" - } - } - } - - " event" - } - } - - "\n " - } - dt { - - "Service Workers" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Service Workers" - } - - ": " - a href="#refsSW" { - - "[SW]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="dfn-active-worker" { - a href="https://w3c.github.io/ServiceWorker/#dfn-active-worker" { - - "active worker" - } - } - } - li { - dfn id="dfn-client-message-queue" { - a href="https://w3c.github.io/ServiceWorker/#dfn-client-message-queue" { - - "client message queue" - } - } - } - li { - dfn id="dfn-control" { - a href="https://w3c.github.io/ServiceWorker/#dfn-control" { - - "control" - } - } - } - li { - dfn id="on-fetch-request-algorithm" { - a href="https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm" { - - "handle fetch" - } - } - } - li { - dfn id="scope-match-algorithm" { - a href="https://w3c.github.io/ServiceWorker/#scope-match-algorithm" { - - "match service worker registration" - } - } - } - li { - dfn id="dfn-service-worker" { - a href="https://w3c.github.io/ServiceWorker/#dfn-service-worker" { - - "service worker" - } - } - } - li { - dfn id="serviceworkercontainer-service-worker-client" { - a href="https://w3c.github.io/ServiceWorker/#serviceworkercontainer-service-worker-client" { - - "service worker client" - } - } - } - li { - dfn id="service-worker-registration" { - a href="https://w3c.github.io/service-workers/#dfn-service-worker-registration" { - - "service worker registration" - } - } - } - li { - dfn id="serviceworker" { - a href="https://w3c.github.io/ServiceWorker/#serviceworker" { - code { - - "ServiceWorker" - } - } - } - - " interface" - } - li { - dfn id="serviceworkercontainer" { - a href="https://w3c.github.io/ServiceWorker/#serviceworkercontainer" { - code { - - "ServiceWorkerContainer" - } - } - } - - " interface" - } - li { - dfn id="serviceworkerglobalscope" { - a href="https://w3c.github.io/ServiceWorker/#serviceworkerglobalscope" { - code { - - "ServiceWorkerGlobalScope" - } - } - } - - " interface" - } - li { - dfn id="service-worker-unregister" { - a href="https://w3c.github.io/service-workers/#navigator-service-worker-unregister" { - code { - - "unregister" - } - } - } - } - } - - "\n " - } - dt { - - "Secure Contexts" - } - dd { - - "\n " - p { - - "The following algorithms are defined in " - cite { - - "Secure Contexts" - } - - ":\n " - a href="#refsSECURE-CONTEXTS" { - - "[SECURE-CONTEXTS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="is-url-potentially-trustworthy" { - a href="https://w3c.github.io/webappsec-secure-contexts/#potentially-trustworthy-url" { - - "Is url potentially trustworthy?" - } - } - } - } - - "\n " - } - dt { - - "Permissions Policy" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Permissions Policy" - } - - ":\n " - a href="#refsPERMISSIONSPOLICY" { - - "[PERMISSIONSPOLICY]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="concept-permissions-policy" { - a href="https://w3c.github.io/webappsec-feature-policy/#permissions-policy" { - - "permissions policy" - } - } - } - li { - dfn id="concept-policy-controlled-feature" { - a href="https://w3c.github.io/webappsec-feature-policy/#policy-controlled-feature" { - - "policy-controlled feature" - } - } - } - li { - dfn id="concept-container-policy" { - a href="https://w3c.github.io/webappsec-feature-policy/#container-policy" { - - "container policy" - } - } - } - li { - dfn id="concept-serialized-permissions-policy" { - a href="https://w3c.github.io/webappsec-feature-policy/#serialized-permissions-policy" { - - "serialized permissions policy" - } - } - } - li { - dfn id="concept-default-allowlist" { - a href="https://w3c.github.io/webappsec-feature-policy/#default-allowlist" { - - "default allowlist" - } - } - } - li { - - "The " - dfn id="creating-a-permissions-policy" { - a href="https://w3c.github.io/webappsec-feature-policy/#create-for-navigable" { - - "creating a permissions policy" - } - } - - " algorithm" - } - li { - - "The " - dfn id="creating-a-permissions-policy-from-a-response" { - a href="https://w3c.github.io/webappsec-feature-policy/#create-from-response" { - - "creating a permissions policy from a response" - } - } - - " algorithm" - } - li { - - "The " - dfn id="is-feature-enabled" { - a href="https://w3c.github.io/webappsec-feature-policy/#is-feature-enabled" { - - "is feature enabled by policy for origin" - } - } - - " algorithm" - } - li { - - "The " - dfn id="process-permissions-policy-attributes" { - a href="https://w3c.github.io/webappsec-feature-policy/#process-permissions-policy-attributes" { - - "process permissions policy attributes" - } - } - - " algorithm" - } - } - - "\n " - } - dt { - - "Payment Request API" - } - dd { - - "\n " - p { - - "The following feature is defined in " - cite { - - "Payment Request API" - } - - ":\n " - a href="#refsPAYMENTREQUEST" { - - "[PAYMENTREQUEST]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="paymentrequest" { - a href="https://w3c.github.io/payment-request/#dom-paymentrequest" { - code { - - "PaymentRequest" - } - } - } - - " interface" - } - } - - "\n " - } - dt { - - "MathML" - } - dd { - - "\n " - p { - - "While support for MathML as a whole is not required by this specification (though it is\n encouraged, at least for web browsers), certain features depend upon small parts of MathML being\n implemented. " - a href="#refsMATHML" { - - "[MATHML]" - } - } - - "\n\n " - p { - - "The following features are defined in " - cite { - - "Mathematical Markup Language" - } - - "\n (" - cite { - - "MathML" - } - - "):" - } - - "\n\n " - ul class="brief" { - li { - dfn id="mathml-annotation-xml" { - a href="https://w3c.github.io/mathml-core/#dfn-annotation-xml" { - - "MathML " - code { - - "annotation-xml" - } - } - } - - " element" - } - li { - dfn id="mathml-math" { - a href="https://w3c.github.io/mathml-core/#the-top-level-math-element" { - - "MathML " - code { - - "math" - } - } - } - - " element" - } - li { - dfn id="mathml-merror" { - a href="https://w3c.github.io/mathml-core/#error-message-merror" { - - "MathML " - code { - - "merror" - } - } - } - - " element" - } - li { - dfn id="mathml-mi" { - a href="https://w3c.github.io/mathml-core/#the-mi-element" { - - "MathML " - code { - - "mi" - } - } - } - - " element" - } - li { - dfn id="mathml-mn" { - a href="https://w3c.github.io/mathml-core/#number-mn" { - - "MathML " - code { - - "mn" - } - } - } - - " element" - } - li { - dfn id="mathml-mo" { - a href="https://w3c.github.io/mathml-core/#operator-fence-separator-or-accent-mo" { - - "MathML " - code { - - "mo" - } - } - } - - " element" - } - li { - dfn id="mathml-ms" { - a href="https://w3c.github.io/mathml-core/#string-literal-ms" { - - "MathML " - code { - - "ms" - } - } - } - - " element" - } - li { - dfn id="mathml-mtext" { - a href="https://w3c.github.io/mathml-core/#text-mtext" { - - "MathML " - code { - - "mtext" - } - } - } - - " element" - } - } - - "\n " - } - dt { - - "SVG" - } - dd { - - "\n " - p { - - "While support for SVG as a whole is not required by this specification (though it is\n encouraged, at least for web browsers), certain features depend upon parts of SVG being\n implemented." - } - - "\n\n " - p { - - "User agents that implement SVG must implement the " - cite { - - "SVG 2" - } - - " specification, and not\n any earlier revisions." - } - - "\n\n " - p { - - "The following features are defined in the " - cite { - - "SVG 2" - } - - " specification:\n " - a href="#refsSVG" { - - "[SVG]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="svgelement" { - a href="https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement" { - code { - - "SVGElement" - } - } - } - - " interface" - } - li { - dfn id="svgimageelement" { - a href="https://svgwg.org/svg2-draft/embedded.html#InterfaceSVGImageElement" { - code { - - "SVGImageElement" - } - } - } - - " interface" - } - li { - dfn id="svgscriptelement" { - a href="https://svgwg.org/svg2-draft/interact.html#InterfaceSVGScriptElement" { - code { - - "SVGScriptElement" - } - } - } - - " interface" - } - li { - dfn id="svgsvgelement" { - a href="https://svgwg.org/svg2-draft/struct.html#InterfaceSVGSVGElement" { - code { - - "SVGSVGElement" - } - } - } - - " interface" - } - li { - dfn id="svg-a" { - a href="https://svgwg.org/svg2-draft/linking.html#AElement" { - - "SVG " - code { - - "a" - } - } - } - - " element" - } - li { - dfn id="svg-desc" { - a href="https://svgwg.org/svg2-draft/struct.html#DescElement" { - - "SVG " - code { - - "desc" - } - } - } - - " element" - } - li { - dfn id="svg-foreignobject" { - a href="https://svgwg.org/svg2-draft/embedded.html#ForeignObjectElement" { - - "SVG " - code { - - "foreignObject" - } - } - } - - " element" - } - li { - dfn id="svg-image" { - a href="https://svgwg.org/svg2-draft/embedded.html#ImageElement" { - - "SVG " - code { - - "image" - } - } - } - - " element" - } - li { - dfn id="svg-script" { - a href="https://svgwg.org/svg2-draft/interact.html#ScriptElement" { - - "SVG " - code { - - "script" - } - } - } - - " element" - } - li { - dfn id="svg-svg" { - a href="https://svgwg.org/svg2-draft/struct.html#SVGElement" { - - "SVG " - code { - - "svg" - } - } - } - - " element" - } - li { - dfn id="svg-title" { - a href="https://svgwg.org/svg2-draft/struct.html#TitleElement" { - - "SVG " - code { - - "title" - } - } - } - - " element" - } - li { - dfn id="svg-use" { - a href="https://svgwg.org/svg2-draft/struct.html#UseElement" { - - "SVG " - code { - - "use" - } - } - } - - " element" - } - li { - dfn id="svg-text-rendering" { - a href="https://svgwg.org/svg2-draft/painting.html#TextRendering" { - - "SVG " - code { - - "text-rendering" - } - } - } - - " property" - } - } - - "\n " - } - dt { - - "Filter Effects" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "Filter Effects" - } - - ": " - a href="#refsFILTERS" { - - "[FILTERS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="filter-value-list" { - a href="https://drafts.fxtf.org/filter-effects/#typedef-filter-value-list" { - - "" - } - } - } - } - - "\n " - } - dt { - - "Compositing" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "Compositing and Blending" - } - - ":\n " - a href="#refsCOMPOSITE" { - - "[COMPOSITE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="blend-mode" { - a href="https://drafts.fxtf.org/compositing/#ltblendmodegt" { - - "" - } - } - } - li { - dfn id="composite-mode" { - a href="https://drafts.fxtf.org/compositing/#compositemode" { - - "" - } - } - } - li { - dfn id="gcop-source-over" { - a href="https://drafts.fxtf.org/compositing/#porterduffcompositingoperators_srcover" { - - "source-over" - } - } - } - li { - dfn id="gcop-copy" { - a href="https://drafts.fxtf.org/compositing/#porterduffcompositingoperators_src" { - - "copy" - } - } - } - } - - "\n " - } - dt { - - "Cooperative Scheduling of Background Tasks" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "Cooperative Scheduling of Background\n Tasks" - } - - ": " - a href="#refsREQUESTIDLECALLBACK" { - - "[REQUESTIDLECALLBACK]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="requestidlecallback()" { - a href="https://w3c.github.io/requestidlecallback/#the-requestidlecallback-method" { - code { - - "requestIdleCallback()" - } - } - } - } - li { - dfn id="start-an-idle-period-algorithm" { - a href="https://w3c.github.io/requestidlecallback/#start-an-idle-period-algorithm" { - - "start an idle period algorithm" - } - } - } - } - - "\n " - } - dt { - - "Screen Orientation" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Screen Orientation" - } - - ":\n " - a href="#refsSCREENORIENTATION" { - - "[SCREENORIENTATION]" - } - } - - "\n\n " - ul { - li { - dfn id="screen-orientation-change-steps" { - a href="https://w3c.github.io/screen-orientation/#dfn-screen-orientation-change-steps" { - - "screen orientation change steps" - } - } - } - } - - "\n " - } - dt { - - "Storage" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Storage" - } - - ": " - a href="#refsSTORAGE" { - - "[STORAGE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="obtain-a-local-storage-bottle-map" { - a href="https://storage.spec.whatwg.org/#obtain-a-local-storage-bottle-map" { - - "obtain a local storage bottle map" - } - } - } - li { - dfn id="obtain-a-session-storage-bottle-map" { - a href="https://storage.spec.whatwg.org/#obtain-a-session-storage-bottle-map" { - - "obtain a session storage bottle map" - } - } - } - li { - dfn id="obtain-a-storage-key-for-non-storage-purposes" { - a href="https://storage.spec.whatwg.org/#obtain-a-storage-key-for-non-storage-purposes" { - - "obtain a storage key for non-storage purposes" - } - } - } - li { - dfn id="storage-key-equal" { - a href="https://storage.spec.whatwg.org/#storage-key-equal" { - - "storage key equal" - } - } - } - li { - dfn id="storage-proxy-map" { - a href="https://storage.spec.whatwg.org/#storage-proxy-map" { - - "storage proxy map" - } - } - } - li { - dfn id="legacy-clone-a-traversable-storage-shed" { - a href="https://storage.spec.whatwg.org/#legacy-clone-a-traversable-storage-shed" { - - "legacy-clone a traversable storage shed" - } - } - } - } - - "\n " - } - dt { - - "Web App Manifest" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "Web App Manifest" - } - - ": " - a href="#refsMANIFEST" { - - "[MANIFEST]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="application-manifest" { - a href="https://w3c.github.io/manifest/#dfn-manifest" { - - "application manifest" - } - } - } - li { - dfn id="installed-web-application" { - a href="https://w3c.github.io/manifest/#dfn-installed-web-application" { - - "installed web application" - } - } - } - li { - dfn id="process-the-manifest" { - a href="https://w3c.github.io/manifest/#dfn-processing-a-manifest" { - - "process the manifest" - } - } - } - } - - "\n " - } - dt { - - "WebAssembly JavaScript Interface: ESM Integration" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebAssembly JavaScript Interface: ESM Integration" - } - - ": " - a href="#refsWASMESM" { - - "[WASMESM]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="webassembly-module-record" { - a href="https://webassembly.github.io/esm-integration/js-api/index.html#webassembly-module-record" { - - "WebAssembly Module Record" - } - } - } - li { - dfn id="parse-a-webassembly-module" { - a href="https://webassembly.github.io/esm-integration/js-api/index.html#parse-a-webassembly-module" { - - "parse a WebAssembly module" - } - } - } - } - - "\n " - } - dt { - - "WebCodecs" - } - dd { - - "\n " - p { - - "The following features are defined in " - cite { - - "WebCodecs" - } - - ": " - a href="#refsWEBCODECS" { - - "[WEBCODECS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="videoframe" { - a href="https://w3c.github.io/webcodecs/#videoframe-interface" { - code { - - "VideoFrame" - } - } - } - - " interface." - } - li { - dfn id="display-width" { - a href="https://w3c.github.io/webcodecs/#dom-videoframe-display-width-slot" { - - "[[display width]]" - } - } - } - li { - dfn id="display-height" { - a href="https://w3c.github.io/webcodecs/#dom-videoframe-display-height-slot" { - - "[[display height]]" - } - } - } - } - - "\n " - } - dt { - - "WebDriver" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebDriver" - } - - ": " - a href="#refsWEBDRIVER" { - - "[WEBDRIVER]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="extension-command" { - a href="https://w3c.github.io/webdriver/#dfn-extension-commands" { - - "extension command" - } - } - } - li { - dfn id="remote-end-steps" { - a href="https://w3c.github.io/webdriver/#dfn-remote-end-steps" { - - "remote end steps" - } - } - } - li { - dfn id="webdriver-error" { - a href="https://w3c.github.io/webdriver/#dfn-errors" { - - "WebDriver error" - } - } - } - li { - dfn id="webdriver-error-code" { - a href="https://w3c.github.io/webdriver/#dfn-error-code" { - - "WebDriver error code" - } - } - } - li { - dfn id="invalid-argument" { - a href="https://w3c.github.io/webdriver/#dfn-invalid-argument" { - - "invalid argument" - } - } - } - li { - dfn id="getting-a-property" { - a href="https://w3c.github.io/webdriver/#dfn-getting-properties" { - - "getting a property" - } - } - } - li { - dfn id="success-value" { - a href="https://w3c.github.io/webdriver/#dfn-success" { - - "success" - } - } - } - li { - dfn id="webdriver's-security-considerations" { - a href="https://w3c.github.io/webdriver/#security" { - - "WebDriver's security considerations" - } - } - } - li { - dfn id="webdriver-current-browsing-context" { - a href="https://w3c.github.io/webdriver/#dfn-current-browsing-context" { - - "current browsing context" - } - } - } - } - - "\n " - } - dt { - - "WebDriver BiDi" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebDriver BiDi" - } - - ": " - a href="#refsWEBDRIVERBIDI" { - - "[WEBDRIVERBIDI]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="webdriver-bidi-navigation-status" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigation-status" { - - "WebDriver BiDi navigation status" - } - } - } - li { - dfn id="navigation-status-id" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-id" { - - "navigation status id" - } - } - } - li { - dfn id="navigation-status-status" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-status" { - - "navigation status status" - } - } - } - li { - dfn id="navigation-status-canceled" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-canceled" { - - "navigation status canceled" - } - } - } - li { - dfn id="navigation-status-pending" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-pending" { - - "navigation status pending" - } - } - } - li { - dfn id="navigation-status-complete" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-complete" { - - "navigation status complete" - } - } - } - li { - dfn id="navigation-status-url" { - a href="https://w3c.github.io/webdriver-bidi/#navigation-status-url" { - - "navigation status url" - } - } - } - li { - dfn id="webdriver-bidi-navigation-started" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigation-started" { - - "WebDriver BiDi navigation started" - } - } - } - li { - dfn id="webdriver-bidi-navigation-aborted" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigation-aborted" { - - "WebDriver BiDi navigation aborted" - } - } - } - li { - dfn id="webdriver-bidi-navigation-failed" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigation-failed" { - - "WebDriver BiDi navigation failed" - } - } - } - li { - dfn id="webdriver-bidi-download-started" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-download-started" { - - "WebDriver BiDi download started" - } - } - } - li { - dfn id="webdriver-bidi-fragment-navigated" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-fragment-navigated" { - - "WebDriver BiDi fragment navigated" - } - } - } - li { - dfn id="webdriver-bidi-dom-content-loaded" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-dom-content-loaded" { - - "WebDriver BiDi DOM content loaded" - } - } - } - li { - dfn id="webdriver-bidi-load-complete" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-load-complete" { - - "WebDriver BiDi load complete" - } - } - } - li { - dfn id="webdriver-bidi-history-updated" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-history-updated" { - - "WebDriver BiDi history updated" - } - } - } - li { - dfn id="webdriver-bidi-navigable-created" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigable-created" { - - "WebDriver BiDi navigable created" - } - } - } - li { - dfn id="webdriver-bidi-navigable-destroyed" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-navigable-destroyed" { - - "WebDriver BiDi navigable destroyed" - } - } - } - li { - dfn id="webdriver-bidi-user-prompt-closed" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-user-prompt-closed" { - - "WebDriver BiDi user prompt closed" - } - } - } - li { - dfn id="webdriver-bidi-user-prompt-opened" { - a href="https://w3c.github.io/webdriver-bidi/#webdriver-bidi-user-prompt-opened" { - - "WebDriver BiDi user prompt opened" - } - } - } - } - - "\n " - } - dt { - - "Web Cryptography API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Cryptography API" - } - - ":\n " - a href="#refsWEBCRYPTO" { - - "[WEBCRYPTO]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="generating-a-random-uuid" { - a href="https://w3c.github.io/webcrypto/#dfn-generate-a-random-uuid" { - - "generating a random UUID" - } - } - } - } - - "\n " - } - dt { - - "WebSockets" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebSockets" - } - - ": " - a href="#refsWEBSOCKETS" { - - "[WEBSOCKETS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="websocket-2" { - a href="https://websockets.spec.whatwg.org/#websocket" { - code { - - "WebSocket" - } - } - } - } - li { - dfn data-dfn-for="WebSocket" id="make-disappear" { - a href="https://websockets.spec.whatwg.org/#make-disappear" { - - "make disappear" - } - } - } - } - - "\n " - } - dt { - - "WebTransport" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebTransport" - } - - ": " - a href="#refsWEBTRANSPORT" { - - "[WEBTRANSPORT]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="webtransport" { - a href="https://w3c.github.io/webtransport/#webtransport" { - code { - - "WebTransport" - } - } - } - } - li { - dfn id="context-cleanup-steps" { - a href="https://w3c.github.io/webtransport/#context-cleanup-steps" { - code { - - "context cleanup steps" - } - } - } - } - } - - "\n " - } - dt { - - "Web Authentication: An API for accessing Public Key Credentials" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Authentication: An API for accessing Public Key\n Credentials" - } - - ": " - a href="#refsWEBAUTHN" { - - "[WEBAUTHN]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="public-key-credential" { - a href="https://w3c.github.io/webauthn/#public-key-credential" { - - "public key credential" - } - } - } - } - - "\n " - } - dt { - - "Credential Management" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Credential Management" - } - - ": " - a href="#refsCREDMAN" { - - "[CREDMAN]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="conditional-mediation" { - a href="https://w3c.github.io/webappsec-credential-management/#dom-credentialmediationrequirement-conditional" { - - "conditional mediation" - } - } - } - li { - dfn id="credman-credential" { - a href="https://w3c.github.io/webappsec-credential-management/#credential" { - - "credential" - } - } - } - li { - dfn id="navigator.credentials.get()" { - a href="https://w3c.github.io/webappsec-credential-management/#dom-credentialscontainer-get" { - code { - - "navigator.credentials.get()" - } - } - } - } - } - - "\n " - } - dt { - - "Console" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Console" - } - - ": " - a href="#refsCONSOLE" { - - "[CONSOLE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="report-a-warning-to-the-console" { - a href="https://console.spec.whatwg.org/#report-a-warning-to-the-console" { - - "report a warning to the console" - } - } - } - } - - "\n " - } - dt { - - "Web Locks API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Locks API" - } - - ": " - a href="#refsWEBLOCKS" { - - "[WEBLOCKS]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="locks" { - a href="https://w3c.github.io/web-locks/#lock-concept" { - - "locks" - } - } - } - li { - dfn id="lock-requests" { - a href="https://w3c.github.io/web-locks/#lock-request" { - - "lock requests" - } - } - } - } - - "\n " - } - dt { - - "Trusted Types" - } - dd { - - "\n " - p { - - "This specification uses the following features defined in " - cite { - - "Trusted Types" - } - - ":\n " - a href="#refsTRUSTED-TYPES" { - - "[TRUSTED-TYPES]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="tt-trustedhtml" { - a href="https://w3c.github.io/trusted-types/dist/spec/#trustedhtml" { - code { - - "TrustedHTML" - } - } - } - } - li { - dfn id="tt-trustedhtml-data" { - a href="https://w3c.github.io/trusted-types/dist/spec/#trustedhtml-data" { - - "data" - } - } - } - li { - dfn id="tt-trustedscript" { - a href="https://w3c.github.io/trusted-types/dist/spec/#trusted-script" { - code { - - "TrustedScript" - } - } - } - } - li { - dfn id="tt-trustedscript-data" { - a href="https://w3c.github.io/trusted-types/dist/spec/#trustedscript-data" { - code { - - "data" - } - } - } - } - li { - dfn id="tt-trustedscripturl" { - a href="https://w3c.github.io/trusted-types/dist/spec/#trustedscripturl" { - code { - - "TrustedScriptURL" - } - } - } - } - li { - dfn id="tt-getcompliantstring" { - a href="https://w3c.github.io/trusted-types/dist/spec/#get-trusted-type-compliant-string-algorithm" { - - "Get Trusted Type compliant string" - } - } - } - } - - "\n " - } - dt { - - "WebRTC API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebRTC API" - } - - ": " - a href="#refsWEBRTC" { - - "[WEBRTC]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="rtcdatachannel" { - a href="https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel" { - code { - - "RTCDataChannel" - } - } - } - } - li { - dfn id="rtcpeerconnection" { - a href="https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection" { - code { - - "RTCPeerConnection" - } - } - } - } - } - - "\n " - } - dt { - - "Picture-in-Picture API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Picture-in-Picture API" - } - - ": " - a href="#refsPICTUREINPICTURE" { - - "[PICTUREINPICTURE]" - } - } - - "\n\n " - ul class="brief" { - li { - dfn id="pictureinpicturewindow" { - a href="https://w3c.github.io/picture-in-picture/#pictureinpicturewindow" { - code { - - "PictureInPictureWindow" - } - } - } - } - } - - "\n " - } - dt { - - "Idle Detection API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Idle Detection API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="idledetector" { - a href="https://wicg.github.io/idle-detection/#idledetector" { - code { - - "IdleDetector" - } - } - } - } - } - - "\n " - } - dt { - - "Web Speech API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Speech API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="speechrecognition" { - a href="https://wicg.github.io/speech-api/#speechrecognition" { - code { - - "SpeechRecognition" - } - } - } - } - } - - "\n " - } - dt { - - "WebOTP API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebOTP API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="otpcredential" { - a href="https://wicg.github.io/web-otp/#otpcredential" { - code { - - "OTPCredential" - } - } - } - } - } - - "\n " - } - dt { - - "Web Share API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Share API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="dom-navigator-share" { - a href="https://w3c.github.io/web-share/#share-method" { - - "share()" - } - } - } - } - - "\n " - } - dt { - - "Web Smart Card API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Smart Card API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="smartcardconnection" { - a href="https://wicg.github.io/web-smart-card/#dom-smartcardconnection" { - code { - - "SmartCardConnection" - } - } - } - } - } - - "\n " - } - dt { - - "Web Background Synchronization" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Background Synchronization" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="syncmanager" { - a href="https://wicg.github.io/background-sync/spec/#syncmanager" { - code { - - "SyncManager" - } - } - } - } - li { - dfn id="dom-syncmanager-register" { - a href="https://wicg.github.io/background-sync/spec/#dom-syncmanager-register" { - code { - - "register()" - } - } - } - } - } - - "\n " - } - dt { - - "Web Periodic Background Synchronization" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web Periodic Background Synchronization" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="periodicsyncmanager" { - a href="https://wicg.github.io/periodic-background-sync/#periodicsyncmanager" { - code { - - "PeriodicSyncManager" - } - } - } - } - li { - dfn id="dom-periodicsyncmanager-register" { - a href="https://wicg.github.io/periodic-background-sync/#dom-periodicsyncmanager-register" { - code { - - "register()" - } - } - } - } - } - - "\n " - } - dt { - - "Web Background Fetch" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Background Fetch" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="backgroundfetchmanager" { - a href="https://wicg.github.io/background-fetch/#backgroundfetchmanager" { - code { - - "BackgroundFetchManager" - } - } - } - } - li { - dfn id="dom-backgroundfetchmanager-fetch" { - a href="https://wicg.github.io/background-fetch/#dom-backgroundfetchmanager-fetch" { - code { - - "fetch()" - } - } - } - } - } - - "\n " - } - dt { - - "Keyboard Lock" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Keyboard Lock" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="keyboard" { - a href="https://wicg.github.io/keyboard-lock/#keyboard" { - code { - - "Keyboard" - } - } - } - } - li { - dfn id="dom-keyboard-lock" { - a href="https://wicg.github.io/keyboard-lock/#dom-keyboard-lock" { - code { - - "lock()" - } - } - } - } - } - - "\n " - } - dt { - - "Web MIDI API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Web MIDI API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="dom-navigator-requestmidiaccess" { - a href="https://webaudio.github.io/web-midi-api/#dom-navigator-requestmidiaccess" { - code { - - "requestMIDIAccess()" - } - } - } - } - } - - "\n " - } - dt { - - "Generic Sensor API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "Generic Sensor API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="request-sensor-access" { - a href="https://w3c.github.io/sensors/#request-sensor-access" { - - "request sensor access" - } - } - } - } - - "\n " - } - dt { - - "WebHID API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebHID API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="request-device" { - a href="https://wicg.github.io/webhid/#requestdevice-method" { - code { - - "requestDevice" - } - } - } - } - } - - "\n " - } - dt { - - "WebXR Device API" - } - dd { - - "\n " - p { - - "The following terms are defined in " - cite { - - "WebXR Device API" - } - - ":" - } - - "\n\n " - ul class="brief" { - li { - dfn id="xrsystem" { - a href="https://immersive-web.github.io/webxr/#xrsystem" { - code { - - "XRSystem" - } - } - } - } - } - - "\n " - } - } - - "\n\n " - hr - - "\n\n " - p { - - "This specification does not " - em { - - "require" - } - - " support of any particular network protocol, style\n sheet language, scripting language, or any of the DOM specifications beyond those required in the\n list above. However, the language described by this specification is biased towards CSS as the\n styling language, JavaScript as the scripting language, and HTTP as the network protocol, and\n several features assume that those languages and protocols are in use." - } - - "\n\n " - p { - - "A user agent that implements the HTTP protocol must implement " - cite { - - "HTTP State Management\n Mechanism" - } - - " (Cookies) as well. " - a href="#refsHTTP" { - - "[HTTP]" - } - - " " - a href="#refsCOOKIES" { - - "[COOKIES]" - } - } - - "\n\n " - p class="note" { - - "This specification might have certain additional requirements on character\n encodings, image formats, audio formats, and video formats in the respective sections." - } - - "\n\n " - } - - "\n\n\n\n\n " - h4 id="extensibility-2" { - span class="secno" { - - "2.1.10" - } - - " Extensibility" - a href="#extensibility-2" class="self-link" - } - - "\n\n " - p { - - "Vendor-specific proprietary user agent extensions to this specification are strongly\n discouraged. Documents must not use such extensions, as doing so reduces interoperability and\n fragments the user base, allowing only users of specific user agents to access the content in\n question." - } - - "\n\n \n\n " - p { - - "All extensions must be defined so that the use of extensions neither contradicts nor causes the\n non-conformance of functionality defined in the specification." - } - - " \n\n " - div class="example" { - - "\n\n " - p { - - "For example, while strongly discouraged from doing so, an implementation could add a new IDL\n attribute \"" - code { - - "typeTime" - } - - "\" to a control that returned the time it took the user\n to select the current value of a control (say). On the other hand, defining a new control that\n appears in a form's " - code id="extensibility-2:dom-form-elements" { - a href="#dom-form-elements" { - - "elements" - } - } - - " array would be in violation\n of the above requirement, as it would violate the definition of " - code id="extensibility-2:dom-form-elements-2" { - a href="#dom-form-elements" { - - "elements" - } - } - - " given in this specification." - } - - "\n\n " - } - - "\n\n \n\n " - hr - - "\n\n " - p { - - "When vendor-neutral extensions to this specification are needed, either this specification can\n be updated accordingly, or an extension specification can be written that overrides the\n requirements in this specification. When someone applying this specification to their activities\n decides that they will recognize the requirements of such an extension specification, it becomes\n an " - dfn id="other-applicable-specifications" { - - "applicable specification" - } - - " for the purposes\n of conformance requirements in this specification." - } - - "\n\n " - p class="note" { - - "Someone could write a specification that defines any arbitrary byte stream as\n conforming, and then claim that their random junk is conforming. However, that does not mean that\n their random junk actually is conforming for everyone's purposes: if someone else decides that\n that specification does not apply to their work, then they can quite legitimately say that the\n aforementioned random junk is just that, junk, and not conforming at all. As far as conformance\n goes, what matters in a particular community is what that community " - em { - - "agrees" - } - - " is\n applicable." - } - - "\n\n \n\n " - hr - - "\n\n " - p { - - "User agents must treat elements and attributes that they do not understand as semantically\n neutral; leaving them in the DOM (for DOM processors), and styling them according to CSS (for CSS\n processors), but not inferring any meaning from them." - } - - "\n\n " - p { - - "When support for a feature is disabled (e.g. as an emergency measure to mitigate a security\n problem, or to aid in development, or for performance reasons), user agents must act as if they\n had no support for the feature whatsoever, and as if the feature was not mentioned in this\n specification. For example, if a particular feature is accessed via an attribute in a Web IDL\n interface, the attribute itself would be omitted from the objects that implement that interface\n — leaving the attribute on the object but making it return null or throw an exception is\n insufficient." - } - - "\n\n \n\n\n \n\n " - h4 id="interactions-with-xpath-and-xslt" { - span class="secno" { - - "2.1.11" - } - - " Interactions with XPath and XSLT" - a href="#interactions-with-xpath-and-xslt" class="self-link" - } - - "\n\n " - p id="xpath-1.0-processors" { - - "Implementations of XPath 1.0 that operate on " - a id="interactions-with-xpath-and-xslt:html-documents" href="https://dom.spec.whatwg.org/#html-document" data-x-internal="html-documents" { - - "HTML\n documents" - } - - " parsed or created in the manners described in this specification (e.g. as part of\n the " - code { - - "document.evaluate()" - } - - " API) must act as if the following edit was applied\n to the XPath 1.0 specification." - } - - "\n\n " - p { - - "First, remove this paragraph:" - } - - "\n\n " - blockquote cite="https://www.w3.org/TR/1999/REC-xpath-19991116/#node-tests" { - - "\n\n " - p { - - "A " - a href="https://www.w3.org/TR/REC-xml-names/#NT-QName" { - - "QName" - } - - " in the node test is expanded\n into an " - a href="https://www.w3.org/TR/1999/REC-xpath-19991116/#dt-expanded-name" { - - "expanded-name" - } - - "\n using the namespace declarations from the expression context. This is the same way expansion is\n done for element type names in start and end-tags except that the default namespace declared with\n " - code { - - "xmlns" - } - - " is not used: if the " - a href="https://www.w3.org/TR/REC-xml-names/#NT-QName" { - - "QName" - } - - " does not have a prefix, then the\n namespace URI is null (this is the same way attribute names are expanded). It is an error if the\n " - a href="https://www.w3.org/TR/REC-xml-names/#NT-QName" { - - "QName" - } - - " has a prefix for which there is\n no namespace declaration in the expression context." - } - - "\n\n " - } - - "\n\n " - p { - - "Then, insert in its place the following:" - } - - "\n\n " - blockquote cite="https://www.w3.org/Bugs/Public/show_bug.cgi?id=7059#c37" { - - "\n\n " - p { - - "A QName in the node test is expanded into an expanded-name using the namespace declarations\n from the expression context. If the QName has a prefix, then there must be a namespace declaration for this prefix in\n the expression context, and the corresponding namespace URI is the one that is\n associated with this prefix. It is an error if the QName has a prefix for which there is no\n namespace declaration in the expression context. " - } - - "\n\n " - p { - - "If the QName has no prefix and the principal node type of the axis is element, then the\n default element namespace is used. Otherwise, if the QName has no prefix, the namespace URI is\n null. The default element namespace is a member of the context for the XPath expression. The\n value of the default element namespace when executing an XPath expression through the DOM3 XPath\n API is determined in the following way:" - } - - "\n\n " - ol { - li { - - "If the context node is from an HTML DOM, the default element namespace is\n \"http://www.w3.org/1999/xhtml\"." - } - li { - - "Otherwise, the default element namespace URI is null." - } - } - - "\n\n " - p class="note" { - - "This is equivalent to adding the default element namespace feature of XPath 2.0\n to XPath 1.0, and using the HTML namespace as the default element namespace for HTML documents.\n It is motivated by the desire to have implementations be compatible with legacy HTML content\n while still supporting the changes that this specification introduces to HTML regarding the\n namespace used for HTML elements, and by the desire to use XPath 1.0 rather than XPath 2.0." - } - - "\n\n " - } - - "\n\n " - p class="note" { - - "This change is a " - a href="#willful-violation" id="interactions-with-xpath-and-xslt:willful-violation" { - - "willful violation" - } - - " of the XPath 1.0 specification,\n motivated by desire to have implementations be compatible with legacy content while still\n supporting the changes that this specification introduces to HTML regarding which namespace is\n used for HTML elements. " - a href="#refsXPATH10" { - - "[XPATH10]" - } - } - - " \n\n " - hr - - "\n\n " - p id="dom-based-xslt-1.0-processors" { - - "XSLT 1.0 processors outputting to a DOM when the output\n method is \"html\" (either explicitly or via the defaulting rule in XSLT 1.0) are affected as\n follows:" - } - - "\n\n " - p { - - "If the transformation program outputs an element in no namespace, the processor must, prior to\n constructing the corresponding DOM element node, change the namespace of the element to the\n " - a id="interactions-with-xpath-and-xslt:html-namespace-2" href="https://infra.spec.whatwg.org/#html-namespace" data-x-internal="html-namespace-2" { - - "HTML namespace" - } - - ", " - a href="https://infra.spec.whatwg.org/#ascii-lowercase" id="interactions-with-xpath-and-xslt:converted-to-ascii-lowercase" data-x-internal="converted-to-ascii-lowercase" { - - "ASCII-lowercase" - } - - " the\n element's local name, and " - a href="https://infra.spec.whatwg.org/#ascii-lowercase" id="interactions-with-xpath-and-xslt:converted-to-ascii-lowercase-2" data-x-internal="converted-to-ascii-lowercase" { - - "ASCII-lowercase" - } - - " the\n names of any non-namespaced attributes on the element." - } - - "\n\n " - p class="note" { - - "This requirement is a " - a href="#willful-violation" id="interactions-with-xpath-and-xslt:willful-violation-2" { - - "willful violation" - } - - " of the XSLT 1.0\n specification, required because this specification changes the namespaces and case-sensitivity\n rules of HTML in a manner that would otherwise be incompatible with DOM-based XSLT\n transformations. (Processors that serialize the output are unaffected.) " - a href="#refsXSLT10" { - - "[XSLT10]" - } - } - - " \n\n " - hr - - "\n\n " - p { - - "This specification does not specify precisely how XSLT processing interacts with the " - a href="#html-parser" id="interactions-with-xpath-and-xslt:html-parser" { - - "HTML\n parser" - } - - " infrastructure (for example, whether an XSLT processor acts as if it puts any\n elements into a " - a href="#stack-of-open-elements" id="interactions-with-xpath-and-xslt:stack-of-open-elements" { - - "stack of open elements" - } - - "). However, XSLT processors must " - a href="#stop-parsing" id="interactions-with-xpath-and-xslt:stop-parsing" { - - "stop\n parsing" - } - - " if they successfully complete, and must " - a href="#update-the-current-document-readiness" id="interactions-with-xpath-and-xslt:update-the-current-document-readiness" { - - "update the current document\n readiness" - } - - " first to \"" - code { - - "interactive" - } - - "\" and then to \"" - code { - - "complete" - } - - "\" if they are aborted." - } - - "\n\n " - hr - - "\n\n " - p { - - "This specification does not specify how XSLT interacts with the " - a href="#navigate" id="interactions-with-xpath-and-xslt:navigate" { - - "navigation" - } - - " algorithm, how it fits in with the " - a href="#event-loop" id="interactions-with-xpath-and-xslt:event-loop" { - - "event loop" - } - - ", nor\n how error pages are to be handled (e.g. whether XSLT errors are to replace an incremental XSLT\n output, or are rendered inline, etc.)." - } - - "\n\n " - p class="note" { - - "There are also additional non-normative comments regarding the interaction of XSLT\n and HTML " - a href="#scriptTagXSLT" { - - "in the " - code { - - "script" - } - - " element section" - } - - ", and of\n XSLT, XPath, and HTML " - a href="#template-XSLT-XPath" { - - "in the " - code { - - "template" - } - - " element\n section" - } - - "." - } - - "\n\n \n\n\n\n " - h3 id="policy-controlled-features" { - span class="secno" { - - "2.2" - } - - " Policy-controlled features" - a href="#policy-controlled-features" class="self-link" - } - div class="mdn-anno wrapped" { - button onclick="toggleStatus(this)" class="mdn-anno-btn" { - b title="Support in one engine only." class="less-than-two-engines-flag" { - - "⚠" - } - span { - - "MDN" - } - } - div class="feature" { - p { - a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy/document-domain" title="The HTTP Permissions-Policy header document-domain directive controls whether the current document is allowed to set document.domain." { - - "Headers/Permissions-Policy/document-domain" - } - } - p class="less-than-two-engines-text" { - - "Support in one engine only." - } - div class="support" { - span class="firefox yes" { - span { - - "Firefox" - } - span title="Requires setting a user preference or runtime flag." { - - "🔰 74+" - } - } - span class="safari no" { - span { - - "Safari" - } - span { - - "No" - } - } - span class="chrome yes" { - span { - - "Chrome" - } - span title="Requires setting a user preference or runtime flag." { - - "🔰 88+" - } - } - hr - span class="opera unknown" { - span { - - "Opera" - } - span { - - "?" - } - } - span class="edge_blink yes" { - span { - - "Edge" - } - span title="Requires setting a user preference or runtime flag." { - - "🔰 88+" - } - } - hr - span class="edge unknown" { - span { - - "Edge (Legacy)" - } - span { - - "?" - } - } - span class="ie no" { - span { - - "Internet Explorer" - } - span { - - "No" - } - } - hr - span class="firefox_android unknown" { - span { - - "Firefox Android" - } - span { - - "?" - } - } - span class="safari_ios unknown" { - span { - - "Safari iOS" - } - span { - - "?" - } - } - span class="chrome_android no" { - span { - - "Chrome Android" - } - span { - - "No" - } - } - span class="webview_android unknown" { - span { - - "WebView Android" - } - span { - - "?" - } - } - span class="samsunginternet_android unknown" { - span { - - "Samsung Internet" - } - span { - - "?" - } - } - span class="opera_android unknown" { - span { - - "Opera Android" - } - span { - - "?" - } - } - } - } - } - - "\n\n " - p { - - "This document defines the following " - a href="https://w3c.github.io/webappsec-feature-policy/#policy-controlled-feature" id="policy-controlled-features:concept-policy-controlled-feature" data-x-internal="concept-policy-controlled-feature" { - - "policy-controlled features" - } - - ":" - } - - "\n\n " - div class="mdn-anno wrapped before" { - button onclick="toggleStatus(this)" class="mdn-anno-btn" { - span { - - "MDN" - } - } - div class="feature" { - p { - a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy/autoplay" title="The HTTP Permissions-Policy header autoplay directive controls whether the current document is allowed to autoplay media requested through the HTMLMediaElement interface." { - - "Headers/Feature-Policy/autoplay" - } - } - div class="support" { - span class="firefox yes" { - span { - - "Firefox" - } - span title="Requires setting a user preference or runtime flag." { - - "🔰 74+" - } - } - span class="safari no" { - span { - - "Safari" - } - span { - - "No" - } - } - span class="chrome yes" { - span { - - "Chrome" - } - span { - - "64+" - } - } - hr - span class="opera unknown" { - span { - - "Opera" - } - span { - - "?" - } - } - span class="edge_blink yes" { - span { - - "Edge" - } - span { - - "79+" - } - } - hr - span class="edge unknown" { - span { - - "Edge (Legacy)" - } - span { - - "?" - } - } - span class="ie no" { - span { - - "Internet Explorer" - } - span { - - "No" - } - } - hr - span class="firefox_android unknown" { - span { - - "Firefox Android" - } - span { - - "?" - } - } - span class="safari_ios unknown" { - span { - - "Safari iOS" - } - span { - - "?" - } - } - span class="chrome_android unknown" { - span { - - "Chrome Android" - } - span { - - "?" - } - } - span class="webview_android unknown" { - span { - - "WebView Android" - } - span { - - "?" - } - } - span class="samsunginternet_android unknown" { - span { - - "Samsung Internet" - } - span { - - "?" - } - } - span class="opera_android unknown" { - span { - - "Opera Android" - } - span { - - "?" - } - } - } - } - div class="feature" { - p { - a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy/autoplay" title="The HTTP Permissions-Policy header autoplay directive controls whether the current document is allowed to autoplay media requested through the HTMLMediaElement interface." { - - "Headers/Permissions-Policy/autoplay" - } - } - p class="less-than-two-engines-text" { - - "Support in one engine only." - } - div class="support" { - span class="firefox yes" { - span { - - "Firefox" - } - span title="Requires setting a user preference or runtime flag." { - - "🔰 74+" - } - } - span class="safari no" { - span { - - "Safari" - } - span { - - "No" - } - } - span class="chrome yes" { - span { - - "Chrome" - } - span { - - "88+" - } - } - hr - span class="opera unknown" { - span { - - "Opera" - } - span { - - "?" - } - } - span class="edge_blink yes" { - span { - - "Edge" - } - span { - - "88+" - } - } - hr - span class="edge unknown" { - span { - - "Edge (Legacy)" - } - span { - - "?" - } - } - span class="ie no" { - span { - - "Internet Explorer" - } - span { - - "No" - } - } - hr - span class="firefox_android unknown" { - span { - - "Firefox Android" - } - span { - - "?" - } - } - span class="safari_ios unknown" { - span { - - "Safari iOS" - } - span { - - "?" - } - } - span class="chrome_android unknown" { - span { - - "Chrome Android" - } - span { - - "?" - } - } - span class="webview_android unknown" { - span { - - "WebView Android" - } - span { - - "?" - } - } - span class="samsunginternet_android unknown" { - span { - - "Samsung Internet" - } - span { - - "?" - } - } - span class="opera_android unknown" { - span { - - "Opera Android" - } - span { - - "?" - } - } - } - } - } - ul { - li { - - "\"" - dfn id="autoplay-feature" { - code { - - "autoplay" - } - } - - "\", which has a " - a href="https://w3c.github.io/webappsec-feature-policy/#default-allowlist" id="policy-controlled-features:concept-default-allowlist" data-x-internal="concept-default-allowlist" { - - "default allowlist" - } - - " of " - code { - - "'self'" - } - - "." - } - li { - - "\"" - dfn id="cross-origin-isolated-feature" { - code { - - "cross-origin-isolated" - } - } - - "\", which has a " - a href="https://w3c.github.io/webappsec-feature-policy/#default-allowlist" id="policy-controlled-features:concept-default-allowlist-2" data-x-internal="concept-default-allowlist" { - - "default allowlist" - } - - " of " - code { - - "'self'" - } - - "." - } - } - - "\n\n\n " - h3 id="common-microsyntaxes" { - span class="secno" { - - "2.3" - } - - " Common microsyntaxes" - a href="#common-microsyntaxes" class="self-link" - } - - "\n\n " - p { - - "There are various places in HTML that accept particular data types, such as dates or numbers.\n This section describes what the conformance criteria for content in those formats is, and how to\n parse them." - } - - "\n\n \n\n " - p class="note" { - - "Implementers are strongly urged to carefully examine any third-party libraries\n they might consider using to implement the parsing of syntaxes described below. For example, date\n libraries are likely to implement error handling behavior that differs from what is required in\n this specification, since error-handling behavior is often not defined in specifications that\n describe date syntaxes similar to those used in this specification, and thus implementations tend\n to vary greatly in how they handle errors." - } - - "\n\n \n\n\n \n\n " - h4 id="common-parser-idioms" { - span class="secno" { - - "2.3.1" - } - - " Common parser idioms" - a href="#common-parser-idioms" class="self-link" - } - - "\n\n " - p { - - "Some of the micro-parsers described below follow the pattern of having an " - var { - - "input" - } - - "\n variable that holds the string being parsed, and having a " - var { - - "position" - } - - " variable pointing at\n the next character to parse in " - var { - - "input" - } - - "." - } - - "\n\n \n\n\n\n " - h4 id="boolean-attributes" { - span class="secno" { - - "2.3.2" - } - - " Boolean attributes" - a href="#boolean-attributes" class="self-link" - } - - "\n\n " - p { - - "A number of attributes are " - dfn id="boolean-attribute" { - - "boolean attributes" - } - - ". The\n presence of a boolean attribute on an element represents the true value, and the absence of the\n attribute represents the false value." - } - - "\n\n " - p { - - "If the attribute is present, its value must either be the empty string or a value that is an\n " - a id="boolean-attributes:ascii-case-insensitive" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for the attribute's canonical name, with no leading or\n trailing whitespace." - } - - "\n\n " - p class="note" { - - "The values \"true\" and \"false\" are not allowed on boolean attributes. To represent\n a false value, the attribute has to be omitted altogether." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "Here is an example of a checkbox that is checked and disabled. The " - code id="boolean-attributes:attr-input-checked" { - a href="#attr-input-checked" { - - "checked" - } - } - - " and " - code id="boolean-attributes:attr-fe-disabled" { - a href="#attr-fe-disabled" { - - "disabled" - } - } - - "\n attributes are the boolean attributes." - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "label" - } - c- p="" { - - "><" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "type" - } - c- o="" { - - "=" - } - c- s="" { - - "checkbox" - } - - " " - c- e="" { - - "checked" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "cheese" - } - - " " - c- e="" { - - "disabled" - } - c- p="" { - - ">" - } - - " Cheese" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "This could be equivalently written as this:\n\n " - } - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "label" - } - c- p="" { - - "><" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "type" - } - c- o="" { - - "=" - } - c- s="" { - - "checkbox" - } - - " " - c- e="" { - - "checked" - } - c- o="" { - - "=" - } - c- s="" { - - "checked" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "cheese" - } - - " " - c- e="" { - - "disabled" - } - c- o="" { - - "=" - } - c- s="" { - - "disabled" - } - c- p="" { - - ">" - } - - " Cheese" - c- p="" { - - "" - } - } - } - - "\n\n " - p { - - "You can also mix styles; the following is still equivalent:" - } - - "\n\n " - pre { - code class="html" { - c- p="" { - - "<" - } - c- f="" { - - "label" - } - c- p="" { - - "><" - } - c- f="" { - - "input" - } - - " " - c- e="" { - - "type" - } - c- o="" { - - "=" - } - c- s="" { - - "'checkbox'" - } - - " " - c- e="" { - - "checked" - } - - " " - c- e="" { - - "name" - } - c- o="" { - - "=" - } - c- s="" { - - "cheese" - } - - " " - c- e="" { - - "disabled" - } - c- o="" { - - "=" - } - c- s="" { - - "\"\"" - } - c- p="" { - - ">" - } - - " Cheese" - c- p="" { - - "" - } - } - } - - "\n\n " - } - - "\n\n\n\n " - h4 id="keywords-and-enumerated-attributes" { - span class="secno" { - - "2.3.3" - } - - " Keywords and enumerated attributes" - a href="#keywords-and-enumerated-attributes" class="self-link" - } - - "\n\n " - p { - - "Some attributes, called " - dfn id="enumerated-attribute" data-lt="enumerated attribute" data-export="" { - - "enumerated attributes" - } - - ", take on a finite set of states. The state for such an\n attribute is derived by combining the attribute's value, a set of keyword/state mappings given in\n the specification of each attribute, and two possible special states that can also be given in the\n specification of the attribute. These special states are the " - dfn id="invalid-value-default" { - i { - - "invalid value\n default" - } - } - - " and the " - dfn id="missing-value-default" { - i { - - "missing value default" - } - } - - "." - } - - "\n\n " - p class="note" { - - "Multiple keywords can map to the same state." - } - - "\n\n " - p class="note" { - - "The empty string can be a valid keyword. Note that the " - i id="keywords-and-enumerated-attributes:missing-value-default" { - a href="#missing-value-default" { - - "missing value default" - } - } - - " applies only when the attribute is " - em { - - "missing" - } - - ", not when\n it is present with an empty string value." - } - - "\n\n " - p { - - "To determine the state of an attribute, use the following steps:" - } - - "\n\n " - ol { - li { - - "\n " - p { - - "If the attribute is not specified:" - } - - "\n\n " - ol { - li { - p { - - "If the attribute has a " - i id="keywords-and-enumerated-attributes:missing-value-default-2" { - a href="#missing-value-default" { - - "missing value default" - } - } - - "\n state defined, then return that " - i id="keywords-and-enumerated-attributes:missing-value-default-3" { - a href="#missing-value-default" { - - "missing value default" - } - } - - "\n state." - } - } - li { - p { - - "Otherwise, return no state." - } - } - } - - "\n " - } - li { - p { - - "If the attribute's value is an " - a id="keywords-and-enumerated-attributes:ascii-case-insensitive" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for one of the\n keywords defined for the attribute, then return the state represented by that keyword." - } - } - li { - p { - - "If the attribute has an " - i id="keywords-and-enumerated-attributes:invalid-value-default" { - a href="#invalid-value-default" { - - "invalid value default" - } - } - - " state\n defined, then return that " - i id="keywords-and-enumerated-attributes:invalid-value-default-2" { - a href="#invalid-value-default" { - - "invalid value default" - } - } - - "\n state." - } - } - li { - p { - - "Return no state." - } - } - } - - "\n\n " - p { - - "For authoring conformance purposes, if an enumerated attribute is specified, the attribute's\n value must be an " - a id="keywords-and-enumerated-attributes:ascii-case-insensitive-2" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for one of the conforming keywords for\n that attribute, with no leading or trailing whitespace." - } - - "\n\n " - p { - - "For " - a href="#reflect" id="keywords-and-enumerated-attributes:reflect" { - - "reflection" - } - - " purposes, states which have any keywords mapping\n to them are said to have a " - dfn id="canonical-keyword" { - - "canonical keyword" - } - - ". This is determined as follows:" - } - - "\n\n " - ul { - li { - p { - - "If there is only one keyword mapping to the given state, then it is that keyword." - } - } - li { - p { - - "If there is only one " - em { - - "conforming" - } - - " keyword mapping to the given state, then it is\n that conforming keyword." - } - } - li { - p { - - "Otherwise, the canonical keyword for the state will be explicitly given in the\n specification for the attribute." - } - } - } - - "\n\n\n\n " - h4 id="numbers" { - span class="secno" { - - "2.3.4" - } - - " Numbers" - a href="#numbers" class="self-link" - } - - "\n\n " - h5 id="signed-integers" { - span class="secno" { - - "2.3.4.1" - } - - " Signed integers" - a href="#signed-integers" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-integer" { - - "valid integer" - } - - " if it consists of one or more " - a id="signed-integers:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ",\n optionally prefixed with a U+002D HYPHEN-MINUS character (-)." - } - - "\n\n " - p { - - "A " - a href="#valid-integer" id="signed-integers:valid-integer" { - - "valid integer" - } - - " without a U+002D HYPHEN-MINUS (-) prefix represents the number\n that is represented in base ten by that string of digits. A " - a href="#valid-integer" id="signed-integers:valid-integer-2" { - - "valid integer" - } - - "\n " - em { - - "with" - } - - " a U+002D HYPHEN-MINUS (-) prefix represents the number represented in base ten by\n the string of digits that follows the U+002D HYPHEN-MINUS, subtracted from zero." - } - - "\n\n \n\n " - p { - - "The " - dfn id="rules-for-parsing-integers" { - - "rules for parsing integers" - } - - " are as given in the following algorithm. When\n invoked, the steps must be followed in the order given, aborting at the first step that returns a\n value. This algorithm will return either an integer or an error." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially pointing at the\n start of the string." - } - } - li { - p { - - "Let " - var { - - "sign" - } - - " have the value \"positive\"." - } - } - li { - p { - a id="signed-integers:skip-ascii-whitespace" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - li { - - "\n " - p { - - "If the character indicated by " - var { - - "position" - } - - " (the first character) is a U+002D\n HYPHEN-MINUS character (-):" - } - - "\n\n " - ol { - li { - - "Let " - var { - - "sign" - } - - " be \"negative\"." - } - li { - - "Advance " - var { - - "position" - } - - " to the next character." - } - li { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - - "\n\n " - p { - - "Otherwise, if the character indicated by " - var { - - "position" - } - - " (the first character) is a\n U+002B PLUS SIGN character (+):" - } - - "\n\n " - ol { - li { - - "Advance " - var { - - "position" - } - - " to the next character. (The \"" - code { - - "+" - } - - "\" is\n ignored, but it is not conforming.)" - } - li { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - - "\n " - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="signed-integers:ascii-digits-2" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", then return an error." - } - } - li { - p { - a id="signed-integers:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="signed-integers:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", and interpret the resulting sequence as a base-ten\n integer. Let " - var { - - "value" - } - - " be that integer." - } - } - li { - p { - - "If " - var { - - "sign" - } - - " is \"positive\", return " - var { - - "value" - } - - ", otherwise return the result of\n subtracting " - var { - - "value" - } - - " from zero." - } - } - } - - "\n\n \n\n\n " - h5 id="non-negative-integers" { - span class="secno" { - - "2.3.4.2" - } - - " Non-negative integers" - a href="#non-negative-integers" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-non-negative-integer" { - - "valid non-negative integer" - } - - " if it consists of one or more " - a id="non-negative-integers:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII\n digits" - } - - "." - } - - "\n\n " - p { - - "A " - a href="#valid-non-negative-integer" id="non-negative-integers:valid-non-negative-integer" { - - "valid non-negative integer" - } - - " represents the number that is represented in base ten\n by that string of digits." - } - - "\n\n \n\n " - p { - - "The " - dfn id="rules-for-parsing-non-negative-integers" { - - "rules for parsing non-negative integers" - } - - " are as given in the following algorithm.\n When invoked, the steps must be followed in the order given, aborting at the first step that\n returns a value. This algorithm will return either zero, a positive integer, or an error." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "value" - } - - " be the result of parsing " - var { - - "input" - } - - " using the\n " - a href="#rules-for-parsing-integers" id="non-negative-integers:rules-for-parsing-integers" { - - "rules for parsing integers" - } - - "." - } - } - li { - p { - - "If " - var { - - "value" - } - - " is an error, return an error." - } - } - li { - p { - - "If " - var { - - "value" - } - - " is less than zero, return an error." - } - } - li { - p { - - "Return " - var { - - "value" - } - - "." - } - } - } - - "\n\n \n\n \n\n\n " - h5 id="floating-point-numbers" { - span class="secno" { - - "2.3.4.3" - } - - " Floating-point numbers" - a href="#floating-point-numbers" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-floating-point-number" { - - "valid floating-point number" - } - - " if it consists of:" - } - - "\n\n " - ol { - li { - p { - - "Optionally, a U+002D HYPHEN-MINUS character (-)." - } - } - li { - - "\n " - p { - - "One or both of the following, in the given order:" - } - - "\n\n " - ol { - li { - p { - - "A series of one or more " - a id="floating-point-numbers:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - "." - } - } - li { - - "\n " - p { - - "Both of the following, in the given order:" - } - - "\n\n " - ol { - li { - p { - - "A single U+002E FULL STOP character (.)." - } - } - li { - p { - - "A series of one or more " - a id="floating-point-numbers:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - "." - } - } - } - - "\n " - } - } - - "\n " - } - li { - - "\n " - p { - - "Optionally:" - } - - "\n\n " - ol { - li { - p { - - "Either a U+0065 LATIN SMALL LETTER E character (e) or a U+0045 LATIN CAPITAL LETTER E\n character (E)." - } - } - li { - p { - - "Optionally, a U+002D HYPHEN-MINUS character (-) or U+002B PLUS SIGN character\n (+)." - } - } - li { - p { - - "A series of one or more " - a id="floating-point-numbers:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - "." - } - } - } - - "\n " - } - } - - "\n\n " - p { - - "A " - a href="#valid-floating-point-number" id="floating-point-numbers:valid-floating-point-number" { - - "valid floating-point number" - } - - " represents the number obtained by multiplying the\n significand by ten raised to the power of the exponent, where the significand is the first number,\n interpreted as base ten (including the decimal point and the number after the decimal point, if\n any, and interpreting the significand as a negative number if the whole string starts with a\n U+002D HYPHEN-MINUS character (-) and the number is not zero), and where the exponent is the\n number after the E, if any (interpreted as a negative number if there is a U+002D HYPHEN-MINUS\n character (-) between the E and the number and the number is not zero, or else ignoring a U+002B\n PLUS SIGN character (+) between the E and the number if there is one). If there is no E, then the\n exponent is treated as zero." - } - - "\n\n " - p class="note" { - - "The Infinity and Not-a-Number (NaN) values are not " - a href="#valid-floating-point-number" id="floating-point-numbers:valid-floating-point-number-2" { - - "valid floating-point numbers" - } - - "." - } - - "\n\n \n\n " - p class="note" { - - "The " - a href="#valid-floating-point-number" id="floating-point-numbers:valid-floating-point-number-3" { - - "valid floating-point number" - } - - " concept is typically only used to\n restrict what is allowed for authors, while the user agent requirements use the " - a href="#rules-for-parsing-floating-point-number-values" id="floating-point-numbers:rules-for-parsing-floating-point-number-values" { - - "rules for\n parsing floating-point number values" - } - - " below (e.g., the " - code id="floating-point-numbers:attr-progress-max" { - a href="#attr-progress-max" { - - "max" - } - } - - " attribute of the " - code id="floating-point-numbers:the-progress-element" { - a href="#the-progress-element" { - - "progress" - } - } - - " element). However, in\n some cases the user agent requirements include checking if a string is a " - a href="#valid-floating-point-number" id="floating-point-numbers:valid-floating-point-number-4" { - - "valid\n floating-point number" - } - - " (e.g., the " - a href="#value-sanitization-algorithm" id="floating-point-numbers:value-sanitization-algorithm" { - - "value sanitization algorithm" - } - - " for the " - a href="#number-state-(type=number)" id="floating-point-numbers:number-state-(type=number)" { - - "Number" - } - - " state of the " - code id="floating-point-numbers:the-input-element" { - a href="#the-input-element" { - - "input" - } - } - - " element, or the\n " - a href="#parse-a-srcset-attribute" id="floating-point-numbers:parse-a-srcset-attribute" { - - "parse a srcset attribute" - } - - " algorithm)." - } - - "\n\n " - p { - - "The " - dfn id="best-representation-of-the-number-as-a-floating-point-number" { - - "best\n representation of the number " - var { - - "n" - } - - " as a floating-point number" - } - - " is the string\n obtained from running " - a id="floating-point-numbers:tostring" href="https://tc39.es/ecma262/#sec-tostring" data-x-internal="tostring" { - - "ToString" - } - - "(" - var { - - "n" - } - - "). The abstract operation\n " - a id="floating-point-numbers:tostring-2" href="https://tc39.es/ecma262/#sec-tostring" data-x-internal="tostring" { - - "ToString" - } - - " is not uniquely determined. When there are multiple possible strings that\n could be obtained from " - a id="floating-point-numbers:tostring-3" href="https://tc39.es/ecma262/#sec-tostring" data-x-internal="tostring" { - - "ToString" - } - - " for a particular value, the user agent must always\n return the same string for that value (though it may differ from the value used by other user\n agents)." - } - - "\n\n " - p { - - "The " - dfn id="rules-for-parsing-floating-point-number-values" data-export="" { - - "rules for parsing floating-point number values" - } - - " are as given in the\n following algorithm. This algorithm must be aborted at the first step that returns something.\n This algorithm will return either a number or an error." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially pointing at the\n start of the string." - } - } - li { - p { - - "Let " - var { - - "value" - } - - " have the value 1." - } - } - li { - p { - - "Let " - var { - - "divisor" - } - - " have the value 1." - } - } - li { - p { - - "Let " - var { - - "exponent" - } - - " have the value 1." - } - } - li { - p { - a id="floating-point-numbers:skip-ascii-whitespace" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - li { - - "\n " - p { - - "If the character indicated by " - var { - - "position" - } - - " is a U+002D HYPHEN-MINUS character (-):" - } - - "\n\n " - ol { - li { - - "Change " - var { - - "value" - } - - " and " - var { - - "divisor" - } - - " to −1." - } - li { - - "Advance " - var { - - "position" - } - - " to the next character." - } - li { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - - "\n\n " - p { - - "Otherwise, if the character indicated by " - var { - - "position" - } - - " (the first character) is a\n U+002B PLUS SIGN character (+):" - } - - "\n\n " - ol { - li { - - "Advance " - var { - - "position" - } - - " to the next character. (The \"" - code { - - "+" - } - - "\"\n is ignored, but it is not conforming.)" - } - li { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", return an error." - } - } - - "\n " - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is a U+002E FULL STOP (.), and that is\n not the last character in " - var { - - "input" - } - - ", and the character after the character indicated by\n " - var { - - "position" - } - - " is an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="floating-point-numbers:ascii-digits-4" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", then set\n " - var { - - "value" - } - - " to zero and jump to the step labeled " - i { - - "fraction" - } - - "." - } - - " \n\n " - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="floating-point-numbers:ascii-digits-5" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", then return an error." - } - } - li { - p { - a id="floating-point-numbers:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="floating-point-numbers:ascii-digits-6" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", and interpret the resulting sequence as a base-ten\n integer. Multiply " - var { - - "value" - } - - " by that integer." - } - } - li { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", jump to the step labeled\n " - i { - - "conversion" - } - - "." - } - li { - p { - i { - - "Fraction" - } - - ": If the character indicated by " - var { - - "position" - } - - " is a U+002E\n FULL STOP (.), run these substeps:" - } - - "\n\n " - ol { - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", or if the character\n indicated by " - var { - - "position" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="floating-point-numbers:ascii-digits-7" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ",\n U+0065 LATIN SMALL LETTER E (e), or U+0045 LATIN CAPITAL LETTER E (E), then jump to the step\n labeled " - i { - - "conversion" - } - - "." - } - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is a U+0065 LATIN SMALL\n LETTER E character (e) or a U+0045 LATIN CAPITAL LETTER E character (E), skip the remainder of\n these substeps." - } - - "\n\n " - } - li { - p { - i { - - "Fraction loop" - } - - ": Multiply " - var { - - "divisor" - } - - " by ten." - } - } - li { - - "Add the value of the character indicated by " - var { - - "position" - } - - ", interpreted as a\n base-ten digit (0..9) and divided by " - var { - - "divisor" - } - - ", to " - var { - - "value" - } - - "." - } - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then jump to the step\n labeled " - i { - - "conversion" - } - - "." - } - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="floating-point-numbers:ascii-digits-8" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", jump back to the step labeled " - i { - - "fraction loop" - } - - " in these\n substeps." - } - } - } - - "\n " - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is U+0065 (e) or a U+0045 (E), then:" - } - - "\n\n " - ol { - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then jump to the step\n labeled " - i { - - "conversion" - } - - "." - } - } - li { - - "\n " - p { - - "If the character indicated by " - var { - - "position" - } - - " is a U+002D HYPHEN-MINUS character\n (-):" - } - - "\n\n " - ol { - li { - - "Change " - var { - - "exponent" - } - - " to −1." - } - li { - - "Advance " - var { - - "position" - } - - " to the next character." - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then jump to the step\n labeled " - i { - - "conversion" - } - - "." - } - } - } - - "\n\n " - p { - - "Otherwise, if the character indicated by " - var { - - "position" - } - - " is a U+002B PLUS SIGN\n character (+):" - } - - "\n\n " - ol { - li { - - "Advance " - var { - - "position" - } - - " to the next character." - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then jump to the step\n labeled " - i { - - "conversion" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "If the character indicated by " - var { - - "position" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="floating-point-numbers:ascii-digits-9" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", then jump to the step labeled " - i { - - "conversion" - } - - "." - } - } - li { - p { - a id="floating-point-numbers:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="floating-point-numbers:ascii-digits-10" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", and interpret the resulting sequence as a base-ten\n integer. Multiply " - var { - - "exponent" - } - - " by that integer." - } - } - li { - p { - - "Multiply " - var { - - "value" - } - - " by ten raised to the " - var { - - "exponent" - } - - "th power." - } - } - } - - "\n " - } - li { - p { - i { - - "Conversion" - } - - ": Let " - var { - - "S" - } - - " be the set of finite IEEE 754 double-precision\n floating-point values except −0, but with two special values added: 2" - sup { - - "1024" - } - - " and −2" - sup { - - "1024" - } - - "." - } - } - li { - p { - - "Let " - var { - - "rounded-value" - } - - " be the number in " - var { - - "S" - } - - " that is closest to\n " - var { - - "value" - } - - ", selecting the number with an even significand if there are two equally close\n values. (The two special values 2" - sup { - - "1024" - } - - " and −2" - sup { - - "1024" - } - - "\n are considered to have even significands for this purpose.)" - } - } - li { - p { - - "If " - var { - - "rounded-value" - } - - " is 2" - sup { - - "1024" - } - - " or −2" - sup { - - "1024" - } - - ", return an error." - } - } - li { - p { - - "Return " - var { - - "rounded-value" - } - - "." - } - } - } - - "\n\n \n\n\n\n " - h5 id="percentages-and-dimensions" { - span class="secno" { - - "2.3.4.4" - } - - " Percentages and lengths" - a href="#percentages-and-dimensions" class="self-link" - } - - "\n\n " - p { - - "The " - dfn id="rules-for-parsing-dimension-values" { - - "rules for parsing dimension values" - } - - " are as given in the following algorithm. When\n invoked, the steps must be followed in the order given, aborting at the first step that returns a\n value. This algorithm will return either a number greater than or equal to 0.0, or failure; if a\n number is returned, then it is further categorized as either a percentage or a length." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a " - a id="percentages-and-dimensions:position-variable" href="https://infra.spec.whatwg.org/#string-position-variable" data-x-internal="position-variable" { - - "position variable" - } - - " for " - var { - - "input" - } - - ",\n initially pointing at the start of " - var { - - "input" - } - - "." - } - } - li { - p { - a id="percentages-and-dimensions:skip-ascii-whitespace" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - " or the code point at\n " - var { - - "position" - } - - " within " - var { - - "input" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="percentages-and-dimensions:ascii-digits" data-x-internal="ascii-digits" { - - "ASCII\n digit" - } - - ", then return failure." - } - } - li { - p { - a id="percentages-and-dimensions:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="percentages-and-dimensions:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", and interpret the resulting sequence as a base-ten\n integer. Let " - var { - - "value" - } - - " be that number." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then return " - var { - - "value" - } - - "\n as a length." - } - } - li { - - "\n " - p { - - "If the code point at " - var { - - "position" - } - - " within " - var { - - "input" - } - - " is U+002E (.), then:" - } - - "\n\n " - ol { - li { - p { - - "Advance " - var { - - "position" - } - - " by 1." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - " or the code point at\n " - var { - - "position" - } - - " within " - var { - - "input" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="percentages-and-dimensions:ascii-digits-3" data-x-internal="ascii-digits" { - - "ASCII\n digit" - } - - ", then return the " - a href="#current-dimension-value" id="percentages-and-dimensions:current-dimension-value" { - - "current dimension value" - } - - " with " - var { - - "value" - } - - ",\n " - var { - - "input" - } - - ", and " - var { - - "position" - } - - "." - } - } - li { - p { - - "Let " - var { - - "divisor" - } - - " have the value 1." - } - } - li { - - "\n " - p { - - "While true:" - } - - "\n\n " - ol { - li { - p { - - "Multiply " - var { - - "divisor" - } - - " by ten." - } - } - li { - p { - - "Add the value of the code point at " - var { - - "position" - } - - " within " - var { - - "input" - } - - ",\n interpreted as a base-ten digit (0..9) and divided by " - var { - - "divisor" - } - - ", to\n " - var { - - "value" - } - - "." - } - } - li { - p { - - "Advance " - var { - - "position" - } - - " by 1." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then return\n " - var { - - "value" - } - - " as a length." - } - } - li { - p { - - "If the code point at " - var { - - "position" - } - - " within " - var { - - "input" - } - - " is not an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="percentages-and-dimensions:ascii-digits-4" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", then " - a id="percentages-and-dimensions:break" href="https://infra.spec.whatwg.org/#iteration-break" data-x-internal="break" { - - "break" - } - - "." - } - } - } - - "\n " - } - } - - "\n " - } - li { - p { - - "Return the " - a href="#current-dimension-value" id="percentages-and-dimensions:current-dimension-value-2" { - - "current dimension value" - } - - " with " - var { - - "value" - } - - ", " - var { - - "input" - } - - ",\n and " - var { - - "position" - } - - "." - } - } - } - - "\n\n " - p { - - "The " - dfn id="current-dimension-value" { - - "current dimension value" - } - - ", given " - var { - - "value" - } - - ", " - var { - - "input" - } - - ", and\n " - var { - - "position" - } - - ", is determined as follows:" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then return " - var { - - "value" - } - - "\n as a length." - } - } - li { - p { - - "If the code point at " - var { - - "position" - } - - " within " - var { - - "input" - } - - " is U+0025 (%), then\n return " - var { - - "value" - } - - " as a percentage." - } - } - li { - p { - - "Return " - var { - - "value" - } - - " as a length." - } - } - } - - "\n\n " - h5 id="nonzero-percentages-and-lengths" { - span class="secno" { - - "2.3.4.5" - } - - " Nonzero percentages and lengths" - a href="#nonzero-percentages-and-lengths" class="self-link" - } - - "\n\n " - p { - - "The " - dfn id="rules-for-parsing-non-zero-dimension-values" { - - "rules for parsing nonzero dimension\n values" - } - - " are as given in the following algorithm. When invoked, the steps must be followed in\n the order given, aborting at the first step that returns a value. This algorithm will return\n either a number greater than 0.0, or an error; if a number is returned, then it is further\n categorized as either a percentage or a length." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "value" - } - - " be the result of parsing " - var { - - "input" - } - - " using the " - a href="#rules-for-parsing-dimension-values" id="nonzero-percentages-and-lengths:rules-for-parsing-dimension-values" { - - "rules for\n parsing dimension values" - } - - "." - } - } - li { - p { - - "If " - var { - - "value" - } - - " is an error, return an error." - } - } - li { - p { - - "If " - var { - - "value" - } - - " is zero, return an error." - } - } - li { - p { - - "If " - var { - - "value" - } - - " is a percentage, return " - var { - - "value" - } - - " as a percentage." - } - } - li { - p { - - "Return " - var { - - "value" - } - - " as a length." - } - } - } - - "\n\n \n\n\n " - h5 id="lists-of-floating-point-numbers" { - span class="secno" { - - "2.3.4.6" - } - - " Lists of floating-point numbers" - a href="#lists-of-floating-point-numbers" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="valid-list-of-floating-point-numbers" { - - "valid list of floating-point numbers" - } - - " is a number of " - a href="#valid-floating-point-number" id="lists-of-floating-point-numbers:valid-floating-point-number" { - - "valid floating-point numbers" - } - - " separated by U+002C COMMA characters,\n with no other characters (e.g. no " - a id="lists-of-floating-point-numbers:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "). In addition, there might be\n restrictions on the number of floating-point numbers that can be given, or on the range of values\n allowed." - } - - "\n\n \n\n " - p { - - "The " - dfn id="rules-for-parsing-a-list-of-floating-point-numbers" { - - "rules for parsing a list of floating-point numbers" - } - - " are as follows:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially pointing at the\n start of the string." - } - } - li { - p { - - "Let " - var { - - "numbers" - } - - " be an initially empty list of floating-point numbers. This list\n will be the result of this algorithm." - } - } - li { - p { - a id="lists-of-floating-point-numbers:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="lists-of-floating-point-numbers:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ",\n U+002C COMMA, or U+003B SEMICOLON characters from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ".\n This skips past any leading delimiters." - } - } - li { - p { - - "While " - var { - - "position" - } - - " is not past the end of " - var { - - "input" - } - - ":" - } - - "\n\n " - ol { - li { - p { - a id="lists-of-floating-point-numbers:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are not " - a id="lists-of-floating-point-numbers:space-characters-3" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII\n whitespace" - } - - ", U+002C COMMA, U+003B SEMICOLON, " - a id="lists-of-floating-point-numbers:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", U+002E FULL STOP,\n or U+002D HYPHEN-MINUS characters from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". This skips\n past leading garbage." - } - } - li { - p { - a id="lists-of-floating-point-numbers:collect-a-sequence-of-code-points-3" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are not " - a id="lists-of-floating-point-numbers:space-characters-4" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII\n whitespace" - } - - ", U+002C COMMA, or U+003B SEMICOLON characters from " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - ", and let " - var { - - "unparsed number" - } - - " be the result." - } - } - li { - p { - - "Let " - var { - - "number" - } - - " be the result of parsing " - var { - - "unparsed number" - } - - " using the\n " - a href="#rules-for-parsing-floating-point-number-values" id="lists-of-floating-point-numbers:rules-for-parsing-floating-point-number-values" { - - "rules for parsing floating-point number values" - } - - "." - } - } - li { - p { - - "If " - var { - - "number" - } - - " is an error, set " - var { - - "number" - } - - " to zero." - } - } - li { - p { - - "Append " - var { - - "number" - } - - " to " - var { - - "numbers" - } - - "." - } - } - li { - p { - a id="lists-of-floating-point-numbers:collect-a-sequence-of-code-points-4" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="lists-of-floating-point-numbers:space-characters-5" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ",\n U+002C COMMA, or U+003B SEMICOLON characters from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ".\n This skips past the delimiter." - } - } - } - - "\n " - } - li { - p { - - "Return " - var { - - "numbers" - } - - "." - } - } - } - - "\n\n \n\n \n\n " - h5 id="lists-of-dimensions" { - span class="secno" { - - "2.3.4.7" - } - - " Lists of dimensions" - a href="#lists-of-dimensions" class="self-link" - } - - "\n\n \n\n " - p { - - "The " - dfn id="rules-for-parsing-a-list-of-dimensions" { - - "rules for parsing a list of dimensions" - } - - " are as follows. These rules return a list\n of zero or more pairs consisting of a number and a unit, the unit being one of " - i { - - "percentage" - } - - ",\n " - i { - - "relative" - } - - ", and " - i { - - "absolute" - } - - "." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "raw input" - } - - " be the string being parsed." - } - } - li { - p { - - "If the last character in " - var { - - "raw input" - } - - " is a U+002C COMMA character (,),\n then remove that character from " - var { - - "raw input" - } - - "." - } - } - li { - p { - a href="https://infra.spec.whatwg.org/#split-on-commas" id="lists-of-dimensions:split-a-string-on-commas" data-x-internal="split-a-string-on-commas" { - - "Split the string " - var { - - "raw input" - } - - " on\n commas" - } - - ". Let " - var { - - "raw tokens" - } - - " be the resulting list of tokens." - } - } - li { - p { - - "Let " - var { - - "result" - } - - " be an empty list of number/unit pairs." - } - } - li { - - "\n " - p { - - "For each token in " - var { - - "raw tokens" - } - - ", run the following substeps:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the token." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ",\n initially pointing at the start of the string." - } - } - li { - p { - - "Let " - var { - - "value" - } - - " be the number 0." - } - } - li { - p { - - "Let " - var { - - "unit" - } - - " be " - i { - - "absolute" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", set " - var { - - "unit" - } - - " to " - i { - - "relative" - } - - " and jump to the last substep." - } - } - li { - p { - - "If the character at " - var { - - "position" - } - - " is an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="lists-of-dimensions:ascii-digits" data-x-internal="ascii-digits" { - - "ASCII digit" - } - - ", " - a id="lists-of-dimensions:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "collect a sequence of code points" - } - - " that are " - a id="lists-of-dimensions:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII\n digits" - } - - " from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", interpret the resulting sequence\n as an integer in base ten, and increment " - var { - - "value" - } - - " by that integer." - } - } - li { - - "\n " - p { - - "If the character at " - var { - - "position" - } - - " is U+002E (.), then:" - } - - "\n\n " - ol { - li { - p { - a id="lists-of-dimensions:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " consisting of " - a id="lists-of-dimensions:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII\n whitespace" - } - - " and " - a id="lists-of-dimensions:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - ". Let " - var { - - "s" - } - - " be the resulting sequence." - } - } - li { - p { - - "Remove all " - a id="lists-of-dimensions:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - " in " - var { - - "s" - } - - "." - } - } - li { - - "\n " - p { - - "If " - var { - - "s" - } - - " is not the empty string, then:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "length" - } - - " be the number of characters in " - var { - - "s" - } - - " (after the spaces were removed)." - } - } - li { - p { - - "Let " - var { - - "fraction" - } - - " be the result of interpreting " - var { - - "s" - } - - " as a base-ten integer, and then dividing that number by " - span { - - "10" - sup { - var { - - "length" - } - } - } - - "." - } - } - li { - p { - - "Increment " - var { - - "value" - } - - " by " - var { - - "fraction" - } - - "." - } - } - } - - "\n " - } - } - - "\n " - } - li { - p { - a id="lists-of-dimensions:skip-ascii-whitespace" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - - "\n " - p { - - "If the character at " - var { - - "position" - } - - " is a U+0025 PERCENT SIGN character (%),\n then set " - var { - - "unit" - } - - " to " - i { - - "percentage" - } - - "." - } - - "\n\n " - p { - - "Otherwise, if the character at " - var { - - "position" - } - - " is a U+002A ASTERISK character\n (*), then set " - var { - - "unit" - } - - " to " - i { - - "relative" - } - - "." - } - - "\n " - } - li { - p { - - "Add an entry to " - var { - - "result" - } - - " consisting of the number given by " - var { - - "value" - } - - " and the unit given by " - var { - - "unit" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "Return the list " - var { - - "result" - } - - "." - } - } - } - - "\n\n \n\n\n " - h4 id="dates-and-times" { - span class="secno" { - - "2.3.5" - } - - " Dates and times" - a href="#dates-and-times" class="self-link" - } - - "\n\n " - p { - - "In the algorithms below, the " - dfn id="number-of-days-in-month-month-of-year-year" { - - "number of days in month " - var { - - "month" - } - - " of year\n " - var { - - "year" - } - } - - " is: " - em { - - "31" - } - - " if " - var { - - "month" - } - - " is 1, 3, 5, 7, 8,\n 10, or 12; " - em { - - "30" - } - - " if " - var { - - "month" - } - - " is 4, 6, 9, or 11; " - em { - - "29" - } - - " if " - var { - - "month" - } - - " is 2\n and " - var { - - "year" - } - - " is a number divisible by 400, or if " - var { - - "year" - } - - " is a number divisible by 4\n but not by 100; and " - em { - - "28" - } - - " otherwise. This takes into account leap years in the Gregorian\n calendar. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "When " - a id="dates-and-times:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " are used in the date and time syntaxes defined in this section,\n they express numbers in base ten." - } - - "\n\n \n\n " - p class="note" { - - "While the formats described here are intended to be subsets of the corresponding\n ISO8601 formats, this specification defines parsing rules in much more detail than ISO8601.\n Implementers are therefore encouraged to carefully examine any date parsing libraries before using\n them to implement the parsing rules described below; ISO8601 libraries might not parse dates and\n times in exactly the same manner. " - a href="#refsISO8601" { - - "[ISO8601]" - } - } - - "\n\n \n\n " - p { - - "Where this specification refers to the " - dfn id="proleptic-gregorian-calendar" { - - "proleptic Gregorian calendar" - } - - ", it means the\n modern Gregorian calendar, extrapolated backwards to year 1. A date in the " - a href="#proleptic-gregorian-calendar" id="dates-and-times:proleptic-gregorian-calendar" { - - "proleptic\n Gregorian calendar" - } - - ", sometimes explicitly referred to as a " - dfn id="proleptic-gregorian-date" { - - "proleptic-Gregorian\n date" - } - - ", is one that is described using that calendar even if that calendar was not in use at\n the time (or place) in question. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p class="note" { - - "The use of the Gregorian calendar as the wire format in this specification is an\n arbitrary choice resulting from the cultural biases of those involved in the decision. See also\n the section discussing " - a href="#input-author-notes" { - - "date, time, and number formats" - } - - " in forms\n (for authors), " - a href="#input-impl-notes" { - - "implementation notes regarding\n localization of form controls" - } - - ", and the " - code id="dates-and-times:the-time-element" { - a href="#the-time-element" { - - "time" - } - } - - " element." - } - - "\n\n\n " - h5 id="months" { - span class="secno" { - - "2.3.5.1" - } - - " Months" - a href="#months" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-month" { - - "month" - } - - " consists of a specific " - a href="#proleptic-gregorian-date" id="months:proleptic-gregorian-date" { - - "proleptic-Gregorian\n date" - } - - " with no time-zone information and no date information beyond a year and a month.\n " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-month-string" { - - "valid month string" - } - - " representing a year " - var { - - "year" - } - - " and\n month " - var { - - "month" - } - - " if it consists of the following components in the given order:" - } - - "\n\n " - ol { - li { - - "Four or more " - a id="months:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "year" - } - - ", where " - var { - - "year" - } - - " > 0" - } - li { - - "A U+002D HYPHEN-MINUS character (-)" - } - li { - - "Two " - a id="months:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the month " - var { - - "month" - } - - ", in the range\n 1 ≤ " - var { - - "month" - } - - " ≤ 12" - } - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-month-string" { - - "parse a month string" - } - - " are as follows. This will return either a year and\n month, or nothing. If at any point the algorithm says that it \"fails\", this means that it is\n aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-month-component" id="months:parse-a-month-component" { - - "Parse a month component" - } - - " to obtain " - var { - - "year" - } - - " and " - var { - - "month" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the\n end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Return " - var { - - "year" - } - - " and " - var { - - "month" - } - - "." - } - } - } - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-month-component" { - - "parse a month component" - } - - ", given an " - var { - - "input" - } - - " string and\n a " - var { - - "position" - } - - ", are as follows. This will return either a year and a month, or\n nothing. If at any point the algorithm says that it \"fails\", this means that it is aborted at that\n point and returns nothing." - } - - "\n\n " - ol { - li { - p { - a id="months:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="months:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not at least four\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "year" - } - - "." - } - } - li { - p { - - "If " - var { - - "year" - } - - " is not a number greater than zero, then fail." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+002D HYPHEN-MINUS character, then fail.\n Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="months:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="months:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "month" - } - - "." - } - } - li { - p { - - "If " - var { - - "month" - } - - " is not a number in the range 1 ≤ " - var { - - "month" - } - - " ≤ 12, then fail." - } - } - li { - p { - - "Return " - var { - - "year" - } - - " and " - var { - - "month" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="dates" { - span class="secno" { - - "2.3.5.2" - } - - " Dates" - a href="#dates" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-date" { - - "date" - } - - " consists of a specific " - a href="#proleptic-gregorian-date" id="dates:proleptic-gregorian-date" { - - "proleptic-Gregorian\n date" - } - - " with no time-zone information, consisting of a year, a month, and a day.\n " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-date-string" { - - "valid date string" - } - - " representing a year " - var { - - "year" - } - - ", month\n " - var { - - "month" - } - - ", and day " - var { - - "day" - } - - " if it consists of the following\n components in the given order:" - } - - "\n\n " - ol { - li { - - "A " - a href="#valid-month-string" id="dates:valid-month-string" { - - "valid month string" - } - - ", representing " - var { - - "year" - } - - " and " - var { - - "month" - } - } - li { - - "A U+002D HYPHEN-MINUS character (-)" - } - li { - - "Two " - a id="dates:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "day" - } - - ", in the range\n 1 ≤ " - var { - - "day" - } - - " ≤ " - var { - - "maxday" - } - - " where " - var { - - "maxday" - } - - " is the " - a href="#number-of-days-in-month-month-of-year-year" id="dates:number-of-days-in-month-month-of-year-year" { - - "number of\n days in the month " - var { - - "month" - } - - " and year " - var { - - "year" - } - } - } - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-date-string" { - - "parse a date string" - } - - " are as follows. This will return either a date, or\n nothing. If at any point the algorithm says that it \"fails\", this means that it is aborted at that\n point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-date-component" id="dates:parse-a-date-component" { - - "Parse a date component" - } - - " to obtain " - var { - - "year" - } - - ", " - var { - - "month" - } - - ", and " - var { - - "day" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Let " - var { - - "date" - } - - " be the date with year " - var { - - "year" - } - - ", month " - var { - - "month" - } - - ", and day " - var { - - "day" - } - - "." - } - } - li { - p { - - "Return " - var { - - "date" - } - - "." - } - } - } - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-date-component" { - - "parse a date component" - } - - ", given an " - var { - - "input" - } - - " string and a\n " - var { - - "position" - } - - ", are as follows. This will return either a year, a month, and a day,\n or nothing. If at any point the algorithm says that it \"fails\", this means that it is aborted at\n that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - a href="#parse-a-month-component" id="dates:parse-a-month-component" { - - "Parse a month component" - } - - " to obtain " - var { - - "year" - } - - " and " - var { - - "month" - } - - ". If this returns nothing, then fail." - } - } - li { - p { - - "Let " - var { - - "maxday" - } - - " be the " - a href="#number-of-days-in-month-month-of-year-year" id="dates:number-of-days-in-month-month-of-year-year-2" { - - "number of days in month " - var { - - "month" - } - - " of year " - var { - - "year" - } - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+002D HYPHEN-MINUS character, then fail.\n Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="dates:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="dates:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "day" - } - - "." - } - } - li { - p { - - "If " - var { - - "day" - } - - " is not a number in the range 1 ≤ " - var { - - "day" - } - - " ≤ " - var { - - "maxday" - } - - ", then fail." - } - } - li { - p { - - "Return " - var { - - "year" - } - - ", " - var { - - "month" - } - - ", and " - var { - - "day" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="yearless-dates" { - span class="secno" { - - "2.3.5.3" - } - - " Yearless dates" - a href="#yearless-dates" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-yearless-date" { - - "yearless date" - } - - " consists of a Gregorian month and a\n day within that month, but with no associated year. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-yearless-date-string" { - - "valid yearless date string" - } - - " representing a month " - var { - - "month" - } - - " and a day " - var { - - "day" - } - - " if it consists of the following components\n in the given order:" - } - - "\n\n " - ol { - li { - - "Optionally, two U+002D HYPHEN-MINUS characters (-)" - } - li { - - "Two " - a id="yearless-dates:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the month " - var { - - "month" - } - - ", in the range\n 1 ≤ " - var { - - "month" - } - - " ≤ 12" - } - li { - - "A U+002D HYPHEN-MINUS character (-)" - } - li { - - "Two " - a id="yearless-dates:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "day" - } - - ", in the range\n 1 ≤ " - var { - - "day" - } - - " ≤ " - var { - - "maxday" - } - - " where " - var { - - "maxday" - } - - " is the " - a href="#number-of-days-in-month-month-of-year-year" id="yearless-dates:number-of-days-in-month-month-of-year-year" { - - "number of\n days" - } - - " in the month " - var { - - "month" - } - - " and any arbitrary leap year (e.g. 4 or\n 2000)" - } - } - - "\n\n " - p class="note" { - - "In other words, if the " - var { - - "month" - } - - " is \"" - code { - - "02" - } - - "\",\n meaning February, then the day can be 29, as if the year was a leap year." - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-yearless-date-string" { - - "parse a yearless date string" - } - - " are as follows. This will return either a\n month and a day, or nothing. If at any point the algorithm says that it \"fails\", this means that\n it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-yearless-date-component" id="yearless-dates:parse-a-yearless-date-component" { - - "Parse a yearless date component" - } - - " to obtain " - var { - - "month" - } - - " and " - var { - - "day" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Return " - var { - - "month" - } - - " and " - var { - - "day" - } - - "." - } - } - } - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-yearless-date-component" { - - "parse a yearless date component" - } - - ", given an " - var { - - "input" - } - - "\n string and a " - var { - - "position" - } - - ", are as follows. This will return either a month and a\n day, or nothing. If at any point the algorithm says that it \"fails\", this means that it is aborted\n at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - a id="yearless-dates:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are U+002D HYPHEN-MINUS characters (-)\n from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly zero or\n two characters long, then fail." - } - } - li { - p { - a id="yearless-dates:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="yearless-dates:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "month" - } - - "." - } - } - li { - p { - - "If " - var { - - "month" - } - - " is not a number in the range 1 ≤ " - var { - - "month" - } - - " ≤ 12, then fail." - } - } - li { - p { - - "Let " - var { - - "maxday" - } - - " be the " - a href="#number-of-days-in-month-month-of-year-year" id="yearless-dates:number-of-days-in-month-month-of-year-year-2" { - - "number of days" - } - - " in month " - var { - - "month" - } - - " of any arbitrary leap year (e.g. 4\n or 2000)." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+002D HYPHEN-MINUS character, then fail.\n Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="yearless-dates:collect-a-sequence-of-code-points-3" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="yearless-dates:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "day" - } - - "." - } - } - li { - p { - - "If " - var { - - "day" - } - - " is not a number in the range 1 ≤ " - var { - - "day" - } - - " ≤ " - var { - - "maxday" - } - - ", then fail." - } - } - li { - p { - - "Return " - var { - - "month" - } - - " and " - var { - - "day" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="times" { - span class="secno" { - - "2.3.5.4" - } - - " Times" - a href="#times" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-time" { - - "time" - } - - " consists of a specific time with no time-zone\n information, consisting of an hour, a minute, a second, and a fraction of a second." - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-time-string" { - - "valid time string" - } - - " representing an hour " - var { - - "hour" - } - - ", a\n minute " - var { - - "minute" - } - - ", and a second " - var { - - "second" - } - - " if it consists of the\n following components in the given order:" - } - - "\n\n " - ol { - li { - - "Two " - a id="times:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "hour" - } - - ", in the range\n 0 ≤ " - var { - - "hour" - } - - " ≤ 23" - } - li { - - "A U+003A COLON character (:)" - } - li { - - "Two " - a id="times:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "minute" - } - - ", in the range\n 0 ≤ " - var { - - "minute" - } - - " ≤ 59" - } - li { - - "If " - var { - - "second" - } - - " is nonzero, or optionally if " - var { - - "second" - } - - " is\n zero:\n\n " - ol { - li { - - "A U+003A COLON character (:)" - } - li { - - "Two " - a id="times:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the integer part of " - var { - - "second" - } - - ",\n in the range 0 ≤ " - var { - - "s" - } - - " ≤ 59" - } - li { - - "If " - var { - - "second" - } - - " is not an integer, or optionally if " - var { - - "second" - } - - " is an integer:\n\n " - ol { - li { - - "A U+002E FULL STOP character (.)" - } - li { - - "One, two, or three " - a id="times:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the fractional part of " - var { - - "second" - } - } - } - - "\n " - } - } - - "\n " - } - } - - "\n\n " - p class="note" { - - "The " - var { - - "second" - } - - " component cannot be 60 or 61; leap seconds cannot\n be represented." - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-time-string" { - - "parse a time string" - } - - " are as follows. This will return either a time, or\n nothing. If at any point the algorithm says that it \"fails\", this means that it is aborted at that\n point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-time-component" id="times:parse-a-time-component" { - - "Parse a time component" - } - - " to obtain " - var { - - "hour" - } - - ", " - var { - - "minute" - } - - ", and " - var { - - "second" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Let " - var { - - "time" - } - - " be the time with hour " - var { - - "hour" - } - - ", minute " - var { - - "minute" - } - - ", and second " - var { - - "second" - } - - "." - } - } - li { - p { - - "Return " - var { - - "time" - } - - "." - } - } - } - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-time-component" { - - "parse a time component" - } - - ", given an " - var { - - "input" - } - - " string and a\n " - var { - - "position" - } - - ", are as follows. This will return either an hour, a minute, and a\n second, or nothing. If at any point the algorithm says that it \"fails\", this means that it is\n aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - a id="times:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="times:ascii-digits-5" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "hour" - } - - "." - } - } - li { - - "If " - var { - - "hour" - } - - " is not a number in the range 0 ≤ " - var { - - "hour" - } - - " ≤ 23, then fail." - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+003A COLON character, then fail. Otherwise,\n move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="times:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="times:ascii-digits-6" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "minute" - } - - "." - } - } - li { - - "If " - var { - - "minute" - } - - " is not a number in the range 0 ≤ " - var { - - "minute" - } - - " ≤ 59, then fail." - } - li { - p { - - "Let " - var { - - "second" - } - - " be 0." - } - } - li { - - "\n " - p { - - "If " - var { - - "position" - } - - " is not beyond the end of " - var { - - "input" - } - - " and the character at\n " - var { - - "position" - } - - " is U+003A (:), then:" - } - - "\n\n " - ol { - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character in " - var { - - "input" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - ", or at\n the last character in " - var { - - "input" - } - - ", or if the next " - em { - - "two" - } - - " characters in " - var { - - "input" - } - - " starting at " - var { - - "position" - } - - " are not both " - a id="times:ascii-digits-7" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII\n digits" - } - - ", then fail." - } - } - li { - p { - a id="times:collect-a-sequence-of-code-points-3" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are either " - a id="times:ascii-digits-8" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - "\n or U+002E FULL STOP characters from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the\n collected sequence is three characters long, or if it is longer than three characters long and\n the third character is not a U+002E FULL STOP character, or if it has more than one U+002E FULL\n STOP character, then fail. Otherwise, interpret the resulting sequence as a base-ten number\n (possibly with a fractional part). Set " - var { - - "second" - } - - " to that number." - } - } - li { - p { - - "If " - var { - - "second" - } - - " is not a number in the range\n 0 ≤ " - var { - - "second" - } - - " < 60, then fail." - } - } - } - - "\n " - } - li { - p { - - "Return " - var { - - "hour" - } - - ", " - var { - - "minute" - } - - ", and " - var { - - "second" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="local-dates-and-times" { - span class="secno" { - - "2.3.5.5" - } - - " Local dates and times" - a href="#local-dates-and-times" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-datetime-local" { - - "local date and time" - } - - " consists of a specific\n " - a href="#proleptic-gregorian-date" id="local-dates-and-times:proleptic-gregorian-date" { - - "proleptic-Gregorian date" - } - - ", consisting of a year, a month, and a day, and a time,\n consisting of an hour, a minute, a second, and a fraction of a second, but expressed without a\n time zone. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-local-date-and-time-string" { - - "valid local date and time string" - } - - " representing a date and time if it\n consists of the following components in the given order:" - } - - "\n\n " - ol { - li { - - "A " - a href="#valid-date-string" id="local-dates-and-times:valid-date-string" { - - "valid date string" - } - - " representing the date" - } - li { - - "A U+0054 LATIN CAPITAL LETTER T character (T) or a U+0020 SPACE character" - } - li { - - "A " - a href="#valid-time-string" id="local-dates-and-times:valid-time-string" { - - "valid time string" - } - - " representing the time" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-normalised-local-date-and-time-string" { - - "valid\n normalized local date and time string" - } - - " representing a date and time if it consists of the\n following components in the given order:" - } - - "\n\n " - ol { - li { - - "A " - a href="#valid-date-string" id="local-dates-and-times:valid-date-string-2" { - - "valid date string" - } - - " representing the date" - } - li { - - "A U+0054 LATIN CAPITAL LETTER T character (T)" - } - li { - - "A " - a href="#valid-time-string" id="local-dates-and-times:valid-time-string-2" { - - "valid time string" - } - - " representing the time, expressed as the shortest possible\n string for the given time (e.g. omitting the seconds component entirely if the given time is zero\n seconds past the minute)" - } - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-local-date-and-time-string" { - - "parse a local date and time string" - } - - " are as follows. This will return\n either a date and time, or nothing. If at any point the algorithm says that it \"fails\", this means\n that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-date-component" id="local-dates-and-times:parse-a-date-component" { - - "Parse a date component" - } - - " to obtain " - var { - - "year" - } - - ", " - var { - - "month" - } - - ", and " - var { - - "day" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is neither a U+0054 LATIN CAPITAL LETTER T character\n (T) nor a U+0020 SPACE character, then fail. Otherwise, move " - var { - - "position" - } - - "\n forwards one character." - } - } - li { - p { - a href="#parse-a-time-component" id="local-dates-and-times:parse-a-time-component" { - - "Parse a time component" - } - - " to obtain " - var { - - "hour" - } - - ", " - var { - - "minute" - } - - ", and " - var { - - "second" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Let " - var { - - "date" - } - - " be the date with year " - var { - - "year" - } - - ", month " - var { - - "month" - } - - ", and day " - var { - - "day" - } - - "." - } - } - li { - p { - - "Let " - var { - - "time" - } - - " be the time with hour " - var { - - "hour" - } - - ", minute " - var { - - "minute" - } - - ", and second " - var { - - "second" - } - - "." - } - } - li { - p { - - "Return " - var { - - "date" - } - - " and " - var { - - "time" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="time-zones" { - span class="secno" { - - "2.3.5.6" - } - - " Time zones" - a href="#time-zones" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-timezone" { - - "time-zone offset" - } - - " consists of a signed number of hours and\n minutes." - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-time-zone-offset-string" { - - "valid time-zone offset string" - } - - " representing a time-zone offset if it\n consists of either:" - } - - "\n\n\n " - ul { - li { - p { - - "A U+005A LATIN CAPITAL LETTER Z character (Z), allowed only if the time zone is\n UTC" - } - } - li { - - "\n " - p { - - "Or, the following components, in the given order:" - } - - "\n\n " - ol { - li { - - "Either a U+002B PLUS SIGN character (+) or, if the time-zone offset is not zero, a U+002D\n HYPHEN-MINUS character (-), representing the sign of the time-zone offset" - } - li { - - "Two " - a id="time-zones:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the hours component " - var { - - "hour" - } - - " of\n the time-zone offset, in the range 0 ≤ " - var { - - "hour" - } - - " ≤ 23" - } - li { - - "Optionally, a U+003A COLON character (:)" - } - li { - - "Two " - a id="time-zones:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the minutes component " - var { - - "minute" - } - - " of the time-zone offset, in the range 0 ≤ " - var { - - "minute" - } - - " ≤ 59" - } - } - - "\n " - } - } - - "\n\n " - p class="note" { - - "This format allows for time-zone offsets from -23:59 to +23:59. Right now, in\n practice, the range of offsets of actual time zones is -12:00 to +14:00, and the minutes component\n of offsets of actual time zones is always either 00, 30, or 45. There is no guarantee that this\n will remain so forever, however, since time zones are used as political footballs and are thus\n subject to very whimsical policy decisions." - } - - "\n\n " - p class="note" { - - "See also the usage notes and examples in the " - a href="#concept-datetime" id="time-zones:concept-datetime" { - - "global\n date and time" - } - - " section below for details on using time-zone offsets with historical times\n that predate the formation of formal time zones." - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-time-zone-offset-string" { - - "parse a time-zone offset string" - } - - " are as follows. This will return either\n a time-zone offset, or nothing. If at any point the algorithm says that it \"fails\", this means\n that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-time-zone-offset-component" id="time-zones:parse-a-time-zone-offset-component" { - - "Parse a time-zone offset component" - } - - " to obtain " - var { - - "timezone" - sub { - - "hours" - } - } - - " and " - var { - - "timezone" - sub { - - "minutes" - } - } - - ". If this\n returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Return the time-zone offset that is " - var { - - "timezone" - sub { - - "hours" - } - } - - "\n hours and " - var { - - "timezone" - sub { - - "minutes" - } - } - - " minutes from UTC." - } - } - } - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-time-zone-offset-component" { - - "parse a time-zone offset component" - } - - ", given an " - var { - - "input" - } - - "\n string and a " - var { - - "position" - } - - ", are as follows. This will return either time-zone hours\n and time-zone minutes, or nothing. If at any point the algorithm says that it \"fails\", this means\n that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - - "\n " - p { - - "If the character at " - var { - - "position" - } - - " is a U+005A LATIN CAPITAL LETTER Z character\n (Z), then:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "timezone" - sub { - - "hours" - } - } - - " be 0." - } - } - li { - p { - - "Let " - var { - - "timezone" - sub { - - "minutes" - } - } - - " be 0." - } - } - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character in " - var { - - "input" - } - - "." - } - } - } - - "\n\n " - p { - - "Otherwise, if the character at " - var { - - "position" - } - - " is either a U+002B PLUS SIGN (+)\n or a U+002D HYPHEN-MINUS (-), then:" - } - - "\n\n " - ol { - li { - p { - - "If the character at " - var { - - "position" - } - - " is a U+002B PLUS SIGN (+), let " - var { - - "sign" - } - - " be \"positive\". Otherwise, it's a U+002D HYPHEN-MINUS (-); let " - var { - - "sign" - } - - " be \"negative\"." - } - } - li { - p { - - "Advance " - var { - - "position" - } - - " to the next character in " - var { - - "input" - } - - "." - } - } - li { - p { - a id="time-zones:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="time-zones:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". Let " - var { - - "s" - } - - " be the collected\n sequence." - } - } - li { - - "\n " - p { - - "If " - var { - - "s" - } - - " is exactly two characters long, then:" - } - - "\n\n " - ol { - li { - p { - - "Interpret " - var { - - "s" - } - - " as a base-ten integer. Let that number be the " - var { - - "timezone" - sub { - - "hours" - } - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if\n the character at " - var { - - "position" - } - - " is not a U+003A COLON character, then fail.\n Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="time-zones:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="time-zones:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten\n integer. Let that number be the " - var { - - "timezone" - sub { - - "minutes" - } - } - - "." - } - } - } - - "\n\n " - p { - - "If " - var { - - "s" - } - - " is exactly four characters long, then:" - } - - "\n\n " - ol { - li { - p { - - "Interpret the first two characters of " - var { - - "s" - } - - " as a base-ten integer. Let\n that number be the " - var { - - "timezone" - sub { - - "hours" - } - } - - "." - } - } - li { - p { - - "Interpret the last two characters of " - var { - - "s" - } - - " as a base-ten integer. Let\n that number be the " - var { - - "timezone" - sub { - - "minutes" - } - } - - "." - } - } - } - - "\n\n " - p { - - "Otherwise, fail." - } - - "\n " - } - li { - - "If " - var { - - "timezone" - sub { - - "hours" - } - } - - " is not a number in the range\n 0 ≤ " - var { - - "timezone" - sub { - - "hours" - } - } - - " ≤ 23, then\n fail." - } - li { - - "If " - var { - - "sign" - } - - " is \"negative\", then negate " - var { - - "timezone" - sub { - - "hours" - } - } - - "." - } - li { - - "If " - var { - - "timezone" - sub { - - "minutes" - } - } - - " is not a number in the range\n 0 ≤ " - var { - - "timezone" - sub { - - "minutes" - } - } - - " ≤ 59,\n then fail." - } - li { - - "If " - var { - - "sign" - } - - " is \"negative\", then negate " - var { - - "timezone" - sub { - - "minutes" - } - } - - "." - } - } - - "\n\n " - p { - - "Otherwise, fail." - } - - "\n " - } - li { - p { - - "Return " - var { - - "timezone" - sub { - - "hours" - } - } - - " and " - var { - - "timezone" - sub { - - "minutes" - } - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="global-dates-and-times" { - span class="secno" { - - "2.3.5.7" - } - - " Global dates and times" - a href="#global-dates-and-times" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-datetime" { - - "global date and time" - } - - " consists of a specific\n " - a href="#proleptic-gregorian-date" id="global-dates-and-times:proleptic-gregorian-date" { - - "proleptic-Gregorian date" - } - - ", consisting of a year, a month, and a day, and a time,\n consisting of an hour, a minute, a second, and a fraction of a second, expressed with a time-zone\n offset, consisting of a signed number of hours and minutes. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-global-date-and-time-string" { - - "valid global date and time string" - } - - " representing a date, time, and a\n time-zone offset if it consists of the following components in the given order:" - } - - "\n\n " - ol { - li { - - "A " - a href="#valid-date-string" id="global-dates-and-times:valid-date-string" { - - "valid date string" - } - - " representing the date" - } - li { - - "A U+0054 LATIN CAPITAL LETTER T character (T) or a U+0020 SPACE character" - } - li { - - "A " - a href="#valid-time-string" id="global-dates-and-times:valid-time-string" { - - "valid time string" - } - - " representing the time" - } - li { - - "A " - a href="#valid-time-zone-offset-string" id="global-dates-and-times:valid-time-zone-offset-string" { - - "valid time-zone offset string" - } - - " representing the time-zone offset" - } - } - - "\n\n " - p { - - "Times in dates before the formation of UTC in the mid-twentieth century must be expressed and\n interpreted in terms of UT1 (contemporary Earth solar time at the 0° longitude), not UTC (the\n approximation of UT1 that ticks in SI seconds). Time before the formation of time zones must be\n expressed and interpreted as UT1 times with explicit time zones that approximate the contemporary\n difference between the appropriate local time and the time observed at the location of Greenwich,\n London." - } - - "\n\n " - div class="example" { - - "\n\n " - p { - - "The following are some examples of dates written as " - a href="#valid-global-date-and-time-string" id="global-dates-and-times:valid-global-date-and-time-string" { - - "valid global date and time strings" - } - - "." - } - - "\n\n " - dl { - dt { - - "\"" - code { - - "0037-12-13 00:00Z" - } - - "\"" - } - dd { - - "Midnight in areas using London time on the birthday of Nero (the Roman Emperor). See below\n for further discussion on which date this actually corresponds to." - } - dt { - - "\"" - code { - - "1979-10-14T12:00:00.001-04:00" - } - - "\"" - } - dd { - - "One millisecond after noon on October 14th 1979, in the time zone in use on the east coast\n of the USA during daylight saving time." - } - dt { - - "\"" - code { - - "8592-01-01T02:09+02:09" - } - - "\"" - } - dd { - - "Midnight UTC on the 1st of January, 8592. The time zone associated with that time is two\n hours and nine minutes ahead of UTC, which is not currently a real time zone, but is nonetheless\n allowed." - } - } - - "\n\n " - p { - - "Several things are notable about these dates:" - } - - "\n\n " - ul { - li { - - "Years with fewer than four digits have to be zero-padded. The date \"37-12-13\" would not be a\n valid date." - } - li { - - "If the \"" - code { - - "T" - } - - "\" is replaced by a space, it must be a single space\n character. The string \"" - code { - - "2001-12-21  12:00Z" - } - - "\" (with two spaces\n between the components) would not be parsed successfully." - } - li { - - "To unambiguously identify a moment in time prior to the introduction of the Gregorian\n calendar (insofar as moments in time before the formation of UTC can be unambiguously\n identified), the date has to be first converted to the Gregorian calendar from the calendar in\n use at the time (e.g. from the Julian calendar). The date of Nero's birth is the 15th of\n December 37, in the Julian Calendar, which is the 13th of December 37 in the " - a href="#proleptic-gregorian-calendar" id="global-dates-and-times:proleptic-gregorian-calendar" { - - "proleptic\n Gregorian calendar" - } - - "." - } - li { - - "The time and time-zone offset components are not optional." - } - li { - - "Dates before the year one can't be represented as a datetime in this version of HTML." - } - li { - - "Times of specific events in ancient times are, at best, approximations, since time was not\n well coordinated or measured until relatively recent decades." - } - li { - - "Time-zone offsets differ based on daylight saving time." - } - } - - "\n\n " - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-global-date-and-time-string" { - - "parse a global date and time string" - } - - " are as follows. This will return\n either a time in UTC, with associated time-zone offset information for round-tripping or display\n purposes, or nothing. If at any point the algorithm says that it \"fails\", this means that it is\n aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a href="#parse-a-date-component" id="global-dates-and-times:parse-a-date-component" { - - "Parse a date component" - } - - " to obtain " - var { - - "year" - } - - ", " - var { - - "month" - } - - ", and " - var { - - "day" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is neither a U+0054 LATIN CAPITAL LETTER T character\n (T) nor a U+0020 SPACE character, then fail. Otherwise, move " - var { - - "position" - } - - "\n forwards one character." - } - } - li { - p { - a href="#parse-a-time-component" id="global-dates-and-times:parse-a-time-component" { - - "Parse a time component" - } - - " to obtain " - var { - - "hour" - } - - ", " - var { - - "minute" - } - - ", and " - var { - - "second" - } - - ". If this returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - ", then\n fail." - } - } - li { - p { - a href="#parse-a-time-zone-offset-component" id="global-dates-and-times:parse-a-time-zone-offset-component" { - - "Parse a time-zone offset component" - } - - " to obtain " - var { - - "timezone" - sub { - - "hours" - } - } - - " and " - var { - - "timezone" - sub { - - "minutes" - } - } - - ". If this\n returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Let " - var { - - "time" - } - - " be the moment in time at year " - var { - - "year" - } - - ", month\n " - var { - - "month" - } - - ", day " - var { - - "day" - } - - ", hours " - var { - - "hour" - } - - ", minute\n " - var { - - "minute" - } - - ", second " - var { - - "second" - } - - ", subtracting " - var { - - "timezone" - sub { - - "hours" - } - } - - " hours and " - var { - - "timezone" - sub { - - "minutes" - } - } - - " minutes. That moment in time is a moment in the UTC time\n zone." - } - } - li { - p { - - "Let " - var { - - "timezone" - } - - " be " - var { - - "timezone" - sub { - - "hours" - } - } - - "\n hours and " - var { - - "timezone" - sub { - - "minutes" - } - } - - " minutes from UTC." - } - } - li { - p { - - "Return " - var { - - "time" - } - - " and " - var { - - "timezone" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="weeks" { - span class="secno" { - - "2.3.5.8" - } - - " Weeks" - a href="#weeks" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="concept-week" { - - "week" - } - - " consists of a week-year number and a week number\n representing a seven-day period starting on a Monday. Each week-year in this calendaring system\n has either 52 or 53 such seven-day periods, as defined below. The seven-day period starting on the\n Gregorian date Monday December 29th 1969 (1969-12-29) is defined as week number 1 in week-year\n 1970. Consecutive weeks are numbered sequentially. The week before the number 1 week in a\n week-year is the last week in the previous week-year, and vice versa. " - a href="#refsGREGORIAN" { - - "[GREGORIAN]" - } - } - - "\n\n " - p { - - "A week-year with a number " - var { - - "year" - } - - " has 53 weeks if it corresponds to either a\n year " - var { - - "year" - } - - " in the " - a href="#proleptic-gregorian-calendar" id="weeks:proleptic-gregorian-calendar" { - - "proleptic Gregorian calendar" - } - - " that has a Thursday\n as its first day (January 1st), or a year " - var { - - "year" - } - - " in the " - a href="#proleptic-gregorian-calendar" id="weeks:proleptic-gregorian-calendar-2" { - - "proleptic\n Gregorian calendar" - } - - " that has a Wednesday as its first day (January 1st) and where " - var { - - "year" - } - - " is a number divisible by 400, or a number divisible by 4 but not by 100. All\n other week-years have 52 weeks." - } - - "\n\n " - p { - - "The " - dfn id="week-number-of-the-last-day" { - - "week number of the last day" - } - - " of a week-year with 53 weeks is 53; the week number\n of the last day of a week-year with 52 weeks is 52." - } - - "\n\n " - p class="note" { - - "The week-year number of a particular day can be different than the number of the\n year that contains that day in the " - a href="#proleptic-gregorian-calendar" id="weeks:proleptic-gregorian-calendar-3" { - - "proleptic Gregorian calendar" - } - - ". The first week in a\n week-year " - var { - - "y" - } - - " is the week that contains the first Thursday of the Gregorian year\n " - var { - - "y" - } - - "." - } - - "\n\n " - p class="note" { - - "For modern purposes, a " - a href="#concept-week" id="weeks:concept-week" { - - "week" - } - - " as defined here is\n equivalent to ISO weeks as defined in ISO 8601. " - a href="#refsISO8601" { - - "[ISO8601]" - } - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-week-string" { - - "valid week string" - } - - " representing a week-year " - var { - - "year" - } - - "\n and week " - var { - - "week" - } - - " if it consists of the following components in the given\n order:" - } - - "\n\n " - ol { - li { - - "Four or more " - a id="weeks:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing " - var { - - "year" - } - - ", where " - var { - - "year" - } - - " > 0" - } - li { - - "A U+002D HYPHEN-MINUS character (-)" - } - li { - - "A U+0057 LATIN CAPITAL LETTER W character (W)" - } - li { - - "Two " - a id="weeks:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing the week " - var { - - "week" - } - - ", in the range\n 1 ≤ " - var { - - "week" - } - - " ≤ " - var { - - "maxweek" - } - - ", where " - var { - - "maxweek" - } - - " is the " - a href="#week-number-of-the-last-day" id="weeks:week-number-of-the-last-day" { - - "week number of the last day" - } - - " of week-year " - var { - - "year" - } - } - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-week-string" { - - "parse a week string" - } - - " are as follows. This will return either a week-year\n number and week number, or nothing. If at any point the algorithm says that it \"fails\", this means\n that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - a id="weeks:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="weeks:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not at least four\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "year" - } - - "." - } - } - li { - p { - - "If " - var { - - "year" - } - - " is not a number greater than zero, then fail." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+002D HYPHEN-MINUS character, then fail.\n Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or if the\n character at " - var { - - "position" - } - - " is not a U+0057 LATIN CAPITAL LETTER W character (W),\n then fail. Otherwise, move " - var { - - "position" - } - - " forwards one character." - } - } - li { - p { - a id="weeks:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="weeks:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". If the collected sequence is not exactly two\n characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer.\n Let that number be the " - var { - - "week" - } - - "." - } - } - li { - p { - - "Let " - var { - - "maxweek" - } - - " be the " - a href="#week-number-of-the-last-day" id="weeks:week-number-of-the-last-day-2" { - - "week number of the last day" - } - - " of year\n " - var { - - "year" - } - - "." - } - } - li { - p { - - "If " - var { - - "week" - } - - " is not a number in the range 1 ≤ " - var { - - "week" - } - - " ≤ " - var { - - "maxweek" - } - - ", then fail." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - p { - - "Return the week-year number " - var { - - "year" - } - - " and the week number " - var { - - "week" - } - - "." - } - } - } - - "\n\n \n\n\n " - h5 id="durations" { - span class="secno" { - - "2.3.5.9" - } - - " Durations" - a href="#durations" class="self-link" - } - - "\n\n \n\n " - p { - - "A " - dfn id="concept-duration" { - - "duration" - } - - " consists of a number of seconds." - } - - "\n\n " - p class="note" { - - "Since months and seconds are not comparable (a month is not a precise number of\n seconds, but is instead a period whose exact length depends on the precise day from which it is\n measured) a " - a href="#concept-duration" id="durations:concept-duration" { - - "duration" - } - - " as defined in this specification cannot\n include months (or years, which are equivalent to\n twelve months). Only durations that describe a specific number of seconds can be described." - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-duration-string" { - - "valid duration string" - } - - " representing a " - a href="#concept-duration" id="durations:concept-duration-2" { - - "duration" - } - - " " - var { - - "t" - } - - " if it consists of either of the\n following:" - } - - "\n\n " - ul { - li { - - "\n \n\n \n\n " - p { - - "A literal U+0050 LATIN CAPITAL LETTER P character followed by one or more of the following\n subcomponents, in the order given, where the number of days, hours, minutes, and\n seconds corresponds to the same number of seconds as in " - var { - - "t" - } - - ":" - } - - "\n\n " - ol { - li { - p { - - "One or more " - a id="durations:ascii-digits" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " followed by a U+0044 LATIN CAPITAL LETTER D\n character, representing a number of days." - } - } - li { - - "\n " - p { - - "A U+0054 LATIN CAPITAL LETTER T character followed by one or more of the following\n subcomponents, in the order given:" - } - - "\n\n " - ol { - li { - p { - - "One or more " - a id="durations:ascii-digits-2" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " followed by a U+0048 LATIN CAPITAL LETTER H\n character, representing a number of hours." - } - } - li { - p { - - "One or more " - a id="durations:ascii-digits-3" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " followed by a U+004D LATIN CAPITAL LETTER M\n character, representing a number of minutes." - } - } - li { - - "\n " - p { - - "The following components:" - } - - "\n\n " - ol { - li { - p { - - "One or more " - a id="durations:ascii-digits-4" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing a number of seconds." - } - } - li { - p { - - "Optionally, a U+002E FULL STOP character (.) followed by one, two, or three\n " - a id="durations:ascii-digits-5" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing a fraction of a second." - } - } - li { - p { - - "A U+0053 LATIN CAPITAL LETTER S character." - } - } - } - - "\n " - } - } - - "\n " - } - } - - "\n\n " - p class="note" { - - "This, as with a number of other date- and time-related microsyntaxes defined in\n this specification, is based on one of the formats defined in ISO 8601. " - a href="#refsISO8601" { - - "[ISO8601]" - } - } - - "\n " - } - li { - - "\n " - p { - - "One or more " - a href="#duration-time-component" id="durations:duration-time-component" { - - "duration time components" - } - - ", each with\n a different " - a href="#duration-time-component-scale" id="durations:duration-time-component-scale" { - - "duration time component scale" - } - - ", in any order; the sum of the represented\n seconds being equal to the number of seconds in " - var { - - "t" - } - - "." - } - - "\n\n " - p { - - "A " - dfn id="duration-time-component" { - - "duration time component" - } - - " is a string consisting of the following components:" - } - - "\n\n " - ol { - li { - p { - - "Zero or more " - a id="durations:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "." - } - } - li { - p { - - "One or more " - a id="durations:ascii-digits-6" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing a number of time units, scaled by\n the " - a href="#duration-time-component-scale" id="durations:duration-time-component-scale-2" { - - "duration time component scale" - } - - " specified (see below) to represent a number of\n seconds." - } - } - li { - p { - - "If the " - a href="#duration-time-component-scale" id="durations:duration-time-component-scale-3" { - - "duration time component scale" - } - - " specified is 1 (i.e. the units are\n seconds), then, optionally, a U+002E FULL STOP character (.) followed by one, two, or three\n " - a id="durations:ascii-digits-7" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - ", representing a fraction of a second." - } - } - li { - p { - - "Zero or more " - a id="durations:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "." - } - } - li { - - "\n " - p { - - "One of the following characters, representing the " - dfn id="duration-time-component-scale" { - - "duration time component scale" - } - - "\n of the time unit used in the numeric part of the " - a href="#duration-time-component" id="durations:duration-time-component-2" { - - "duration time component" - } - - ":" - } - - "\n\n " - dl { - dt { - - "U+0057 LATIN CAPITAL LETTER W character" - } - dt { - - "U+0077 LATIN SMALL LETTER W character" - } - dd { - - "Weeks. The scale is 604800." - } - dt { - - "U+0044 LATIN CAPITAL LETTER D character" - } - dt { - - "U+0064 LATIN SMALL LETTER D character" - } - dd { - - "Days. The scale is 86400." - } - dt { - - "U+0048 LATIN CAPITAL LETTER H character" - } - dt { - - "U+0068 LATIN SMALL LETTER H character" - } - dd { - - "Hours. The scale is 3600." - } - dt { - - "U+004D LATIN CAPITAL LETTER M character" - } - dt { - - "U+006D LATIN SMALL LETTER M character" - } - dd { - - "Minutes. The scale is 60." - } - dt { - - "U+0053 LATIN CAPITAL LETTER S character" - } - dt { - - "U+0073 LATIN SMALL LETTER S character" - } - dd { - - "Seconds. The scale is 1." - } - } - - "\n " - } - li { - p { - - "Zero or more " - a id="durations:space-characters-3" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "." - } - } - } - - "\n\n " - p class="note" { - - "This is not based on any of the formats in ISO 8601. It is intended to be a more\n human-readable alternative to the ISO 8601 duration format." - } - - "\n " - } - } - - "\n\n \n\n " - p { - - "The rules to " - dfn id="parse-a-duration-string" { - - "parse a duration string" - } - - " are as follows. This will return either a " - a href="#concept-duration" id="durations:concept-duration-3" { - - "duration" - } - - " or nothing. If at any point the algorithm says that it\n \"fails\", this means that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - - "Let " - var { - - "months" - } - - ", " - var { - - "seconds" - } - - ", and " - var { - - "component\n count" - } - - " all be zero." - } - } - li { - - "\n " - p { - - "Let " - var { - - "M-disambiguator" - } - - " be " - i { - - "minutes" - } - - "." - } - - "\n\n \n " - p class="note" { - - "This flag's other value is " - i { - - "months" - } - - ". It is used to disambiguate the \"M\"\n unit in ISO8601 durations, which use the same unit for months and minutes. Months are not\n allowed, but are parsed for future compatibility and to avoid misinterpreting ISO8601 durations\n that would be valid in other contexts." - } - - "\n " - } - li { - p { - a id="durations:skip-ascii-whitespace" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then\n fail." - } - } - li { - p { - - "If the character in " - var { - - "input" - } - - " pointed to by " - var { - - "position" - } - - " is a U+0050 LATIN\n CAPITAL LETTER P character, then advance " - var { - - "position" - } - - " to the next character, set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "months" - } - - ", and " - a id="durations:skip-ascii-whitespace-2" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "skip ASCII whitespace" - } - - " within\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - "." - } - } - li { - - "\n " - p { - - "While true:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "units" - } - - " be undefined. It will be assigned one of the following\n values: " - i { - - "years" - } - - ", " - i { - - "months" - } - - ", " - i { - - "weeks" - } - - ", " - i { - - "days" - } - - ", " - i { - - "hours" - } - - ", " - i { - - "minutes" - } - - ",\n and " - i { - - "seconds" - } - - "." - } - } - li { - p { - - "Let " - var { - - "next character" - } - - " be undefined. It is used to process characters\n from the " - var { - - "input" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then break." - } - } - li { - p { - - "If the character in " - var { - - "input" - } - - " pointed to by " - var { - - "position" - } - - " is a U+0054 LATIN\n CAPITAL LETTER T character, then advance " - var { - - "position" - } - - " to the next character, set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "minutes" - } - - ", " - a id="durations:skip-ascii-whitespace-3" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "skip ASCII whitespace" - } - - " within\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", and " - a id="durations:continue" href="https://infra.spec.whatwg.org/#iteration-continue" data-x-internal="continue" { - - "continue" - } - - "." - } - } - li { - p { - - "Set " - var { - - "next character" - } - - " to the character in " - var { - - "input" - } - - "\n pointed to by " - var { - - "position" - } - - "." - } - } - li { - - "\n " - p { - - "If " - var { - - "next character" - } - - " is a U+002E FULL STOP character (.), then let " - var { - - "N" - } - - " equal zero. (Do not advance " - var { - - "position" - } - - ". That is taken care\n of below.)" - } - - "\n\n " - p { - - "Otherwise, if " - var { - - "next character" - } - - " is an " - a href="https://infra.spec.whatwg.org/#ascii-digit" id="durations:ascii-digits-8" data-x-internal="ascii-digits" { - - "ASCII\n digit" - } - - ", then " - a id="durations:collect-a-sequence-of-code-points" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "collect a sequence of code points" - } - - " that are " - a id="durations:ascii-digits-9" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII\n digits" - } - - " from " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", interpret the resulting\n sequence as a base-ten integer, and let " - var { - - "N" - } - - " be that number." - } - - "\n\n " - p { - - "Otherwise, " - var { - - "next character" - } - - " is not part of a number; fail." - } - - "\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then\n fail." - } - } - li { - p { - - "Set " - var { - - "next character" - } - - " to the character in " - var { - - "input" - } - - "\n pointed to by " - var { - - "position" - } - - ", and this time advance " - var { - - "position" - } - - "\n to the next character. (If " - var { - - "next character" - } - - " was a U+002E FULL STOP character\n (.) before, it will still be that character this time.)" - } - } - li { - - "\n " - p { - - "If " - var { - - "next character" - } - - " is U+002E (.), then:" - } - - "\n\n " - ol { - li { - p { - a id="durations:collect-a-sequence-of-code-points-2" href="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points" data-x-internal="collect-a-sequence-of-code-points" { - - "Collect a sequence of code points" - } - - " that are " - a id="durations:ascii-digits-10" href="https://infra.spec.whatwg.org/#ascii-digit" data-x-internal="ascii-digits" { - - "ASCII digits" - } - - " from\n " - var { - - "input" - } - - " given " - var { - - "position" - } - - ". Let " - var { - - "s" - } - - " be the resulting\n sequence." - } - } - li { - p { - - "If " - var { - - "s" - } - - " is the empty string, then fail." - } - } - li { - p { - - "Let " - var { - - "length" - } - - " be the number of characters in " - var { - - "s" - } - - "." - } - } - li { - p { - - "Let " - var { - - "fraction" - } - - " be the result of interpreting " - var { - - "s" - } - - "\n as a base-ten integer, and then dividing that number by " - span { - - "10" - sup { - var { - - "length" - } - } - } - - "." - } - } - li { - p { - - "Increment " - var { - - "N" - } - - " by " - var { - - "fraction" - } - - "." - } - } - li { - p { - a id="durations:skip-ascii-whitespace-4" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - li { - p { - - "If " - var { - - "position" - } - - " is past the end of " - var { - - "input" - } - - ", then\n fail." - } - } - li { - p { - - "Set " - var { - - "next character" - } - - " to the character in " - var { - - "input" - } - - "\n pointed to by " - var { - - "position" - } - - ", and advance " - var { - - "position" - } - - " to the\n next character." - } - } - li { - p { - - "If " - var { - - "next character" - } - - " is neither a U+0053 LATIN CAPITAL LETTER S\n character nor a U+0073 LATIN SMALL LETTER S character, then fail." - } - } - li { - p { - - "Set " - var { - - "units" - } - - " to " - i { - - "seconds" - } - - "." - } - } - } - - "\n\n " - p { - - "Otherwise:" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "next character" - } - - " is " - a id="durations:space-characters-4" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ", then " - a id="durations:skip-ascii-whitespace-5" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "skip ASCII\n whitespace" - } - - " within " - var { - - "input" - } - - " given " - var { - - "position" - } - - ", set " - var { - - "next\n character" - } - - " to the character in " - var { - - "input" - } - - " pointed to by " - var { - - "position" - } - - ", and\n advance " - var { - - "position" - } - - " to the next character." - } - } - li { - - "\n \n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+0059 LATIN CAPITAL LETTER Y character, or a\n U+0079 LATIN SMALL LETTER Y character, set " - var { - - "units" - } - - " to " - i { - - "years" - } - - " and set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "months" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+004D LATIN CAPITAL LETTER M character or a\n U+006D LATIN SMALL LETTER M character, and " - var { - - "M-disambiguator" - } - - " is\n " - i { - - "months" - } - - ", then set " - var { - - "units" - } - - " to " - i { - - "months" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+0057 LATIN CAPITAL LETTER W character or a\n U+0077 LATIN SMALL LETTER W character, set " - var { - - "units" - } - - " to " - i { - - "weeks" - } - - " and set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "minutes" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+0044 LATIN CAPITAL LETTER D character or a\n U+0064 LATIN SMALL LETTER D character, set " - var { - - "units" - } - - " to " - i { - - "days" - } - - " and set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "minutes" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+0048 LATIN CAPITAL LETTER H character or a\n U+0068 LATIN SMALL LETTER H character, set " - var { - - "units" - } - - " to " - i { - - "hours" - } - - " and set\n " - var { - - "M-disambiguator" - } - - " to " - i { - - "minutes" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+004D LATIN CAPITAL LETTER M character or a\n U+006D LATIN SMALL LETTER M character, and " - var { - - "M-disambiguator" - } - - " is\n " - i { - - "minutes" - } - - ", then set " - var { - - "units" - } - - " to " - i { - - "minutes" - } - - "." - } - - "\n\n " - p { - - "If " - var { - - "next character" - } - - " is a U+0053 LATIN CAPITAL LETTER S character or a\n U+0073 LATIN SMALL LETTER S character, set " - var { - - "units" - } - - " to " - i { - - "seconds" - } - - " and\n set " - var { - - "M-disambiguator" - } - - " to " - i { - - "minutes" - } - - "." - } - - "\n\n " - p { - - "Otherwise, if " - var { - - "next character" - } - - " is none of the above characters, then\n fail." - } - - "\n " - } - } - - "\n " - } - li { - p { - - "Increment " - var { - - "component count" - } - - "." - } - } - li { - p { - - "Let " - var { - - "multiplier" - } - - " be 1." - } - } - li { - p { - - "If " - var { - - "units" - } - - " is " - i { - - "years" - } - - ", multiply " - var { - - "multiplier" - } - - " by\n 12 and set " - var { - - "units" - } - - " to " - i { - - "months" - } - - "." - } - } - li { - - "\n " - p { - - "If " - var { - - "units" - } - - " is " - i { - - "months" - } - - ", add the product of " - var { - - "N" - } - - " and\n " - var { - - "multiplier" - } - - " to " - var { - - "months" - } - - "." - } - - "\n\n " - p { - - "Otherwise:" - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "units" - } - - " is " - i { - - "weeks" - } - - ", multiply " - var { - - "multiplier" - } - - "\n by 7 and set " - var { - - "units" - } - - " to " - i { - - "days" - } - - "." - } - } - li { - p { - - "If " - var { - - "units" - } - - " is " - i { - - "days" - } - - ", multiply " - var { - - "multiplier" - } - - "\n by 24 and set " - var { - - "units" - } - - " to " - i { - - "hours" - } - - "." - } - } - li { - p { - - "If " - var { - - "units" - } - - " is " - i { - - "hours" - } - - ", multiply " - var { - - "multiplier" - } - - "\n by 60 and set " - var { - - "units" - } - - " to " - i { - - "minutes" - } - - "." - } - } - li { - p { - - "If " - var { - - "units" - } - - " is " - i { - - "minutes" - } - - ", multiply " - var { - - "multiplier" - } - - " by 60 and set " - var { - - "units" - } - - " to " - i { - - "seconds" - } - - "." - } - } - li { - p { - - "Forcibly, " - var { - - "units" - } - - " is now " - i { - - "seconds" - } - - ". Add the product of " - var { - - "N" - } - - " and " - var { - - "multiplier" - } - - " to " - var { - - "seconds" - } - - "." - } - } - } - - "\n " - } - li { - p { - a id="durations:skip-ascii-whitespace-6" href="https://infra.spec.whatwg.org/#skip-ascii-whitespace" data-x-internal="skip-ascii-whitespace" { - - "Skip ASCII whitespace" - } - - " within " - var { - - "input" - } - - " given\n " - var { - - "position" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "If " - var { - - "component count" - } - - " is zero,\n fail." - } - } - li { - p { - - "If " - var { - - "months" - } - - " is not zero, fail." - } - } - li { - p { - - "Return the " - a href="#concept-duration" id="durations:concept-duration-4" { - - "duration" - } - - " consisting of " - var { - - "seconds" - } - - " seconds." - } - } - } - - "\n\n \n\n\n " - h5 id="vaguer-moments-in-time" { - span class="secno" { - - "2.3.5.10" - } - - " Vaguer moments in time" - a href="#vaguer-moments-in-time" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-date-string-with-optional-time" { - - "valid date string with optional time" - } - - " if\n it is also one of the following:" - } - - "\n\n " - ul { - li { - - "A " - a href="#valid-date-string" id="vaguer-moments-in-time:valid-date-string" { - - "valid date string" - } - } - li { - - "A " - a href="#valid-global-date-and-time-string" id="vaguer-moments-in-time:valid-global-date-and-time-string" { - - "valid global date and time string" - } - } - } - - "\n\n \n\n " - hr - - "\n\n " - p { - - "The rules to " - dfn id="parse-a-date-or-time-string" { - - "parse a date or time string" - } - - " are as follows. The algorithm will return\n either a " - a href="#concept-date" id="vaguer-moments-in-time:concept-date" { - - "date" - } - - ", a " - a href="#concept-time" id="vaguer-moments-in-time:concept-time" { - - "time" - } - - ", a " - a href="#concept-datetime" id="vaguer-moments-in-time:concept-datetime" { - - "global date and time" - } - - ", or nothing. If at any point the algorithm\n says that it \"fails\", this means that it is aborted at that point and returns nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "input" - } - - " be the string being parsed." - } - } - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "input" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - - "Set " - var { - - "start position" - } - - " to the same position as " - var { - - "position" - } - - "." - } - } - li { - p { - - "Set the " - var { - - "date present" - } - - " and " - var { - - "time present" - } - - " flags to\n true." - } - } - li { - p { - a href="#parse-a-date-component" id="vaguer-moments-in-time:parse-a-date-component" { - - "Parse a date component" - } - - " to obtain " - var { - - "year" - } - - ", " - var { - - "month" - } - - ", and " - var { - - "day" - } - - ". If this fails, then set the " - var { - - "date\n present" - } - - " flag to false." - } - - "\n\n " - } - li { - - "\n " - p { - - "If " - var { - - "date present" - } - - " is true, and " - var { - - "position" - } - - " is not beyond\n the end of " - var { - - "input" - } - - ", and the character at " - var { - - "position" - } - - " is\n either a U+0054 LATIN CAPITAL LETTER T character (T) or a U+0020 SPACE character, then advance\n " - var { - - "position" - } - - " to the next character in " - var { - - "input" - } - - "." - } - - "\n\n " - p { - - "Otherwise, if " - var { - - "date present" - } - - " is true, and either " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - " or the character at " - var { - - "position" - } - - " is neither a U+0054 LATIN CAPITAL LETTER T character (T) nor a U+0020\n SPACE character, then set " - var { - - "time present" - } - - " to false." - } - - "\n\n " - p { - - "Otherwise, if " - var { - - "date present" - } - - " is false, set " - var { - - "position" - } - - "\n back to the same position as " - var { - - "start position" - } - - "." - } - - "\n " - } - li { - p { - - "If the " - var { - - "time present" - } - - " flag is true, then " - a href="#parse-a-time-component" id="vaguer-moments-in-time:parse-a-time-component" { - - "parse a time\n component" - } - - " to obtain " - var { - - "hour" - } - - ", " - var { - - "minute" - } - - ", and " - var { - - "second" - } - - ". If this returns nothing, then fail." - } - } - li { - p { - - "If the " - var { - - "date present" - } - - " and " - var { - - "time present" - } - - " flags are\n both true, but " - var { - - "position" - } - - " is beyond the end of " - var { - - "input" - } - - ", then\n fail." - } - } - li { - p { - - "If the " - var { - - "date present" - } - - " and " - var { - - "time present" - } - - " flags are\n both true, " - a href="#parse-a-time-zone-offset-component" id="vaguer-moments-in-time:parse-a-time-zone-offset-component" { - - "parse a time-zone offset component" - } - - " to obtain " - var { - - "timezone" - sub { - - "hours" - } - } - - " and " - var { - - "timezone" - sub { - - "minutes" - } - } - - ". If this\n returns nothing, then fail." - } - - "\n\n " - } - li { - p { - - "If " - var { - - "position" - } - - " is " - em { - - "not" - } - - " beyond the end of " - var { - - "input" - } - - ", then fail." - } - } - li { - - "\n " - p { - - "If the " - var { - - "date present" - } - - " flag is true and the " - var { - - "time present" - } - - "\n flag is false, then let " - var { - - "date" - } - - " be the date with year " - var { - - "year" - } - - ",\n month " - var { - - "month" - } - - ", and day " - var { - - "day" - } - - ", and return " - var { - - "date" - } - - "." - } - - "\n\n " - p { - - "Otherwise, if the " - var { - - "time present" - } - - " flag is true and the " - var { - - "date\n present" - } - - " flag is false, then let " - var { - - "time" - } - - " be the time with hour " - var { - - "hour" - } - - ", minute " - var { - - "minute" - } - - ", and second " - var { - - "second" - } - - ",\n and return " - var { - - "time" - } - - "." - } - - "\n\n " - p { - - "Otherwise, let " - var { - - "time" - } - - " be the moment in time at year " - var { - - "year" - } - - ", month " - var { - - "month" - } - - ", day " - var { - - "day" - } - - ", hours " - var { - - "hour" - } - - ", minute " - var { - - "minute" - } - - ", second " - var { - - "second" - } - - ",\n subtracting " - var { - - "timezone" - sub { - - "hours" - } - } - - " hours and " - var { - - "timezone" - sub { - - "minutes" - } - } - - " minutes, that moment in time being a moment\n in the UTC time zone; let " - var { - - "timezone" - } - - " be " - var { - - "timezone" - sub { - - "hours" - } - } - - " hours and " - var { - - "timezone" - sub { - - "minutes" - } - } - - "\n minutes from UTC; and return " - var { - - "time" - } - - " and " - var { - - "timezone" - } - - "." - } - - "\n " - } - } - - "\n\n \n\n\n \n\n " - h4 id="colours" { - span class="secno" { - - "2.3.6" - } - - " Legacy colors" - a href="#colours" class="self-link" - } - - "\n\n " - p { - - "Some obsolete legacy attributes parse colors using the\n " - dfn id="rules-for-parsing-a-legacy-colour-value" { - - "rules for parsing a legacy color\n value" - } - - ", given a string " - var { - - "input" - } - - ". They will return either a CSS color or failure." - } - - "\n\n " - ol { - li { - p { - - "If " - var { - - "input" - } - - " is the empty string, then return failure." - } - } - li { - p { - a id="colours:strip-leading-and-trailing-ascii-whitespace" href="https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace" data-x-internal="strip-leading-and-trailing-ascii-whitespace" { - - "Strip leading and trailing ASCII whitespace" - } - - " from " - var { - - "input" - } - - "." - } - } - li { - p { - - "If " - var { - - "input" - } - - " is an " - a id="colours:ascii-case-insensitive" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for \"" - code { - - "transparent" - } - - "\", then return failure." - } - } - li { - - "\n " - p { - - "If " - var { - - "input" - } - - " is an " - a id="colours:ascii-case-insensitive-2" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for one of the " - a href="https://drafts.csswg.org/css-color/#named-color" id="colours:named-color" data-x-internal="named-color" { - - "named colors" - } - - ", then return the CSS color corresponding to that\n keyword. " - a href="#refsCSSCOLOR" { - - "[CSSCOLOR]" - } - } - - "\n\n " - p class="note" { - a href="https://www.w3.org/TR/css3-color/#css2-system" { - - "CSS2 System\n Colors" - } - - " are not recognized." - } - - "\n " - } - li { - - "\n " - p { - - "If " - var { - - "input" - } - - "'s " - a id="colours:code-point-length" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - " is four, and the first character in\n " - var { - - "input" - } - - " is U+0023 (#), and the last three characters of " - var { - - "input" - } - - " are all\n " - a id="colours:ascii-hex-digits" href="https://infra.spec.whatwg.org/#ascii-hex-digit" data-x-internal="ascii-hex-digits" { - - "ASCII hex digits" - } - - ", then:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "result" - } - - " be a CSS color." - } - - "\n\n " - } - li { - p { - - "Interpret the second character of " - var { - - "input" - } - - " as a hexadecimal digit; let\n the red component of " - var { - - "result" - } - - " be the resulting number multiplied by 17." - } - - "\n\n " - } - li { - p { - - "Interpret the third character of " - var { - - "input" - } - - " as a hexadecimal digit; let\n the green component of " - var { - - "result" - } - - " be the resulting number multiplied by 17." - } - - "\n\n " - } - li { - p { - - "Interpret the fourth character of " - var { - - "input" - } - - " as a hexadecimal digit; let\n the blue component of " - var { - - "result" - } - - " be the resulting number multiplied by 17." - } - - "\n\n " - } - li { - p { - - "Return " - var { - - "result" - } - - "." - } - - "\n " - } - } - - "\n " - } - li { - p { - - "Replace any " - a href="https://infra.spec.whatwg.org/#code-point" id="colours:code-point" data-x-internal="code-point" { - - "code points" - } - - " greater than U+FFFF in\n " - var { - - "input" - } - - " (i.e., any characters that are not in the basic multilingual plane) with \"" - code { - - "00" - } - - "\"." - } - } - li { - p { - - "If " - var { - - "input" - } - - "'s " - a id="colours:code-point-length-2" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - " is greater than 128, truncate\n " - var { - - "input" - } - - ", leaving only the first 128 characters." - } - } - li { - p { - - "If the first character in " - var { - - "input" - } - - " is U+0023 (#), then remove it." - } - } - li { - p { - - "Replace any character in " - var { - - "input" - } - - " that is not an " - a href="https://infra.spec.whatwg.org/#ascii-hex-digit" id="colours:ascii-hex-digits-2" data-x-internal="ascii-hex-digits" { - - "ASCII hex digit" - } - - " with U+0030 (0)." - } - } - li { - p { - - "While " - var { - - "input" - } - - "'s " - a id="colours:code-point-length-3" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - " is zero or not a multiple of\n three, append U+0030 (0) to " - var { - - "input" - } - - "." - } - } - li { - p { - - "Split " - var { - - "input" - } - - " into three strings of equal " - a id="colours:code-point-length-4" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - ", to\n obtain three components. Let " - var { - - "length" - } - - " be the " - a id="colours:code-point-length-5" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - " that all of\n those components have (one third the " - a id="colours:code-point-length-6" href="https://infra.spec.whatwg.org/#string-code-point-length" data-x-internal="code-point-length" { - - "code point length" - } - - " of " - var { - - "input" - } - - ")." - } - } - li { - p { - - "If " - var { - - "length" - } - - " is greater than 8, then remove the leading " - span { - var { - - "length" - } - - "-8" - } - - " characters in each component, and let " - var { - - "length" - } - - " be 8." - } - } - li { - p { - - "While " - var { - - "length" - } - - " is greater than two and the first character in each\n component is U+0030 (0), remove that character and reduce " - var { - - "length" - } - - " by one." - } - } - li { - p { - - "If " - var { - - "length" - } - - " is " - em { - - "still" - } - - " greater than two, truncate each component,\n leaving only the first two characters in each." - } - } - li { - p { - - "Let " - var { - - "result" - } - - " be a CSS color." - } - - "\n\n " - } - li { - p { - - "Interpret the first component as a hexadecimal number; let the red component of " - var { - - "result" - } - - " be the resulting number." - } - } - li { - p { - - "Interpret the second component as a hexadecimal number; let the green component of " - var { - - "result" - } - - " be the resulting number." - } - } - li { - p { - - "Interpret the third component as a hexadecimal number; let the blue component of " - var { - - "result" - } - - " be the resulting number." - } - } - li { - p { - - "Return " - var { - - "result" - } - - "." - } - - "\n " - } - } - - "\n\n \n\n\n\n " - h4 id="space-separated-tokens" { - span class="secno" { - - "2.3.7" - } - - " Space-separated tokens" - a href="#space-separated-tokens" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="set-of-space-separated-tokens" data-export="" { - - "set of space-separated tokens" - } - - " is a string containing zero or more words\n (known as tokens) separated by one or more " - a id="space-separated-tokens:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ", where words consist of\n any string of one or more characters, none of which are " - a id="space-separated-tokens:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "." - } - - "\n\n " - p { - - "A string containing a " - a href="#set-of-space-separated-tokens" id="space-separated-tokens:set-of-space-separated-tokens" { - - "set of space-separated tokens" - } - - " may have leading or trailing\n " - a id="space-separated-tokens:space-characters-3" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - "." - } - - "\n\n " - p { - - "An " - dfn id="unordered-set-of-unique-space-separated-tokens" data-export="" { - - "unordered set of unique space-separated tokens" - } - - " is a " - a href="#set-of-space-separated-tokens" id="space-separated-tokens:set-of-space-separated-tokens-2" { - - "set of\n space-separated tokens" - } - - " where none of the tokens are duplicated." - } - - "\n\n " - p { - - "An " - dfn id="ordered-set-of-unique-space-separated-tokens" { - - "ordered set of unique space-separated tokens" - } - - " is a " - a href="#set-of-space-separated-tokens" id="space-separated-tokens:set-of-space-separated-tokens-3" { - - "set of space-separated\n tokens" - } - - " where none of the tokens are duplicated but where the order of the tokens is\n meaningful." - } - - "\n\n " - p { - a href="#set-of-space-separated-tokens" id="space-separated-tokens:set-of-space-separated-tokens-4" { - - "Sets of space-separated tokens" - } - - " sometimes\n have a defined set of allowed values. When a set of allowed values is defined, the tokens must all\n be from that list of allowed values; other values are non-conforming. If no such set of allowed\n values is provided, then all values are conforming." - } - - "\n\n " - p class="note" { - - "How tokens in a " - a href="#set-of-space-separated-tokens" id="space-separated-tokens:set-of-space-separated-tokens-5" { - - "set of space-separated tokens" - } - - " are to be compared\n (e.g. case-sensitively or not) is defined on a per-set basis." - } - - "\n\n\n\n " - h4 id="comma-separated-tokens" { - span class="secno" { - - "2.3.8" - } - - " Comma-separated tokens" - a href="#comma-separated-tokens" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="set-of-comma-separated-tokens" { - - "set of comma-separated tokens" - } - - " is a string containing zero or more tokens each\n separated from the next by a single U+002C COMMA character (,), where tokens consist of any string\n of zero or more characters, neither beginning nor ending with " - a id="comma-separated-tokens:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ", nor\n containing any U+002C COMMA characters (,), and optionally surrounded by " - a id="comma-separated-tokens:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII\n whitespace" - } - - "." - } - - "\n\n " - p class="example" { - - "For instance, the string \"" - code { - - " a ,b,,d d " - } - - "\" consists of four tokens: \"a\", \"b\", the empty\n string, and \"d d\". Leading and trailing whitespace around each token doesn't count as part of\n the token, and the empty string can be a token." - } - - "\n\n " - p { - a href="#set-of-comma-separated-tokens" id="comma-separated-tokens:set-of-comma-separated-tokens" { - - "Sets of comma-separated tokens" - } - - " sometimes\n have further restrictions on what consists a valid token. When such restrictions are defined, the\n tokens must all fit within those restrictions; other values are non-conforming. If no such\n restrictions are specified, then all values are conforming." - } - - "\n\n\n\n " - h4 id="syntax-references" { - span class="secno" { - - "2.3.9" - } - - " References" - a href="#syntax-references" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="valid-hash-name-reference" { - - "valid hash-name reference" - } - - " to an element of type " - var { - - "type" - } - - " is a\n string consisting of a U+0023 NUMBER SIGN character (#) followed by a string which exactly matches\n the value of the " - code { - - "name" - } - - " attribute of an element with type " - var { - - "type" - } - - " in\n the same " - a id="syntax-references:tree" href="https://dom.spec.whatwg.org/#concept-tree" data-x-internal="tree" { - - "tree" - } - - "." - } - - "\n\n \n\n " - p { - - "The " - dfn id="rules-for-parsing-a-hash-name-reference" { - - "rules for parsing a hash-name reference" - } - - " to an element of type " - var { - - "type" - } - - ",\n given a context node " - var { - - "scope" - } - - ", are as follows:" - } - - "\n\n " - ol { - li { - p { - - "If the string being parsed does not contain a U+0023 NUMBER SIGN character, or if the\n first such character in the string is the last character in the string, then return null." - } - } - li { - p { - - "Let " - var { - - "s" - } - - " be the string from the character immediately after the first\n U+0023 NUMBER SIGN character in the string being parsed up to the end of that string." - } - } - li { - - "\n " - p { - - "Return the first element of type " - var { - - "type" - } - - " in " - var { - - "scope" - } - - "'s " - a id="syntax-references:tree-2" href="https://dom.spec.whatwg.org/#concept-tree" data-x-internal="tree" { - - "tree" - } - - ", in\n " - a id="syntax-references:tree-order" href="https://dom.spec.whatwg.org/#concept-tree-order" data-x-internal="tree-order" { - - "tree order" - } - - ", that has an " - code id="syntax-references:the-id-attribute" { - a href="#the-id-attribute" { - - "id" - } - } - - " or " - code { - - "name" - } - - " attribute whose value is " - var { - - "s" - } - - ", or null if there is no such\n element." - } - - "\n\n " - p class="note" { - - "Although " - code id="syntax-references:the-id-attribute-2" { - a href="#the-id-attribute" { - - "id" - } - } - - " attributes are accounted for when\n parsing, they are not used in determining whether a value is a " - a href="#valid-hash-name-reference" id="syntax-references:valid-hash-name-reference" { - em { - - "valid" - } - - " hash-name\n reference" - } - - ". That is, a hash-name reference that refers to an element based on " - code id="syntax-references:the-id-attribute-3" { - a href="#the-id-attribute" { - - "id" - } - } - - " is a conformance error (unless that element also has a " - code { - - "name" - } - - " attribute with the same value)." - } - - "\n " - } - } - - "\n\n \n\n\n " - h4 id="mq" { - span class="secno" { - - "2.3.10" - } - - " Media queries" - a href="#mq" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-media-query-list" { - - "valid media query list" - } - - " if it matches the " - code { - - "" - } - - " production of " - cite { - - "Media Queries" - } - - ".\n " - a href="#refsMQ" { - - "[MQ]" - } - } - - "\n\n " - p { - - "A string " - dfn id="matches-the-environment" { - - "matches the environment" - } - - " of the user if it is the empty string, a string\n consisting of only " - a id="mq:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - ", or is a media query list that matches the user's\n environment according to the definitions given in " - cite { - - "Media Queries" - } - - ". " - a href="#refsMQ" { - - "[MQ]" - } - } - - "\n\n\n " - h4 id="unique-values" { - span class="secno" { - - "2.3.11" - } - - " Unique internal values" - a href="#unique-values" class="self-link" - } - - "\n\n " - p { - - "A " - dfn id="unique-internal-value" { - - "unique internal value" - } - - " is a value that is serializable, comparable by value, and\n never exposed to script." - } - - "\n\n " - p { - - "To create a " - dfn id="new-unique-internal-value" { - - "new unique internal value" - } - - ", return a " - a href="#unique-internal-value" id="unique-values:unique-internal-value" { - - "unique internal value" - } - - "\n that has never previously been returned by this algorithm." - } - - "\n\n\n " - h3 id="urls" { - span class="secno" { - - "2.4" - } - - " URLs" - a href="#urls" class="self-link" - } - - "\n\n " - h4 id="terminology-2" { - span class="secno" { - - "2.4.1" - } - - " Terminology" - a href="#terminology-2" class="self-link" - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-non-empty-url" { - - "valid non-empty URL" - } - - " if it is a " - a id="terminology-2:valid-url-string" href="https://url.spec.whatwg.org/#valid-url-string" data-x-internal="valid-url-string" { - - "valid URL string" - } - - " but it is\n not the empty string." - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-url-potentially-surrounded-by-spaces" { - - "valid URL potentially surrounded by spaces" - } - - " if, after " - a href="https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace" id="terminology-2:strip-leading-and-trailing-ascii-whitespace" data-x-internal="strip-leading-and-trailing-ascii-whitespace" { - - "stripping leading and trailing ASCII\n whitespace" - } - - " from it, it is a " - a id="terminology-2:valid-url-string-2" href="https://url.spec.whatwg.org/#valid-url-string" data-x-internal="valid-url-string" { - - "valid URL string" - } - - "." - } - - "\n\n " - p { - - "A string is a " - dfn id="valid-non-empty-url-potentially-surrounded-by-spaces" { - - "valid non-empty URL potentially surrounded by spaces" - } - - " if, after " - a href="https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace" id="terminology-2:strip-leading-and-trailing-ascii-whitespace-2" data-x-internal="strip-leading-and-trailing-ascii-whitespace" { - - "stripping leading and trailing ASCII\n whitespace" - } - - " from it, it is a " - a href="#valid-non-empty-url" id="terminology-2:valid-non-empty-url" { - - "valid non-empty URL" - } - - "." - } - - "\n\n " - p { - - "This specification defines the URL " - dfn id="about:legacy-compat" { - code { - - "about:legacy-compat" - } - } - - " as a reserved,\n though unresolvable, " - code id="terminology-2:about-protocol" { - a data-x-internal="about-protocol" href="https://www.rfc-editor.org/rfc/rfc6694#section-2" { - - "about:" - } - } - - " URL, for use in " - a href="#syntax-doctype" id="terminology-2:syntax-doctype" { - - "DOCTYPE" - } - - "s in " - a id="terminology-2:html-documents" href="https://dom.spec.whatwg.org/#html-document" data-x-internal="html-documents" { - - "HTML documents" - } - - " when needed for\n compatibility with XML tools. " - a href="#refsABOUT" { - - "[ABOUT]" - } - } - - "\n\n " - p { - - "This specification defines the URL " - dfn id="about:html-kind" { - code { - - "about:html-kind" - } - } - - " as a reserved,\n though unresolvable, " - code id="terminology-2:about-protocol-2" { - a data-x-internal="about-protocol" href="https://www.rfc-editor.org/rfc/rfc6694#section-2" { - - "about:" - } - } - - " URL, that is used as an\n identifier for kinds of media tracks. " - a href="#refsABOUT" { - - "[ABOUT]" - } - } - - "\n\n " - p { - - "This specification defines the URL " - dfn id="about:srcdoc" { - code { - - "about:srcdoc" - } - } - - " as a reserved, though\n unresolvable, " - code id="terminology-2:about-protocol-3" { - a data-x-internal="about-protocol" href="https://www.rfc-editor.org/rfc/rfc6694#section-2" { - - "about:" - } - } - - " URL, that is used as the " - a href="https://dom.spec.whatwg.org/#concept-document-url" id="terminology-2:the-document's-address" data-x-internal="the-document's-address" { - - "URL" - } - - " of " - a href="#an-iframe-srcdoc-document" id="terminology-2:an-iframe-srcdoc-document" { - code { - - "iframe" - } - - " " - code { - - "srcdoc" - } - - " documents" - } - - ".\n " - a href="#refsABOUT" { - - "[ABOUT]" - } - } - - "\n\n " - p { - - "The " - dfn id="fallback-base-url" { - - "fallback base URL" - } - - " of a " - code id="terminology-2:document" { - a href="#document" { - - "Document" - } - } - - " object " - var { - - "document" - } - - " is the\n " - a id="terminology-2:url-record" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url-record" { - - "URL record" - } - - " obtained by running these steps:" - } - - "\n\n " - ol { - li { - - "\n " - p { - - "If " - var { - - "document" - } - - " is " - a href="#an-iframe-srcdoc-document" id="terminology-2:an-iframe-srcdoc-document-2" { - - "an " - code { - - "iframe" - } - - "\n " - code { - - "srcdoc" - } - - " document" - } - - ", then:" - } - - "\n\n " - ol { - li { - p { - a id="terminology-2:assert" href="https://infra.spec.whatwg.org/#assert" data-x-internal="assert" { - - "Assert" - } - - ": " - var { - - "document" - } - - "'s " - a href="#concept-document-about-base-url" id="terminology-2:concept-document-about-base-url" { - - "about base URL" - } - - " is non-null." - } - } - li { - p { - - "Return " - var { - - "document" - } - - "'s " - a href="#concept-document-about-base-url" id="terminology-2:concept-document-about-base-url-2" { - - "about base\n URL" - } - - "." - } - } - } - - "\n " - } - li { - p { - - "If " - var { - - "document" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-document-url" id="terminology-2:the-document's-address-2" data-x-internal="the-document's-address" { - - "URL" - } - - " " - a href="#matches-about:blank" id="terminology-2:matches-about:blank" { - - "matches\n " - code { - - "about:blank" - } - } - - " and " - var { - - "document" - } - - "'s " - a href="#concept-document-about-base-url" id="terminology-2:concept-document-about-base-url-3" { - - "about base URL" - } - - " is non-null, then return\n " - var { - - "document" - } - - "'s " - a href="#concept-document-about-base-url" id="terminology-2:concept-document-about-base-url-4" { - - "about base URL" - } - - "." - } - } - li { - p { - - "Return " - var { - - "document" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-document-url" id="terminology-2:the-document's-address-3" data-x-internal="the-document's-address" { - - "URL" - } - - "." - } - } - } - - "\n\n " - p { - - "The " - dfn id="document-base-url" data-export="" { - - "document base URL" - } - - " of a " - code id="terminology-2:document-2" { - a href="#document" { - - "Document" - } - } - - " object is the\n " - a id="terminology-2:url-record-2" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url-record" { - - "URL record" - } - - " obtained by running these steps:" - } - - "\n\n " - ol { - li { - p { - - "If there is no " - code id="terminology-2:the-base-element" { - a href="#the-base-element" { - - "base" - } - } - - " element that has an " - code id="terminology-2:attr-base-href" { - a href="#attr-base-href" { - - "href" - } - } - - " attribute in the " - code id="terminology-2:document-3" { - a href="#document" { - - "Document" - } - } - - ", then return the\n " - code id="terminology-2:document-4" { - a href="#document" { - - "Document" - } - } - - "'s " - a href="#fallback-base-url" id="terminology-2:fallback-base-url" { - - "fallback base URL" - } - - "." - } - } - li { - p { - - "Otherwise, return the " - a href="#frozen-base-url" id="terminology-2:frozen-base-url" { - - "frozen base URL" - } - - " of the first " - code id="terminology-2:the-base-element-2" { - a href="#the-base-element" { - - "base" - } - } - - " element\n in the " - code id="terminology-2:document-5" { - a href="#document" { - - "Document" - } - } - - " that has an " - code id="terminology-2:attr-base-href-2" { - a href="#attr-base-href" { - - "href" - } - } - - " attribute, in\n " - a id="terminology-2:tree-order" href="https://dom.spec.whatwg.org/#concept-tree-order" data-x-internal="tree-order" { - - "tree order" - } - - "." - } - } - } - - "\n\n " - hr - - "\n\n " - p { - - "A " - a id="terminology-2:url" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " " - dfn id="matches-about:blank" { - - "matches " - code { - - "about:blank" - } - } - - " if its " - a href="https://url.spec.whatwg.org/#concept-url-scheme" id="terminology-2:concept-url-scheme" data-x-internal="concept-url-scheme" { - - "scheme" - } - - " is \"" - code { - - "about" - } - - "\", its " - a href="https://url.spec.whatwg.org/#concept-url-path" id="terminology-2:concept-url-path" data-x-internal="concept-url-path" { - - "path" - } - - " contains a single string \"" - code { - - "blank" - } - - "\", its\n " - a href="https://url.spec.whatwg.org/#concept-url-username" id="terminology-2:concept-url-username" data-x-internal="concept-url-username" { - - "username" - } - - " and " - a href="https://url.spec.whatwg.org/#concept-url-password" id="terminology-2:concept-url-password" data-x-internal="concept-url-password" { - - "password" - } - - " are the empty string, and its " - a href="https://url.spec.whatwg.org/#concept-url-host" id="terminology-2:concept-url-host" data-x-internal="concept-url-host" { - - "host" - } - - " is null." - } - - "\n\n " - p class="note" { - - "Such a URL's " - a href="https://url.spec.whatwg.org/#concept-url-query" id="terminology-2:concept-url-query" data-x-internal="concept-url-query" { - - "query" - } - - " and " - a href="https://url.spec.whatwg.org/#concept-url-fragment" id="terminology-2:concept-url-fragment" data-x-internal="concept-url-fragment" { - - "fragment" - } - - " can be non-null. For example, the " - a id="terminology-2:url-record-3" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url-record" { - - "URL\n record" - } - - " created by " - a href="https://url.spec.whatwg.org/#concept-url-parser" id="terminology-2:url-parser" data-x-internal="url-parser" { - - "parsing" - } - - " \"" - code { - - "about:blank?foo#bar" - } - - "\" " - a href="#matches-about:blank" id="terminology-2:matches-about:blank-2" { - - "matches " - code { - - "about:blank" - } - } - - "." - } - - "\n\n " - p { - - "A " - a id="terminology-2:url-2" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " " - dfn id="matches-about:srcdoc" { - - "matches " - code { - - "about:srcdoc" - } - } - - " if its " - a href="https://url.spec.whatwg.org/#concept-url-scheme" id="terminology-2:concept-url-scheme-2" data-x-internal="concept-url-scheme" { - - "scheme" - } - - " is \"" - code { - - "about" - } - - "\", its " - a href="https://url.spec.whatwg.org/#concept-url-path" id="terminology-2:concept-url-path-2" data-x-internal="concept-url-path" { - - "path" - } - - " contains a single string \"" - code { - - "srcdoc" - } - - "\",\n its " - a href="https://url.spec.whatwg.org/#concept-url-query" id="terminology-2:concept-url-query-2" data-x-internal="concept-url-query" { - - "query" - } - - " is null, its " - a href="https://url.spec.whatwg.org/#concept-url-username" id="terminology-2:concept-url-username-2" data-x-internal="concept-url-username" { - - "username" - } - - " and " - a href="https://url.spec.whatwg.org/#concept-url-password" id="terminology-2:concept-url-password-2" data-x-internal="concept-url-password" { - - "password" - } - - " are the empty string, and its " - a href="https://url.spec.whatwg.org/#concept-url-host" id="terminology-2:concept-url-host-2" data-x-internal="concept-url-host" { - - "host" - } - - " is null." - } - - "\n\n " - p class="note" { - - "The reason that " - a href="#matches-about:srcdoc" id="terminology-2:matches-about:srcdoc" { - - "matches " - code { - - "about:srcdoc" - } - } - - " ensures that the\n " - a id="terminology-2:url-3" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - "'s " - a href="https://url.spec.whatwg.org/#concept-url-query" id="terminology-2:concept-url-query-3" data-x-internal="concept-url-query" { - - "query" - } - - " is null is because it is not\n possible to create " - a href="#an-iframe-srcdoc-document" id="terminology-2:an-iframe-srcdoc-document-3" { - - "an " - code { - - "iframe" - } - - " " - code { - - "srcdoc" - } - - " document" - } - - " whose " - a href="https://dom.spec.whatwg.org/#concept-document-url" id="terminology-2:the-document's-address-4" data-x-internal="the-document's-address" { - - "URL" - } - - " has a non-null " - a href="https://url.spec.whatwg.org/#concept-url-query" id="terminology-2:concept-url-query-4" data-x-internal="concept-url-query" { - - "query" - } - - ", unlike " - code id="terminology-2:document-6" { - a href="#document" { - - "Document" - } - } - - "s whose " - a href="https://dom.spec.whatwg.org/#concept-document-url" id="terminology-2:the-document's-address-5" data-x-internal="the-document's-address" { - - "URL" - } - - " " - a href="#matches-about:blank" id="terminology-2:matches-about:blank-3" { - - "matches " - code { - - "about:blank" - } - } - - ". In other\n words, the set of all " - a id="terminology-2:url-4" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - "s that " - a href="#matches-about:srcdoc" id="terminology-2:matches-about:srcdoc-2" { - - "match\n " - code { - - "about:srcdoc" - } - } - - " only vary in their " - a href="https://url.spec.whatwg.org/#concept-url-fragment" id="terminology-2:concept-url-fragment-2" data-x-internal="concept-url-fragment" { - - "fragment" - } - - "." - } - - "\n\n\n \n\n " - h4 id="resolving-urls" { - span class="secno" { - - "2.4.2" - } - - " Parsing URLs" - a href="#resolving-urls" class="self-link" - } - - "\n\n " - p { - - "Parsing a URL is the process of taking a string and obtaining the " - a id="resolving-urls:url-record" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url-record" { - - "URL record" - } - - " that\n it represents. While this process is defined in " - cite { - - "URL" - } - - ", the HTML standard defines\n several wrappers to abstract base URLs and encodings. " - a href="#refsURL" { - - "[URL]" - } - } - - "\n\n " - p class="note" { - - "Most new APIs are to use " - a href="#parse-a-url" id="resolving-urls:parse-a-url" { - - "parse a URL" - } - - ". Older APIs and HTML elements\n might have reason to use " - a href="#encoding-parsing-a-url" id="resolving-urls:encoding-parsing-a-url" { - - "encoding-parse a URL" - } - - ". When a\n custom base URL is needed or no base URL is desired, the " - a id="resolving-urls:url-parser" href="https://url.spec.whatwg.org/#concept-url-parser" data-x-internal="url-parser" { - - "URL parser" - } - - " can of course be\n used directly as well." - } - - "\n\n " - p { - - "To " - dfn id="parse-a-url" data-export="" { - - "parse a URL" - } - - ", given a string " - var { - - "url" - } - - ", relative to a\n " - code id="resolving-urls:document" { - a href="#document" { - - "Document" - } - } - - " object or " - a href="#environment-settings-object" id="resolving-urls:environment-settings-object" { - - "environment settings object" - } - - " " - var { - - "environment" - } - - ",\n run these steps. They return failure or a " - a id="resolving-urls:url" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - "." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "baseURL" - } - - " be " - var { - - "environment" - } - - "'s " - a href="#document-base-url" id="resolving-urls:document-base-url" { - - "base\n URL" - } - - ", if " - var { - - "environment" - } - - " is a " - code id="resolving-urls:document-2" { - a href="#document" { - - "Document" - } - } - - " object; otherwise\n " - var { - - "environment" - } - - "'s " - a href="#api-base-url" id="resolving-urls:api-base-url" { - - "API base URL" - } - - "." - } - } - li { - p { - - "Return the result of applying the " - a id="resolving-urls:url-parser-2" href="https://url.spec.whatwg.org/#concept-url-parser" data-x-internal="url-parser" { - - "URL parser" - } - - " to " - var { - - "url" - } - - ", with\n " - var { - - "baseURL" - } - - "." - } - } - } - - "\n\n " - p id="resolve-a-url" { - - "To " - dfn id="encoding-parsing-a-url" data-export="" { - - "encoding-parse a URL" - } - - ",\n given a string " - var { - - "url" - } - - ", relative to a " - code id="resolving-urls:document-3" { - a href="#document" { - - "Document" - } - } - - " object or " - a href="#environment-settings-object" id="resolving-urls:environment-settings-object-2" { - - "environment\n settings object" - } - - " " - var { - - "environment" - } - - ", run these steps. They return failure or a\n " - a id="resolving-urls:url-2" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - "." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "encoding" - } - - " be " - a id="resolving-urls:utf-8" href="https://encoding.spec.whatwg.org/#utf-8" data-x-internal="utf-8" { - - "UTF-8" - } - - "." - } - } - li { - p { - - "If " - var { - - "environment" - } - - " is a " - code id="resolving-urls:document-4" { - a href="#document" { - - "Document" - } - } - - " object, then set " - var { - - "encoding" - } - - "\n to " - var { - - "environment" - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-document-encoding" id="resolving-urls:document's-character-encoding" data-x-internal="document's-character-encoding" { - - "character\n encoding" - } - - "." - } - } - li { - p { - - "Otherwise, if " - var { - - "environment" - } - - "'s " - a href="#concept-relevant-global" id="resolving-urls:concept-relevant-global" { - - "relevant global object" - } - - " is a\n " - code id="resolving-urls:window" { - a href="#window" { - - "Window" - } - } - - " object, set " - var { - - "encoding" - } - - " to " - var { - - "environment" - } - - "'s " - a href="#concept-relevant-global" id="resolving-urls:concept-relevant-global-2" { - - "relevant\n global object" - } - - "'s " - a href="#concept-document-window" id="resolving-urls:concept-document-window" { - - "associated\n " - code { - - "Document" - } - } - - "'s " - a href="https://dom.spec.whatwg.org/#concept-document-encoding" id="resolving-urls:document's-character-encoding-2" data-x-internal="document's-character-encoding" { - - "character\n encoding" - } - - "." - } - } - li { - p { - - "Let " - var { - - "baseURL" - } - - " be " - var { - - "environment" - } - - "'s " - a href="#document-base-url" id="resolving-urls:document-base-url-2" { - - "base\n URL" - } - - ", if " - var { - - "environment" - } - - " is a " - code id="resolving-urls:document-5" { - a href="#document" { - - "Document" - } - } - - " object; otherwise\n " - var { - - "environment" - } - - "'s " - a href="#api-base-url" id="resolving-urls:api-base-url-2" { - - "API base URL" - } - - "." - } - } - li { - p { - - "Return the result of applying the " - a id="resolving-urls:url-parser-3" href="https://url.spec.whatwg.org/#concept-url-parser" data-x-internal="url-parser" { - - "URL parser" - } - - " to " - var { - - "url" - } - - ", with\n " - var { - - "baseURL" - } - - " and " - var { - - "encoding" - } - - "." - } - } - } - - "\n\n " - p { - - "To " - dfn id="encoding-parsing-and-serializing-a-url" { - - "encoding-parse-and-serialize a\n URL" - } - - ", given a string " - var { - - "url" - } - - ", relative to a " - code id="resolving-urls:document-6" { - a href="#document" { - - "Document" - } - } - - " object or\n " - a href="#environment-settings-object" id="resolving-urls:environment-settings-object-3" { - - "environment settings object" - } - - " " - var { - - "environment" - } - - ", run these steps. They return\n failure or a string." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "url" - } - - " be the result of " - a href="#encoding-parsing-a-url" id="resolving-urls:encoding-parsing-a-url-2" { - - "encoding-parsing a URL" - } - - " given\n " - var { - - "url" - } - - ", relative to " - var { - - "environment" - } - - "." - } - } - li { - p { - - "If " - var { - - "url" - } - - " is failure, then return failure." - } - } - li { - p { - - "Return the result of applying the " - a href="https://url.spec.whatwg.org/#concept-url-serializer" id="resolving-urls:concept-url-serializer" data-x-internal="concept-url-serializer" { - - "URL\n serializer" - } - - " to " - var { - - "url" - } - - "." - } - } - } - - "\n\n \n\n\n\n \n\n " - h4 id="dynamic-changes-to-base-urls" { - span class="secno" { - - "2.4.3" - } - - " Dynamic changes to base URLs" - a href="#dynamic-changes-to-base-urls" class="self-link" - } - - "\n\n " - p { - - "When a document's " - a href="#document-base-url" id="dynamic-changes-to-base-urls:document-base-url" { - - "document base URL" - } - - " changes, all elements in that document are\n " - a href="#affected-by-a-base-url-change" id="dynamic-changes-to-base-urls:affected-by-a-base-url-change" { - - "affected by a base URL change" - } - - "." - } - - "\n\n " - p { - - "The following are " - a href="#base-url-change-steps" id="dynamic-changes-to-base-urls:base-url-change-steps" { - - "base URL change steps" - } - - ", which run when an element is\n " - a href="#affected-by-a-base-url-change" id="dynamic-changes-to-base-urls:affected-by-a-base-url-change-2" { - - "affected by a base URL change" - } - - " (as defined by " - cite { - - "DOM" - } - - "):" - } - - "\n\n " - dl class="switch" { - dt { - - "If the element creates a " - a href="#hyperlink" id="dynamic-changes-to-base-urls:hyperlink" { - - "hyperlink" - } - } - dd { - - "\n " - p { - - "If the " - a id="dynamic-changes-to-base-urls:url" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " identified by the hyperlink is being shown to the user, or if any\n data derived from that " - a id="dynamic-changes-to-base-urls:url-2" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " is affecting the display, then the " - code id="dynamic-changes-to-base-urls:attr-hyperlink-href" { - a href="#attr-hyperlink-href" { - - "href" - } - } - - " attribute's value should be " - a href="#encoding-parsing-a-url" id="dynamic-changes-to-base-urls:encoding-parsing-a-url" { - - "reparsed" - } - - ", relative to the element's " - a id="dynamic-changes-to-base-urls:node-document" href="https://dom.spec.whatwg.org/#concept-node-document" data-x-internal="node-document" { - - "node\n document" - } - - " and the UI updated appropriately." - } - - "\n\n " - p class="example" { - - "For example, the CSS " - code id="dynamic-changes-to-base-urls:selector-link" { - a href="#selector-link" { - - ":link" - } - } - - "/" - code id="dynamic-changes-to-base-urls:selector-visited" { - a href="#selector-visited" { - - ":visited" - } - } - - " " - a href="https://drafts.csswg.org/selectors/#pseudo-class" id="dynamic-changes-to-base-urls:pseudo-class" data-x-internal="pseudo-class" { - - "pseudo-classes" - } - - "\n might have been affected." - } - - "\n\n " - p { - - "If the hyperlink has a " - code id="dynamic-changes-to-base-urls:ping" { - a href="#ping" { - - "ping" - } - } - - " attribute and its\n " - a href="https://url.spec.whatwg.org/#concept-url" id="dynamic-changes-to-base-urls:url-3" data-x-internal="url" { - - "URL(s)" - } - - " are being shown to the user, then the " - code id="dynamic-changes-to-base-urls:ping-2" { - a href="#ping" { - - "ping" - } - } - - " attribute's tokens should be " - a href="#encoding-parsing-a-url" id="dynamic-changes-to-base-urls:encoding-parsing-a-url-2" { - - "reparsed" - } - - ", relative to the element's " - a id="dynamic-changes-to-base-urls:node-document-2" href="https://dom.spec.whatwg.org/#concept-node-document" data-x-internal="node-document" { - - "node\n document" - } - - " and the UI updated appropriately." - } - - "\n " - } - dt { - - "If the element is a " - code id="dynamic-changes-to-base-urls:the-q-element" { - a href="#the-q-element" { - - "q" - } - } - - ", " - code id="dynamic-changes-to-base-urls:the-blockquote-element" { - a href="#the-blockquote-element" { - - "blockquote" - } - } - - ", " - code id="dynamic-changes-to-base-urls:the-ins-element" { - a href="#the-ins-element" { - - "ins" - } - } - - ", or\n " - code id="dynamic-changes-to-base-urls:the-del-element" { - a href="#the-del-element" { - - "del" - } - } - - " element with a " - code { - - "cite" - } - - " attribute" - } - dd { - - "\n " - p { - - "If the " - a id="dynamic-changes-to-base-urls:url-4" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " identified by the " - code { - - "cite" - } - - " attribute is being\n shown to the user, or if any data derived from that " - a id="dynamic-changes-to-base-urls:url-5" href="https://url.spec.whatwg.org/#concept-url" data-x-internal="url" { - - "URL" - } - - " is affecting the display,\n then the " - code { - - "cite" - } - - " attribute's value should be " - a href="#encoding-parsing-a-url" id="dynamic-changes-to-base-urls:encoding-parsing-a-url-3" { - - "reparsed" - } - - ", relative to the element's " - a id="dynamic-changes-to-base-urls:node-document-3" href="https://dom.spec.whatwg.org/#concept-node-document" data-x-internal="node-document" { - - "node document" - } - - " and the UI updated\n appropriately." - } - - "\n " - } - dt { - - "Otherwise" - } - dd { - - "\n " - p { - - "The element is not directly affected." - } - - "\n\n " - p class="example" { - - "For instance, changing the base URL doesn't affect the image displayed by\n " - code id="dynamic-changes-to-base-urls:the-img-element" { - a href="#the-img-element" { - - "img" - } - } - - " elements, although subsequent accesses of the " - code id="dynamic-changes-to-base-urls:dom-img-src" { - a href="#dom-img-src" { - - "src" - } - } - - " IDL attribute from script will return a new " - a id="dynamic-changes-to-base-urls:absolute-url" href="https://url.spec.whatwg.org/#syntax-url-absolute" data-x-internal="absolute-url" { - - "absolute\n URL" - } - - " that might no longer correspond to the image being shown." - } - - "\n " - } - } - - "\n\n \n\n\n \n\n " - h3 id="fetching-resources" { - span class="secno" { - - "2.5" - } - - " Fetching resources" - a href="#fetching-resources" class="self-link" - } - - "\n\n " - h4 id="terminology-3" { - span class="secno" { - - "2.5.1" - } - - " Terminology" - a href="#terminology-3" class="self-link" - } - - "\n\n " - p { - - "A " - a href="https://fetch.spec.whatwg.org/#concept-response" id="terminology-3:concept-response" data-x-internal="concept-response" { - - "response" - } - - " whose " - a href="https://fetch.spec.whatwg.org/#concept-response-type" id="terminology-3:concept-response-type" data-x-internal="concept-response-type" { - - "type" - } - - " is \"" - code { - - "basic" - } - - "\", \"" - code { - - "cors" - } - - "\", or \"" - code { - - "default" - } - - "\" is " - dfn id="cors-same-origin" data-export="" { - - "CORS-same-origin" - } - - ".\n " - a href="#refsFETCH" { - - "[FETCH]" - } - } - - "\n\n " - p { - - "A " - a href="https://fetch.spec.whatwg.org/#concept-response" id="terminology-3:concept-response-2" data-x-internal="concept-response" { - - "response" - } - - " whose " - a href="https://fetch.spec.whatwg.org/#concept-response-type" id="terminology-3:concept-response-type-2" data-x-internal="concept-response-type" { - - "type" - } - - " is \"" - code { - - "opaque" - } - - "\" or \"" - code { - - "opaqueredirect" - } - - "\" is " - dfn id="cors-cross-origin" { - - "CORS-cross-origin" - } - - "." - } - - "\n\n " - p { - - "A " - a href="https://fetch.spec.whatwg.org/#concept-response" id="terminology-3:concept-response-3" data-x-internal="concept-response" { - - "response" - } - - "'s " - dfn id="unsafe-response" data-export="" { - - "unsafe response" - } - - " is its\n " - a href="https://fetch.spec.whatwg.org/#concept-internal-response" id="terminology-3:concept-internal-response" data-x-internal="concept-internal-response" { - - "internal response" - } - - " if it has one, and the " - a href="https://fetch.spec.whatwg.org/#concept-response" id="terminology-3:concept-response-4" data-x-internal="concept-response" { - - "response" - } - - " itself otherwise." - } - - "\n\n " - p { - - "To " - dfn id="create-a-potential-cors-request" { - - "create a potential-CORS request" - } - - ", given a " - var { - - "url" - } - - ", " - var { - - "destination" - } - - ",\n " - var { - - "corsAttributeState" - } - - ", and an optional " - i { - - "same-origin fallback flag" - } - - ", run these\n steps:" - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "mode" - } - - " be \"" - code { - - "no-cors" - } - - "\" if " - var { - - "corsAttributeState" - } - - "\n is " - a href="#attr-crossorigin-none" id="terminology-3:attr-crossorigin-none" { - - "No CORS" - } - - ", and \"" - code { - - "cors" - } - - "\"\n otherwise." - } - } - li { - p { - - "If " - i { - - "same-origin fallback flag" - } - - " is set and " - var { - - "mode" - } - - " is \"" - code { - - "no-cors" - } - - "\", set " - var { - - "mode" - } - - " to \"" - code { - - "same-origin" - } - - "\"." - } - } - li { - p { - - "Let " - var { - - "credentialsMode" - } - - " be \"" - code { - - "include" - } - - "\"." - } - } - li { - p { - - "If " - var { - - "corsAttributeState" - } - - " is " - a href="#attr-crossorigin-anonymous" id="terminology-3:attr-crossorigin-anonymous" { - - "Anonymous" - } - - ", set " - var { - - "credentialsMode" - } - - " to \"" - code { - - "same-origin" - } - - "\"." - } - } - li { - p { - - "Let " - var { - - "request" - } - - " be a new " - a href="https://fetch.spec.whatwg.org/#concept-request" id="terminology-3:concept-request" data-x-internal="concept-request" { - - "request" - } - - " whose\n " - a href="https://fetch.spec.whatwg.org/#concept-request-url" id="terminology-3:concept-request-url" data-x-internal="concept-request-url" { - - "URL" - } - - " is " - var { - - "url" - } - - ", " - a href="https://fetch.spec.whatwg.org/#concept-request-destination" id="terminology-3:concept-request-destination" data-x-internal="concept-request-destination" { - - "destination" - } - - " is " - var { - - "destination" - } - - ",\n " - a href="https://fetch.spec.whatwg.org/#concept-request-mode" id="terminology-3:concept-request-mode" data-x-internal="concept-request-mode" { - - "mode" - } - - " is " - var { - - "mode" - } - - ", " - a href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode" id="terminology-3:concept-request-credentials-mode" data-x-internal="concept-request-credentials-mode" { - - "credentials mode" - } - - " is\n " - var { - - "credentialsMode" - } - - ", and whose " - a id="terminology-3:use-url-credentials-flag" href="https://fetch.spec.whatwg.org/#concept-request-use-url-credentials-flag" data-x-internal="use-url-credentials-flag" { - - "use-URL-credentials flag" - } - - " is set." - } - } - } - - "\n\n\n " - h4 id="content-type-sniffing" { - span class="secno" { - - "2.5.2" - } - - " Determining the type of a resource" - a href="#content-type-sniffing" class="self-link" - } - - "\n\n " - p { - - "The " - dfn id="content-type" { - - "Content-Type metadata" - } - - " of a resource must be obtained and\n interpreted in a manner consistent with the requirements of " - cite { - - "MIME Sniffing" - } - - ".\n " - a href="#refsMIMESNIFF" { - - "[MIMESNIFF]" - } - } - - "\n\n " - p { - - "The " - dfn id="content-type-sniffing-2" { - a href="https://mimesniff.spec.whatwg.org/#computed-mime-type" { - - "computed MIME type" - } - } - - " of a\n resource must be found in a manner consistent with the requirements given in " - cite { - - "MIME\n Sniffing" - } - - ". " - a href="#refsMIMESNIFF" { - - "[MIMESNIFF]" - } - } - - "\n\n " - p { - - "The " - dfn id="content-type-sniffing:-image" { - a href="https://mimesniff.spec.whatwg.org/#rules-for-sniffing-images-specifically" { - - "rules for\n sniffing images specifically" - } - } - - ", the " - dfn id="content-type-sniffing:-text-or-binary" { - a href="https://mimesniff.spec.whatwg.org/#rules-for-text-or-binary" { - - "rules for distinguishing\n if a resource is text or binary" - } - } - - ", and the " - dfn id="content-type-sniffing:-video" { - a href="https://mimesniff.spec.whatwg.org/#rules-for-sniffing-audio-and-video-specifically" { - - "rules\n for sniffing audio and video specifically" - } - } - - " are also defined in " - cite { - - "MIME Sniffing" - } - - ".\n These rules return a " - a id="content-type-sniffing:mime-type" href="https://mimesniff.spec.whatwg.org/#mime-type" data-x-internal="mime-type" { - - "MIME type" - } - - " as their result. " - a href="#refsMIMESNIFF" { - - "[MIMESNIFF]" - } - } - - "\n\n " - p class="warning" { - - "It is imperative that the rules in " - cite { - - "MIME Sniffing" - } - - " be\n followed exactly. When a user agent uses different heuristics for content type detection than the\n server expects, security problems can occur. For more details, see " - cite { - - "MIME Sniffing" - } - - ".\n " - a href="#refsMIMESNIFF" { - - "[MIMESNIFF]" - } - } - - "\n\n\n " - h4 id="extracting-character-encodings-from-meta-elements" { - span class="secno" { - - "2.5.3" - } - - " Extracting character encodings from " - code id="extracting-character-encodings-from-meta-elements:the-meta-element" { - a href="#the-meta-element" { - - "meta" - } - } - - " elements" - a href="#extracting-character-encodings-from-meta-elements" class="self-link" - } - - "\n\n " - p { - - "The " - dfn id="algorithm-for-extracting-a-character-encoding-from-a-meta-element" { - - "algorithm for extracting a character encoding from a " - code { - - "meta" - } - - " element" - } - - ",\n given a string " - var { - - "s" - } - - ", is as follows. It either returns a character encoding or\n nothing." - } - - "\n\n " - ol { - li { - p { - - "Let " - var { - - "position" - } - - " be a pointer into " - var { - - "s" - } - - ", initially\n pointing at the start of the string." - } - } - li { - p { - i { - - "Loop" - } - - ": Find the first seven characters in " - var { - - "s" - } - - " after " - var { - - "position" - } - - " that are an " - a id="extracting-character-encodings-from-meta-elements:ascii-case-insensitive" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" data-x-internal="ascii-case-insensitive" { - - "ASCII case-insensitive" - } - - " match for the word \"" - code { - - "charset" - } - - "\". If no such match is found, return nothing." - } - } - li { - p { - - "Skip any " - a id="extracting-character-encodings-from-meta-elements:space-characters" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - " that immediately follow the word \"" - code { - - "charset" - } - - "\" (there might not be any)." - } - } - li { - p { - - "If the next character is not a U+003D EQUALS SIGN (=), then move " - var { - - "position" - } - - " to point just before that next character, and jump back to the step\n labeled " - i { - - "loop" - } - - "." - } - } - li { - p { - - "Skip any " - a id="extracting-character-encodings-from-meta-elements:space-characters-2" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - " that immediately follow the equals sign (there\n might not be any)." - } - } - li { - - "\n " - p { - - "Process the next character as follows:" - } - - "\n\n " - dl class="switch" { - dt { - - "If it is a U+0022 QUOTATION MARK character (\") and there is a later U+0022 QUOTATION MARK character (\") in " - var { - - "s" - } - } - dt { - - "If it is a U+0027 APOSTROPHE character (') and there is a later U+0027 APOSTROPHE character (') in " - var { - - "s" - } - } - dd { - - "Return the result of " - a id="extracting-character-encodings-from-meta-elements:getting-an-encoding" href="https://encoding.spec.whatwg.org/#concept-encoding-get" data-x-internal="getting-an-encoding" { - - "getting an encoding" - } - - " from the substring that is between\n this character and the next earliest occurrence of this character." - } - dt { - - "If it is an unmatched U+0022 QUOTATION MARK character (\")" - } - dt { - - "If it is an unmatched U+0027 APOSTROPHE character (')" - } - dt { - - "If there is no next character" - } - dd { - - "Return nothing." - } - dt { - - "Otherwise" - } - dd { - - "Return the result of " - a id="extracting-character-encodings-from-meta-elements:getting-an-encoding-2" href="https://encoding.spec.whatwg.org/#concept-encoding-get" data-x-internal="getting-an-encoding" { - - "getting an encoding" - } - - " from the substring that consists of\n this character up to but not including the first " - a id="extracting-character-encodings-from-meta-elements:space-characters-3" href="https://infra.spec.whatwg.org/#ascii-whitespace" data-x-internal="space-characters" { - - "ASCII whitespace" - } - - " or U+003B\n SEMICOLON character (;), or the end of " - var { - - "s" - } - - ", whichever comes first." - } - } - - "\n " - } - } - - "\n\n " - p class="note" { - - "This algorithm is distinct from those in the HTTP specifications (for example,\n HTTP doesn't allow the use of single quotes and requires supporting a backslash-escape mechanism\n that is not supported by this algorithm). While the\n algorithm is used in contexts that, historically, were related to HTTP, the syntax as supported by\n implementations diverged some time ago. " - a href="#refsHTTP" { - - "[HTTP]" - } - } - - "\n\n \n\n\n " - h4 id="cors-settings-attributes" { - span class="secno" { - - "2.5.4" - } - - " CORS settings attributes" - a href="#cors-settings-attributes" class="self-link" - } - div class="mdn-anno wrapped" { - button onclick="toggleStatus(this)" class="mdn-anno-btn" { - b title="Support in all current engines." class="all-engines-flag" { - - "✔" - } - span { - - "MDN" - } - } - div class="feature" { - p { - a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin" title="The crossorigin attribute, valid on the