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 Web storage
- 12 The HTML syntax
- 13 The XHTML syntax
- 14 Rendering
- 15 Obsolete features
- 16 IANA considerations
- Index
- References
- Acknowledgements
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 Serialisability of script execution
- 1.7.2 Compliance with other specifications
- 1.7.3 Extensibility
 
- 1.8 HTML vs XHTML
- 1.9 Structure of this specification- 1.9.1 How to read this specification
- 1.9.2 Typographic conventions
 
- 1.10 Privacy concerns- 1.10.1 Cross-site communication
 
- 1.11 A quick introduction to HTML- 1.11.1 Writing secure applications with HTML
- 1.11.2 Common pitfalls to avoid when using the scripting APIs
- 1.11.3 How to catch mistakes when writing HTML: validators and conformance checkers
 
- 1.12 Conformance requirements for authors- 1.12.1 Presentational markup
- 1.12.2 Syntax errors
- 1.12.3 Restrictions on content models and on attribute values
 
- 1.13 Suggested reading
 
- 2 Common infrastructure- 2.1 Terminology- 2.1.1 Resources
- 2.1.2 XML
- 2.1.3 DOM trees
- 2.1.4 Scripting
- 2.1.5 Plugins
- 2.1.6 Character encodings
 
- 2.2 Conformance requirements- 2.2.1 Conformance classes
- 2.2.2 Dependencies
- 2.2.3 Extensibility
- 2.2.4 Interactions with XPath and XSLT
 
- 2.3 Case-sensitivity and string comparison
- 2.4 Common microsyntaxes- 2.4.1 Common parser idioms
- 2.4.2 Boolean attributes
- 2.4.3 Keywords and enumerated attributes
- 2.4.4 Numbers- 2.4.4.1 Signed integers
- 2.4.4.2 Non-negative integers
- 2.4.4.3 Floating-point numbers
- 2.4.4.4 Percentages and lengths
- 2.4.4.5 Lists of integers
- 2.4.4.6 Lists of dimensions
 
- 2.4.5 Dates and times- 2.4.5.1 Months
- 2.4.5.2 Dates
- 2.4.5.3 Yearless dates
- 2.4.5.4 Times
- 2.4.5.5 Local dates and times
- 2.4.5.6 Time zones
- 2.4.5.7 Global dates and times
- 2.4.5.8 Weeks
- 2.4.5.9 Durations
- 2.4.5.10 Vaguer moments in time
 
- 2.4.6 Colours
- 2.4.7 Space-separated tokens
- 2.4.8 Comma-separated tokens
- 2.4.9 References
- 2.4.10 Media queries
 
- 2.5 URLs- 2.5.1 Terminology
- 2.5.2 Resolving URLs
- 2.5.3 Dynamic changes to base URLs
 
- 2.6 Fetching resources- 2.6.1 Terminology
- 2.6.2 Processing model
- 2.6.3 Encrypted HTTP and related security concerns
- 2.6.4 Determining the type of a resource
- 2.6.5 Extracting character encodings from metaelements
- 2.6.6 CORS settings attributes
- 2.6.7 CORS-enabled fetch
 
- 2.7 Common DOM interfaces- 2.7.1 Reflecting content attributes in IDL attributes
- 2.7.2 Collections- 2.7.2.1 The HTMLAllCollectioninterface
- 2.7.2.2 The HTMLFormControlsCollectioninterface
- 2.7.2.3 The HTMLOptionsCollectioninterface
- 2.7.2.4 The HTMLPropertiesCollectioninterface
 
- 2.7.3 The DOMStringMapinterface
- 2.7.4 DOMElementMap
- 2.7.5 Transferable objects
- 2.7.6 Safe passing of structured data
- 2.7.7 Callbacks
- 2.7.8 Garbage collection
 
- 2.8 Namespaces
 
- 3 Semantics, structure, and APIs of HTML documents- 3.1 Documents- 3.1.1 The Documentobject
- 3.1.2 Resource metadata management
- 3.1.3 DOM tree accessors
- 3.1.4 Loading XML documents
 
- 3.2 Elements- 3.2.1 Semantics
- 3.2.2 Elements in the DOM
- 3.2.3 Element definitions- 3.2.3.1 Attributes
 
- 3.2.4 Content models- 3.2.4.1 The "nothing" content model
- 3.2.4.2 Kinds of content- 3.2.4.2.1 Metadata content
- 3.2.4.2.2 Flow content
- 3.2.4.2.3 Sectioning content
- 3.2.4.2.4 Heading content
- 3.2.4.2.5 Phrasing content
- 3.2.4.2.6 Embedded content
- 3.2.4.2.7 Interactive content
- 3.2.4.2.8 Palpable content
- 3.2.4.2.9 Script-supporting elements
 
- 3.2.4.3 Transparent content models
- 3.2.4.4 Paragraphs
 
