Table of contents
- 1 Introduction
- 2 Common infrastructure
- 3 Semantics, structure, and APIs of HTML documents
- 4 The elements of HTML
- 5 Microdata
- 6 User interaction
- 7 Loading web pages
- 8 Web application APIs
- 9 Communication
- 10 Web workers
- 11 Worklets
- 12 Web storage
- 13 The HTML syntax
- 14 The XML syntax
- 15 Rendering
- 16 Obsolete features
- 17 IANA considerations
- Index
- References
- Acknowledgments
- Intellectual property rights
Full table of contents
- 1 Introduction
- 1.1 Where does this specification fit?
- 1.2 Is this HTML5?
- 1.3 Background
- 1.4 Audience
- 1.5 Scope
- 1.6 History
- 1.7 Design notes
- 1.7.1 Serializability of script execution
- 1.7.2 Compliance with other specifications
- 1.7.3 Extensibility
- 1.8 HTML vs XML syntax
- 1.9 Structure of this specification
- 1.9.1 How to read this specification
- 1.9.2 Typographic conventions
- 1.10 A quick introduction to HTML
- 1.10.1 Writing secure applications with HTML
- 1.10.2 Common pitfalls to avoid when using the scripting APIs
- 1.10.3 How to catch mistakes when writing HTML: validators and conformance checkers
- 1.11 Conformance requirements for authors
- 1.11.1 Presentational markup
- 1.11.2 Syntax errors
- 1.11.3 Restrictions on content models and on attribute values
- 1.12 Suggested reading
- 2 Common infrastructure
- 2.1 Terminology
- 2.1.1 Parallelism
- 2.1.2 Resources
- 2.1.3 XML compatibility
- 2.1.4 DOM trees
- 2.1.5 Scripting
- 2.1.6 Plugins
- 2.1.7 Character encodings
- 2.1.8 Conformance classes
- 2.1.9 Dependencies
- 2.1.10 Extensibility
- 2.1.11 Interactions with XPath and XSLT
- 2.2 Policy-controlled features
- 2.3 Common microsyntaxes
- 2.3.1 Common parser idioms
- 2.3.2 Boolean attributes
- 2.3.3 Keywords and enumerated attributes
- 2.3.4 Numbers
- 2.3.4.1 Signed integers
- 2.3.4.2 Non-negative integers
- 2.3.4.3 Floating-point numbers
- 2.3.4.4 Percentages and lengths
- 2.3.4.5 Nonzero percentages and lengths
- 2.3.4.6 Lists of floating-point numbers
- 2.3.4.7 Lists of dimensions
- 2.3.5 Dates and times
- 2.3.5.1 Months
- 2.3.5.2 Dates
- 2.3.5.3 Yearless dates
- 2.3.5.4 Times
- 2.3.5.5 Local dates and times
- 2.3.5.6 Time zones
- 2.3.5.7 Global dates and times
- 2.3.5.8 Weeks
- 2.3.5.9 Durations
- 2.3.5.10 Vaguer moments in time
- 2.3.6 Colors
- 2.3.7 Space-separated tokens
- 2.3.8 Comma-separated tokens
- 2.3.9 References
- 2.3.10 Media queries
- 2.4 URLs
- 2.4.1 Terminology
- 2.4.2 Parsing URLs
- 2.4.3 Dynamic changes to base URLs
- 2.5 Fetching resources
- 2.5.1 Terminology
- 2.5.2 Determining the type of a resource
- 2.5.3 Extracting character encodings from
meta
elements - 2.5.4 CORS settings attributes
- 2.5.5 Referrer policy attributes
- 2.5.6 Nonce attributes
- 2.5.7 Lazy loading attributes
- 2.6 Common DOM interfaces
- 2.6.1 Reflecting content attributes in IDL attributes
- 2.6.2 Collections
- 2.6.2.1 The
HTMLAllCollection
interface- 2.6.2.1.1 [[Call]] ( thisArgument, argumentsList )
- 2.6.2.2 The
HTMLFormControlsCollection
interface - 2.6.2.3 The
HTMLOptionsCollection
interface
- 2.6.3 The
DOMStringList
interface
- 2.7 Safe passing of structured data
- 2.7.1 Serializable objects
- 2.7.2 Transferable objects
- 2.7.3 StructuredSerializeInternal ( value, forStorage [ ,
memory ] )
- 2.7.4 StructuredSerialize ( value )
- 2.7.5 StructuredSerializeForStorage ( value )
- 2.7.6 StructuredDeserialize ( serialized, targetRealm [ ,
memory ] )
- 2.7.7 StructuredSerializeWithTransfer ( value, transferList
)
- 2.7.8 StructuredDeserializeWithTransfer ( serializeWithTransferResult,
targetRealm )
- 2.7.9 Performing serialization and
transferring from other specifications
- 2.7.10 Structured cloning API
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
- 3.1.1 The
Document
object - 3.1.2 The
DocumentOrShadowRoot
interface - 3.1.3 Resource metadata management
- 3.1.4 Reporting document loading status
- 3.1.5 DOM tree accessors
- 3.2 Elements
- 3.2.1 Semantics
- 3.2.2 Elements in the DOM
- 3.2.3 HTML element constructors
- 3.2.4 Element definitions
- 3.2.4.1 Attributes
- 3.2.5 Content models
- 3.2.5.1 The "nothing" content model
- 3.2.5.2 Kinds of content
- 3.2.5.2.1 Metadata content
- 3.2.5.2.2 Flow content
- 3.2.5.2.3 Sectioning content
- 3.2.5.2.4 Heading content
- 3.2.5.2.5 Phrasing content
- 3.2.5.2.6 Embedded content
- 3.2.5.2.7 Interactive content
- 3.2.5.2.8 Palpable content
- 3.2.5.2.9 Script-supporting elements
- 3.2.5.3 Transparent content models
- 3.2.5.4 Paragraphs
- 3.2.6 Global attributes
- 3.2.6.1 The
title
attribute - 3.2.6.2 The
lang
and xml:lang
attributes - 3.2.6.3 The
translate
attribute - 3.2.6.4 The
dir
attribute - 3.2.6.5 The
style
attribute - 3.2.6.6 Embedding custom non-visible data with the
data-*
attributes
- 3.2.7 The
innerText
and outerText
properties - 3.2.8 Requirements relating to the bidirectional algorithm
- 3.2.8.1 Authoring conformance criteria for bidirectional-algorithm formatting characters
- 3.2.8.2 User agent conformance criteria
- 3.2.9 Requirements related to ARIA and to platform accessibility APIs
- 4 The elements of HTML
- 4.1 The document element
- 4.1.1 The
html
element
- 4.2 Document metadata
- 4.2.1 The
head
element - 4.2.2 The
title
element - 4.2.3 The
base
element - 4.2.4 The
link
element- 4.2.4.1 Processing the
media
attribute - 4.2.4.2 Processing the
type
attribute - 4.2.4.3 Fetching and processing a resource
from a
link
element - 4.2.4.4 Processing `
Link
` headers - 4.2.4.5 Providing users with a means to follow hyperlinks created using the
link
element
- 4.2.5 The
meta
element- 4.2.5.1 Standard metadata names
- 4.2.5.2 Other metadata names
- 4.2.5.3 Pragma directives
- 4.2.5.4 Specifying the document's character encoding
- 4.2.6 The
style
element - 4.2.7 Interactions of styling and scripting
- 4.3 Sections
- 4.3.1 The
body
element - 4.3.2 The
article
element - 4.3.3 The
section
element - 4.3.4 The
nav
element - 4.3.5 The
aside
element - 4.3.6 The
h1
, h2
, h3
, h4
, h5
, and h6
elements - 4.3.7 The
hgroup
element - 4.3.8 The
header
element - 4.3.9 The
footer
element - 4.3.10 The
address
element - 4.3.11 Headings and sections
- 4.3.11.1 Creating an outline
- 4.3.11.2 Sample outlines
- 4.3.11.3 Exposing outlines to users
- 4.3.12 Usage summary
- 4.3.12.1 Article or section?
- 4.4 Grouping content
- 4.4.1 The
p
element - 4.4.2 The
hr
element - 4.4.3 The
pre
element - 4.4.4 The
blockquote
element - 4.4.5 The
ol
element - 4.4.6 The
ul
element - 4.4.7 The
menu
element - 4.4.8 The
li
element - 4.4.9 The
dl
element - 4.4.10 The
dt
element - 4.4.11 The
dd
element - 4.4.12 The
figure
element - 4.4.13 The
figcaption
element - 4.4.14 The
main
element - 4.4.15 The
div
element
- 4.5 Text-level semantics
- 4.5.1 The
a
element - 4.5.2 The
em
element - 4.5.3 The
strong
element - 4.5.4 The
small
element - 4.5.5 The
s
element - 4.5.6 The
cite
element - 4.5.7 The
q
element - 4.5.8 The
dfn
element - 4.5.9 The
abbr
element - 4.5.10 The
ruby
element - 4.5.11 The
rt
element - 4.5.12 The
rp
element - 4.5.13 The
data
element - 4.5.14 The
time
element - 4.5.15 The
code
element - 4.5.16 The
var
element - 4.5.17 The
samp
element - 4.5.18 The
kbd
element - 4.5.19 The
sub
and sup
elements - 4.5.20 The
i
element - 4.5.21 The
b
element - 4.5.22 The
u
element - 4.5.23 The
mark
element - 4.5.24 The
bdi
element - 4.5.25 The
bdo
element - 4.5.26 The
span
element - 4.5.27 The
br
element - 4.5.28 The
wbr
element - 4.5.29 Usage summary
- 4.6 Links
- 4.6.1 Introduction
- 4.6.2 Links created by
a
and area
elements - 4.6.3 API for
a
and area
elements - 4.6.4 Following hyperlinks
- 4.6.5 Downloading resources
- 4.6.6 Hyperlink auditing
- 4.6.6.1 The `
Ping-From
` and `Ping-To
` headers
- 4.6.7 Link types
- 4.6.7.1 Link type "
alternate
" - 4.6.7.2 Link type "
author
" - 4.6.7.3 Link type "
bookmark
" - 4.6.7.4 Link type "
canonical
" - 4.6.7.5 Link type "
dns-prefetch
" - 4.6.7.6 Link type "
external
" - 4.6.7.7 Link type "
help
" - 4.6.7.8 Link type "
icon
" - 4.6.7.9 Link type "
license
" - 4.6.7.10 Link type "
manifest
" - 4.6.7.11 Link type "
modulepreload
" - 4.6.7.12 Link type "
nofollow
" - 4.6.7.13 Link type "
noopener
" - 4.6.7.14 Link type "
noreferrer
" - 4.6.7.15 Link type "
opener
" - 4.6.7.16 Link type "
pingback
" - 4.6.7.17 Link type "
preconnect
" - 4.6.7.18 Link type "
prefetch
" - 4.6.7.19 Link type "
preload
" - 4.6.7.20 Link type "
prerender
" - 4.6.7.21 Link type "
search
" - 4.6.7.22 Link type "
stylesheet
" - 4.6.7.23 Link type "
tag
" - 4.6.7.24 Sequential link types
- 4.6.7.24.1 Link type "
next
" - 4.6.7.24.2 Link type "
prev
"
- 4.6.7.25 Other link types
- 4.7 Edits
- 4.7.1 The
ins
element - 4.7.2 The
del
element - 4.7.3 Attributes common to
ins
and del
elements - 4.7.4 Edits and paragraphs
- 4.7.5 Edits and lists
- 4.7.6 Edits and tables
- 4.8 Embedded content
- 4.8.1 The
picture
element - 4.8.2 The
source
element - 4.8.3 The
img
element - 4.8.4 Images
- 4.8.4.1 Introduction
- 4.8.4.1.1 Adaptive images
- 4.8.4.2 Attributes common to
source
,
img
, and link
elements- 4.8.4.2.1 Srcset attributes
- 4.8.4.2.2 Sizes attributes
- 4.8.4.3 Processing model
- 4.8.4.3.1 When to obtain images
- 4.8.4.3.2 Reacting to DOM mutations
- 4.8.4.3.3 The list of available images
- 4.8.4.3.4 Decoding images
- 4.8.4.3.5 Updating the image data
- 4.8.4.3.6 Preparing an image for presentation
- 4.8.4.3.7 Selecting an image source
- 4.8.4.3.8 Updating the source set
- 4.8.4.3.9 Parsing a srcset attribute
- 4.8.4.3.10 Parsing a sizes attribute
- 4.8.4.3.11 Normalizing the source densities
- 4.8.4.3.12 Reacting to environment changes
- 4.8.4.4 Requirements for providing text to act as an alternative for images
- 4.8.4.4.1 General guidelines
- 4.8.4.4.2 A link or button containing nothing but the image
- 4.8.4.4.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
- 4.8.4.4.4 A short phrase or label with an alternative graphical representation: icons, logos
- 4.8.4.4.5 Text that has been rendered to a graphic for typographical effect
- 4.8.4.4.6 A graphical representation of some of the surrounding text
- 4.8.4.4.7 Ancillary images
- 4.8.4.4.8 A purely decorative image that doesn't add any information
- 4.8.4.4.9 A group of images that form a single larger picture with no links
- 4.8.4.4.10 A group of images that form a single larger picture with links
- 4.8.4.4.11 A key part of the content
- 4.8.4.4.12 An image not intended for the user
- 4.8.4.4.13 An image in an email or private document intended for a specific person who is known to be able to view images
- 4.8.4.4.14 Guidance for markup generators
- 4.8.4.4.15 Guidance for conformance checkers
- 4.8.5 The
iframe
element - 4.8.6 The
embed
element - 4.8.7 The
object
element - 4.8.8 The
param
element - 4.8.9 The
video
element - 4.8.10 The
audio
element - 4.8.11 The
track
element - 4.8.12 Media elements
- 4.8.12.1 Error codes
- 4.8.12.2 Location of the media resource
- 4.8.12.3 MIME types
- 4.8.12.4 Network states
- 4.8.12.5 Loading the media resource
- 4.8.12.6 Offsets into the media resource
- 4.8.12.7 Ready states
- 4.8.12.8 Playing the media resource
- 4.8.12.9 Seeking
- 4.8.12.10 Media resources with multiple media tracks
- 4.8.12.10.1
AudioTrackList
and VideoTrackList
objects - 4.8.12.10.2 Selecting specific audio and video tracks declaratively
- 4.8.12.11 Timed text tracks
- 4.8.12.11.1 Text track model
- 4.8.12.11.2 Sourcing in-band text tracks
- 4.8.12.11.3 Sourcing out-of-band text tracks
- 4.8.12.11.4 Guidelines for exposing cues in various formats as text track cues
- 4.8.12.11.5 Text track API
- 4.8.12.11.6 Event handlers for objects of the text track APIs
- 4.8.12.11.7 Best practices for metadata text tracks
- 4.8.12.12 Identifying a track kind through a URL
- 4.8.12.13 User interface
- 4.8.12.14 Time ranges
- 4.8.12.15 The
TrackEvent
interface - 4.8.12.16 Events summary
- 4.8.12.17 Security and privacy considerations
- 4.8.12.18 Best practices for authors using media elements
- 4.8.12.19 Best practices for implementers of media elements
- 4.8.13 The
map
element - 4.8.14 The
area
element - 4.8.15 Image maps
- 4.8.15.1 Authoring
- 4.8.15.2 Processing model
- 4.8.16 MathML
- 4.8.17 SVG
- 4.8.18 Dimension attributes
- 4.9 Tabular data
- 4.9.1 The
table
element- 4.9.1.1 Techniques for describing tables
- 4.9.1.2 Techniques for table design
- 4.9.2 The
caption
element - 4.9.3 The
colgroup
element - 4.9.4 The
col
element - 4.9.5 The
tbody
element - 4.9.6 The
thead
element - 4.9.7 The
tfoot
element - 4.9.8 The
tr
element - 4.9.9 The
td
element - 4.9.10 The
th
element - 4.9.11 Attributes common to
td
and th
elements - 4.9.12 Processing model
- 4.9.12.1 Forming a table
- 4.9.12.2 Forming relationships between data cells and header cells
- 4.9.13 Examples
- 4.10 Forms
- 4.10.1 Introduction
- 4.10.1.1 Writing a form's user interface
- 4.10.1.2 Implementing the server-side processing for a form
- 4.10.1.3 Configuring a form to communicate with a server
- 4.10.1.4 Client-side form validation
- 4.10.1.5 Enabling client-side automatic filling of form controls
- 4.10.1.6 Improving the user experience on mobile devices
- 4.10.1.7 The difference between the field type, the autofill field name, and the input modality
- 4.10.1.8 Date, time, and number formats
- 4.10.2 Categories
- 4.10.3 The
form
element - 4.10.4 The
search
element - 4.10.5 The
label
element - 4.10.6 The
input
element- 4.10.6.1 States of the
type
attribute- 4.10.6.1.1 Hidden state (
type=hidden
) - 4.10.6.1.2 Text (
type=text
) state and Search state (type=search
) - 4.10.6.1.3 Telephone state (
type=tel
) - 4.10.6.1.4 URL state (
type=url
) - 4.10.6.1.5 Email state (
type=email
) - 4.10.6.1.6 Password state (
type=password
) - 4.10.6.1.7 Date state (
type=date
) - 4.10.6.1.8 Month state (
type=month
) - 4.10.6.1.9 Week state (
type=week
) - 4.10.6.1.10 Time state (
type=time
) - 4.10.6.1.11 Local Date and Time state (
type=datetime-local
) - 4.10.6.1.12 Number state (
type=number
) - 4.10.6.1.13 Range state (
type=range
) - 4.10.6.1.14 Color state (
type=color
) - 4.10.6.1.15 Checkbox state (
type=checkbox
) - 4.10.6.1.16 Radio Button state (
type=radio
) - 4.10.6.1.17 File Upload state (
type=file
) - 4.10.6.1.18 Submit Button state (
type=submit
) - 4.10.6.1.19 Image Button state (
type=image
) - 4.10.6.1.20 Reset Button state (
type=reset
) - 4.10.6.1.21 Button state (
type=button
)
- 4.10.6.2 Implementation notes regarding localization of form controls
- 4.10.6.3 Common
input
element attributes- 4.10.6.3.1 The
maxlength
and minlength
attributes - 4.10.6.3.2 The
size
attribute - 4.10.6.3.3 The
readonly
attribute - 4.10.6.3.4 The
required
attribute - 4.10.6.3.5 The
multiple
attribute - 4.10.6.3.6 The
pattern
attribute - 4.10.6.3.7 The
min
and max
attributes - 4.10.6.3.8 The
step
attribute - 4.10.6.3.9 The
list
attribute - 4.10.6.3.10 The
placeholder
attribute
- 4.10.6.4 Common
input
element APIs - 4.10.6.5 Common event behaviors
- 4.10.7 The
button
element - 4.10.8 The
select
element - 4.10.9 The
datalist
element - 4.10.10 The
optgroup
element - 4.10.11 The
option
element - 4.10.12 The
textarea
element - 4.10.13 The
output
element - 4.10.14 The
progress
element - 4.10.15 The
meter
element - 4.10.16 The
fieldset
element - 4.10.17 The
legend
element - 4.10.18 Form control infrastructure
- 4.10.18.1 A form control's value
- 4.10.18.2 Mutability
- 4.10.18.3 Association of controls and forms
- 4.10.19 Attributes common to form controls
- 4.10.19.1 Naming form controls: the
name
attribute - 4.10.19.2 Submitting element directionality: the
dirname
attribute - 4.10.19.3 Limiting user input length: the
maxlength
attribute - 4.10.19.4 Setting minimum input length requirements: the
minlength
attribute - 4.10.19.5 Enabling and disabling form controls: the
disabled
attribute - 4.10.19.6 Form submission attributes
- 4.10.19.7 Autofill
- 4.10.19.7.1 Autofilling form controls: the
autocomplete
attribute - 4.10.19.7.2 Processing model
- 4.10.20 APIs for the text control selections
- 4.10.21 Constraints
- 4.10.21.1 Definitions
- 4.10.21.2 Constraint validation
- 4.10.21.3 The constraint validation API
- 4.10.21.4 Security
- 4.10.22 Form submission
- 4.10.22.1 Introduction
- 4.10.22.2 Implicit submission
- 4.10.22.3 Form submission algorithm
- 4.10.22.4 Constructing the entry list
- 4.10.22.5 Selecting a form submission encoding
- 4.10.22.6 Converting an entry list to a list of name-value pairs
- 4.10.22.7 URL-encoded form data
- 4.10.22.8 Multipart form data
- 4.10.22.9 Plain text form data
- 4.10.22.10 The
SubmitEvent
interface - 4.10.22.11 The
FormDataEvent
interface
- 4.10.23 Resetting a form
- 4.11 Interactive elements
- 4.11.1 The
details
element - 4.11.2 The
summary
element - 4.11.3 Commands
- 4.11.3.1 Facets
- 4.11.3.2 Using the
a
element to define a command - 4.11.3.3 Using the
button
element to define a command - 4.11.3.4 Using the
input
element to define a command - 4.11.3.5 Using the
option
element to define a command - 4.11.3.6 Using the
accesskey
attribute
on a legend
element to define a command - 4.11.3.7 Using the
accesskey
attribute to define a command on other elements
- 4.11.4 The
dialog
element
- 4.12 Scripting
- 4.12.1 The
script
element- 4.12.1.1 Processing model
- 4.12.1.2 Scripting languages
- 4.12.1.3 Restrictions for contents of
script
elements - 4.12.1.4 Inline documentation for external scripts
- 4.12.1.5 Interaction of
script
elements and XSLT
- 4.12.2 The
noscript
element - 4.12.3 The
template
element- 4.12.3.1 Interaction of
template
elements with XSLT and XPath
- 4.12.4 The
slot
element - 4.12.5 The
canvas
element- 4.12.5.1 The 2D rendering context
- 4.12.5.1.1 Implementation notes
- 4.12.5.1.2 The canvas state
- 4.12.5.1.3 Line styles
- 4.12.5.1.4 Text styles
- 4.12.5.1.5 Building paths
- 4.12.5.1.6
Path2D
objects - 4.12.5.1.7 Transformations
- 4.12.5.1.8 Image sources for 2D rendering contexts
- 4.12.5.1.9 Fill and stroke styles
- 4.12.5.1.10 Drawing rectangles to the bitmap
- 4.12.5.1.11 Drawing text to the bitmap
- 4.12.5.1.12 Drawing paths to the canvas
- 4.12.5.1.13 Drawing focus rings and scrolling paths into view
- 4.12.5.1.14 Drawing images
- 4.12.5.1.15 Pixel manipulation
- 4.12.5.1.16 Compositing
- 4.12.5.1.17 Image smoothing
- 4.12.5.1.18 Shadows
- 4.12.5.1.19 Filters
- 4.12.5.1.20 Working with externally-defined SVG filters
- 4.12.5.1.21 Drawing model
- 4.12.5.1.22 Best practices
- 4.12.5.1.23 Examples
- 4.12.5.2 The
ImageBitmap
rendering context- 4.12.5.2.1 Introduction
- 4.12.5.2.2 The
ImageBitmapRenderingContext
interface
- 4.12.5.3 The
OffscreenCanvas
interface- 4.12.5.3.1 The offscreen 2D rendering context
- 4.12.5.4 Color spaces and color space
conversion
- 4.12.5.5 Serializing bitmaps to a file
- 4.12.5.6 Security with
canvas
elements - 4.12.5.7 Premultiplied alpha and the 2D rendering context
- 4.13 Custom elements
- 4.13.1 Introduction
- 4.13.1.1 Creating an autonomous custom element
- 4.13.1.2 Creating a form-associated custom element
- 4.13.1.3 Creating a custom element with default accessible roles, states, and properties
- 4.13.1.4 Creating a customized built-in element
- 4.13.1.5 Drawbacks of autonomous custom elements
- 4.13.1.6 Upgrading elements after their creation
- 4.13.2 Requirements for custom element constructors and
reactions
- 4.13.3 Core concepts
- 4.13.4 The
CustomElementRegistry
interface - 4.13.5 Upgrades
- 4.13.6 Custom element reactions
- 4.13.7 Element internals
- 4.13.7.1 The
ElementInternals
interface - 4.13.7.2 Shadow root access
- 4.13.7.3 Form-associated custom elements
- 4.13.7.4 Accessibility semantics
- 4.14 Common idioms without dedicated elements
- 4.14.1 Breadcrumb navigation
- 4.14.2 Tag clouds
- 4.14.3 Conversations
- 4.14.4 Footnotes
- 4.15 Disabled elements
- 4.16 Matching HTML elements using selectors and CSS
- 4.16.1 Case-sensitivity of the CSS 'attr()' function
- 4.16.2 Case-sensitivity of selectors
- 4.16.3 Pseudo-classes
- 5 Microdata
- 5.1 Introduction
- 5.1.1 Overview
- 5.1.2 The basic syntax
- 5.1.3 Typed items
- 5.1.4 Global identifiers for items
- 5.1.5 Selecting names when defining vocabularies
- 5.2 Encoding microdata
- 5.2.1 The microdata model
- 5.2.2 Items
- 5.2.3 Names: the
itemprop
attribute - 5.2.4 Values
- 5.2.5 Associating names with items
- 5.2.6 Microdata and other namespaces
- 5.3 Sample microdata vocabularies
- 5.3.1 vCard
- 5.3.1.1 Conversion to vCard
- 5.3.1.2 Examples
- 5.3.2 vEvent
- 5.3.2.1 Conversion to iCalendar
- 5.3.2.2 Examples
- 5.3.3 Licensing works
- 5.3.3.1 Examples
- 5.4 Converting HTML to other formats
- 5.4.1 JSON
- 6 User interaction
- 6.1 The
hidden
attribute - 6.2 Page visibility
- 6.3 Inert subtrees
- 6.4 Tracking user activation
- 6.4.1 Data model
- 6.4.2 Processing model
- 6.4.3 APIs gated by user activation
- 6.5 Activation behavior of elements
- 6.6 Focus
- 6.6.1 Introduction
- 6.6.2 Data model
- 6.6.3 The
tabindex
attribute - 6.6.4 Processing model
- 6.6.5 Sequential focus navigation
- 6.6.6 Focus management APIs
- 6.6.7 The
autofocus
attribute
- 6.7 Assigning keyboard shortcuts
- 6.7.1 Introduction
- 6.7.2 The
accesskey
attribute - 6.7.3 Processing
model
- 6.8 Editing
- 6.8.1 Making document regions editable: The
contenteditable
content attribute - 6.8.2 Making entire documents
editable: the
designMode
getter and setter - 6.8.3 Best practices for in-page editors
- 6.8.4 Editing APIs
- 6.8.5 Spelling and grammar checking
- 6.8.6 Autocapitalization
- 6.8.7 Input modalities: the
inputmode
attribute - 6.8.8 Input modalities: the
enterkeyhint
attribute
- 6.9 Find-in-page
- 6.9.1 Introduction
- 6.9.2 Interaction with
details
- 6.9.3 Interaction with selection
- 6.10 Drag and drop
- 6.10.1 Introduction
- 6.10.2 The drag data store
- 6.10.3 The
DataTransfer
interface- 6.10.3.1 The
DataTransferItemList
interface - 6.10.3.2 The
DataTransferItem
interface
- 6.10.4 The
DragEvent
interface - 6.10.5 Processing model
- 6.10.6 Events summary
- 6.10.7 The
draggable
attribute - 6.10.8 Security risks in the drag-and-drop model
- 7 Loading web pages
- 7.1 Browsing contexts
- 7.1.1 Creating browsing contexts
- 7.1.2 Related browsing contexts
- 7.1.2.1 Navigating related browsing contexts in
the DOM
- 7.1.3 Security
- 7.1.4 Groupings of browsing contexts
- 7.1.5 Browsing context names
- 7.2 Security infrastructure for
Window
,
WindowProxy
, and Location
objects- 7.2.1 Integration with IDL
- 7.2.2 Shared internal slot: [[CrossOriginPropertyDescriptorMap]]
- 7.2.3 Shared abstract operations
- 7.2.3.1 CrossOriginProperties ( O )
- 7.2.3.2 CrossOriginPropertyFallback ( P )
- 7.2.3.3 IsPlatformObjectSameOrigin ( O )
- 7.2.3.4 CrossOriginGetOwnPropertyHelper ( O, P )
- 7.2.3.5 CrossOriginGet ( O, P, Receiver )
- 7.2.3.6 CrossOriginSet ( O, P, V,
Receiver )
- 7.2.3.7 CrossOriginOwnPropertyKeys ( O )
- 7.3 The
Window
object- 7.3.1 APIs for creating and navigating browsing contexts by name
- 7.3.2 Accessing other browsing contexts
- 7.3.3 Named access on the
Window
object - 7.3.4 Discarding browsing contexts
- 7.3.5 Closing browsing contexts
- 7.3.6 Browser interface elements
- 7.3.7 Script settings for
Window
objects
- 7.4 The
WindowProxy
exotic object- 7.4.1 [[GetPrototypeOf]] ( )
- 7.4.2 [[SetPrototypeOf]] ( V )
- 7.4.3 [[IsExtensible]] ( )
- 7.4.4 [[PreventExtensions]] ( )
- 7.4.5 [[GetOwnProperty]] ( P )
- 7.4.6 [[DefineOwnProperty]] ( P, Desc
)
- 7.4.7 [[Get]] ( P, Receiver )
- 7.4.8 [[Set]] ( P, V, Receiver )
- 7.4.9 [[Delete]] ( P )
- 7.4.10 [[OwnPropertyKeys]] ( )
- 7.5 Origin
- 7.5.1 Sites
- 7.5.2 Relaxing the same-origin restriction
- 7.5.3 Origin-keyed agent clusters
- 7.6 Sandboxing
- 7.7 Cross-origin opener policies
- 7.7.1 The headers
- 7.7.2 Browsing context group switches due to cross-origin opener policy
- 7.7.3 Reporting
- 7.8 Cross-origin embedder policies
- 7.8.1 The headers
- 7.8.2 Embedder policy checks
- 7.9 Policy containers
- 7.10 Session history and navigation
- 7.10.1 Browsing sessions
- 7.10.2 The session history of browsing contexts
- 7.10.3 The
History
interface - 7.10.4 Implementation notes for session history
- 7.10.5 The
Location
interface- 7.10.5.1 [[GetPrototypeOf]] ( )
- 7.10.5.2 [[SetPrototypeOf]] ( V )
- 7.10.5.3 [[IsExtensible]] ( )
- 7.10.5.4 [[PreventExtensions]] ( )
- 7.10.5.5 [[GetOwnProperty]] ( P )
- 7.10.5.6 [[DefineOwnProperty]] ( P, Desc )
- 7.10.5.7 [[Get]] ( P, Receiver )
- 7.10.5.8 [[Set]] ( P, V, Receiver )
- 7.10.5.9 [[Delete]] ( P )
- 7.10.5.10 [[OwnPropertyKeys]] ( )
- 7.11 Browsing the web
- 7.11.1 Navigating across documents
- 7.11.2 Page load processing model for HTML files
- 7.11.3 Page load processing model for XML files
- 7.11.4 Page load processing model for text files
- 7.11.5 Page load processing model for
multipart/x-mixed-replace
resources - 7.11.6 Page load processing model for media
- 7.11.7 Page load processing model for content that uses plugins
- 7.11.8 Page load processing model for inline
content that doesn't have a DOM
- 7.11.9 Navigating to a fragment
- 7.11.10 History traversal
- 7.11.10.1 Persisted history entry state
- 7.11.10.2 The
PopStateEvent
interface - 7.11.10.3 The
HashChangeEvent
interface - 7.11.10.4 The
PageTransitionEvent
interface
- 7.11.11 Loading documents
- 7.11.12 Unloading documents
- 7.11.12.1 The
BeforeUnloadEvent
interface
- 7.11.13 Aborting a document load
- 7.11.14 The `
X-Frame-Options
` header - 7.11.15 The `
Refresh
` header
- 8 Web application APIs
- 8.1 Scripting
- 8.1.1 Introduction
- 8.1.2 Agents and agent clusters
- 8.1.2.1 Integration with the JavaScript agent formalism
- 8.1.2.2 Integration with the JavaScript agent cluster formalism
- 8.1.3 Realms and their counterparts
- 8.1.3.1 Environments
- 8.1.3.2 Environment settings objects
- 8.1.3.3 Realms, settings objects, and global objects
- 8.1.3.3.1 Entry
- 8.1.3.3.2 Incumbent
- 8.1.3.3.3 Current
- 8.1.3.3.4 Relevant
- 8.1.3.4 Enabling and disabling scripting
- 8.1.3.5 Secure contexts
- 8.1.4 Script processing
model
- 8.1.4.1 Scripts
- 8.1.4.2 Fetching scripts
- 8.1.4.3 Creating scripts
- 8.1.4.4 Calling scripts
- 8.1.4.5 Killing scripts
- 8.1.4.6 Runtime script errors
- 8.1.4.7 Unhandled promise rejections
- 8.1.5 JavaScript specification host hooks
- 8.1.5.1 HostEnsureCanCompileStrings(callerRealm, calleeRealm)
- 8.1.5.2 HostPromiseRejectionTracker(promise, operation)
- 8.1.5.3 Job-related host hooks
- 8.1.5.3.1 HostCallJobCallback(callback, V,
argumentsList)
- 8.1.5.3.2 HostEnqueueFinalizationRegistryCleanupJob(finalizationRegistry)
- 8.1.5.3.3 HostEnqueuePromiseJob(job,
realm)
- 8.1.5.3.4 HostMakeJobCallback(callable)
- 8.1.5.4 Module-related host hooks
- 8.1.5.4.1 HostGetImportMetaProperties(moduleRecord)
- 8.1.5.4.2 HostImportModuleDynamically(referencingScriptOrModule,
moduleRequest, promiseCapability)
- 8.1.5.4.3 HostResolveImportedModule(referencingScriptOrModule,
moduleRequest)
- 8.1.5.4.4 HostGetSupportedImportAssertions()
- 8.1.6 Event loops
- 8.1.6.1 Definitions
- 8.1.6.2 Queuing tasks
- 8.1.6.3 Processing model
- 8.1.6.4 Generic task sources
- 8.1.6.5 Dealing with the event loop from other specifications
- 8.1.7 Events
- 8.1.7.1 Event handlers
- 8.1.7.2 Event handlers on elements,
Document
objects, and Window
objects- 8.1.7.2.1 IDL definitions
- 8.1.7.3 Event firing
- 8.2 The
WindowOrWorkerGlobalScope
mixin - 8.3 Base64 utility methods
- 8.4 Dynamic markup insertion
- 8.4.1 Opening the input stream
- 8.4.2 Closing the input stream
- 8.4.3
document.write()
- 8.4.4
document.writeln()
- 8.5 DOM parsing
- 8.6 Timers
- 8.7 Microtask queuing
- 8.8 User prompts
- 8.8.1 Simple dialogs
- 8.8.2 Printing
- 8.9 System state and capabilities
- 8.9.1 The
Navigator
object- 8.9.1.1 Client identification
- 8.9.1.2 Language preferences
- 8.9.1.3 Browser state
- 8.9.1.4 Custom scheme handlers: the
registerProtocolHandler()
method- 8.9.1.4.1 Security and privacy
- 8.9.1.5 Cookies
- 8.9.1.6 PDF viewing support
- 8.10 Images
- 8.11 Animation frames
- 9 Communication
- 9.1 The
MessageEvent
interface - 9.2 Server-sent events
- 9.2.1 Introduction
- 9.2.2 The
EventSource
interface - 9.2.3 Processing model
- 9.2.4 The `
Last-Event-ID
` header - 9.2.5 Parsing an event stream
- 9.2.6 Interpreting an event stream
- 9.2.7 Authoring notes
- 9.2.8 Connectionless push and other features
- 9.2.9 Garbage collection
- 9.2.10 Implementation advice
- 9.3 Web sockets
- 9.3.1 Introduction
- 9.3.2 The
WebSocket
interface - 9.3.3 Feedback from the protocol
- 9.3.4 Ping and Pong frames
- 9.3.5 The
CloseEvent
interface - 9.3.6 Garbage collection
- 9.4 Cross-document messaging
- 9.4.1 Introduction
- 9.4.2 Security
- 9.4.2.1 Authors
- 9.4.2.2 User agents
- 9.4.3 Posting messages
- 9.5 Channel messaging
- 9.5.1 Introduction
- 9.5.1.1 Examples
- 9.5.1.2 Ports as the basis of an object-capability model on the web
- 9.5.1.3 Ports as the basis of abstracting out service implementations
- 9.5.2 Message channels
- 9.5.3 Message ports
- 9.5.4 Broadcasting to many ports
- 9.5.5 Ports and garbage collection
- 9.6 Broadcasting to other browsing contexts
- 10 Web workers
- 10.1 Introduction
- 10.1.1 Scope
- 10.1.2 Examples
- 10.1.2.1 A background number-crunching worker
- 10.1.2.2 Using a JavaScript module as a worker
- 10.1.2.3 Shared workers introduction
- 10.1.2.4 Shared state using a shared worker
- 10.1.2.5 Delegation
- 10.1.2.6 Providing libraries
- 10.1.3 Tutorials
- 10.1.3.1 Creating a dedicated worker
- 10.1.3.2 Communicating with a dedicated worker
- 10.1.3.3 Shared workers
- 10.2 Infrastructure
- 10.2.1 The global scope
- 10.2.1.1 The
WorkerGlobalScope
common interface - 10.2.1.2 Dedicated workers and the
DedicatedWorkerGlobalScope
interface - 10.2.1.3 Shared workers and the
SharedWorkerGlobalScope
interface
- 10.2.2 The event loop
- 10.2.3 The worker's lifetime
- 10.2.4 Processing model
- 10.2.5 Runtime script errors
- 10.2.6 Creating workers
- 10.2.6.1 The
AbstractWorker
mixin - 10.2.6.2 Script settings for workers
- 10.2.6.3 Dedicated workers and the
Worker
interface - 10.2.6.4 Shared workers and the
SharedWorker
interface
- 10.2.7 Concurrent hardware capabilities
- 10.3 APIs available to workers
- 10.3.1 Importing scripts and libraries
- 10.3.2 The
WorkerNavigator
interface - 10.3.3 The
WorkerLocation
interface
- 11 Worklets
- 11.1 Introduction
- 11.1.1 Motivations
- 11.1.2 Code idempotence
- 11.1.3 Speculative evaluation
- 11.2 Examples
- 11.2.1 Loading scripts
- 11.2.2 Registering a class and invoking its methods
- 11.3 Infrastructure
- 11.3.1 The global scope
- 11.3.1.1 Agents and event loops
- 11.3.1.2 Creation and termination
- 11.3.1.3 Script settings for worklets
- 11.3.2 The
Worklet
class - 11.3.3 The worklet's lifetime
- 12 Web storage
- 12.1 Introduction
- 12.2 The API
- 12.2.1 The
Storage
interface - 12.2.2 The
sessionStorage
getter - 12.2.3 The
localStorage
getter - 12.2.4 The
StorageEvent
interface
- 12.3 Privacy
- 12.3.1 User tracking
- 12.3.2 Sensitivity of data
- 12.4 Security
- 12.4.1 DNS spoofing attacks
- 12.4.2 Cross-directory attacks
- 12.4.3 Implementation risks
- 13 The HTML syntax
- 13.1 Writing HTML documents
- 13.1.1 The DOCTYPE
- 13.1.2 Elements
- 13.1.2.1 Start tags
- 13.1.2.2 End tags
- 13.1.2.3 Attributes
- 13.1.2.4 Optional tags
- 13.1.2.5 Restrictions on content models
- 13.1.2.6 Restrictions on the contents of raw text and escapable raw text elements
- 13.1.3 Text
- 13.1.3.1 Newlines
- 13.1.4 Character references
- 13.1.5 CDATA sections
- 13.1.6 Comments
- 13.2 Parsing HTML documents
- 13.2.1 Overview of the parsing model
- 13.2.2 Parse errors
- 13.2.3 The input byte stream
- 13.2.3.1 Parsing with a known character encoding
- 13.2.3.2 Determining the character encoding
- 13.2.3.3 Character encodings
- 13.2.3.4 Changing the encoding while parsing
- 13.2.3.5 Preprocessing the input stream
- 13.2.4 Parse state
- 13.2.4.1 The insertion mode
- 13.2.4.2 The stack of open elements
- 13.2.4.3 The list of active formatting elements
- 13.2.4.4 The element pointers
- 13.2.4.5 Other parsing state flags
- 13.2.5 Tokenization
- 13.2.5.1 Data state
- 13.2.5.2 RCDATA state
- 13.2.5.3 RAWTEXT state
- 13.2.5.4 Script data state
- 13.2.5.5 PLAINTEXT state
- 13.2.5.6 Tag open state
- 13.2.5.7 End tag open state
- 13.2.5.8 Tag name state
- 13.2.5.9 RCDATA less-than sign state
- 13.2.5.10 RCDATA end tag open state
- 13.2.5.11 RCDATA end tag name state
- 13.2.5.12 RAWTEXT less-than sign state
- 13.2.5.13 RAWTEXT end tag open state
- 13.2.5.14 RAWTEXT end tag name state
- 13.2.5.15 Script data less-than sign state
- 13.2.5.16 Script data end tag open state
- 13.2.5.17 Script data end tag name state
- 13.2.5.18 Script data escape start state
- 13.2.5.19 Script data escape start dash state
- 13.2.5.20 Script data escaped state
- 13.2.5.21 Script data escaped dash state
- 13.2.5.22 Script data escaped dash dash state
- 13.2.5.23 Script data escaped less-than sign state
- 13.2.5.24 Script data escaped end tag open state
- 13.2.5.25 Script data escaped end tag name state
- 13.2.5.26 Script data double escape start state
- 13.2.5.27 Script data double escaped state
- 13.2.5.28 Script data double escaped dash state
- 13.2.5.29 Script data double escaped dash dash state
- 13.2.5.30 Script data double escaped less-than sign state
- 13.2.5.31 Script data double escape end state
- 13.2.5.32 Before attribute name state
- 13.2.5.33 Attribute name state
- 13.2.5.34 After attribute name state
- 13.2.5.35 Before attribute value state
- 13.2.5.36 Attribute value (double-quoted) state
- 13.2.5.37 Attribute value (single-quoted) state
- 13.2.5.38 Attribute value (unquoted) state
- 13.2.5.39 After attribute value (quoted) state
- 13.2.5.40 Self-closing start tag state
- 13.2.5.41 Bogus comment state
- 13.2.5.42 Markup declaration open state
- 13.2.5.43 Comment start state
- 13.2.5.44 Comment start dash state
- 13.2.5.45 Comment state
- 13.2.5.46 Comment less-than sign state
- 13.2.5.47 Comment less-than sign bang state
- 13.2.5.48 Comment less-than sign bang dash state
- 13.2.5.49 Comment less-than sign bang dash dash state
- 13.2.5.50 Comment end dash state
- 13.2.5.51 Comment end state
- 13.2.5.52 Comment end bang state
- 13.2.5.53 DOCTYPE state
- 13.2.5.54 Before DOCTYPE name state
- 13.2.5.55 DOCTYPE name state
- 13.2.5.56 After DOCTYPE name state
- 13.2.5.57 After DOCTYPE public keyword state
- 13.2.5.58 Before DOCTYPE public identifier state
- 13.2.5.59 DOCTYPE public identifier (double-quoted) state
- 13.2.5.60 DOCTYPE public identifier (single-quoted) state
- 13.2.5.61 After DOCTYPE public identifier state
- 13.2.5.62 Between DOCTYPE public and system identifiers state
- 13.2.5.63 After DOCTYPE system keyword state
- 13.2.5.64 Before DOCTYPE system identifier state
- 13.2.5.65 DOCTYPE system identifier (double-quoted) state
- 13.2.5.66 DOCTYPE system identifier (single-quoted) state
- 13.2.5.67 After DOCTYPE system identifier state
- 13.2.5.68 Bogus DOCTYPE state
- 13.2.5.69 CDATA section state
- 13.2.5.70 CDATA section bracket state
- 13.2.5.71 CDATA section end state
- 13.2.5.72 Character reference state
- 13.2.5.73 Named character reference state
- 13.2.5.74 Ambiguous ampersand state
- 13.2.5.75 Numeric character reference state
- 13.2.5.76 Hexadecimal character reference start state
- 13.2.5.77 Decimal character reference start state
- 13.2.5.78 Hexadecimal character reference state
- 13.2.5.79 Decimal character reference state
- 13.2.5.80 Numeric character reference end state
- 13.2.6 Tree construction
- 13.2.6.1 Creating and inserting nodes
- 13.2.6.2 Parsing elements that contain only text
- 13.2.6.3 Closing elements that have implied end tags
- 13.2.6.4 The rules for parsing tokens in HTML content
- 13.2.6.4.1 The "initial" insertion mode
- 13.2.6.4.2 The "before html" insertion mode
- 13.2.6.4.3 The "before head" insertion mode
- 13.2.6.4.4 The "in head" insertion mode
- 13.2.6.4.5 The "in head noscript" insertion mode
- 13.2.6.4.6 The "after head" insertion mode
- 13.2.6.4.7 The "in body" insertion mode
- 13.2.6.4.8 The "text" insertion mode
- 13.2.6.4.9 The "in table" insertion mode
- 13.2.6.4.10 The "in table text" insertion mode
- 13.2.6.4.11 The "in caption" insertion mode
- 13.2.6.4.12 The "in column group" insertion mode
- 13.2.6.4.13 The "in table body" insertion mode
- 13.2.6.4.14 The "in row" insertion mode
- 13.2.6.4.15 The "in cell" insertion mode
- 13.2.6.4.16 The "in select" insertion mode
- 13.2.6.4.17 The "in select in table" insertion mode
- 13.2.6.4.18 The "in template" insertion mode
- 13.2.6.4.19 The "after body" insertion mode
- 13.2.6.4.20 The "in frameset" insertion mode
- 13.2.6.4.21 The "after frameset" insertion mode
- 13.2.6.4.22 The "after after body" insertion mode
- 13.2.6.4.23 The "after after frameset" insertion mode
- 13.2.6.5 The rules for parsing tokens in foreign content
- 13.2.7 The end
- 13.2.8 Speculative HTML parsing
- 13.2.9 Coercing an HTML DOM into an infoset
- 13.2.10 An introduction to error handling and strange cases in the parser
- 13.2.10.1 Misnested tags: <b><i></b></i>
- 13.2.10.2 Misnested tags: <b><p></b></p>
- 13.2.10.3 Unexpected markup in tables
- 13.2.10.4 Scripts that modify the page as it is being parsed
- 13.2.10.5 The execution of scripts that are moving across multiple documents
- 13.2.10.6 Unclosed formatting elements
- 13.3 Serializing HTML fragments
- 13.4 Parsing HTML fragments
- 13.5 Named character references
- 14 The XML syntax
- 14.1 Writing documents in the XML syntax
- 14.2 Parsing XML documents
- 14.3 Serializing XML fragments
- 14.4 Parsing XML fragments
- 15 Rendering
- 15.1 Introduction
- 15.2 The CSS user agent style sheet and presentational hints
- 15.3 Non-replaced elements
- 15.3.1 Hidden elements
- 15.3.2 The page
- 15.3.3 Flow content
- 15.3.4 Phrasing content
- 15.3.5 Bidirectional text
- 15.3.6 Sections and headings
- 15.3.7 Lists
- 15.3.8 Tables
- 15.3.9 Margin collapsing quirks
- 15.3.10 Form controls
- 15.3.11 The
hr
element - 15.3.12 The
fieldset
and legend
elements
- 15.4 Replaced elements
- 15.4.1 Embedded content
- 15.4.2 Images
- 15.4.3 Attributes for embedded content and images
- 15.4.4 Image maps
- 15.5 Widgets
- 15.5.1 Introduction
- 15.5.2 Button layout
- 15.5.3 The
button
element - 15.5.4 The
details
and summary
elements - 15.5.5 The
input
element as a text entry widget - 15.5.6 The
input
element as domain-specific widgets - 15.5.7 The
input
element as a range control - 15.5.8 The
input
element as a color
well - 15.5.9 The
input
element as a checkbox and radio button widgets - 15.5.10 The
input
element as a file upload control - 15.5.11 The
input
element as a button - 15.5.12 The
marquee
element - 15.5.13 The
meter
element - 15.5.14 The
progress
element - 15.5.15 The
select
element - 15.5.16 The
textarea
element
- 15.6 Frames and framesets
- 15.7 Interactive media
- 15.7.1 Links, forms, and navigation
- 15.7.2 The
title
attribute - 15.7.3 Editing hosts
- 15.7.4 Text rendered in native user interfaces
- 15.8 Print media
- 15.9 Unstyled XML documents
- 16 Obsolete features
- 16.1 Obsolete but conforming features
- 16.1.1 Warnings for obsolete but conforming features
- 16.2 Non-conforming features
- 16.3 Requirements for implementations
- 16.3.1 The
marquee
element - 16.3.2 Frames
- 16.3.3 Other elements, attributes and APIs
- 17 IANA considerations
- 17.1
text/html
- 17.2
multipart/x-mixed-replace
- 17.3
application/xhtml+xml
- 17.4
text/ping
- 17.5
application/microdata+json
- 17.6
text/event-stream
- 17.7
web+
scheme prefix
- Index
- Elements
- Element content categories
- Attributes
- Element interfaces
- All interfaces
- Events
- HTTP headers
- MIME types
- References
- Acknowledgments
- Intellectual property rights