Living
Standard
—
Last
Updated
29
September
1
October
2025
This specification depends on Infra . [INFRA]
This specification refers to both HTML and XML attributes and IDL attributes, often in the same context. When it is not clear which is being referred to, they are referred to as content attributes for HTML and XML attributes, and IDL attributes for those defined on IDL interfaces. Similarly, the term "properties" is used for both JavaScript object properties and CSS properties. When these are ambiguous they are qualified as object properties and CSS properties respectively.
Generally, when the specification states that a feature applies to the HTML syntax or the XML syntax , it also includes the other. When a feature specifically only applies to one of the two languages, it is called out by explicitly stating that it does not apply to the other format, as in "for HTML, ... (this does not apply to XML)".
This
specification
uses
the
term
document
to
refer
to
any
use
of
HTML,
ranging
from
short
static
documents
to
long
essays
or
reports
with
rich
multimedia,
as
well
as
to
fully-fledged
interactive
applications.
The
term
is
used
to
refer
both
to
Document
objects
and
their
descendant
DOM
trees,
and
to
serialized
byte
streams
using
the
HTML
syntax
or
the
XML
syntax
,
depending
on
context.
In
the
context
of
the
DOM
structures,
the
terms
HTML
document
and
XML
document
are
used
as
defined
in
DOM
,
and
refer
specifically
to
two
different
modes
that
Document
objects
can
find
themselves
in.
[DOM]
(Such
uses
are
always
hyperlinked
to
their
definition.)
In
the
context
of
byte
streams,
the
term
HTML
document
refers
to
resources
labeled
as
text/html
,
and
the
term
XML
document
refers
to
resources
labeled
with
an
XML
MIME
type
.
For simplicity, terms such as shown , displayed , and visible might sometimes be used when referring to the way a document is rendered to the user. These terms are not meant to imply a visual medium; they must be considered to apply to other media in equivalent ways.
To run steps in parallel means those steps are to be run, one after another, at the same time as other logic in the standard (e.g., at the same time as the event loop ). This standard does not define the precise mechanism by which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes, using different hyperthreads, cores, CPUs, machines, etc. By contrast, an operation that is to run immediately must interrupt the currently running task, run itself, and then resume the previously running task.
For guidance on writing specifications that leverage parallelism, see Dealing with the event loop from other specifications .
To avoid race conditions between different in parallel algorithms that operate on the same data, a parallel queue can be used.
A parallel queue represents a queue of algorithm steps that must be run in series.
A parallel queue has an algorithm queue (a queue ), initially empty.
To enqueue steps to a parallel queue , enqueue the algorithm steps to the parallel queue 's algorithm queue .
To start a new parallel queue , run the following steps:
Let parallelQueue be a new parallel queue .
Run the following steps in parallel :
While true:
Let steps be the result of dequeuing from parallelQueue 's algorithm queue .
If steps is not nothing, then run steps .
Assert : running steps did not throw an exception, as steps running in parallel are not allowed to throw.
Implementations are not expected to implement this as a continuously running loop. Algorithms in standards are to be easy to understand and are not necessarily great for battery life or performance.
Return parallelQueue .
Steps running in parallel can themselves run other steps in in parallel . E.g., inside a parallel queue it can be useful to run a series of steps in parallel with the queue.
Imagine a standard defined nameList (a list ), along with a method to add a name to nameList , unless nameList already contains name , in which case it rejects.
The following solution suffers from race conditions:
Let p be a new promise created in this 's relevant realm .
Let global be this 's relevant global object .
Run the following steps in parallel :
If
nameList
contains
name
,
then
queue
a
global
task
on
the
DOM
manipulation
task
source
given
global
to
reject
p
with
a
TypeError
,
and
abort
these
steps.
Do some potentially lengthy work.
Append name to nameList .
Queue a global task on the DOM manipulation task source given global to resolve p with undefined.
Return p .
Two invocations of the above could run simultaneously, meaning name isn't in nameList during step 3.1, but it might be added before step 3.3 runs, meaning name ends up in nameList twice.
Parallel queues solve this. The standard would let nameListQueue be the result of starting a new parallel queue , then:
Let p be a new promise created in this 's relevant realm .
Let global be this 's relevant global object .
Enqueue the following steps to nameListQueue :
If
nameList
contains
name
,
then
queue
a
global
task
on
the
DOM
manipulation
task
source
given
global
to
reject
p
with
a
TypeError
,
and
abort
these
steps.
Do some potentially lengthy work.
Append name to nameList .
Queue a global task on the DOM manipulation task source given global to resolve p with undefined.
Return p .
The steps would now queue and the race is avoided.
The specification uses the term supported when referring to whether a user agent has an implementation capable of decoding the semantics of an external resource. A format or type is said to be supported if the implementation can process an external resource of that format or type without critical aspects of the resource being ignored. Whether a specific resource is supported can depend on what features of the resource's format are in use.
For example, a PNG image would be considered to be in a supported format if its pixel data could be decoded and rendered, even if, unbeknownst to the implementation, the image also contained animation data.
An MPEG-4 video file would not be considered to be in a supported format if the compression format used was not supported, even if the implementation could determine the dimensions of the movie from the file's metadata.
What some specifications, in particular the HTTP specifications, refer to as a representation is referred to in this specification as a resource . [HTTP]
A resource's critical subresources are those that the resource needs to have available to be correctly processed. Which resources are considered critical or not is defined by the specification that defines the resource's format.
For
CSS
style
sheets
,
we
tentatively
define
here
that
their
critical
subresources
are
other
style
sheets
imported
via
@import
rules,
including
those
indirectly
imported
by
other
imported
style
sheets.
This definition is not fully interoperable; furthermore, some user agents seem to count resources like background images or web fonts as critical subresources. Ideally, the CSS Working Group would define this; see w3c/csswg-drafts issue #1088 to track progress on that front.
To
ease
migration
from
HTML
to
XML,
user
agents
conforming
to
this
specification
will
place
elements
in
HTML
in
the
http://www.w3.org/1999/xhtml
namespace,
at
least
for
the
purposes
of
the
DOM
and
CSS.
The
term
"
HTML
elements
"
refers
to
any
element
in
that
namespace,
even
in
XML
documents.
Except
where
otherwise
stated,
all
elements
defined
or
mentioned
in
this
specification
are
in
the
HTML
namespace
("
http://www.w3.org/1999/xhtml
"),
and
all
attributes
defined
or
mentioned
in
this
specification
have
no
namespace.
The
term
element
type
is
used
to
refer
to
the
set
of
elements
that
have
a
given
local
name
and
namespace.
For
example,
button
elements
are
elements
with
the
element
type
button
,
meaning
they
have
the
local
name
"
button
"
and
(implicitly
as
defined
above)
the
HTML
namespace
.
When it is stated that some element or attribute is ignored , or treated as some other value, or handled as if it was something else, this refers only to the processing of the node after it is in the DOM. A user agent must not mutate the DOM in such situations.
A content attribute is said to change value only if its new value is different than its previous value; setting an attribute to a value it already has does not change it.
The
term
empty
,
when
used
for
an
attribute
value,
Text
node,
or
string,
means
that
the
length
of
the
text
is
zero
(i.e.,
not
even
containing
controls
or
U+0020
SPACE).
An HTML element can have specific HTML element insertion steps , HTML element post-connection steps , HTML element removing steps , and HTML element moving steps all defined for the element's local name .
The insertion steps for the HTML Standard, given insertedNode , are defined as the following:
If insertedNode is an element whose namespace is the HTML namespace , and this standard defines HTML element insertion steps for insertedNode 's local name , then run the corresponding HTML element insertion steps given insertedNode .
If insertedNode is a form-associated element or the ancestor of a form-associated element , then:
If the form-associated element 's parser inserted flag is set, then return.
If
insertedNode
is
an
Element
that
is
not
on
the
stack
of
open
elements
of
an
HTML
parser
,
then
process
internal
resource
links
given
insertedNode
's
node
document
.
The post-connection steps for the HTML Standard, given insertedNode , are defined as the following:
If insertedNode is an element whose namespace is the HTML namespace , and this standard defines HTML element post-connection steps for insertedNode 's local name , then run the corresponding HTML element post-connection steps given insertedNode .
The removing steps for the HTML Standard, given removedNode and oldParent , are defined as the following:
Let document be removedNode 's node document .
If document 's focused area is removedNode , then set document 's focused area to document 's viewport , and set document 's relevant global object 's navigation API 's focus changed during ongoing navigation to false.
This
does
not
perform
the
unfocusing
steps
,
focusing
steps
,
or
focus
update
steps
,
and
thus
no
blur
or
change
events
are
fired.
If removedNode is an element whose namespace is the HTML namespace , and this standard defines HTML element removing steps for removedNode 's local name , then run the corresponding HTML element removing steps given removedNode and oldParent .
If removedNode is a form-associated element with a non-null form owner and removedNode and its form owner are no longer in the same tree , then reset the form owner of removedNode .
If
removedNode
's
popover
attribute
is
not
in
the
No
Popover
state,
then
run
the
hide
popover
algorithm
given
removedNode
,
false,
false,
false,
and
null.
If removedNode is an HTML element with a non-null active interest target , then reset interest state for removedNode .
If removedNode is an element with a non-null active interest source , then reset interest state for removedNode 's active interest source .
The moving steps for the HTML Standard, given movedNode , are defined as the following:
If movedNode is an element whose namespace is the HTML namespace , and this standard defines HTML element moving steps for movedNode 's local name , then run the corresponding HTML element moving steps given movedNode .
If movedNode is a form-associated element with a non-null form owner and movedNode and its form owner are no longer in the same tree , then reset the form owner of movedNode .
If movedNode is an HTML element with a non-null active interest target and movedNode and its active interest target are no longer in the same tree , then reset interest state for movedNode .
If movedNode is an element with a non-null active interest source and movedNode and its active interest source are no longer in the same tree , then reset interest state for movedNode 's active interest source .
A node is inserted into a document when the insertion steps are invoked with it as the argument and it is now in a document tree . Analogously, a node is removed from a document when the removing steps are invoked with it as the argument and it is now no longer in a document tree .
A node becomes connected when the insertion steps are invoked with it as the argument and it is now connected . Analogously, a node becomes disconnected when the removing steps are invoked with it as the argument and it is now no longer connected .
A node is browsing-context connected when it is connected and its shadow-including root 's browsing context is non-null. A node becomes browsing-context connected when the insertion steps are invoked with it as the argument and it is now browsing-context connected . A node becomes browsing-context disconnected either when the removing steps are invoked with it as the argument and it is now no longer browsing-context connected , or when its shadow-including root 's browsing context becomes null.
The
construction
"a
Foo
object",
where
Foo
is
actually
an
interface,
is
sometimes
used
instead
of
the
more
accurate
"an
object
implementing
the
interface
Foo
".
An IDL attribute is said to be getting when its value is being retrieved (e.g. by author script), and is said to be setting when a new value is assigned to it.
If a DOM object is said to be live , then the attributes and methods on that object must operate on the actual underlying data, not a snapshot of the data.
The
term
plugin
refers
to
an
implementation-defined
set
of
content
handlers
used
by
the
user
agent
that
can
take
part
in
the
user
agent's
rendering
of
a
Document
object,
but
that
neither
act
as
child
navigables
of
the
Document
nor
introduce
any
Node
objects
to
the
Document
's
DOM.
Typically such content handlers are provided by third parties, though a user agent can also designate built-in content handlers as plugins.
A
user
agent
must
not
consider
the
types
text/plain
and
application/octet-stream
as
having
a
registered
plugin
.
One example of a plugin would be a PDF viewer that is instantiated in a navigable when the user navigates to a PDF file. This would count as a plugin regardless of whether the party that implemented the PDF viewer component was the same as that which implemented the user agent itself. However, a PDF viewer application that launches separate from the user agent (as opposed to using the same interface) is not a plugin by this definition.
This specification does not define a mechanism for interacting with plugins, as it is expected to be user-agent- and platform-specific. Some UAs might opt to support a plugin mechanism such as the Netscape Plugin API; others might use remote content converters or have built-in support for certain types. Indeed, this specification doesn't require user agents to support plugins at all. [NPAPI]
Browsers should take extreme care when interacting with external content intended for plugins . When third-party software is run with the same privileges as the user agent itself, vulnerabilities in the third-party software become as dangerous as those in the user agent.
Since
different
users
having
different
sets
of
plugins
provides
a
tracking
vector
that
increases
the
chances
of
users
being
uniquely
identified,
user
agents
are
encouraged
to
support
the
exact
same
set
of
plugins
for
each
user.
A character encoding , or just encoding where that is not ambiguous, is a defined way to convert between byte streams and Unicode strings, as defined in Encoding . An encoding has an encoding name and one or more encoding labels , referred to as the encoding's name and labels in the Encoding standard. [ENCODING]
This specification describes the conformance criteria for user agents (relevant to implementers) and documents (relevant to authors and authoring tool implementers).
Conforming documents are those that comply with all the conformance criteria for documents. For readability, some of these conformance requirements are phrased as conformance requirements on authors; such requirements are implicitly requirements on documents: by definition, all documents are assumed to have had an author. (In some cases, that author may itself be a user agent — such user agents are subject to additional rules, as explained below.)
For
example,
if
a
requirement
states
that
"authors
must
not
use
the
foobar
element",
it
would
imply
that
documents
are
not
allowed
to
contain
elements
named
foobar
.
There is no implied relationship between document conformance requirements and implementation conformance requirements. User agents are not free to handle non-conformant documents as they please; the processing model described in this specification applies to implementations regardless of the conformity of the input documents.
User agents fall into several (overlapping) categories with different conformance requirements.
Web browsers that support the XML syntax must process elements and attributes from the HTML namespace found in XML documents as described in this specification, so that users can interact with them, unless the semantics of those elements have been overridden by other specifications.
A
conforming
web
browser
would,
upon
finding
a
script
element
in
an
XML
document,
execute
the
script
contained
in
that
element.
However,
if
the
element
is
found
within
a
transformation
expressed
in
XSLT
(assuming
the
user
agent
also
supports
XSLT),
then
the
processor
would
instead
treat
the
script
element
as
an
opaque
element
that
forms
part
of
the
transform.
Web browsers that support the HTML syntax must process documents labeled with an HTML MIME type as described in this specification, so that users can interact with them.
User agents that support scripting must also be conforming implementations of the IDL fragments in this specification, as described in Web IDL . [WEBIDL]
Unless
explicitly
stated,
specifications
that
override
the
semantics
of
HTML
elements
do
not
override
the
requirements
on
DOM
objects
representing
those
elements.
For
example,
the
script
element
in
the
example
above
would
still
implement
the
HTMLScriptElement
interface.
User agents that process HTML and XML documents purely to render non-interactive versions of them must comply to the same conformance criteria as web browsers, except that they are exempt from requirements regarding user interaction.
Typical examples of non-interactive presentation user agents are printers (static UAs) and overhead displays (dynamic UAs). It is expected that most static non-interactive presentation user agents will also opt to lack scripting support .
A non-interactive but dynamic presentation UA would still execute scripts, allowing forms to be dynamically submitted, and so forth. However, since the concept of "focus" is irrelevant when the user cannot interact with the document, the UA would not need to support any of the focus-related DOM APIs.
User agents, whether interactive or not, may be designated (possibly as a user option) as supporting the suggested default rendering defined by this specification.
This is not required. In particular, even user agents that do implement the suggested default rendering are encouraged to offer settings that override this default to improve the experience for the user, e.g. changing the color contrast, using different focus styles, or otherwise making the experience more accessible and usable to the user.
User agents that are designated as supporting the suggested default rendering must, while so designated, implement the rules the Rendering section defines as the behavior that user agents are expected to implement.
Implementations that do not support scripting (or which have their scripting features disabled entirely) are exempt from supporting the events and DOM interfaces mentioned in this specification. For the parts of this specification that are defined in terms of an events model or in terms of the DOM, such user agents must still act as if events and the DOM were supported.
Scripting can form an integral part of an application. Web browsers that do not support scripting, or that have scripting disabled, might be unable to fully convey the author's intent.
Conformance
checkers
must
verify
that
a
document
conforms
to
the
applicable
conformance
criteria
described
in
this
specification.
Automated
conformance
checkers
are
exempt
from
detecting
errors
that
require
interpretation
of
the
author's
intent
(for
example,
while
a
document
is
non-conforming
if
the
content
of
a
blockquote
element
is
not
a
quote,
conformance
checkers
running
without
the
input
of
human
judgement
do
not
have
to
check
that
blockquote
elements
only
contain
quoted
material).
Conformance checkers must check that the input document conforms when parsed without a browsing context (meaning that no scripts are run, and that the parser's scripting flag is disabled), and should also check that the input document conforms when parsed with a browsing context in which scripts execute, and that the scripts never cause non-conforming states to occur other than transiently during script execution itself. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [COMPUTABLE] )
The term "HTML validator" can be used to refer to a conformance checker that itself conforms to the applicable requirements of this specification.
XML DTDs cannot express all the conformance requirements of this specification. Therefore, a validating XML processor and a DTD cannot constitute a conformance checker. Also, since neither of the two authoring formats defined in this specification are applications of SGML, a validating SGML system cannot constitute a conformance checker either.
To put it another way, there are three types of conformance criteria:
A conformance checker must check for the first two. A simple DTD-based validator only checks for the first class of errors and is therefore not a conforming conformance checker according to this specification.
Applications and tools that process HTML and XML documents for reasons other than to either render the documents or check them for conformance should act in accordance with the semantics of the documents that they process.
A tool that generates document outlines but increases the nesting level for each paragraph and does not increase the nesting level for headings would not be conforming.
Authoring tools and markup generators must generate conforming documents . Conformance criteria that apply to authors also apply to authoring tools, where appropriate.
Authoring tools are exempt from the strict requirements of using elements only for their specified purpose, but only to the extent that authoring tools are not yet able to determine author intent. However, authoring tools must not automatically misuse elements or encourage their users to do so.
For
example,
it
is
not
conforming
to
use
an
address
element
for
arbitrary
contact
information;
that
element
can
only
be
used
for
marking
up
contact
information
for
its
nearest
article
or
body
element
ancestor.
However,
since
an
authoring
tool
is
likely
unable
to
determine
the
difference,
an
authoring
tool
is
exempt
from
that
requirement.
This
does
not
mean,
though,
that
authoring
tools
can
use
address
elements
for
any
block
of
italics
text
(for
instance);
it
just
means
that
the
authoring
tool
doesn't
have
to
verify
that
when
the
user
uses
a
tool
for
inserting
contact
information
for
an
article
element,
that
the
user
really
is
doing
that
and
not
inserting
something
else
instead.
In terms of conformance checking, an editor has to output documents that conform to the same extent that a conformance checker will verify.
When an authoring tool is used to edit a non-conforming document, it may preserve the conformance errors in sections of the document that were not edited during the editing session (i.e. an editing tool is allowed to round-trip erroneous content). However, an authoring tool must not claim that the output is conformant if errors have been so preserved.
Authoring tools are expected to come in two broad varieties: tools that work from structure or semantic data, and tools that work on a What-You-See-Is-What-You-Get media-specific editing basis (WYSIWYG).
The former is the preferred mechanism for tools that author HTML, since the structure in the source information can be used to make informed choices regarding which HTML elements and attributes are most appropriate.
However,
WYSIWYG
tools
are
legitimate.
WYSIWYG
tools
should
use
elements
they
know
are
appropriate,
and
should
not
use
elements
that
they
do
not
know
to
be
appropriate.
This
might
in
certain
extreme
cases
mean
limiting
the
use
of
flow
elements
to
just
a
few
elements,
like
div
,
b
,
i
,
and
span
and
making
liberal
use
of
the
style
attribute.
All authoring tools, whether WYSIWYG or not, should make a best effort attempt at enabling users to create well-structured, semantically rich, media-independent content.
For compatibility with existing content and prior specifications, this specification describes two authoring formats: one based on XML , and one using a custom format inspired by SGML (referred to as the HTML syntax ). Implementations must support at least one of these two formats, although supporting both is encouraged.
Some conformance requirements are phrased as requirements on elements, attributes, methods or objects. Such requirements fall into two categories: those describing content model restrictions, and those describing implementation behavior. Those in the former category are requirements on documents and authoring tools. Those in the second category are requirements on user agents. Similarly, some conformance requirements are phrased as requirements on authors; such requirements are to be interpreted as conformance requirements on the documents that authors produce. (In other words, this specification does not distinguish between conformance criteria on authors and conformance criteria on documents.)
This specification relies on several other underlying specifications.
The following terms are defined in Infra : [INFRA]
The Unicode character set is used to represent textual data, and Encoding defines requirements around character encodings . [UNICODE]
This specification introduces terminology based on the terms defined in those specifications, as described earlier.
The following terms are used as defined in Encoding : [ENCODING]
Implementations that support the XML syntax for HTML must support some version of XML, as well as its corresponding namespaces specification, because that syntax uses an XML serialization with namespaces. [XML] [XMLNS]
Data mining tools and other user agents that perform operations on content without running scripts, evaluating CSS or XPath expressions, or otherwise exposing the resulting DOM to arbitrary content, may "support namespaces" by just asserting that their DOM node analogues are in certain namespaces, without actually exposing the namespace strings.
In the HTML syntax , namespace prefixes and namespace declarations do not have the same effect as in XML. For instance, the colon has no special meaning in HTML element names.
The
attribute
with
the
name
space
in
the
XML
namespace
is
defined
by
Extensible
Markup
Language
(
XML
).
[XML]
The
Name
production
is
defined
in
XML
.
[XML]
This
specification
also
references
the
<?xml-stylesheet?>
processing
instruction,
defined
in
Associating
Style
Sheets
with
XML
documents
.
[XMLSSPI]
This
specification
also
non-normatively
mentions
the
XSLTProcessor
interface
and
its
transformToFragment()
and
transformToDocument()
methods.
[XSLTP]
The following terms are defined in URL : [URL]
application/x-www-form-urlencoded
format
application/x-www-form-urlencoded
serializer
A number of schemes and protocols are referenced by this specification also:
about:
scheme
[ABOUT]
blob:
scheme
[FILEAPI]
data:
scheme
[RFC2397]
http:
scheme
[HTTP]
https:
scheme
[HTTP]
mailto:
scheme
[MAILTO]
sms:
scheme
[SMS]
urn:
scheme
[URN]
Media fragment syntax is defined in Media Fragments URI . [MEDIAFRAG]
The following terms are defined in URL Pattern : [URLPATTERN]
The following terms are defined in the HTTP specifications: [HTTP]
Accept
`
header
Accept-Language
`
header
Cache-Control
`
header
Content-Disposition
`
header
Content-Language
`
header
Content-Range
`
header
Last-Modified
`
header
Range
`
header
Referer
`
header
The following terms are defined in HTTP State Management Mechanism : [COOKIES]
Cookie
`
header
The following term is defined in Web Linking : [WEBLINK]
Link
`
header
Link
`
field
value
The following terms are defined in Structured Field Values for HTTP : [STRUCTURED-FIELDS]
The following terms are defined in MIME Sniffing : [MIMESNIFF]
The following terms are defined in Fetch : [FETCH]
about:blank
Sec-Purpose
`
User-Agent
`
value
Origin
`
header
Cross-Origin-Resource-Policy
`
header
RequestCredentials
enumeration
RequestDestination
enumeration
fetch()
method
The following terms are defined in Referrer Policy : [REFERRERPOLICY]
Referrer-Policy
`
HTTP
header
Referrer-Policy
`
header
algorithm
no-referrer
",
"
no-referrer-when-downgrade
",
"
origin-when-cross-origin
",
and
"
unsafe-url
"
referrer
policies
The following terms are defined in Mixed Content : [MIX]
The following terms are defined in Subresource Integrity : [SRI]
The following terms are defined in The No-Vary-Search HTTP Response Header Field : [NOVARYSEARCH]
The following terms are defined in Paint Timing : [PAINTTIMING]
The following terms are defined in Navigation Timing : [NAVIGATIONTIMING]
NavigationTimingType
and
its
"
navigate
",
"
reload
",
and
"
back_forward
"
values.
The following terms are defined in Resource Timing : [RESOURCETIMING]
The following terms are defined in Performance Timeline : [PERFORMANCETIMELINE]
PerformanceEntry
and
its
name
,
entryType
,
startTime
,
and
duration
attributes.
The following terms are defined in Long Animation Frames : [LONGANIMATIONFRAMES]
The following terms are defined in Long Tasks : [LONGTASKS]
The IDL fragments in this specification must be interpreted as required for conforming IDL fragments, as described in Web IDL . [WEBIDL]
The following terms are defined in Web IDL :
[Global]
[LegacyFactoryFunction]
[LegacyLenientThis]
[LegacyNullToEmptyString]
[LegacyOverrideBuiltIns]
[LegacyTreatNonObjectAsNull]
[LegacyUnenumerableNamedProperties]
[LegacyUnforgeable]
Web IDL also defines the following types that are used in this specification:
ArrayBuffer
ArrayBufferView
boolean
DOMString
double
Float16Array
Function
long
object
Promise
Uint8ClampedArray
unrestricted
double
unsigned
long
USVString
VoidFunction
QuotaExceededError
The
term
throw
in
this
specification
is
used
as
defined
in
Web
IDL
.
The
DOMException
type
and
the
following
exception
names
are
defined
by
Web
IDL
and
used
by
this
specification:
IndexSizeError
"
HierarchyRequestError
"
InvalidCharacterError
"
NoModificationAllowedError
"
NotFoundError
"
NotSupportedError
"
InvalidStateError
"
SyntaxError
"
InvalidAccessError
"
SecurityError
"
NetworkError
"
AbortError
"
DataCloneError
"
EncodingError
"
NotAllowedError
"
When
this
specification
requires
a
user
agent
to
create
a
Date
object
representing
a
particular
time
(which
could
be
the
special
value
Not-a-Number),
the
milliseconds
component
of
that
time,
if
any,
must
be
truncated
to
an
integer,
and
the
time
value
of
the
newly
created
Date
object
must
represent
the
resulting
truncated
time.
For
instance,
given
the
time
23045
millionths
of
a
second
after
01:00
UTC
on
January
1st
2000,
i.e.
the
time
2000-01-01T00:00:00.023045Z,
then
the
Date
object
created
representing
that
time
would
represent
the
same
time
as
that
created
representing
the
time
2000-01-01T00:00:00.023Z,
45
millionths
earlier.
If
the
given
time
is
NaN,
then
the
result
is
a
Date
object
that
represents
a
time
value
NaN
(indicating
that
the
object
does
not
represent
a
specific
instant
of
time).
Some parts of the language described by this specification only support JavaScript as the underlying scripting language. [JAVASCRIPT]
The term "JavaScript" is used to refer to ECMA-262, rather than the official term ECMAScript, since the term JavaScript is more widely known.
The following terms are defined in the JavaScript specification and used in this specification:
Atomics
object