- 3.2.5 Global attributes- 3.2.5.1 The idattribute
- 3.2.5.2 The titleattribute
- 3.2.5.3 The langandxml:langattributes
- 3.2.5.4 The translateattribute
- 3.2.5.5 The xml:baseattribute (XML only)
- 3.2.5.6 The dirattribute
- 3.2.5.7 The classattribute
- 3.2.5.8 The styleattribute
- 3.2.5.9 Embedding custom non-visible data with the data-*attributes
 
- 3.2.6 Requirements relating to the bidirectional algorithm- 3.2.6.1 Authoring conformance criteria for bidirectional-algorithm formatting characters
- 3.2.6.2 User agent conformance criteria
 
- 3.2.7 Annotations for assistive technology products (ARIA)
 
 
- 4 The elements of HTML- 4.1 The root element- 4.1.1 The htmlelement
 
- 4.2 Document metadata- 4.2.1 The headelement
- 4.2.2 The titleelement
- 4.2.3 The baseelement
- 4.2.4 The linkelement
- 4.2.5 The metaelement- 4.2.5.1 Standard metadata names
- 4.2.5.2 Other metadata names
- 4.2.5.3 Pragma directives
- 4.2.5.4 Other pragma directives
- 4.2.5.5 Specifying the document's character encoding
 
- 4.2.6 The styleelement
- 4.2.7 Interactions of styling and scripting
 
- 4.3 Sections- 4.3.1 The bodyelement
- 4.3.2 The articleelement
- 4.3.3 The sectionelement
- 4.3.4 The navelement
- 4.3.5 The asideelement
- 4.3.6 The h1,h2,h3,h4,h5, andh6elements
- 4.3.7 The hgroupelement
- 4.3.8 The headerelement
- 4.3.9 The footerelement
- 4.3.10 The addresselement
- 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 pelement
- 4.4.2 The hrelement
- 4.4.3 The preelement
- 4.4.4 The blockquoteelement
- 4.4.5 The olelement
- 4.4.6 The ulelement
- 4.4.7 The lielement
- 4.4.8 The dlelement
- 4.4.9 The dtelement
- 4.4.10 The ddelement
- 4.4.11 The figureelement
- 4.4.12 The figcaptionelement
- 4.4.13 The mainelement
- 4.4.14 The divelement
 
- 4.5 Text-level semantics- 4.5.1 The aelement
- 4.5.2 The emelement
- 4.5.3 The strongelement
- 4.5.4 The smallelement
- 4.5.5 The selement
- 4.5.6 The citeelement
- 4.5.7 The qelement
- 4.5.8 The dfnelement
- 4.5.9 The abbrelement
- 4.5.10 The rubyelement
- 4.5.11 The rtelement
- 4.5.12 The rpelement
- 4.5.13 The dataelement
- 4.5.14 The timeelement
- 4.5.15 The codeelement
- 4.5.16 The varelement
- 4.5.17 The sampelement
- 4.5.18 The kbdelement
- 4.5.19 The subandsupelements
- 4.5.20 The ielement
- 4.5.21 The belement
- 4.5.22 The uelement
- 4.5.23 The markelement
- 4.5.24 The bdielement
- 4.5.25 The bdoelement
- 4.5.26 The spanelement
- 4.5.27 The brelement
- 4.5.28 The wbrelement
- 4.5.29 Usage summary
 
- 4.6 Links- 4.6.1 Introduction
- 4.6.2 Links created by aandareaelements
- 4.6.3 Following hyperlinks
- 4.6.4 Downloading resources- 4.6.4.1 Hyperlink auditing
 
- 4.6.5 Link types- 4.6.5.1 Link type "alternate"
- 4.6.5.2 Link type "author"
- 4.6.5.3 Link type "bookmark"
- 4.6.5.4 Link type "external"
- 4.6.5.5 Link type "help"
- 4.6.5.6 Link type "icon"
- 4.6.5.7 Link type "license"
- 4.6.5.8 Link type "nofollow"
- 4.6.5.9 Link type "noreferrer"
- 4.6.5.10 Link type "pingback"
- 4.6.5.11 Link type "prefetch"
- 4.6.5.12 Link type "search"
- 4.6.5.13 Link type "sidebar"
- 4.6.5.14 Link type "stylesheet"
- 4.6.5.15 Link type "tag"
- 4.6.5.16 Sequential link types- 4.6.5.16.1 Link type "next"
- 4.6.5.16.2 Link type "prev"
 
- 4.6.5.17 Other link types
 
 
- 4.7 Edits- 4.7.1 The inselement
- 4.7.2 The delelement
- 4.7.3 Attributes common to insanddelelements
- 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 Introduction- 4.8.1.1 Adaptive images
 
