Abstract

This specification evolves HTML and its related APIs to ease the authoring of Web-based applications. The most recent additions include a device element to enable video conferencing, as well as all the features added as part of the earlier HTML5 effort.

Status of this document

This is a work in progress! This document is changing on a daily if not hourly basis in response to comments and as a general part of its development process. Comments are very welcome, please send them to whatwg@whatwg.org. Thank you.

Outstanding feedback is tracked; all e-mails sent to the list above receive a reply. The level of outstanding feedback is charted to allow progress to be evaluated.

Implementors should be aware that this specification is not stable. Implementors who are not taking part in the discussions are likely to find the specification changing out from under them in incompatible ways. Vendors interested in implementing this specification before it eventually reaches the call for implementations should join the WHATWG mailing list and take part in the discussions.

This specification is intended to replace (be the new version of) what was previously the HTML5, HTML4, XHTML1, and DOM2 HTML specifications.

Table of contents

  1. 1 Introduction
    1. 1.1 Is this HTML5?
    2. 1.2 Background
    3. 1.3 Audience
    4. 1.4 Scope
    5. 1.5 History
    6. 1.6 Design notes
      1. 1.6.1 Serializability of script execution
      2. 1.6.2 Compliance with other specifications
    7. 1.7 HTML vs XHTML
    8. 1.8 Structure of this specification
      1. 1.8.1 How to read this specification
      2. 1.8.2 Typographic conventions
    9. 1.9 A quick introduction to HTML
    10. 1.10 Conformance requirements for authors
      1. 1.10.1 Presentational markup
      2. 1.10.2 Syntax errors
      3. 1.10.3 Restrictions on content models and on attribute values
    11. 1.11 Recommended reading
  2. 2 Common infrastructure
    1. 2.1 Terminology
      1. 2.1.1 Resources
      2. 2.1.2 XML
      3. 2.1.3 DOM trees
      4. 2.1.4 Scripting
      5. 2.1.5 Plugins
      6. 2.1.6 Character encodings
    2. 2.2 Conformance requirements
      1. 2.2.1 Dependencies
      2. 2.2.2 Extensibility
    3. 2.3 Case-sensitivity and string comparison
    4. 2.4 UTF-8
    5. 2.5 Common microsyntaxes
      1. 2.5.1 Common parser idioms
      2. 2.5.2 Boolean attributes
      3. 2.5.3 Keywords and enumerated attributes
      4. 2.5.4 Numbers
        1. 2.5.4.1 Non-negative integers
        2. 2.5.4.2 Signed integers
        3. 2.5.4.3 Real numbers
        4. 2.5.4.4 Percentages and lengths
        5. 2.5.4.5 Lists of integers
        6. 2.5.4.6 Lists of dimensions
      5. 2.5.5 Dates and times
        1. 2.5.5.1 Months
        2. 2.5.5.2 Dates
        3. 2.5.5.3 Times
        4. 2.5.5.4 Local dates and times
        5. 2.5.5.5 Global dates and times
        6. 2.5.5.6 Weeks
        7. 2.5.5.7 Vaguer moments in time
      6. 2.5.6 Colors
      7. 2.5.7 Space-separated tokens
      8. 2.5.8 Comma-separated tokens
      9. 2.5.9 References
      10. 2.5.10 Media queries
    6. 2.6 URLs
      1. 2.6.1 Terminology
      2. 2.6.2 Dynamic changes to base URLs
      3. 2.6.3 Interfaces for URL manipulation
    7. 2.7 Fetching resources
      1. 2.7.1 Protocol concepts
      2. 2.7.2 Encrypted HTTP and related security concerns
      3. 2.7.3 Determining the type of a resource
    8. 2.8 Common DOM interfaces
      1. 2.8.1 Reflecting content attributes in IDL attributes
      2. 2.8.2 Collections
        1. 2.8.2.1 HTMLCollection
        2. 2.8.2.2 HTMLAllCollection
        3. 2.8.2.3 HTMLFormControlsCollection
        4. 2.8.2.4 HTMLOptionsCollection
        5. 2.8.2.5 HTMLPropertiesCollection
      3. 2.8.3 DOMTokenList
      4. 2.8.4 DOMSettableTokenList
      5. 2.8.5 Safe passing of structured data
      6. 2.8.6 DOMStringMap
      7. 2.8.7 DOMElementMap
      8. 2.8.8 DOM feature strings
      9. 2.8.9 Exceptions
      10. 2.8.10 Garbage collection
    9. 2.9 Namespaces
  3. 3 Semantics, structure, and APIs of HTML documents
    1. 3.1 Documents
      1. 3.1.1 Documents in the DOM
      2. 3.1.2 Security
      3. 3.1.3 Resource metadata management
      4. 3.1.4 DOM tree accessors
      5. 3.1.5 Creating documents
      6. 3.1.6 Loading XML documents
    2. 3.2 Elements
      1. 3.2.1 Semantics
      2. 3.2.2 Elements in the DOM
      3. 3.2.3 Global attributes
        1. 3.2.3.1 The id attribute
        2. 3.2.3.2 The title attribute
        3. 3.2.3.3 The lang and xml:lang attributes
        4. 3.2.3.4 The xml:base attribute (XML only)
        5. 3.2.3.5 The dir attribute
        6. 3.2.3.6 The class attribute
        7. 3.2.3.7 The style attribute
        8. 3.2.3.8 Embedding custom non-visible data with the data-* attributes
      4. 3.2.4 Element definitions
        1. 3.2.4.1 Attributes
      5. 3.2.5 Content models
        1. 3.2.5.1 Kinds of content
          1. 3.2.5.1.1 Metadata content
          2. 3.2.5.1.2 Flow content
          3. 3.2.5.1.3 Sectioning content
          4. 3.2.5.1.4 Heading content
          5. 3.2.5.1.5 Phrasing content
          6. 3.2.5.1.6 Embedded content
          7. 3.2.5.1.7 Interactive content
        2. 3.2.5.2 Transparent content models
        3. 3.2.5.3 Paragraphs
      6. 3.2.6 Requirements relating to bidirectional-algorithm formatting characters
      7. 3.2.7 Annotations for assistive technology products (ARIA)
    3. 3.3 APIs in HTML documents
    4. 3.4 Interactions with XPath and XSLT
    5. 3.5 Dynamic markup insertion
      1. 3.5.1 Opening the input stream
      2. 3.5.2 Closing the input stream
      3. 3.5.3 document.write()
      4. 3.5.4 document.writeln()
      5. 3.5.5 innerHTML
      6. 3.5.6 outerHTML
      7. 3.5.7 insertAdjacentHTML()
  4. 4 The elements of HTML
    1. 4.1 The root element
      1. 4.1.1 The html element
    2. 4.2 Document metadata
      1. 4.2.1 The head element
      2. 4.2.2 The title element
      3. 4.2.3 The base element
      4. 4.2.4 The link element
      5. 4.2.5 The meta element
        1. 4.2.5.1 Standard metadata names
        2. 4.2.5.2 Other metadata names
        3. 4.2.5.3 Pragma directives
        4. 4.2.5.4 Other pragma directives
        5. 4.2.5.5 Specifying the document's character encoding
      6. 4.2.6 The style element
      7. 4.2.7 Styling
    3. 4.3 Scripting
      1. 4.3.1 The script element
        1. 4.3.1.1 Scripting languages
        2. 4.3.1.2 Restrictions for contents of script elements
        3. 4.3.1.3 Inline documentation for external scripts
      2. 4.3.2 The noscript element
    4. 4.4 Sections
      1. 4.4.1 The body element
      2. 4.4.2 The section element
      3. 4.4.3 The nav element
      4. 4.4.4 The article element
      5. 4.4.5 The aside element
      6. 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
      7. 4.4.7 The hgroup element
      8. 4.4.8 The header element
      9. 4.4.9 The footer element
      10. 4.4.10 The address element
      11. 4.4.11 Headings and sections
        1. 4.4.11.1 Creating an outline
    5. 4.5 Grouping content
      1. 4.5.1 The p element
      2. 4.5.2 The hr element
      3. 4.5.3 The pre element
      4. 4.5.4 The blockquote element
      5. 4.5.5 The ol element
      6. 4.5.6 The ul element
      7. 4.5.7 The li element
      8. 4.5.8 The dl element
      9. 4.5.9 The dt element
      10. 4.5.10 The dd element
      11. 4.5.11 The figure element
      12. 4.5.12 The figcaption element
      13. 4.5.13 The div element
    6. 4.6 Text-level semantics
      1. 4.6.1 The a element
      2. 4.6.2 The em element
      3. 4.6.3 The strong element
      4. 4.6.4 The small element
      5. 4.6.5 The s element
      6. 4.6.6 The cite element
      7. 4.6.7 The q element
      8. 4.6.8 The dfn element
      9. 4.6.9 The abbr element
      10. 4.6.10 The time element
      11. 4.6.11 The code element
      12. 4.6.12 The var element
      13. 4.6.13 The samp element
      14. 4.6.14 The kbd element
      15. 4.6.15 The sub and sup elements
      16. 4.6.16 The i element
      17. 4.6.17 The b element
      18. 4.6.18 The mark element
      19. 4.6.19 The ruby element
      20. 4.6.20 The rt element
      21. 4.6.21 The rp element
      22. 4.6.22 The bdi element
      23. 4.6.23 The bdo element
      24. 4.6.24 The span element
      25. 4.6.25 The br element
      26. 4.6.26 The wbr element
      27. 4.6.27 Usage summary
    7. 4.7 Edits
      1. 4.7.1 The ins element
      2. 4.7.2 The del element
      3. 4.7.3 Attributes common to ins and del elements
      4. 4.7.4 Edits and paragraphs
      5. 4.7.5 Edits and lists
    8. 4.8 Embedded content
      1. 4.8.1 The img element
        1. 4.8.1.1 Requirements for providing text to act as an alternative for images
          1. 4.8.1.1.1 General guidelines
          2. 4.8.1.1.2 A link or button containing nothing but the image
          3. 4.8.1.1.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
          4. 4.8.1.1.4 A short phrase or label with an alternative graphical representation: icons, logos
          5. 4.8.1.1.5 Text that has been rendered to a graphic for typographical effect
          6. 4.8.1.1.6 A graphical representation of some of the surrounding text
          7. 4.8.1.1.7 A purely decorative image that doesn't add any information
          8. 4.8.1.1.8 A group of images that form a single larger picture with no links
          9. 4.8.1.1.9 A group of images that form a single larger picture with links
          10. 4.8.1.1.10 A key part of the content
          11. 4.8.1.1.11 An image not intended for the user
          12. 4.8.1.1.12 An image in an e-mail or private document intended for a specific person who is known to be able to view images
          13. 4.8.1.1.13 Guidance for markup generators
          14. 4.8.1.1.14 Guidance for conformance checkers
      2. 4.8.2 The iframe element
      3. 4.8.3 The embed element
      4. 4.8.4 The object element
      5. 4.8.5 The param element
      6. 4.8.6 The video element
      7. 4.8.7 The audio element
      8. 4.8.8 The source element
      9. 4.8.9 The track element
      10. 4.8.10 Media elements
        1. 4.8.10.1 Error codes
        2. 4.8.10.2 Location of the media resource
        3. 4.8.10.3 MIME types
        4. 4.8.10.4 Network states
        5. 4.8.10.5 Loading the media resource
        6. 4.8.10.6 Offsets into the media resource
        7. 4.8.10.7 The ready states
        8. 4.8.10.8 Playing the media resource
        9. 4.8.10.9 Seeking
        10. 4.8.10.10 Timed text tracks
          1. 4.8.10.10.1 Text track model
          2. 4.8.10.10.2 Sourcing in-band text tracks
          3. 4.8.10.10.3 Sourcing out-of-band text tracks
          4. 4.8.10.10.4 Guidelines for exposing cues in various formats as text track cues
          5. 4.8.10.10.5 Text track API
          6. 4.8.10.10.6 Event definitions
        11. 4.8.10.11 WebVTT
          1. 4.8.10.11.1 Syntax
          2. 4.8.10.11.2 Parsing
          3. 4.8.10.11.3 WebVTT cue text parsing rules
          4. 4.8.10.11.4 WebVTT cue text DOM construction rules
        12. 4.8.10.12 User interface
        13. 4.8.10.13 Time ranges
        14. 4.8.10.14 Event summary
        15. 4.8.10.15 Security and privacy considerations
        16. 4.8.10.16 Best practices for authors using media elements
        17. 4.8.10.17 Best practices for implementors of media elements
      11. 4.8.11 The canvas element
        1. 4.8.11.1 The 2D context
          1. 4.8.11.1.1 The canvas state
          2. 4.8.11.1.2 Transformations
          3. 4.8.11.1.3 Compositing
          4. 4.8.11.1.4 Colors and styles
          5. 4.8.11.1.5 Line styles
          6. 4.8.11.1.6 Shadows
          7. 4.8.11.1.7 Simple shapes (rectangles)
          8. 4.8.11.1.8 Complex shapes (paths)
          9. 4.8.11.1.9 Focus management
          10. 4.8.11.1.10 Text
          11. 4.8.11.1.11 Images
          12. 4.8.11.1.12 Pixel manipulation
          13. 4.8.11.1.13 Drawing model
          14. 4.8.11.1.14 Examples
        2. 4.8.11.2 Color spaces and color correction
        3. 4.8.11.3 Security with canvas elements
      12. 4.8.12 The map element
      13. 4.8.13 The area element
      14. 4.8.14 Image maps
        1. 4.8.14.1 Authoring
        2. 4.8.14.2 Processing model
      15. 4.8.15 MathML
      16. 4.8.16 SVG
      17. 4.8.17 Dimension attributes
    9. 4.9 Tabular data
      1. 4.9.1 The table element
      2. 4.9.2 The caption element
      3. 4.9.3 The colgroup element
      4. 4.9.4 The col element
      5. 4.9.5 The tbody element
      6. 4.9.6 The thead element
      7. 4.9.7 The tfoot element
      8. 4.9.8 The tr element
      9. 4.9.9 The td element
      10. 4.9.10 The th element
      11. 4.9.11 Attributes common to td and th elements
      12. 4.9.12 Processing model
        1. 4.9.12.1 Forming a table
        2. 4.9.12.2 Forming relationships between data cells and header cells
      13. 4.9.13 Examples
    10. 4.10 Forms
      1. 4.10.1 Introduction
        1. 4.10.1.1 Writing a form's user interface
        2. 4.10.1.2 Implementing the server-side processing for a form
        3. 4.10.1.3 Configuring a form to communicate with a server
        4. 4.10.1.4 Client-side form validation
      2. 4.10.2 Categories
      3. 4.10.3 The form element
      4. 4.10.4 The fieldset element
      5. 4.10.5 The legend element
      6. 4.10.6 The label element
      7. 4.10.7 The input element
        1. 4.10.7.1 States of the type attribute
          1. 4.10.7.1.1 Hidden state
          2. 4.10.7.1.2 Text state and Search state
          3. 4.10.7.1.3 Telephone state
          4. 4.10.7.1.4 URL state
          5. 4.10.7.1.5 E-mail state
          6. 4.10.7.1.6 Password state
          7. 4.10.7.1.7 Date and Time state
          8. 4.10.7.1.8 Date state
          9. 4.10.7.1.9 Month state
          10. 4.10.7.1.10 Week state
          11. 4.10.7.1.11 Time state
          12. 4.10.7.1.12 Local Date and Time state
          13. 4.10.7.1.13 Number state
          14. 4.10.7.1.14 Range state
          15. 4.10.7.1.15 Color state
          16. 4.10.7.1.16 Checkbox state
          17. 4.10.7.1.17 Radio Button state
          18. 4.10.7.1.18 File Upload state
          19. 4.10.7.1.19 Submit Button state
          20. 4.10.7.1.20 Image Button state
          21. 4.10.7.1.21 Reset Button state
          22. 4.10.7.1.22 Button state
        2. 4.10.7.2 Common input element attributes
          1. 4.10.7.2.1 The autocomplete attribute
          2. 4.10.7.2.2 The dirname attribute
          3. 4.10.7.2.3 The list attribute
          4. 4.10.7.2.4 The readonly attribute
          5. 4.10.7.2.5 The size attribute
          6. 4.10.7.2.6 The required attribute
          7. 4.10.7.2.7 The multiple attribute
          8. 4.10.7.2.8 The maxlength attribute
          9. 4.10.7.2.9 The pattern attribute
          10. 4.10.7.2.10 The min and max attributes
          11. 4.10.7.2.11 The step attribute
          12. 4.10.7.2.12 The placeholder attribute
        3. 4.10.7.3 Common input element APIs
        4. 4.10.7.4 Common event behaviors
      8. 4.10.8 The button element
      9. 4.10.9 The select element
      10. 4.10.10 The datalist element
      11. 4.10.11 The optgroup element
      12. 4.10.12 The option element
      13. 4.10.13 The textarea element
      14. 4.10.14 The keygen element
      15. 4.10.15 The output element
      16. 4.10.16 The progress element
      17. 4.10.17 The meter element
      18. 4.10.18 Association of controls and forms
      19. 4.10.19 Attributes common to form controls
        1. 4.10.19.1 Naming form controls
        2. 4.10.19.2 Enabling and disabling form controls
        3. 4.10.19.3 A form control's value
        4. 4.10.19.4 Autofocusing a form control
        5. 4.10.19.5 Limiting user input length
        6. 4.10.19.6 Form submission
        7. 4.10.19.7 Submitting element directionality
      20. 4.10.20 APIs for the text field selections
      21. 4.10.21 Constraints
        1. 4.10.21.1 Definitions
        2. 4.10.21.2 Constraint validation
        3. 4.10.21.3 The constraint validation API
        4. 4.10.21.4 Security
      22. 4.10.22 Form submission
        1. 4.10.22.1 Introduction
        2. 4.10.22.2 Implicit submission
        3. 4.10.22.3 Form submission algorithm
        4. 4.10.22.4 URL-encoded form data
        5. 4.10.22.5 Multipart form data
        6. 4.10.22.6 Plain text form data
      23. 4.10.23 Resetting a form
      24. 4.10.24 Event dispatch
    11. 4.11 Interactive elements
      1. 4.11.1 The details element
      2. 4.11.2 The summary element
      3. 4.11.3 The command element
      4. 4.11.4 The menu element
        1. 4.11.4.1 Introduction
        2. 4.11.4.2 Building menus and toolbars
        3. 4.11.4.3 Context menus
        4. 4.11.4.4 Toolbars
      5. 4.11.5 Commands
        1. 4.11.5.1 Using the a element to define a command
        2. 4.11.5.2 Using the button element to define a command
        3. 4.11.5.3 Using the input element to define a command
        4. 4.11.5.4 Using the option element to define a command
        5. 4.11.5.5 Using the command element to define a command
        6. 4.11.5.6 Using the accesskey attribute on a label element to define a command
        7. 4.11.5.7 Using the accesskey attribute on a legend element to define a command
        8. 4.11.5.8 Using the accesskey attribute to define a command on other elements
      6. 4.11.6 The device element
        1. 4.11.6.1 Stream API
        2. 4.11.6.2 Peer-to-peer connections
    12. 4.12 Links
      1. 4.12.1 Introduction
      2. 4.12.2 Links created by a and area elements
      3. 4.12.3 Following hyperlinks
        1. 4.12.3.1 Hyperlink auditing
      4. 4.12.4 Link types
        1. 4.12.4.1 Link type "alternate"
        2. 4.12.4.2 Link type "archives"
        3. 4.12.4.3 Link type "author"
        4. 4.12.4.4 Link type "bookmark"
        5. 4.12.4.5 Link type "external"
        6. 4.12.4.6 Link type "help"
        7. 4.12.4.7 Link type "icon"
        8. 4.12.4.8 Link type "license"
        9. 4.12.4.9 Link type "nofollow"
        10. 4.12.4.10 Link type "noreferrer"
        11. 4.12.4.11 Link type "pingback"
        12. 4.12.4.12 Link type "prefetch"
        13. 4.12.4.13 Link type "search"
        14. 4.12.4.14 Link type "stylesheet"
        15. 4.12.4.15 Link type "sidebar"
        16. 4.12.4.16 Link type "tag"
        17. 4.12.4.17 Hierarchical link types
          1. 4.12.4.17.1 Link type "index"
          2. 4.12.4.17.2 Link type "up"
        18. 4.12.4.18 Sequential link types
          1. 4.12.4.18.1 Link type "first"
          2. 4.12.4.18.2 Link type "last"
          3. 4.12.4.18.3 Link type "next"
          4. 4.12.4.18.4 Link type "prev"
        19. 4.12.4.19 Other link types
    13. 4.13 Common idioms without dedicated elements
      1. 4.13.1 The main part of the content
      2. 4.13.2 Tag clouds
      3. 4.13.3 Conversations
      4. 4.13.4 Footnotes
    14. 4.14 Matching HTML elements using selectors
      1. 4.14.1 Case-sensitivity
      2. 4.14.2 Pseudo-classes
  5. 5 Microdata
    1. 5.1 Introduction
      1. 5.1.1 Overview
      2. 5.1.2 The basic syntax
      3. 5.1.3 Typed items
      4. 5.1.4 Global identifiers for items
      5. 5.1.5 Selecting names when defining vocabularies
      6. 5.1.6 Using the microdata DOM API
    2. 5.2 Encoding microdata
      1. 5.2.1 The microdata model
      2. 5.2.2 Items
      3. 5.2.3 Names: the itemprop attribute
      4. 5.2.4 Values
      5. 5.2.5 Associating names with items
    3. 5.3 Microdata DOM API
    4. 5.4 Microdata vocabularies
      1. 5.4.1 vCard
        1. 5.4.1.1 Conversion to vCard
        2. 5.4.1.2 Examples
      2. 5.4.2 vEvent
        1. 5.4.2.1 Conversion to iCalendar
        2. 5.4.2.2 Examples
      3. 5.4.3 Licensing works
        1. 5.4.3.1 Conversion to RDF
        2. 5.4.3.2 Examples
    5. 5.5 Converting HTML to other formats
      1. 5.5.1 JSON
      2. 5.5.2 RDF
        1. 5.5.2.1 Examples
      3. 5.5.3 Atom
  6. 6 Loading Web pages
    1. 6.1 Browsing contexts
      1. 6.1.1 Nested browsing contexts
        1. 6.1.1.1 Navigating nested browsing contexts in the DOM
      2. 6.1.2 Auxiliary browsing contexts
        1. 6.1.2.1 Navigating auxiliary browsing contexts in the DOM
      3. 6.1.3 Secondary browsing contexts
      4. 6.1.4 Security
      5. 6.1.5 Groupings of browsing contexts
      6. 6.1.6 Browsing context names
    2. 6.2 The Window object
      1. 6.2.1 Security
      2. 6.2.2 APIs for creating and navigating browsing contexts by name
      3. 6.2.3 Accessing other browsing contexts
      4. 6.2.4 Named access on the Window object
      5. 6.2.5 Garbage collection and browsing contexts
      6. 6.2.6 Browser interface elements
      7. 6.2.7 The WindowProxy object
    3. 6.3 Origin
      1. 6.3.1 Relaxing the same-origin restriction
    4. 6.4 Session history and navigation
      1. 6.4.1 The session history of browsing contexts
      2. 6.4.2 The History interface
      3. 6.4.3 The Location interface
        1. 6.4.3.1 Security
      4. 6.4.4 Implementation notes for session history
    5. 6.5 Browsing the Web
      1. 6.5.1 Navigating across documents
      2. 6.5.2 Page load processing model for HTML files
      3. 6.5.3 Page load processing model for XML files
      4. 6.5.4 Page load processing model for text files
      5. 6.5.5 Page load processing model for images
      6. 6.5.6 Page load processing model for content that uses plugins
      7. 6.5.7 Page load processing model for inline content that doesn't have a DOM
      8. 6.5.8 Navigating to a fragment identifier
      9. 6.5.9 History traversal
        1. 6.5.9.1 Event definitions
      10. 6.5.10 Unloading documents
        1. 6.5.10.1 Event definition
      11. 6.5.11 Aborting a document load
    6. 6.6 Offline Web applications
      1. 6.6.1 Introduction
        1. 6.6.1.1 Event summary
      2. 6.6.2 Application caches
      3. 6.6.3 The cache manifest syntax
        1. 6.6.3.1 Some sample manifests
        2. 6.6.3.2 Writing cache manifests
        3. 6.6.3.3 Parsing cache manifests
      4. 6.6.4 Downloading or updating an application cache
      5. 6.6.5 The application cache selection algorithm
      6. 6.6.6 Changes to the networking model
      7. 6.6.7 Expiring application caches
      8. 6.6.8 Disk space
      9. 6.6.9 Application cache API
      10. 6.6.10 Browser state
  7. 7 Web application APIs
    1. 7.1 Scripting
      1. 7.1.1 Introduction
      2. 7.1.2 Enabling and disabling scripting
      3. 7.1.3 Processing model
        1. 7.1.3.1 Definitions
        2. 7.1.3.2 Calling scripts
        3. 7.1.3.3 Creating scripts
        4. 7.1.3.4 Killing scripts
        5. 7.1.3.5 Runtime script errors
      4. 7.1.4 Event loops
        1. 7.1.4.1 Definitions
        2. 7.1.4.2 Processing model
        3. 7.1.4.3 Generic task sources
      5. 7.1.5 The javascript: URL scheme
      6. 7.1.6 Events
        1. 7.1.6.1 Event handlers
        2. 7.1.6.2 Event handlers on elements, Document objects, and Window objects
        3. 7.1.6.3 Event firing
        4. 7.1.6.4 Events and the Window object
    2. 7.2 Base64 utility methods
    3. 7.3 Timers
    4. 7.4 User prompts
      1. 7.4.1 Simple dialogs
      2. 7.4.2 Printing
      3. 7.4.3 Dialogs implemented using separate documents
    5. 7.5 System state and capabilities: the Navigator object
      1. 7.5.1 Client identification
      2. 7.5.2 Custom scheme and content handlers
        1. 7.5.2.1 Security and privacy
        2. 7.5.2.2 Sample user interface
      3. 7.5.3 Manually releasing the storage mutex
  8. 8 User interaction
    1. 8.1 The hidden attribute
    2. 8.2 Activation
    3. 8.3 Focus
      1. 8.3.1 Sequential focus navigation and the tabindex attribute
      2. 8.3.2 Focus management
      3. 8.3.3 Document-level focus APIs
      4. 8.3.4 Element-level focus APIs
    4. 8.4 Assigning keyboard shortcuts
      1. 8.4.1 Introduction
      2. 8.4.2 The accesskey attribute
      3. 8.4.3 Processing model
    5. 8.5 The contenteditable attribute
      1. 8.5.1 User editing actions
      2. 8.5.2 Making entire documents editable
    6. 8.6 Spelling and grammar checking
    7. 8.7 Drag and drop
      1. 8.7.1 Introduction
      2. 8.7.2 The drag data store
      3. 8.7.3 The DataTransfer interface
        1. 8.7.3.1 The DataTransferItems interface
        2. 8.7.3.2 The DataTransferItem interface
      4. 8.7.4 The DragEvent interface
      5. 8.7.5 Drag-and-drop processing model
      6. 8.7.6 Events summary
      7. 8.7.7 The draggable attribute
      8. 8.7.8 The dropzone attribute
      9. 8.7.9 Security risks in the drag-and-drop model
    8. 8.8 Undo history
      1. 8.8.1 Definitions
      2. 8.8.2 The UndoManager interface
      3. 8.8.3 Undo: moving back in the undo transaction history
      4. 8.8.4 Redo: moving forward in the undo transaction history
      5. 8.8.5 The UndoManagerEvent interface and the undo and redo events
      6. 8.8.6 Implementation notes
    9. 8.9 Editing APIs
  9. 9 Communication
    1. 9.1 Event definitions
    2. 9.2 Cross-document messaging
      1. 9.2.1 Introduction
      2. 9.2.2 Security
        1. 9.2.2.1 Authors
        2. 9.2.2.2 User agents
      3. 9.2.3 Posting messages
    3. 9.3 Channel messaging
      1. 9.3.1 Introduction
      2. 9.3.2 Message channels
      3. 9.3.3 Message ports
        1. 9.3.3.1 Ports and garbage collection
  10. 10 The HTML syntax
    1. 10.1 Writing HTML documents
      1. 10.1.1 The DOCTYPE
      2. 10.1.2 Elements
        1. 10.1.2.1 Start tags
        2. 10.1.2.2 End tags
        3. 10.1.2.3 Attributes
        4. 10.1.2.4 Optional tags
        5. 10.1.2.5 Restrictions on content models
        6. 10.1.2.6 Restrictions on the contents of raw text and RCDATA elements
      3. 10.1.3 Text
        1. 10.1.3.1 Newlines
      4. 10.1.4 Character references
      5. 10.1.5 CDATA sections
      6. 10.1.6 Comments
    2. 10.2 Parsing HTML documents
      1. 10.2.1 Overview of the parsing model
      2. 10.2.2 The input stream
        1. 10.2.2.1 Determining the character encoding
        2. 10.2.2.2 Character encodings
        3. 10.2.2.3 Preprocessing the input stream
        4. 10.2.2.4 Changing the encoding while parsing
      3. 10.2.3 Parse state
        1. 10.2.3.1 The insertion mode
        2. 10.2.3.2 The stack of open elements
        3. 10.2.3.3 The list of active formatting elements
        4. 10.2.3.4 The element pointers
        5. 10.2.3.5 Other parsing state flags
      4. 10.2.4 Tokenization
        1. 10.2.4.1 Data state
        2. 10.2.4.2 Character reference in data state
        3. 10.2.4.3 RCDATA state
        4. 10.2.4.4 Character reference in RCDATA state
        5. 10.2.4.5 RAWTEXT state
        6. 10.2.4.6 Script data state
        7. 10.2.4.7 PLAINTEXT state
        8. 10.2.4.8 Tag open state
        9. 10.2.4.9 End tag open state
        10. 10.2.4.10 Tag name state
        11. 10.2.4.11 RCDATA less-than sign state
        12. 10.2.4.12 RCDATA end tag open state
        13. 10.2.4.13 RCDATA end tag name state
        14. 10.2.4.14 RAWTEXT less-than sign state
        15. 10.2.4.15 RAWTEXT end tag open state
        16. 10.2.4.16 RAWTEXT end tag name state
        17. 10.2.4.17 Script data less-than sign state
        18. 10.2.4.18 Script data end tag open state
        19. 10.2.4.19 Script data end tag name state
        20. 10.2.4.20 Script data escape start state
        21. 10.2.4.21 Script data escape start dash state
        22. 10.2.4.22 Script data escaped state
        23. 10.2.4.23 Script data escaped dash state
        24. 10.2.4.24 Script data escaped dash dash state
        25. 10.2.4.25 Script data escaped less-than sign state
        26. 10.2.4.26 Script data escaped end tag open state
        27. 10.2.4.27 Script data escaped end tag name state
        28. 10.2.4.28 Script data double escape start state
        29. 10.2.4.29 Script data double escaped state
        30. 10.2.4.30 Script data double escaped dash state
        31. 10.2.4.31 Script data double escaped dash dash state
        32. 10.2.4.32 Script data double escaped less-than sign state
        33. 10.2.4.33 Script data double escape end state
        34. 10.2.4.34 Before attribute name state
        35. 10.2.4.35 Attribute name state
        36. 10.2.4.36 After attribute name state
        37. 10.2.4.37 Before attribute value state
        38. 10.2.4.38 Attribute value (double-quoted) state
        39. 10.2.4.39 Attribute value (single-quoted) state
        40. 10.2.4.40 Attribute value (unquoted) state
        41. 10.2.4.41 Character reference in attribute value state
        42. 10.2.4.42 After attribute value (quoted) state
        43. 10.2.4.43 Self-closing start tag state
        44. 10.2.4.44 Bogus comment state
        45. 10.2.4.45 Markup declaration open state
        46. 10.2.4.46 Comment start state
        47. 10.2.4.47 Comment start dash state
        48. 10.2.4.48 Comment state
        49. 10.2.4.49 Comment end dash state
        50. 10.2.4.50 Comment end state
        51. 10.2.4.51 Comment end bang state
        52. 10.2.4.52 DOCTYPE state
        53. 10.2.4.53 Before DOCTYPE name state
        54. 10.2.4.54 DOCTYPE name state
        55. 10.2.4.55 After DOCTYPE name state
        56. 10.2.4.56 After DOCTYPE public keyword state
        57. 10.2.4.57 Before DOCTYPE public identifier state
        58. 10.2.4.58 DOCTYPE public identifier (double-quoted) state
        59. 10.2.4.59 DOCTYPE public identifier (single-quoted) state
        60. 10.2.4.60 After DOCTYPE public identifier state
        61. 10.2.4.61 Between DOCTYPE public and system identifiers state
        62. 10.2.4.62 After DOCTYPE system keyword state
        63. 10.2.4.63 Before DOCTYPE system identifier state
        64. 10.2.4.64 DOCTYPE system identifier (double-quoted) state
        65. 10.2.4.65 DOCTYPE system identifier (single-quoted) state
        66. 10.2.4.66 After DOCTYPE system identifier state
        67. 10.2.4.67 Bogus DOCTYPE state
        68. 10.2.4.68 CDATA section state
        69. 10.2.4.69 Tokenizing character references
      5. 10.2.5 Tree construction
        1. 10.2.5.1 Creating and inserting elements
        2. 10.2.5.2 Closing elements that have implied end tags
        3. 10.2.5.3 Foster parenting
        4. 10.2.5.4 The "initial" insertion mode
        5. 10.2.5.5 The "before html" insertion mode
        6. 10.2.5.6 The "before head" insertion mode
        7. 10.2.5.7 The "in head" insertion mode
        8. 10.2.5.8 The "in head noscript" insertion mode
        9. 10.2.5.9 The "after head" insertion mode
        10. 10.2.5.10 The "in body" insertion mode
        11. 10.2.5.11 The "text" insertion mode
        12. 10.2.5.12 The "in table" insertion mode
        13. 10.2.5.13 The "in table text" insertion mode
        14. 10.2.5.14 The "in caption" insertion mode
        15. 10.2.5.15 The "in column group" insertion mode
        16. 10.2.5.16 The "in table body" insertion mode
        17. 10.2.5.17 The "in row" insertion mode
        18. 10.2.5.18 The "in cell" insertion mode
        19. 10.2.5.19 The "in select" insertion mode
        20. 10.2.5.20 The "in select in table" insertion mode
        21. 10.2.5.21 The "in foreign content" insertion mode
        22. 10.2.5.22 The "after body" insertion mode
        23. 10.2.5.23 The "in frameset" insertion mode
        24. 10.2.5.24 The "after frameset" insertion mode
        25. 10.2.5.25 The "after after body" insertion mode
        26. 10.2.5.26 The "after after frameset" insertion mode
      6. 10.2.6 The end
      7. 10.2.7 Coercing an HTML DOM into an infoset
      8. 10.2.8 An introduction to error handling and strange cases in the parser
        1. 10.2.8.1 Misnested tags: <b><i></b></i>
        2. 10.2.8.2 Misnested tags: <b><p></b></p>
        3. 10.2.8.3 Unexpected markup in tables
        4. 10.2.8.4 Scripts that modify the page as it is being parsed
        5. 10.2.8.5 The execution of scripts that are moving across multiple documents
        6. 10.2.8.6 Unclosed formatting elements
    3. 10.3 Serializing HTML fragments
    4. 10.4 Parsing HTML fragments
    5. 10.5 Named character references
  11. 11 The XHTML syntax
    1. 11.1 Writing XHTML documents
    2. 11.2 Parsing XHTML documents
    3. 11.3 Serializing XHTML fragments
    4. 11.4 Parsing XHTML fragments
  12. 12 Rendering
    1. 12.1 Introduction
    2. 12.2 The CSS user agent style sheet and presentational hints
      1. 12.2.1 Introduction
      2. 12.2.2 Display types
      3. 12.2.3 Margins and padding
      4. 12.2.4 Alignment
      5. 12.2.5 Fonts and colors
      6. 12.2.6 Punctuation and decorations
      7. 12.2.7 Resetting rules for inherited properties
      8. 12.2.8 The hr element
      9. 12.2.9 The fieldset element
    3. 12.3 Replaced elements
      1. 12.3.1 Embedded content
      2. 12.3.2 Timed text tracks
        1. 12.3.2.1 WebVTT cue text rendering rules
        2. 12.3.2.2 Applying CSS properties to WebVTT Node Objects
        3. 12.3.2.3 CSS extensions
          1. 12.3.2.3.1 The '::cue' pseudo-element
          2. 12.3.2.3.2 The ':past' and ':future' pseudo-classes
      3. 12.3.3 Images
      4. 12.3.4 Attributes for embedded content and images
      5. 12.3.5 Image maps
      6. 12.3.6 Toolbars
    4. 12.4 Bindings
      1. 12.4.1 Introduction
      2. 12.4.2 The button element
      3. 12.4.3 The details element
      4. 12.4.4 The input element as a text entry widget
      5. 12.4.5 The input element as domain-specific widgets
      6. 12.4.6 The input element as a range control
      7. 12.4.7 The input element as a color well
      8. 12.4.8 The input element as a checkbox and radio button widgets
      9. 12.4.9 The input element as a file upload control
      10. 12.4.10 The input element as a button
      11. 12.4.11 The marquee element
      12. 12.4.12 The meter element
      13. 12.4.13 The progress element
      14. 12.4.14 The select element
      15. 12.4.15 The textarea element
      16. 12.4.16 The keygen element
      17. 12.4.17 The time element
    5. 12.5 Frames and framesets
    6. 12.6 Interactive media
      1. 12.6.1 Links, forms, and navigation
      2. 12.6.2 The title attribute
      3. 12.6.3 Editing hosts
      4. 12.6.4 Text rendered in native user interfaces
    7. 12.7 Print media
  13. 13 Obsolete features
    1. 13.1 Obsolete but conforming features
      1. 13.1.1 Warnings for obsolete but conforming features
    2. 13.2 Non-conforming features
    3. 13.3 Requirements for implementations
      1. 13.3.1 The applet element
      2. 13.3.2 The marquee element
      3. 13.3.3 Frames
      4. 13.3.4 Other elements, attributes and APIs
  14. 14 IANA considerations
    1. 14.1 text/html
    2. 14.2 text/html-sandboxed
    3. 14.3 application/xhtml+xml
    4. 14.4 text/cache-manifest
    5. 14.5 text/ping
    6. 14.6 text/vtt
    7. 14.7 application/microdata+json
    8. 14.8 Ping-From
    9. 14.9 Ping-To
  15. Index
    1. Elements
    2. Element content categories
    3. Attributes
    4. Interfaces
    5. Events
  16. References
  17. Acknowledgements