- 4.8.2 Dependencies
- 4.8.3 The pictureelement
- 4.8.4 The sourceelement when used with thepictureelement
- 4.8.5 The imgelement- 4.8.5.1 Requirements for providing text to act as an alternative for images- 4.8.5.1.1 General guidelines
- 4.8.5.1.2 A link or button containing nothing but the image
- 4.8.5.1.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
- 4.8.5.1.4 A short phrase or label with an alternative graphical representation: icons, logos
- 4.8.5.1.5 Text that has been rendered to a graphic for typographical effect
- 4.8.5.1.6 A graphical representation of some of the surrounding text
- 4.8.5.1.7 Ancillary images
- 4.8.5.1.8 A purely decorative image that doesn't add any information
- 4.8.5.1.9 A group of images that form a single larger picture with no links
- 4.8.5.1.10 A group of images that form a single larger picture with links
- 4.8.5.1.11 A key part of the content
- 4.8.5.1.12 An image not intended for the user
- 4.8.5.1.13 An image in an e-mail or private document intended for a specific person who is known to be able to view images
- 4.8.5.1.14 Guidance for markup generators
- 4.8.5.1.15 Guidance for conformance checkers
 
 
- 4.8.6 The iframeelement
- 4.8.7 The embedelement
- 4.8.8 The objectelement
- 4.8.9 The paramelement
- 4.8.10 The videoelement
- 4.8.11 The audioelement
- 4.8.12 The sourceelement
- 4.8.13 The trackelement
- 4.8.14 Media elements- 4.8.14.1 Error codes
- 4.8.14.2 Location of the media resource
- 4.8.14.3 MIME types
- 4.8.14.4 Network states
- 4.8.14.5 Loading the media resource
- 4.8.14.6 Offsets into the media resource
- 4.8.14.7 Ready states
- 4.8.14.8 Playing the media resource
- 4.8.14.9 Seeking
- 4.8.14.10 Media resources with multiple media tracks- 4.8.14.10.1 AudioTrackListandVideoTrackListobjects
- 4.8.14.10.2 Selecting specific audio and video tracks declaratively
 
- 4.8.14.11 Synchronising multiple media elements- 4.8.14.11.1 Introduction
- 4.8.14.11.2 Media controllers
- 4.8.14.11.3 Assigning a media controller declaratively
 
- 4.8.14.12 Timed text tracks- 4.8.14.12.1 Text track model
- 4.8.14.12.2 Sourcing in-band text tracks
- 4.8.14.12.3 Sourcing out-of-band text tracks
- 4.8.14.12.4 Guidelines for exposing cues in various formats as text track cues
- 4.8.14.12.5 Text track API
- 4.8.14.12.6 Text tracks describing chapters
- 4.8.14.12.7 Event handlers for objects of the text track APIs
- 4.8.14.12.8 Best practices for metadata text tracks
 
- 4.8.14.13 User interface
- 4.8.14.14 Time ranges
- 4.8.14.15 The TrackEventinterface
- 4.8.14.16 Event summary
- 4.8.14.17 Security and privacy considerations
- 4.8.14.18 Best practices for authors using media elements
- 4.8.14.19 Best practices for implementors of media elements
 
- 4.8.15 The mapelement
- 4.8.16 The areaelement
- 4.8.17 Image maps- 4.8.17.1 Authoring
- 4.8.17.2 Processing model
 
- 4.8.18 MathML
- 4.8.19 SVG
- 4.8.20 Dimension attributes
 
- 4.9 Tabular data- 4.9.1 The tableelement- 4.9.1.1 Techniques for describing tables
- 4.9.1.2 Techniques for table design
 
- 4.9.2 The captionelement
- 4.9.3 The colgroupelement
- 4.9.4 The colelement
- 4.9.5 The tbodyelement
- 4.9.6 The theadelement
- 4.9.7 The tfootelement
- 4.9.8 The trelement
- 4.9.9 The tdelement
- 4.9.10 The thelement
- 4.9.11 Attributes common to tdandthelements
- 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 Table sorting model
- 4.9.14 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 formelement
- 4.10.4 The labelelement
- 4.10.5 The inputelement- 4.10.5.1 States of the typeattribute- 4.10.5.1.1 Hidden state (type=hidden)
- 4.10.5.1.2 Text (type=text) state and Search state (type=search)
- 4.10.5.1.3 Telephone state (type=tel)
- 4.10.5.1.4 URL state (type=url)
- 4.10.5.1.5 E-mail state (type=email)
- 4.10.5.1.6 Password state (type=password)
- 4.10.5.1.7 Date and Time state (type=datetime)
- 4.10.5.1.8 Date state (type=date)
- 4.10.5.1.9 Month state (type=month)
- 4.10.5.1.10 Week state (type=week)
- 4.10.5.1.11 Time state (type=time)
- 4.10.5.1.12 Local Date and Time state (type=datetime-local)
- 4.10.5.1.13 Number state (type=number)
- 4.10.5.1.14 Range state (type=range)
- 4.10.5.1.15 Colour state (type=color)
- 4.10.5.1.16 Checkbox state (type=checkbox)
- 4.10.5.1.17 Radio Button state (type=radio)
- 4.10.5.1.18 File Upload state (type=file)
- 4.10.5.1.19 Submit Button state (type=submit)
- 4.10.5.1.20 Image Button state (type=image)
- 4.10.5.1.21 Reset Button state (type=reset)
- 4.10.5.1.22 Button state (type=button)
 
- 4.10.5.2 Implemention notes regarding localization of form controls
- 4.10.5.3 Common inputelement attributes- 4.10.5.3.1 The maxlengthandminlengthattributes
- 4.10.5.3.2 The sizeattribute
- 4.10.5.3.3 The readonlyattribute
- 4.10.5.3.4 The requiredattribute
- 4.10.5.3.5 The multipleattribute
- 4.10.5.3.6 The patternattribute
- 4.10.5.3.7 The minandmaxattributes
- 4.10.5.3.8 The stepattribute
- 4.10.5.3.9 The listattribute
- 4.10.5.3.10 The placeholderattribute
 
- 4.10.5.4 Common inputelement APIs
- 4.10.5.5 Common event behaviours
 
- 4.10.6 The buttonelement
- 4.10.7 The selectelement
- 4.10.8 The datalistelement
- 4.10.9 The optgroupelement
- 4.10.10 The optionelement
- 4.10.11 The textareaelement
- 4.10.12 The keygenelement
- 4.10.13 The outputelement
- 4.10.14 The progresselement
- 4.10.15 The meterelement
- 4.10.16 The fieldsetelement
- 4.10.17 The legendelement
- 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 nameattribute
- 4.10.19.2 Submitting element directionality: the dirnameattribute
- 4.10.19.3 Limiting user input length: the maxlengthattribute
- 4.10.19.4 Setting minimum input length requirements: the minlengthattribute
- 4.10.19.5 Enabling and disabling form controls: the disabledattribute
- 4.10.19.6 Form submission- 4.10.19.6.1 Autofocusing a form control: the autofocusattribute
 
- 4.10.19.7 Input modalities: the inputmodeattribute
- 4.10.19.8 Autofill- 4.10.19.8.1 Autofilling form controls: the autocompleteattribute
- 4.10.19.8.2 Processing model
- 4.10.19.8.3 User interface for bulk autofill
- 4.10.19.8.4 The AutocompleteErrorEventinterface
 
 
- 4.10.20 APIs for the text field 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 form data set
- 4.10.22.5 Selecting a form submission encoding
- 4.10.22.6 URL-encoded form data
- 4.10.22.7 Multipart form data
- 4.10.22.8 Plain text form data
 
- 4.10.23 Resetting a form
 
- 4.11 Interactive elements- 4.11.1 The detailselement
- 4.11.2 The summaryelement
- 4.11.3 The menuelement
- 4.11.4 The menuitemelement
- 4.11.5 Context menus- 4.11.5.1 Declaring a context menu
- 4.11.5.2 Processing model
- 4.11.5.3 The RelatedEventinterfaces
 
- 4.11.6 Commands- 4.11.6.1 Facets
- 4.11.6.2 Using the aelement to define a command
- 4.11.6.3 Using the buttonelement to define a command
- 4.11.6.4 Using the inputelement to define a command
- 4.11.6.5 Using the optionelement to define a command
- 4.11.6.6 Using the menuitemelement to define a
  command
- 4.11.6.7 Using the commandattribute onmenuitemelements to define
  a command indirectly
- 4.11.6.8 Using the accesskeyattribute
  on alabelelement to define a command
- 4.11.6.9 Using the accesskeyattribute
  on alegendelement to define a command
- 4.11.6.10 Using the accesskeyattribute to define a command on other elements
 
- 4.11.7 The dialogelement- 4.11.7.1 Anchor points
 
 
- 4.12 Scripting- 4.12.1 The scriptelement- 4.12.1.1 Scripting languages
- 4.12.1.2 Restrictions for contents of scriptelements
- 4.12.1.3 Inline documentation for external scripts
- 4.12.1.4 Interaction of scriptelements and XSLT
 
- 4.12.2 The noscriptelement
- 4.12.3 The templateelement- 4.12.3.1 Interaction of templateelements with XSLT and XPath
 
- 4.12.4 The canvaselement- 4.12.4.1 Proxying canvases to workers
- 4.12.4.2 The 2D rendering context- 4.12.4.2.1 Implementation notes
- 4.12.4.2.2 The canvas state
- 4.12.4.2.3 DrawingStyleobjects
- 4.12.4.2.4 Line styles
- 4.12.4.2.5 Text styles
- 4.12.4.2.6 Building paths
- 4.12.4.2.7 Path2Dobjects
- 4.12.4.2.8 Transformations
- 4.12.4.2.9 Image sources for 2D rendering contexts
- 4.12.4.2.10 Fill and stroke styles
- 4.12.4.2.11 Drawing rectangles to the bitmap
- 4.12.4.2.12 Drawing text to the bitmap
- 4.12.4.2.13 Drawing paths to the canvas
- 4.12.4.2.14 Drawing images
- 4.12.4.2.15 Hit regions
- 4.12.4.2.16 Pixel manipulation
- 4.12.4.2.17 Compositing
- 4.12.4.2.18 Image smoothing
- 4.12.4.2.19 Shadows
- 4.12.4.2.20 Drawing model
- 4.12.4.2.21 Best practices
- 4.12.4.2.22 Examples
 
- 4.12.4.3 Colour spaces and colour correction
- 4.12.4.4 Serialising bitmaps to a file
- 4.12.4.5 Security with canvaselements
 
 
- 4.13 Common idioms without dedicated elements- 4.13.1 The main part of the content
- 4.13.2 Bread crumb navigation
- 4.13.3 Tag clouds
- 4.13.4 Conversations
- 4.13.5 Footnotes
 
- 4.14 Disabled elements
- 4.15 Matching HTML elements using selectors- 4.15.1 Case-sensitivity
- 4.15.2 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.1.6 Using the microdata DOM API
 
- 5.2 Encoding microdata- 5.2.1 The microdata model
- 5.2.2 Items
- 5.2.3 Names: the itempropattribute
- 5.2.4 Values
- 5.2.5 Associating names with items
- 5.2.6 Microdata and other namespaces
 
- 5.3 Microdata DOM API
- 5.4 Sample microdata vocabularies- 5.4.1 vCard- 5.4.1.1 Conversion to vCard
- 5.4.1.2 Examples
 
- 5.4.2 vEvent- 5.4.2.1 Conversion to iCalendar
- 5.4.2.2 Examples
 
- 5.4.3 Licensing works- 5.4.3.1 Examples
 
 
- 5.5 Converting HTML to other formats- 5.5.1 JSON
 
 
- 6 User interaction- 6.1 The hiddenattribute
- 6.2 Inert subtrees
- 6.3 Activation
- 6.4 Focus- 6.4.1 Introduction
- 6.4.2 Data model
- 6.4.3 The tabindexattribute
- 6.4.4 Processing model
- 6.4.5 Sequential focus navigation
- 6.4.6 Focus management APIs
 
- 6.5 Assigning keyboard shortcuts- 6.5.1 Introduction
- 6.5.2 The accesskeyattribute
- 6.5.3 Processing model
 
- 6.6 Editing- 6.6.1 Making document regions editable: The contenteditablecontent attribute
- 6.6.2 Making entire documents editable: The designModeIDL attribute
- 6.6.3 Best practices for in-page editors
- 6.6.4 Editing APIs
- 6.6.5 Spelling and grammar checking
 
- 6.7 Drag and drop- 6.7.1 Introduction
- 6.7.2 The drag data store
- 6.7.3 The DataTransferinterface- 6.7.3.1 The DataTransferItemListinterface
- 6.7.3.2 The DataTransferIteminterface
 
- 6.7.4 The DragEventinterface
- 6.7.5 Drag-and-drop processing model
- 6.7.6 Events summary
- 6.7.7 The draggableattribute
- 6.7.8 The dropzoneattribute
- 6.7.9 Security risks in the drag-and-drop model
 
 
- 7 Loading Web pages- 7.1 Browsing contexts- 7.1.1 Nested browsing contexts- 7.1.1.1 Navigating nested browsing contexts in the DOM
 
- 7.1.2 Auxiliary browsing contexts- 7.1.2.1 Navigating auxiliary browsing contexts in the DOM
 
- 7.1.3 Secondary browsing contexts
- 7.1.4 Security
- 7.1.5 Groupings of browsing contexts
- 7.1.6 Browsing context names
 
- 7.2 The Windowobject- 7.2.1 Security
- 7.2.2 APIs for creating and navigating browsing contexts by name
- 7.2.3 Accessing other browsing contexts
- 7.2.4 Named access on the Windowobject
- 7.2.5 Garbage collection and browsing contexts
- 7.2.6 Closing browsing contexts
- 7.2.7 Browser interface elements
- 7.2.8 The WindowProxyobject
 
- 7.3 Origin- 7.3.1 Relaxing the same-origin restriction
 
- 7.4 Sandboxing
- 7.5 Session history and navigation- 7.5.1 The session history of browsing contexts
- 7.5.2 The Historyinterface
- 7.5.3 The Locationinterface- 7.5.3.1 Security
 
- 7.5.4 Implementation notes for session history
 
- 7.6 Browsing the Web- 7.6.1 Navigating across documents
- 7.6.2 Page load processing model for HTML files
- 7.6.3 Page load processing model for XML files
- 7.6.4 Page load processing model for text files
- 7.6.5 Page load processing model for multipart/x-mixed-replaceresources
- 7.6.6 Page load processing model for media
- 7.6.7 Page load processing model for content that uses plugins
- 7.6.8 Page load processing model for inline
  content that doesn't have a DOM
- 7.6.9 Navigating to a fragment identifier
- 7.6.10 History traversal- 7.6.10.1 The PopStateEventinterface
- 7.6.10.2 The HashChangeEventinterface
- 7.6.10.3 The PageTransitionEventinterface
 
- 7.6.11 Unloading documents- 7.6.11.1 The BeforeUnloadEventinterface
 
- 7.6.12 Aborting a document load
 
- 7.7 Offline Web applications- 7.7.1 Introduction- 7.7.1.1 Supporting offline caching for legacy applications
- 7.7.1.2 Event summary
 
- 7.7.2 Application caches
- 7.7.3 The cache manifest syntax- 7.7.3.1 Some sample manifests
- 7.7.3.2 Writing cache manifests
- 7.7.3.3 Parsing cache manifests
 
- 7.7.4 Downloading or updating an application cache
- 7.7.5 The application cache selection algorithm
- 7.7.6 Changes to the networking model
- 7.7.7 Expiring application caches
- 7.7.8 Disk space
- 7.7.9 Security concerns with offline applications caches
- 7.7.10 Application cache API
- 7.7.11 Browser state
 
 
- 8 Web application APIs- 8.1 Scripting- 8.1.1 Introduction
- 8.1.2 Enabling and disabling scripting
- 8.1.3 Processing model- 8.1.3.1 Definitions
- 8.1.3.2 Script settings for browsing contexts
- 8.1.3.3 Calling scripts
- 8.1.3.4 Creating scripts
- 8.1.3.5 Killing scripts
- 8.1.3.6 Runtime script errors- 8.1.3.6.1 Runtime script errors in documents
- 8.1.3.6.2 The ErrorEventinterface
 
 
- 8.1.4 Event loops- 8.1.4.1 Definitions
- 8.1.4.2 Processing model
- 8.1.4.3 Generic task sources
 
- 8.1.5 Events- 8.1.5.1 Event handlers
- 8.1.5.2 Event handlers on elements, Documentobjects, andWindowobjects- 8.1.5.2.1 IDL definitions
 
- 8.1.5.3 Event firing
- 8.1.5.4 Events and the Windowobject
 
 
- 8.2 Base64 utility methods
- 8.3 Dynamic markup insertion- 8.3.1 Opening the input stream
- 8.3.2 Closing the input stream
- 8.3.3 document.write()
- 8.3.4 document.writeln()
 
- 8.4 Timers
- 8.5 User prompts- 8.5.1 Simple dialogs
- 8.5.2 Printing
- 8.5.3 Dialogs implemented using separate documents with showModalDialog()
 
- 8.6 System state and capabilities- 8.6.1 The Navigatorobject- 8.6.1.1 Client identification
- 8.6.1.2 Language preferences
- 8.6.1.3 Custom scheme and content handlers: the registerProtocolHandler()andregisterContentHandler()methods- 8.6.1.3.1 Security and privacy
- 8.6.1.3.2 Sample user interface
 
- 8.6.1.4 Manually releasing the storage mutex
- 8.6.1.5 Plugins
 
- 8.6.2 The Externalinterface
 
- 8.7 Images
- 8.8 Animation Frames
 
- 9 Communication- 9.1 The MessageEventinterfaces
- 9.2 Server-sent events- 9.2.1 Introduction
- 9.2.2 The EventSourceinterface
- 9.2.3 Processing model
- 9.2.4 Parsing an event stream
- 9.2.5 Interpreting an event stream
- 9.2.6 Authoring notes
- 9.2.7 Connectionless push and other features
- 9.2.8 Garbage collection
- 9.2.9 Implementation advice
- 9.2.10 IANA considerations- 9.2.10.1 text/event-stream
- 9.2.10.2 Last-Event-ID
 
 
- 9.3 Web sockets- 9.3.1 Introduction
- 9.3.2 The WebSocketinterface
- 9.3.3 Feedback from the protocol
- 9.3.4 Ping and Pong frames
- 9.3.5 Parsing WebSocket URLs
- 9.3.6 The CloseEventinterfaces
- 9.3.7 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 Worker used for background I/O
- 10.1.2.3 Shared workers introduction
- 10.1.2.4 Shared state using a shared worker
- 10.1.2.5 Delegation
 
- 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 WorkerGlobalScopecommon interface
- 10.2.1.2 Dedicated workers and the DedicatedWorkerGlobalScopeinterface
- 10.2.1.3 Shared workers and the SharedWorkerGlobalScopeinterface
 
- 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 AbstractWorkerabstract interface
- 10.2.6.2 Script settings for workers
- 10.2.6.3 Dedicated workers and the Workerinterface
- 10.2.6.4 Shared workers and the SharedWorkerinterface
 
 
- 10.3 APIs available to workers- 10.3.1 Importing scripts and libraries
- 10.3.2 The WorkerNavigatorobject
- 10.3.3 Worker locations
 
 
- 11 Web storage- 11.1 Introduction
- 11.2 The API- 11.2.1 The Storageinterface
- 11.2.2 The sessionStorageattribute
- 11.2.3 The localStorageattribute
- 11.2.4 The storageevent- 11.2.4.1 The StorageEventinterface
 
- 11.2.5 Threads
 
- 11.3 Disk space
- 11.4 Privacy- 11.4.1 User tracking
- 11.4.2 Sensitivity of data
 
- 11.5 Security- 11.5.1 DNS spoofing attacks
- 11.5.2 Cross-directory attacks
- 11.5.3 Implementation risks
 
 
- 12 The HTML syntax- 12.1 Writing HTML documents- 12.1.1 The DOCTYPE
- 12.1.2 Elements- 12.1.2.1 Start tags
- 12.1.2.2 End tags
- 12.1.2.3 Attributes
- 12.1.2.4 Optional tags
- 12.1.2.5 Restrictions on content models
- 12.1.2.6 Restrictions on the contents of raw text and escapable raw text elements
 
- 12.1.3 Text- 12.1.3.1 Newlines
 
- 12.1.4 Character references
- 12.1.5 CDATA sections
- 12.1.6 Comments
 
- 12.2 Parsing HTML documents- 12.2.1 Overview of the parsing model
- 12.2.2 The input byte stream- 12.2.2.1 Parsing with a known character encoding
- 12.2.2.2 Determining the character encoding
- 12.2.2.3 Character encodings
- 12.2.2.4 Changing the encoding while parsing
- 12.2.2.5 Preprocessing the input stream
 
- 12.2.3 Parse state- 12.2.3.1 The insertion mode
- 12.2.3.2 The stack of open elements
- 12.2.3.3 The list of active formatting elements
- 12.2.3.4 The element pointers
- 12.2.3.5 Other parsing state flags
 
- 12.2.4 Tokenization- 12.2.4.1 Data state
- 12.2.4.2 Character reference in data state
- 12.2.4.3 RCDATA state
- 12.2.4.4 Character reference in RCDATA state
- 12.2.4.5 RAWTEXT state
- 12.2.4.6 Script data state
- 12.2.4.7 PLAINTEXT state
- 12.2.4.8 Tag open state
- 12.2.4.9 End tag open state
- 12.2.4.10 Tag name state
- 12.2.4.11 RCDATA less-than sign state
- 12.2.4.12 RCDATA end tag open state
- 12.2.4.13 RCDATA end tag name state
- 12.2.4.14 RAWTEXT less-than sign state
- 12.2.4.15 RAWTEXT end tag open state
- 12.2.4.16 RAWTEXT end tag name state
- 12.2.4.17 Script data less-than sign state
- 12.2.4.18 Script data end tag open state
- 12.2.4.19 Script data end tag name state
- 12.2.4.20 Script data escape start state
- 12.2.4.21 Script data escape start dash state
- 12.2.4.22 Script data escaped state
- 12.2.4.23 Script data escaped dash state
- 12.2.4.24 Script data escaped dash dash state
- 12.2.4.25 Script data escaped less-than sign state
- 12.2.4.26 Script data escaped end tag open state
- 12.2.4.27 Script data escaped end tag name state
- 12.2.4.28 Script data double escape start state
- 12.2.4.29 Script data double escaped state
- 12.2.4.30 Script data double escaped dash state
- 12.2.4.31 Script data double escaped dash dash state
- 12.2.4.32 Script data double escaped less-than sign state
- 12.2.4.33 Script data double escape end state
- 12.2.4.34 Before attribute name state
- 12.2.4.35 Attribute name state
- 12.2.4.36 After attribute name state
- 12.2.4.37 Before attribute value state
- 12.2.4.38 Attribute value (double-quoted) state
- 12.2.4.39 Attribute value (single-quoted) state
- 12.2.4.40 Attribute value (unquoted) state
- 12.2.4.41 Character reference in attribute value state
- 12.2.4.42 After attribute value (quoted) state
- 12.2.4.43 Self-closing start tag state
- 12.2.4.44 Bogus comment state
- 12.2.4.45 Markup declaration open state
- 12.2.4.46 Comment start state
- 12.2.4.47 Comment start dash state
- 12.2.4.48 Comment state
- 12.2.4.49 Comment end dash state
- 12.2.4.50 Comment end state
- 12.2.4.51 Comment end bang state
- 12.2.4.52 DOCTYPE state
- 12.2.4.53 Before DOCTYPE name state
- 12.2.4.54 DOCTYPE name state
- 12.2.4.55 After DOCTYPE name state
- 12.2.4.56 After DOCTYPE public keyword state
- 12.2.4.57 Before DOCTYPE public identifier state
- 12.2.4.58 DOCTYPE public identifier (double-quoted) state
- 12.2.4.59 DOCTYPE public identifier (single-quoted) state
- 12.2.4.60 After DOCTYPE public identifier state
- 12.2.4.61 Between DOCTYPE public and system identifiers state
- 12.2.4.62 After DOCTYPE system keyword state
- 12.2.4.63 Before DOCTYPE system identifier state
- 12.2.4.64 DOCTYPE system identifier (double-quoted) state
- 12.2.4.65 DOCTYPE system identifier (single-quoted) state
- 12.2.4.66 After DOCTYPE system identifier state
- 12.2.4.67 Bogus DOCTYPE state
- 12.2.4.68 CDATA section state
- 12.2.4.69 Tokenizing character references
 
- 12.2.5 Tree construction- 12.2.5.1 Creating and inserting nodes
- 12.2.5.2 Parsing elements that contain only text
- 12.2.5.3 Closing elements that have implied end tags
- 12.2.5.4 The rules for parsing tokens in HTML content- 12.2.5.4.1 The "initial" insertion mode
- 12.2.5.4.2 The "before html" insertion mode
- 12.2.5.4.3 The "before head" insertion mode
- 12.2.5.4.4 The "in head" insertion mode
- 12.2.5.4.5 The "in head noscript" insertion mode
- 12.2.5.4.6 The "after head" insertion mode
- 12.2.5.4.7 The "in body" insertion mode
- 12.2.5.4.8 The "text" insertion mode
- 12.2.5.4.9 The "in table" insertion mode
- 12.2.5.4.10 The "in table text" insertion mode
- 12.2.5.4.11 The "in caption" insertion mode
- 12.2.5.4.12 The "in column group" insertion mode
- 12.2.5.4.13 The "in table body" insertion mode
- 12.2.5.4.14 The "in row" insertion mode
- 12.2.5.4.15 The "in cell" insertion mode
- 12.2.5.4.16 The "in select" insertion mode
- 12.2.5.4.17 The "in select in table" insertion mode
- 12.2.5.4.18 The "in template" insertion mode
- 12.2.5.4.19 The "after body" insertion mode
- 12.2.5.4.20 The "in frameset" insertion mode
- 12.2.5.4.21 The "after frameset" insertion mode
- 12.2.5.4.22 The "after after body" insertion mode
- 12.2.5.4.23 The "after after frameset" insertion mode
 
- 12.2.5.5 The rules for parsing tokens in foreign content
 
- 12.2.6 The end
- 12.2.7 Coercing an HTML DOM into an infoset
- 12.2.8 An introduction to error handling and strange cases in the parser- 12.2.8.1 Misnested tags: <b><i></b></i>
- 12.2.8.2 Misnested tags: <b><p></b></p>
- 12.2.8.3 Unexpected markup in tables
- 12.2.8.4 Scripts that modify the page as it is being parsed
- 12.2.8.5 The execution of scripts that are moving across multiple documents
- 12.2.8.6 Unclosed formatting elements
 
 
- 12.3 Serialising HTML fragments
- 12.4 Parsing HTML fragments
- 12.5 Named character references
 
- 13 The XHTML syntax- 13.1 Writing XHTML documents
- 13.2 Parsing XHTML documents
- 13.3 Serialising XHTML fragments
- 13.4 Parsing XHTML fragments
 
- 14 Rendering- 14.1 Introduction
- 14.2 The CSS user agent style sheet and presentational hints
- 14.3 Non-replaced elements- 14.3.1 Hidden elements
- 14.3.2 The page
- 14.3.3 Flow content
- 14.3.4 Phrasing content
- 14.3.5 Bidirectional text
- 14.3.6 Quotes
- 14.3.7 Sections and headings
- 14.3.8 Lists
- 14.3.9 Tables
- 14.3.10 Margin collapsing quirks
- 14.3.11 Form controls
- 14.3.12 The hrelement
- 14.3.13 The fieldsetandlegendelements
 
- 14.4 Replaced elements- 14.4.1 Embedded content
- 14.4.2 Images
- 14.4.3 Attributes for embedded content and images
- 14.4.4 Image maps
 
- 14.5 Bindings- 14.5.1 Introduction
- 14.5.2 The buttonelement
- 14.5.3 The detailselement
- 14.5.4 The inputelement as a text entry widget
- 14.5.5 The inputelement as domain-specific widgets
- 14.5.6 The inputelement as a range control
- 14.5.7 The inputelement as a colour well
- 14.5.8 The inputelement as a checkbox and radio button widgets
- 14.5.9 The inputelement as a file upload control
- 14.5.10 The inputelement as a button
- 14.5.11 The marqueeelement
- 14.5.12 The meterelement
- 14.5.13 The progresselement
- 14.5.14 The selectelement
- 14.5.15 The textareaelement
- 14.5.16 The keygenelement
 
- 14.6 Frames and framesets
- 14.7 Interactive media- 14.7.1 Links, forms, and navigation
- 14.7.2 The titleattribute
- 14.7.3 Editing hosts
- 14.7.4 Text rendered in native user interfaces
 
- 14.8 Print media
- 14.9 Unstyled XML documents
 
- 15 Obsolete features- 15.1 Obsolete but conforming features- 15.1.1 Warnings for obsolete but conforming features
 
- 15.2 Non-conforming features
- 15.3 Requirements for implementations- 15.3.1 The appletelement
- 15.3.2 The marqueeelement
- 15.3.3 Frames
- 15.3.4 Other elements, attributes and APIs
 
 
- 16 IANA considerations- 16.1 text/html
- 16.2 multipart/x-mixed-replace
- 16.3 application/xhtml+xml
- 16.4 application/x-www-form-urlencoded
- 16.5 text/cache-manifest
- 16.6 text/ping
- 16.7 application/microdata+json
- 16.8 Ping-From
- 16.9 Ping-To
- 16.10 web+scheme prefix
 
- Index- Elements
- Element content categories
- Attributes
- Element Interfaces
- All Interfaces
- Events
- MIME Types
 
- References
- Acknowledgements