Annotation of html5/spec/textFieldSelection.html, revision 1.200
1.88 mike 1: <!DOCTYPE html>
1.159 sruby 2: <html lang="en-US-x-Hixie"><head><title>4.10.20 APIs for the text field selections — HTML5</title><style type="text/css">
1.1 mike 3: pre { margin-left: 2em; white-space: pre-wrap; }
4: h2 { margin: 3em 0 1em 0; }
5: h3 { margin: 2.5em 0 1em 0; }
6: h4 { margin: 2.5em 0 0.75em 0; }
7: h5, h6 { margin: 2.5em 0 1em; }
8: h1 + h2, h1 + h2 + h2 { margin: 0.75em 0 0.75em; }
9: h2 + h3, h3 + h4, h4 + h5, h5 + h6 { margin-top: 0.5em; }
10: p { margin: 1em 0; }
11: hr:not(.top) { display: block; background: none; border: none; padding: 0; margin: 2em 0; height: auto; }
12: dl, dd { margin-top: 0; margin-bottom: 0; }
13: dt { margin-top: 0.75em; margin-bottom: 0.25em; clear: left; }
14: dt + dt { margin-top: 0; }
15: dd dt { margin-top: 0.25em; margin-bottom: 0; }
16: dd p { margin-top: 0; }
17: dd dl + p { margin-top: 1em; }
18: dd table + p { margin-top: 1em; }
19: p + * > li, dd li { margin: 1em 0; }
20: dt, dfn { font-weight: bold; font-style: normal; }
21: i, em { font-style: italic; }
22: dt dfn { font-style: italic; }
23: pre, code { font-size: inherit; font-family: monospace; font-variant: normal; }
24: pre strong { color: black; font: inherit; font-weight: bold; background: yellow; }
25: pre em { font-weight: bolder; font-style: normal; }
26: @media screen { code { color: orangered; } code :link, code :visited { color: inherit; } }
27: var sub { vertical-align: bottom; font-size: smaller; position: relative; top: 0.1em; }
28: table { border-collapse: collapse; border-style: hidden hidden none hidden; }
29: table thead, table tbody { border-bottom: solid; }
30: table tbody th:first-child { border-left: solid; }
31: table tbody th { text-align: left; }
32: table td, table th { border-left: solid; border-right: solid; border-bottom: solid thin; vertical-align: top; padding: 0.2em; }
33: blockquote { margin: 0 0 0 2em; border: 0; padding: 0; font-style: italic; }
34:
35: .bad, .bad *:not(.XXX) { color: gray; border-color: gray; background: transparent; }
36: .matrix, .matrix td { border: none; text-align: right; }
37: .matrix { margin-left: 2em; }
38: .dice-example { border-collapse: collapse; border-style: hidden solid solid hidden; border-width: thin; margin-left: 3em; }
39: .dice-example caption { width: 30em; font-size: smaller; font-style: italic; padding: 0.75em 0; text-align: left; }
40: .dice-example td, .dice-example th { border: solid thin; width: 1.35em; height: 1.05em; text-align: center; padding: 0; }
41:
42: .toc dfn, h1 dfn, h2 dfn, h3 dfn, h4 dfn, h5 dfn, h6 dfn { font: inherit; }
43: img.extra, p.overview { float: right; }
44: pre.idl { border: solid thin; background: #EEEEEE; color: black; padding: 0.5em 1em; position: relative; }
45: pre.idl :link, pre.idl :visited { color: inherit; background: transparent; }
46: pre.idl::before { content: "IDL"; font: bold small sans-serif; padding: 0.5em; background: white; position: absolute; top: 0; margin: -1px 0 0 -4em; width: 1.5em; border: thin solid; border-radius: 0 0 0 0.5em }
47: pre.css { border: solid thin; background: #FFFFEE; color: black; padding: 0.5em 1em; }
48: pre.css:first-line { color: #AAAA50; }
49: dl.domintro { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
50: hr + dl.domintro, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
51: dl.domintro dt, dl.domintro dt * { color: black; text-decoration: none; }
52: dl.domintro dd { margin: 0.5em 0 1em 2em; padding: 0; }
53: dl.domintro dd p { margin: 0.5em 0; }
54: dl.domintro:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
55: dl.switch { padding-left: 2em; }
56: dl.switch > dt { text-indent: -1.5em; }
57: dl.switch > dt:before { content: '\21AA'; padding: 0 0.5em 0 0; display: inline-block; width: 1em; text-align: right; line-height: 0.5em; }
58: dl.triple { padding: 0 0 0 1em; }
59: dl.triple dt, dl.triple dd { margin: 0; display: inline }
60: dl.triple dt:after { content: ':'; }
61: dl.triple dd:after { content: '\A'; white-space: pre; }
62: .diff-old { text-decoration: line-through; color: silver; background: transparent; }
63: .diff-chg, .diff-new { text-decoration: underline; color: green; background: transparent; }
64: a .diff-new { border-bottom: 1px blue solid; }
65:
1.180 sruby 66: figure.diagrams { border: double black; background: white; padding: 1em; }
67: figure.diagrams img { display: block; margin: 1em auto; }
68:
1.1 mike 69: h2 { page-break-before: always; }
70: h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
71: h1 + h2, hr + h2.no-toc { page-break-before: auto; }
72:
73: p > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]),
74: li > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]), { border-bottom: solid #9999CC; }
75:
76: div.head { margin: 0 0 1em; padding: 1em 0 0 0; }
77: div.head p { margin: 0; }
78: div.head h1 { margin: 0; }
79: div.head .logo { float: right; margin: 0 1em; }
80: div.head .logo img { border: none } /* remove border from top image */
81: div.head dl { margin: 1em 0; }
82: div.head p.copyright, div.head p.alt { font-size: x-small; font-style: oblique; margin: 0; }
83:
84: body > .toc > li { margin-top: 1em; margin-bottom: 1em; }
85: body > .toc.brief > li { margin-top: 0.35em; margin-bottom: 0.35em; }
86: body > .toc > li > * { margin-bottom: 0.5em; }
87: body > .toc > li > * > li > * { margin-bottom: 0.25em; }
88: .toc, .toc li { list-style: none; }
89:
90: .brief { margin-top: 1em; margin-bottom: 1em; line-height: 1.1; }
91: .brief li { margin: 0; padding: 0; }
92: .brief li p { margin: 0; padding: 0; }
93:
94: .category-list { margin-top: -0.75em; margin-bottom: 1em; line-height: 1.5; }
95: .category-list::before { content: '\21D2\A0'; font-size: 1.2em; font-weight: 900; }
96: .category-list li { display: inline; }
97: .category-list li:not(:last-child)::after { content: ', '; }
98: .category-list li > span, .category-list li > a { text-transform: lowercase; }
99: .category-list li * { text-transform: none; } /* don't affect <code> nested in <a> */
100:
101: .XXX { color: #E50000; background: white; border: solid red; padding: 0.5em; margin: 1em 0; }
102: .XXX > :first-child { margin-top: 0; }
103: p .XXX { line-height: 3em; }
104: .annotation { border: solid thin black; background: #0C479D; color: white; position: relative; margin: 8px 0 20px 0; }
105: .annotation:before { position: absolute; left: 0; top: 0; width: 100%; height: 100%; margin: 6px -6px -6px 6px; background: #333333; z-index: -1; content: ''; }
106: .annotation :link, .annotation :visited { color: inherit; }
107: .annotation :link:hover, .annotation :visited:hover { background: transparent; }
108: .annotation span { border: none ! important; }
109: .note { color: green; background: transparent; font-family: sans-serif; }
110: .warning { color: red; background: transparent; }
111: .note, .warning { font-weight: bolder; font-style: italic; }
112: .note em, .warning em, .note i, .warning i { font-style: normal; }
113: p.note, div.note { padding: 0.5em 2em; }
114: span.note { padding: 0 2em; }
115: .note p:first-child, .warning p:first-child { margin-top: 0; }
116: .note p:last-child, .warning p:last-child { margin-bottom: 0; }
117: .warning:before { font-style: normal; }
118: p.note:before { content: 'Note: '; }
119: p.warning:before { content: '\26A0 Warning! '; }
120:
121: .bookkeeping:before { display: block; content: 'Bookkeeping details'; font-weight: bolder; font-style: italic; }
122: .bookkeeping { font-size: 0.8em; margin: 2em 0; }
123: .bookkeeping p { margin: 0.5em 2em; display: list-item; list-style: square; }
124: .bookkeeping dt { margin: 0.5em 2em 0; }
125: .bookkeeping dd { margin: 0 3em 0.5em; }
126:
127: h4 { position: relative; z-index: 3; }
128: h4 + .element, h4 + div + .element { margin-top: -2.5em; padding-top: 2em; }
129: .element {
130: background: #EEEEFF;
131: color: black;
132: margin: 0 0 1em 0.15em;
133: padding: 0 1em 0.25em 0.75em;
134: border-left: solid #9999FF 0.25em;
135: position: relative;
136: z-index: 1;
137: }
138: .element:before {
139: position: absolute;
140: z-index: 2;
141: top: 0;
142: left: -1.15em;
143: height: 2em;
144: width: 0.9em;
145: background: #EEEEFF;
146: content: ' ';
147: border-style: none none solid solid;
148: border-color: #9999FF;
149: border-width: 0.25em;
150: }
151:
152: .example { display: block; color: #222222; background: #FCFCFC; border-left: double; margin-left: 2em; padding-left: 1em; }
153: td > .example:only-child { margin: 0 0 0 0.1em; }
154:
155: ul.domTree, ul.domTree ul { padding: 0 0 0 1em; margin: 0; }
156: ul.domTree li { padding: 0; margin: 0; list-style: none; position: relative; }
157: ul.domTree li li { list-style: none; }
158: ul.domTree li:first-child::before { position: absolute; top: 0; height: 0.6em; left: -0.75em; width: 0.5em; border-style: none none solid solid; content: ''; border-width: 0.1em; }
159: ul.domTree li:not(:last-child)::after { position: absolute; top: 0; bottom: -0.6em; left: -0.75em; width: 0.5em; border-style: none none solid solid; content: ''; border-width: 0.1em; }
160: ul.domTree span { font-style: italic; font-family: serif; }
161: ul.domTree .t1 code { color: purple; font-weight: bold; }
162: ul.domTree .t2 { font-style: normal; font-family: monospace; }
163: ul.domTree .t2 .name { color: black; font-weight: bold; }
164: ul.domTree .t2 .value { color: blue; font-weight: normal; }
165: ul.domTree .t3 code, .domTree .t4 code, .domTree .t5 code { color: gray; }
166: ul.domTree .t7 code, .domTree .t8 code { color: green; }
167: ul.domTree .t10 code { color: teal; }
168:
169: body.dfnEnabled dfn { cursor: pointer; }
170: .dfnPanel {
171: display: inline;
172: position: absolute;
173: z-index: 10;
174: height: auto;
175: width: auto;
176: padding: 0.5em 0.75em;
177: font: small sans-serif, Droid Sans Fallback;
178: background: #DDDDDD;
179: color: black;
180: border: outset 0.2em;
181: }
182: .dfnPanel * { margin: 0; padding: 0; font: inherit; text-indent: 0; }
183: .dfnPanel :link, .dfnPanel :visited { color: black; }
184: .dfnPanel p { font-weight: bolder; }
185: .dfnPanel * + p { margin-top: 0.25em; }
186: .dfnPanel li { list-style-position: inside; }
187:
188: #configUI { position: absolute; z-index: 20; top: 10em; right: 1em; width: 11em; font-size: small; }
189: #configUI p { margin: 0.5em 0; padding: 0.3em; background: #EEEEEE; color: black; border: inset thin; }
190: #configUI p label { display: block; }
191: #configUI #updateUI, #configUI .loginUI { text-align: center; }
192: #configUI input[type=button] { display: block; margin: auto; }
193:
194: fieldset { margin: 1em; padding: 0.5em 1em; }
195: fieldset > legend + * { margin-top: 0; }
196: fieldset > :last-child { margin-bottom: 0; }
197: fieldset p { margin: 0.5em 0; }
198:
1.159 sruby 199: </style><link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css"><style type="text/css">
1.1 mike 200:
201: .applies thead th > * { display: block; }
202: .applies thead code { display: block; }
203: .applies tbody th { whitespace: nowrap; }
204: .applies td { text-align: center; }
205: .applies .yes { background: yellow; }
206:
207: .matrix, .matrix td { border: hidden; text-align: right; }
208: .matrix { margin-left: 2em; }
209:
210: .dice-example { border-collapse: collapse; border-style: hidden solid solid hidden; border-width: thin; margin-left: 3em; }
211: .dice-example caption { width: 30em; font-size: smaller; font-style: italic; padding: 0.75em 0; text-align: left; }
212: .dice-example td, .dice-example th { border: solid thin; width: 1.35em; height: 1.05em; text-align: center; padding: 0; }
213:
214: td.eg { border-width: thin; text-align: center; }
215:
216: #table-example-1 { border: solid thin; border-collapse: collapse; margin-left: 3em; }
217: #table-example-1 * { font-family: "Essays1743", serif; line-height: 1.01em; }
218: #table-example-1 caption { padding-bottom: 0.5em; }
219: #table-example-1 thead, #table-example-1 tbody { border: none; }
220: #table-example-1 th, #table-example-1 td { border: solid thin; }
221: #table-example-1 th { font-weight: normal; }
222: #table-example-1 td { border-style: none solid; vertical-align: top; }
223: #table-example-1 th { padding: 0.5em; vertical-align: middle; text-align: center; }
224: #table-example-1 tbody tr:first-child td { padding-top: 0.5em; }
225: #table-example-1 tbody tr:last-child td { padding-bottom: 1.5em; }
226: #table-example-1 tbody td:first-child { padding-left: 2.5em; padding-right: 0; width: 9em; }
227: #table-example-1 tbody td:first-child::after { content: leader(". "); }
228: #table-example-1 tbody td { padding-left: 2em; padding-right: 2em; }
229: #table-example-1 tbody td:first-child + td { width: 10em; }
230: #table-example-1 tbody td:first-child + td ~ td { width: 2.5em; }
231: #table-example-1 tbody td:first-child + td + td + td ~ td { width: 1.25em; }
232:
233: .apple-table-examples { border: none; border-collapse: separate; border-spacing: 1.5em 0em; width: 40em; margin-left: 3em; }
234: .apple-table-examples * { font-family: "Times", serif; }
235: .apple-table-examples td, .apple-table-examples th { border: none; white-space: nowrap; padding-top: 0; padding-bottom: 0; }
236: .apple-table-examples tbody th:first-child { border-left: none; width: 100%; }
237: .apple-table-examples thead th:first-child ~ th { font-size: smaller; font-weight: bolder; border-bottom: solid 2px; text-align: center; }
238: .apple-table-examples tbody th::after, .apple-table-examples tfoot th::after { content: leader(". ") }
239: .apple-table-examples tbody th, .apple-table-examples tfoot th { font: inherit; text-align: left; }
240: .apple-table-examples td { text-align: right; vertical-align: top; }
241: .apple-table-examples.e1 tbody tr:last-child td { border-bottom: solid 1px; }
242: .apple-table-examples.e1 tbody + tbody tr:last-child td { border-bottom: double 3px; }
243: .apple-table-examples.e2 th[scope=row] { padding-left: 1em; }
244: .apple-table-examples sup { line-height: 0; }
245:
246: .details-example img { vertical-align: top; }
247:
248: #base64-table {
249: white-space: nowrap;
250: font-size: 0.6em;
251: column-width: 6em;
252: column-count: 5;
253: column-gap: 1em;
254: -moz-column-width: 6em;
255: -moz-column-count: 5;
256: -moz-column-gap: 1em;
257: -webkit-column-width: 6em;
258: -webkit-column-count: 5;
259: -webkit-column-gap: 1em;
260: }
261: #base64-table thead { display: none; }
262: #base64-table * { border: none; }
263: #base64-table tbody td:first-child:after { content: ':'; }
264: #base64-table tbody td:last-child { text-align: right; }
265:
266: #named-character-references-table {
267: white-space: nowrap;
268: font-size: 0.6em;
269: column-width: 30em;
270: column-gap: 1em;
271: -moz-column-width: 30em;
272: -moz-column-gap: 1em;
273: -webkit-column-width: 30em;
274: -webkit-column-gap: 1em;
275: }
276: #named-character-references-table > table > tbody > tr > td:first-child + td,
277: #named-character-references-table > table > tbody > tr > td:last-child { text-align: center; }
278: #named-character-references-table > table > tbody > tr > td:last-child:hover > span { position: absolute; top: auto; left: auto; margin-left: 0.5em; line-height: 1.2; font-size: 5em; border: outset; padding: 0.25em 0.5em; background: white; width: 1.25em; height: auto; text-align: center; }
279: #named-character-references-table > table > tbody > tr#entity-CounterClockwiseContourIntegral > td:first-child { font-size: 0.5em; }
280:
281: .glyph.control { color: red; }
282:
283: @font-face {
284: font-family: 'Essays1743';
1.178 sruby 285: src: url('../fonts/Essays1743.ttf');
1.1 mike 286: }
287: @font-face {
288: font-family: 'Essays1743';
289: font-weight: bold;
1.178 sruby 290: src: url('../fonts/Essays1743-Bold.ttf');
1.1 mike 291: }
292: @font-face {
293: font-family: 'Essays1743';
294: font-style: italic;
1.178 sruby 295: src: url('../fonts/Essays1743-Italic.ttf');
1.1 mike 296: }
297: @font-face {
298: font-family: 'Essays1743';
299: font-style: italic;
300: font-weight: bold;
1.178 sruby 301: src: url('../fonts/Essays1743-BoldItalic.ttf');
1.1 mike 302: }
303:
1.159 sruby 304: </style><link href="data:text/css," id="complete" rel="stylesheet" title="Complete specification"><link href="data:text/css,.impl%20%7B%20display:%20none;%20%7D%0Ahtml%20%7B%20border:%20solid%20yellow;%20%7D%20.domintro:before%20%7B%20display:%20none;%20%7D" id="author" rel="alternate stylesheet" title="Author documentation only"><link href="data:text/css,.impl%20%7B%20background:%20%23FFEEEE;%20%7D%20.domintro:before%20%7B%20background:%20%23FFEEEE;%20%7D" id="highlight" rel="alternate stylesheet" title="Highlight implementation requirements"><script>
1.1 mike 305: function getCookie(name) {
306: var params = location.search.substr(1).split("&");
307: for (var index = 0; index < params.length; index++) {
308: if (params[index] == name)
309: return "1";
310: var data = params[index].split("=");
311: if (data[0] == name)
312: return unescape(data[1]);
313: }
314: var cookies = document.cookie.split("; ");
315: for (var index = 0; index < cookies.length; index++) {
316: var data = cookies[index].split("=");
317: if (data[0] == name)
318: return unescape(data[1]);
319: }
320: return null;
321: }
1.198 sruby 322: </script><link href="form-submission.html" title="4.10.19.6 Form submission" rel="prev">
323: <link href="spec.html#contents" title="Table of contents" rel="contents">
1.22 mike 324: </head><body onload="fixBrokenLink();" class="split chapter"><div class="head" id="head">
1.1 mike 325: <p><a href="http://www.w3.org/"><img alt="W3C" height="48" src="http://www.w3.org/Icons/w3c_home" width="72"></a></p>
326:
327: <h1>HTML5</h1>
1.198 sruby 328: <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
1.199 sruby 329: <h2 class="no-num no-toc" id="editor's-draft-date-1-january-1970">Editor's Draft 11 October 2012</h2>
1.85 mike 330: </div>
1.198 sruby 331: <div class="prev_next">
1.159 sruby 332: <a href="form-submission.html">← 4.10.19.6 Form submission</a> –
1.198 sruby 333: <a href="spec.html#contents">Table of contents</a>
1.190 sruby 334: <ol class="toc"><li><ol><li><ol><li><a href="textFieldSelection.html#textFieldSelection"><span class="secno">4.10.20 </span>APIs for the text field selections</a></li><li><a href="textFieldSelection.html#constraints"><span class="secno">4.10.21 </span>Constraints</a>
335: <ol><li><a href="textFieldSelection.html#definitions"><span class="secno">4.10.21.1 </span>Definitions</a></li><li><a href="textFieldSelection.html#constraint-validation"><span class="secno">4.10.21.2 </span>Constraint validation</a></li><li><a href="textFieldSelection.html#the-constraint-validation-api"><span class="secno">4.10.21.3 </span>The constraint validation API</a></li><li><a href="textFieldSelection.html#security-forms"><span class="secno">4.10.21.4 </span>Security</a></li></ol></li><li><a href="textFieldSelection.html#form-submission-0"><span class="secno">4.10.22 </span>Form submission</a>
336: <ol><li><a href="textFieldSelection.html#introduction-2"><span class="secno">4.10.22.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#implicit-submission"><span class="secno">4.10.22.2 </span>Implicit submission</a></li><li><a href="textFieldSelection.html#form-submission-algorithm"><span class="secno">4.10.22.3 </span>Form submission algorithm</a></li><li><a href="textFieldSelection.html#constructing-form-data-set"><span class="secno">4.10.22.4 </span>Constructing the form data set</a></li><li><a href="textFieldSelection.html#url-encoded-form-data"><span class="secno">4.10.22.5 </span>URL-encoded form data</a></li><li><a href="textFieldSelection.html#multipart-form-data"><span class="secno">4.10.22.6 </span>Multipart form data</a></li><li><a href="textFieldSelection.html#plain-text-form-data"><span class="secno">4.10.22.7 </span>Plain text form data</a></li></ol></li><li><a href="textFieldSelection.html#resetting-a-form"><span class="secno">4.10.23 </span>Resetting a form</a></li></ol></li><li><a href="textFieldSelection.html#interactive-elements"><span class="secno">4.11 </span>Interactive elements</a>
337: <ol><li><a href="textFieldSelection.html#the-details-element"><span class="secno">4.11.1 </span>The <code>details</code> element</a></li><li><a href="textFieldSelection.html#the-summary-element"><span class="secno">4.11.2 </span>The <code>summary</code> element</a></li><li><a href="textFieldSelection.html#the-command-element"><span class="secno">4.11.3 </span>The <code>command</code> element</a></li><li><a href="textFieldSelection.html#the-menu-element"><span class="secno">4.11.4 </span>The <code>menu</code> element</a>
338: <ol><li><a href="textFieldSelection.html#menus-intro"><span class="secno">4.11.4.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#building-menus-and-toolbars"><span class="secno">4.11.4.2 </span>Building menus and toolbars</a></li><li><a href="textFieldSelection.html#context-menus"><span class="secno">4.11.4.3 </span>Context menus</a></li><li><a href="textFieldSelection.html#toolbars"><span class="secno">4.11.4.4 </span>Toolbars</a></li></ol></li><li><a href="textFieldSelection.html#commands"><span class="secno">4.11.5 </span>Commands</a>
339: <ol><li><a href="textFieldSelection.html#using-the-a-element-to-define-a-command"><span class="secno">4.11.5.1 </span>Using the <code>a</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-button-element-to-define-a-command"><span class="secno">4.11.5.2 </span>Using the <code>button</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-input-element-to-define-a-command"><span class="secno">4.11.5.3 </span>Using the <code>input</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-option-element-to-define-a-command"><span class="secno">4.11.5.4 </span>Using the <code>option</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-command-element-to-define-a-command"><span class="secno">4.11.5.5 </span>Using the <code>command</code> element to define
340: a command</a></li><li><a href="textFieldSelection.html#using-the-command-attribute-on-command-elements-to-define-a-command-indirectly"><span class="secno">4.11.5.6 </span>Using the <code title="attr-command-command">command</code> attribute on <code>command</code> elements to define a command indirectly</a></li><li><a href="textFieldSelection.html#using-the-accesskey-attribute-on-a-label-element-to-define-a-command"><span class="secno">4.11.5.7 </span>Using the <code title="attr-accesskey">accesskey</code> attribute on a <code>label</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-accesskey-attribute-on-a-legend-element-to-define-a-command"><span class="secno">4.11.5.8 </span>Using the <code title="attr-accesskey">accesskey</code> attribute on a <code>legend</code> element to define a command</a></li><li><a href="textFieldSelection.html#using-the-accesskey-attribute-to-define-a-command-on-other-elements"><span class="secno">4.11.5.9 </span>Using the <code title="attr-accesskey">accesskey</code> attribute to define a command on other elements</a></li></ol></li><li><a href="textFieldSelection.html#the-dialog-element"><span class="secno">4.11.6 </span>The <code>dialog</code> element</a>
341: <ol><li><a href="textFieldSelection.html#anchor-points"><span class="secno">4.11.6.1 </span>Anchor points</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#links"><span class="secno">4.12 </span>Links</a>
1.191 sruby 342: <ol><li><a href="textFieldSelection.html#introduction-3"><span class="secno">4.12.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#links-created-by-a-and-area-elements"><span class="secno">4.12.2 </span>Links created by <code>a</code> and <code>area</code> elements</a></li><li><a href="textFieldSelection.html#following-hyperlinks"><span class="secno">4.12.3 </span>Following hyperlinks</a></li><li><a href="textFieldSelection.html#downloading-resources"><span class="secno">4.12.4 </span>Downloading resources</a>
343: <ol><li><a href="textFieldSelection.html#hyperlink-auditing"><span class="secno">4.12.4.1 </span>Hyperlink auditing</a></li></ol></li><li><a href="textFieldSelection.html#linkTypes"><span class="secno">4.12.5 </span>Link types</a>
344: <ol><li><a href="textFieldSelection.html#rel-alternate"><span class="secno">4.12.5.1 </span>Link type "<code>alternate</code>"</a></li><li><a href="textFieldSelection.html#link-type-author"><span class="secno">4.12.5.2 </span>Link type "<code>author</code>"</a></li><li><a href="textFieldSelection.html#link-type-bookmark"><span class="secno">4.12.5.3 </span>Link type "<code>bookmark</code>"</a></li><li><a href="textFieldSelection.html#link-type-help"><span class="secno">4.12.5.4 </span>Link type "<code>help</code>"</a></li><li><a href="textFieldSelection.html#rel-icon"><span class="secno">4.12.5.5 </span>Link type "<code>icon</code>"</a></li><li><a href="textFieldSelection.html#link-type-license"><span class="secno">4.12.5.6 </span>Link type "<code>license</code>"</a></li><li><a href="textFieldSelection.html#link-type-nofollow"><span class="secno">4.12.5.7 </span>Link type "<code>nofollow</code>"</a></li><li><a href="textFieldSelection.html#link-type-noreferrer"><span class="secno">4.12.5.8 </span>Link type "<code>noreferrer</code>"</a></li><li><a href="textFieldSelection.html#link-type-prefetch"><span class="secno">4.12.5.9 </span>Link type "<code>prefetch</code>"</a></li><li><a href="textFieldSelection.html#link-type-search"><span class="secno">4.12.5.10 </span>Link type "<code>search</code>"</a></li><li><a href="textFieldSelection.html#link-type-stylesheet"><span class="secno">4.12.5.11 </span>Link type "<code>stylesheet</code>"</a></li><li><a href="textFieldSelection.html#link-type-tag"><span class="secno">4.12.5.12 </span>Link type "<code>tag</code>"</a></li><li><a href="textFieldSelection.html#sequential-link-types"><span class="secno">4.12.5.13 </span>Sequential link types</a>
345: <ol><li><a href="textFieldSelection.html#link-type-next"><span class="secno">4.12.5.13.1 </span>Link type "<code>next</code>"</a></li><li><a href="textFieldSelection.html#link-type-prev"><span class="secno">4.12.5.13.2 </span>Link type "<code>prev</code>"</a></li></ol></li><li><a href="textFieldSelection.html#other-link-types"><span class="secno">4.12.5.14 </span>Other link types</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#common-idioms"><span class="secno">4.13 </span>Common idioms without dedicated elements</a>
1.190 sruby 346: <ol><li><a href="textFieldSelection.html#the-main-part-of-the-content"><span class="secno">4.13.1 </span>The main part of the content</a></li><li><a href="textFieldSelection.html#rel-up"><span class="secno">4.13.2 </span>Bread crumb navigation</a></li><li><a href="textFieldSelection.html#tag-clouds"><span class="secno">4.13.3 </span>Tag clouds</a></li><li><a href="textFieldSelection.html#conversations"><span class="secno">4.13.4 </span>Conversations</a></li><li><a href="textFieldSelection.html#footnotes"><span class="secno">4.13.5 </span>Footnotes</a></li></ol></li><li><a href="textFieldSelection.html#selectors"><span class="secno">4.14 </span>Matching HTML elements using selectors</a>
347: <ol><li><a href="textFieldSelection.html#case-sensitivity"><span class="secno">4.14.1 </span>Case-sensitivity</a></li><li><a href="textFieldSelection.html#pseudo-classes"><span class="secno">4.14.2 </span>Pseudo-classes</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#browsers"><span class="secno">5 </span>Loading Web pages</a>
348: <ol><li><a href="textFieldSelection.html#windows"><span class="secno">5.1 </span>Browsing contexts</a>
349: <ol><li><a href="textFieldSelection.html#nested-browsing-contexts"><span class="secno">5.1.1 </span>Nested browsing contexts</a>
350: <ol><li><a href="textFieldSelection.html#navigating-nested-browsing-contexts-in-the-dom"><span class="secno">5.1.1.1 </span>Navigating nested browsing contexts in the DOM</a></li></ol></li><li><a href="textFieldSelection.html#auxiliary-browsing-contexts"><span class="secno">5.1.2 </span>Auxiliary browsing contexts</a>
351: <ol><li><a href="textFieldSelection.html#navigating-auxiliary-browsing-contexts-in-the-dom"><span class="secno">5.1.2.1 </span>Navigating auxiliary browsing contexts in the DOM</a></li></ol></li><li><a href="textFieldSelection.html#secondary-browsing-contexts"><span class="secno">5.1.3 </span>Secondary browsing contexts</a></li><li><a href="textFieldSelection.html#security-nav"><span class="secno">5.1.4 </span>Security</a></li><li><a href="textFieldSelection.html#groupings-of-browsing-contexts"><span class="secno">5.1.5 </span>Groupings of browsing contexts</a></li><li><a href="textFieldSelection.html#browsing-context-names"><span class="secno">5.1.6 </span>Browsing context names</a></li></ol></li><li><a href="textFieldSelection.html#the-window-object"><span class="secno">5.2 </span>The <code>Window</code> object</a>
352: <ol><li><a href="textFieldSelection.html#security-window"><span class="secno">5.2.1 </span>Security</a></li><li><a href="textFieldSelection.html#apis-for-creating-and-navigating-browsing-contexts-by-name"><span class="secno">5.2.2 </span>APIs for creating and navigating browsing contexts by name</a></li><li><a href="textFieldSelection.html#accessing-other-browsing-contexts"><span class="secno">5.2.3 </span>Accessing other browsing contexts</a></li><li><a href="textFieldSelection.html#named-access-on-the-window-object"><span class="secno">5.2.4 </span>Named access on the <code>Window</code> object</a></li><li><a href="textFieldSelection.html#garbage-collection-and-browsing-contexts"><span class="secno">5.2.5 </span>Garbage collection and browsing contexts</a></li><li><a href="textFieldSelection.html#browser-interface-elements"><span class="secno">5.2.6 </span>Browser interface elements</a></li><li><a href="textFieldSelection.html#the-windowproxy-object"><span class="secno">5.2.7 </span>The <code>WindowProxy</code> object</a></li></ol></li><li><a href="textFieldSelection.html#origin"><span class="secno">5.3 </span>Origin</a>
353: <ol><li><a href="textFieldSelection.html#relaxing-the-same-origin-restriction"><span class="secno">5.3.1 </span>Relaxing the same-origin restriction</a></li></ol></li><li><a href="textFieldSelection.html#sandboxing"><span class="secno">5.4 </span>Sandboxing</a></li><li><a href="textFieldSelection.html#history"><span class="secno">5.5 </span>Session history and navigation</a>
354: <ol><li><a href="textFieldSelection.html#the-session-history-of-browsing-contexts"><span class="secno">5.5.1 </span>The session history of browsing contexts</a></li><li><a href="textFieldSelection.html#the-history-interface"><span class="secno">5.5.2 </span>The <code>History</code> interface</a></li><li><a href="textFieldSelection.html#the-location-interface"><span class="secno">5.5.3 </span>The <code>Location</code> interface</a>
355: <ol><li><a href="textFieldSelection.html#security-location"><span class="secno">5.5.3.1 </span>Security</a></li></ol></li><li><a href="textFieldSelection.html#history-notes"><span class="secno">5.5.4 </span>Implementation notes for session history</a></li></ol></li><li><a href="textFieldSelection.html#browsing-the-web"><span class="secno">5.6 </span>Browsing the Web</a>
356: <ol><li><a href="textFieldSelection.html#navigating-across-documents"><span class="secno">5.6.1 </span>Navigating across documents</a></li><li><a href="textFieldSelection.html#read-html"><span class="secno">5.6.2 </span>Page load processing model for HTML files</a></li><li><a href="textFieldSelection.html#read-xml"><span class="secno">5.6.3 </span>Page load processing model for XML files</a></li><li><a href="textFieldSelection.html#read-text"><span class="secno">5.6.4 </span>Page load processing model for text files</a></li><li><a href="textFieldSelection.html#read-multipart-x-mixed-replace"><span class="secno">5.6.5 </span>Page load processing model for <code>multipart/x-mixed-replace</code> resources</a></li><li><a href="textFieldSelection.html#read-media"><span class="secno">5.6.6 </span>Page load processing model for media</a></li><li><a href="textFieldSelection.html#read-plugin"><span class="secno">5.6.7 </span>Page load processing model for content that uses plugins</a></li><li><a href="textFieldSelection.html#read-ua-inline"><span class="secno">5.6.8 </span>Page load processing model for inline content that doesn't have a DOM</a></li><li><a href="textFieldSelection.html#scroll-to-fragid"><span class="secno">5.6.9 </span>Navigating to a fragment identifier</a></li><li><a href="textFieldSelection.html#history-traversal"><span class="secno">5.6.10 </span>History traversal</a>
357: <ol><li><a href="textFieldSelection.html#event-definitions-0"><span class="secno">5.6.10.1 </span>Event definitions</a></li></ol></li><li><a href="textFieldSelection.html#unloading-documents"><span class="secno">5.6.11 </span>Unloading documents</a>
358: <ol><li><a href="textFieldSelection.html#event-definition"><span class="secno">5.6.11.1 </span>Event definition</a></li></ol></li><li><a href="textFieldSelection.html#aborting-a-document-load"><span class="secno">5.6.12 </span>Aborting a document load</a></li></ol></li><li><a href="textFieldSelection.html#offline"><span class="secno">5.7 </span>Offline Web applications</a>
359: <ol><li><a href="textFieldSelection.html#introduction-4"><span class="secno">5.7.1 </span>Introduction</a>
360: <ol><li><a href="textFieldSelection.html#appcacheevents"><span class="secno">5.7.1.1 </span>Event summary</a></li></ol></li><li><a href="textFieldSelection.html#appcache"><span class="secno">5.7.2 </span>Application caches</a></li><li><a href="textFieldSelection.html#manifests"><span class="secno">5.7.3 </span>The cache manifest syntax</a>
361: <ol><li><a href="textFieldSelection.html#some-sample-manifests"><span class="secno">5.7.3.1 </span>Some sample manifests</a></li><li><a href="textFieldSelection.html#writing-cache-manifests"><span class="secno">5.7.3.2 </span>Writing cache manifests</a></li><li><a href="textFieldSelection.html#parsing-cache-manifests"><span class="secno">5.7.3.3 </span>Parsing cache manifests</a></li></ol></li><li><a href="textFieldSelection.html#downloading-or-updating-an-application-cache"><span class="secno">5.7.4 </span>Downloading or updating an application cache</a></li><li><a href="textFieldSelection.html#the-application-cache-selection-algorithm"><span class="secno">5.7.5 </span>The application cache selection algorithm</a></li><li><a href="textFieldSelection.html#changesToNetworkingModel"><span class="secno">5.7.6 </span>Changes to the networking model</a></li><li><a href="textFieldSelection.html#expiring-application-caches"><span class="secno">5.7.7 </span>Expiring application caches</a></li><li><a href="textFieldSelection.html#disk-space"><span class="secno">5.7.8 </span>Disk space</a></li><li><a href="textFieldSelection.html#application-cache-api"><span class="secno">5.7.9 </span>Application cache API</a></li><li><a href="textFieldSelection.html#browser-state"><span class="secno">5.7.10 </span>Browser state</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#webappapis"><span class="secno">6 </span>Web application APIs</a>
362: <ol><li><a href="textFieldSelection.html#scripting"><span class="secno">6.1 </span>Scripting</a>
1.191 sruby 363: <ol><li><a href="textFieldSelection.html#introduction-5"><span class="secno">6.1.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#enabling-and-disabling-scripting"><span class="secno">6.1.2 </span>Enabling and disabling scripting</a></li><li><a href="textFieldSelection.html#processing-model-2"><span class="secno">6.1.3 </span>Processing model</a>
1.190 sruby 364: <ol><li><a href="textFieldSelection.html#definitions-0"><span class="secno">6.1.3.1 </span>Definitions</a></li><li><a href="textFieldSelection.html#calling-scripts"><span class="secno">6.1.3.2 </span>Calling scripts</a></li><li><a href="textFieldSelection.html#creating-scripts"><span class="secno">6.1.3.3 </span>Creating scripts</a></li><li><a href="textFieldSelection.html#killing-scripts"><span class="secno">6.1.3.4 </span>Killing scripts</a></li><li><a href="textFieldSelection.html#runtime-script-errors"><span class="secno">6.1.3.5 </span>Runtime script errors</a>
365: <ol><li><a href="textFieldSelection.html#runtime-script-errors-in-documents"><span class="secno">6.1.3.5.1 </span>Runtime script errors in documents</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#event-loops"><span class="secno">6.1.4 </span>Event loops</a>
1.191 sruby 366: <ol><li><a href="textFieldSelection.html#definitions-1"><span class="secno">6.1.4.1 </span>Definitions</a></li><li><a href="textFieldSelection.html#processing-model-3"><span class="secno">6.1.4.2 </span>Processing model</a></li><li><a href="textFieldSelection.html#generic-task-sources"><span class="secno">6.1.4.3 </span>Generic task sources</a></li></ol></li><li><a href="textFieldSelection.html#javascript-protocol"><span class="secno">6.1.5 </span>The <code title="">javascript:</code> URL scheme</a></li><li><a href="textFieldSelection.html#events"><span class="secno">6.1.6 </span>Events</a>
1.190 sruby 367: <ol><li><a href="textFieldSelection.html#event-handler-attributes"><span class="secno">6.1.6.1 </span>Event handlers</a></li><li><a href="textFieldSelection.html#event-handlers-on-elements,-document-objects,-and-window-objects"><span class="secno">6.1.6.2 </span>Event handlers on elements, <code>Document</code> objects, and <code>Window</code> objects</a></li><li><a href="textFieldSelection.html#event-firing"><span class="secno">6.1.6.3 </span>Event firing</a></li><li><a href="textFieldSelection.html#events-and-the-window-object"><span class="secno">6.1.6.4 </span>Events and the <code>Window</code> object</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#atob"><span class="secno">6.2 </span>Base64 utility methods</a></li><li><a href="textFieldSelection.html#timers"><span class="secno">6.3 </span>Timers</a></li><li><a href="textFieldSelection.html#user-prompts"><span class="secno">6.4 </span>User prompts</a>
368: <ol><li><a href="textFieldSelection.html#simple-dialogs"><span class="secno">6.4.1 </span>Simple dialogs</a></li><li><a href="textFieldSelection.html#printing"><span class="secno">6.4.2 </span>Printing</a></li><li><a href="textFieldSelection.html#dialogs-implemented-using-separate-documents"><span class="secno">6.4.3 </span>Dialogs implemented using separate documents</a></li></ol></li><li><a href="textFieldSelection.html#system-state-and-capabilities"><span class="secno">6.5 </span>System state and capabilities</a>
369: <ol><li><a href="textFieldSelection.html#the-navigator-object"><span class="secno">6.5.1 </span>The <code>Navigator</code> object</a>
370: <ol><li><a href="textFieldSelection.html#client-identification"><span class="secno">6.5.1.1 </span>Client identification</a></li><li><a href="textFieldSelection.html#custom-handlers"><span class="secno">6.5.1.2 </span>Custom scheme and content handlers</a></li><li><a href="textFieldSelection.html#security-and-privacy"><span class="secno">6.5.1.3 </span>Security and privacy</a></li><li><a href="textFieldSelection.html#sample-handler-impl"><span class="secno">6.5.1.4 </span>Sample user interface</a></li><li><a href="textFieldSelection.html#manually-releasing-the-storage-mutex"><span class="secno">6.5.1.5 </span>Manually releasing the storage mutex</a></li></ol></li><li><a href="textFieldSelection.html#the-external-interface"><span class="secno">6.5.2 </span>The <code>External</code> interface</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#editing"><span class="secno">7 </span>User interaction</a>
371: <ol><li><a href="textFieldSelection.html#the-hidden-attribute"><span class="secno">7.1 </span>The <code>hidden</code> attribute</a></li><li><a href="textFieldSelection.html#inert-subtrees"><span class="secno">7.2 </span>Inert subtrees</a></li><li><a href="textFieldSelection.html#activation"><span class="secno">7.3 </span>Activation</a></li><li><a href="textFieldSelection.html#focus"><span class="secno">7.4 </span>Focus</a>
372: <ol><li><a href="textFieldSelection.html#sequential-focus-navigation-and-the-tabindex-attribute"><span class="secno">7.4.1 </span>Sequential focus navigation and the <code title="attr-tabindex">tabindex</code> attribute</a></li><li><a href="textFieldSelection.html#focus-management"><span class="secno">7.4.2 </span>Focus management</a></li><li><a href="textFieldSelection.html#document-level-focus-apis"><span class="secno">7.4.3 </span>Document-level focus APIs</a></li><li><a href="textFieldSelection.html#element-level-focus-apis"><span class="secno">7.4.4 </span>Element-level focus APIs</a></li></ol></li><li><a href="textFieldSelection.html#assigning-keyboard-shortcuts"><span class="secno">7.5 </span>Assigning keyboard shortcuts</a>
1.191 sruby 373: <ol><li><a href="textFieldSelection.html#introduction-6"><span class="secno">7.5.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#the-accesskey-attribute"><span class="secno">7.5.2 </span>The <code>accesskey</code> attribute</a></li><li><a href="textFieldSelection.html#processing-model-4"><span class="secno">7.5.3 </span>Processing model</a></li></ol></li><li><a href="textFieldSelection.html#editing-0"><span class="secno">7.6 </span>Editing</a>
1.190 sruby 374: <ol><li><a href="textFieldSelection.html#contenteditable"><span class="secno">7.6.1 </span>Making document regions editable: The <code title="attr-contenteditable">contenteditable</code> content
375: attribute</a></li><li><a href="textFieldSelection.html#making-entire-documents-editable:-the-designmode-idl-attribute"><span class="secno">7.6.2 </span>Making entire documents editable: The <code title="dom-document-designMode">designMode</code> IDL attribute</a></li><li><a href="textFieldSelection.html#best-practices-for-in-page-editors"><span class="secno">7.6.3 </span>Best practices for in-page editors</a></li><li><a href="textFieldSelection.html#editing-apis"><span class="secno">7.6.4 </span>Editing APIs</a></li><li><a href="textFieldSelection.html#spelling-and-grammar-checking"><span class="secno">7.6.5 </span>Spelling and grammar checking</a></li></ol></li><li><a href="textFieldSelection.html#dnd"><span class="secno">7.7 </span>Drag and drop</a>
376: <ol><li><a href="textFieldSelection.html#introduction-7"><span class="secno">7.7.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#the-drag-data-store"><span class="secno">7.7.2 </span>The drag data store</a></li><li><a href="textFieldSelection.html#the-datatransfer-interface"><span class="secno">7.7.3 </span>The <code>DataTransfer</code> interface</a>
377: <ol><li><a href="textFieldSelection.html#the-datatransferitemlist-interface"><span class="secno">7.7.3.1 </span>The <code>DataTransferItemList</code> interface</a></li><li><a href="textFieldSelection.html#the-datatransferitem-interface"><span class="secno">7.7.3.2 </span>The <code>DataTransferItem</code> interface</a></li></ol></li><li><a href="textFieldSelection.html#the-dragevent-interface"><span class="secno">7.7.4 </span>The <code>DragEvent</code> interface</a></li><li><a href="textFieldSelection.html#drag-and-drop-processing-model"><span class="secno">7.7.5 </span>Drag-and-drop processing model</a></li><li><a href="textFieldSelection.html#dndevents"><span class="secno">7.7.6 </span>Events summary</a></li><li><a href="textFieldSelection.html#the-draggable-attribute"><span class="secno">7.7.7 </span>The <code>draggable</code> attribute</a></li><li><a href="textFieldSelection.html#the-dropzone-attribute"><span class="secno">7.7.8 </span>The <code>dropzone</code> attribute</a></li><li><a href="textFieldSelection.html#security-risks-in-the-drag-and-drop-model"><span class="secno">7.7.9 </span>Security risks in the drag-and-drop model</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#syntax"><span class="secno">8 </span>The HTML syntax</a>
378: <ol><li><a href="textFieldSelection.html#writing"><span class="secno">8.1 </span>Writing HTML documents</a>
379: <ol><li><a href="textFieldSelection.html#the-doctype"><span class="secno">8.1.1 </span>The DOCTYPE</a></li><li><a href="textFieldSelection.html#elements-0"><span class="secno">8.1.2 </span>Elements</a>
380: <ol><li><a href="textFieldSelection.html#start-tags"><span class="secno">8.1.2.1 </span>Start tags</a></li><li><a href="textFieldSelection.html#end-tags"><span class="secno">8.1.2.2 </span>End tags</a></li><li><a href="textFieldSelection.html#attributes-0"><span class="secno">8.1.2.3 </span>Attributes</a></li><li><a href="textFieldSelection.html#optional-tags"><span class="secno">8.1.2.4 </span>Optional tags</a></li><li><a href="textFieldSelection.html#element-restrictions"><span class="secno">8.1.2.5 </span>Restrictions on content models</a></li><li><a href="textFieldSelection.html#cdata-rcdata-restrictions"><span class="secno">8.1.2.6 </span>Restrictions on the contents of raw text and RCDATA elements</a></li></ol></li><li><a href="textFieldSelection.html#text"><span class="secno">8.1.3 </span>Text</a>
381: <ol><li><a href="textFieldSelection.html#newlines"><span class="secno">8.1.3.1 </span>Newlines</a></li></ol></li><li><a href="textFieldSelection.html#character-references"><span class="secno">8.1.4 </span>Character references</a></li><li><a href="textFieldSelection.html#cdata-sections"><span class="secno">8.1.5 </span>CDATA sections</a></li><li><a href="textFieldSelection.html#comments"><span class="secno">8.1.6 </span>Comments</a></li></ol></li><li><a href="textFieldSelection.html#parsing"><span class="secno">8.2 </span>Parsing HTML documents</a>
382: <ol><li><a href="textFieldSelection.html#overview-of-the-parsing-model"><span class="secno">8.2.1 </span>Overview of the parsing model</a></li><li><a href="textFieldSelection.html#the-input-byte-stream"><span class="secno">8.2.2 </span>The input byte stream</a>
383: <ol><li><a href="textFieldSelection.html#determining-the-character-encoding"><span class="secno">8.2.2.1 </span>Determining the character encoding</a></li><li><a href="textFieldSelection.html#character-encodings-0"><span class="secno">8.2.2.2 </span>Character encodings</a></li><li><a href="textFieldSelection.html#changing-the-encoding-while-parsing"><span class="secno">8.2.2.3 </span>Changing the encoding while parsing</a></li><li><a href="textFieldSelection.html#preprocessing-the-input-stream"><span class="secno">8.2.2.4 </span>Preprocessing the input stream</a></li></ol></li><li><a href="textFieldSelection.html#parse-state"><span class="secno">8.2.3 </span>Parse state</a>
384: <ol><li><a href="textFieldSelection.html#the-insertion-mode"><span class="secno">8.2.3.1 </span>The insertion mode</a></li><li><a href="textFieldSelection.html#the-stack-of-open-elements"><span class="secno">8.2.3.2 </span>The stack of open elements</a></li><li><a href="textFieldSelection.html#the-list-of-active-formatting-elements"><span class="secno">8.2.3.3 </span>The list of active formatting elements</a></li><li><a href="textFieldSelection.html#the-element-pointers"><span class="secno">8.2.3.4 </span>The element pointers</a></li><li><a href="textFieldSelection.html#other-parsing-state-flags"><span class="secno">8.2.3.5 </span>Other parsing state flags</a></li></ol></li><li><a href="textFieldSelection.html#tokenization"><span class="secno">8.2.4 </span>Tokenization</a>
385: <ol><li><a href="textFieldSelection.html#data-state"><span class="secno">8.2.4.1 </span>Data state</a></li><li><a href="textFieldSelection.html#character-reference-in-data-state"><span class="secno">8.2.4.2 </span>Character reference in data state</a></li><li><a href="textFieldSelection.html#rcdata-state"><span class="secno">8.2.4.3 </span>RCDATA state</a></li><li><a href="textFieldSelection.html#character-reference-in-rcdata-state"><span class="secno">8.2.4.4 </span>Character reference in RCDATA state</a></li><li><a href="textFieldSelection.html#rawtext-state"><span class="secno">8.2.4.5 </span>RAWTEXT state</a></li><li><a href="textFieldSelection.html#script-data-state"><span class="secno">8.2.4.6 </span>Script data state</a></li><li><a href="textFieldSelection.html#plaintext-state"><span class="secno">8.2.4.7 </span>PLAINTEXT state</a></li><li><a href="textFieldSelection.html#tag-open-state"><span class="secno">8.2.4.8 </span>Tag open state</a></li><li><a href="textFieldSelection.html#end-tag-open-state"><span class="secno">8.2.4.9 </span>End tag open state</a></li><li><a href="textFieldSelection.html#tag-name-state"><span class="secno">8.2.4.10 </span>Tag name state</a></li><li><a href="textFieldSelection.html#rcdata-less-than-sign-state"><span class="secno">8.2.4.11 </span>RCDATA less-than sign state</a></li><li><a href="textFieldSelection.html#rcdata-end-tag-open-state"><span class="secno">8.2.4.12 </span>RCDATA end tag open state</a></li><li><a href="textFieldSelection.html#rcdata-end-tag-name-state"><span class="secno">8.2.4.13 </span>RCDATA end tag name state</a></li><li><a href="textFieldSelection.html#rawtext-less-than-sign-state"><span class="secno">8.2.4.14 </span>RAWTEXT less-than sign state</a></li><li><a href="textFieldSelection.html#rawtext-end-tag-open-state"><span class="secno">8.2.4.15 </span>RAWTEXT end tag open state</a></li><li><a href="textFieldSelection.html#rawtext-end-tag-name-state"><span class="secno">8.2.4.16 </span>RAWTEXT end tag name state</a></li><li><a href="textFieldSelection.html#script-data-less-than-sign-state"><span class="secno">8.2.4.17 </span>Script data less-than sign state</a></li><li><a href="textFieldSelection.html#script-data-end-tag-open-state"><span class="secno">8.2.4.18 </span>Script data end tag open state</a></li><li><a href="textFieldSelection.html#script-data-end-tag-name-state"><span class="secno">8.2.4.19 </span>Script data end tag name state</a></li><li><a href="textFieldSelection.html#script-data-escape-start-state"><span class="secno">8.2.4.20 </span>Script data escape start state</a></li><li><a href="textFieldSelection.html#script-data-escape-start-dash-state"><span class="secno">8.2.4.21 </span>Script data escape start dash state</a></li><li><a href="textFieldSelection.html#script-data-escaped-state"><span class="secno">8.2.4.22 </span>Script data escaped state</a></li><li><a href="textFieldSelection.html#script-data-escaped-dash-state"><span class="secno">8.2.4.23 </span>Script data escaped dash state</a></li><li><a href="textFieldSelection.html#script-data-escaped-dash-dash-state"><span class="secno">8.2.4.24 </span>Script data escaped dash dash state</a></li><li><a href="textFieldSelection.html#script-data-escaped-less-than-sign-state"><span class="secno">8.2.4.25 </span>Script data escaped less-than sign state</a></li><li><a href="textFieldSelection.html#script-data-escaped-end-tag-open-state"><span class="secno">8.2.4.26 </span>Script data escaped end tag open state</a></li><li><a href="textFieldSelection.html#script-data-escaped-end-tag-name-state"><span class="secno">8.2.4.27 </span>Script data escaped end tag name state</a></li><li><a href="textFieldSelection.html#script-data-double-escape-start-state"><span class="secno">8.2.4.28 </span>Script data double escape start state</a></li><li><a href="textFieldSelection.html#script-data-double-escaped-state"><span class="secno">8.2.4.29 </span>Script data double escaped state</a></li><li><a href="textFieldSelection.html#script-data-double-escaped-dash-state"><span class="secno">8.2.4.30 </span>Script data double escaped dash state</a></li><li><a href="textFieldSelection.html#script-data-double-escaped-dash-dash-state"><span class="secno">8.2.4.31 </span>Script data double escaped dash dash state</a></li><li><a href="textFieldSelection.html#script-data-double-escaped-less-than-sign-state"><span class="secno">8.2.4.32 </span>Script data double escaped less-than sign state</a></li><li><a href="textFieldSelection.html#script-data-double-escape-end-state"><span class="secno">8.2.4.33 </span>Script data double escape end state</a></li><li><a href="textFieldSelection.html#before-attribute-name-state"><span class="secno">8.2.4.34 </span>Before attribute name state</a></li><li><a href="textFieldSelection.html#attribute-name-state"><span class="secno">8.2.4.35 </span>Attribute name state</a></li><li><a href="textFieldSelection.html#after-attribute-name-state"><span class="secno">8.2.4.36 </span>After attribute name state</a></li><li><a href="textFieldSelection.html#before-attribute-value-state"><span class="secno">8.2.4.37 </span>Before attribute value state</a></li><li><a href="textFieldSelection.html#attribute-value-(double-quoted)-state"><span class="secno">8.2.4.38 </span>Attribute value (double-quoted) state</a></li><li><a href="textFieldSelection.html#attribute-value-(single-quoted)-state"><span class="secno">8.2.4.39 </span>Attribute value (single-quoted) state</a></li><li><a href="textFieldSelection.html#attribute-value-(unquoted)-state"><span class="secno">8.2.4.40 </span>Attribute value (unquoted) state</a></li><li><a href="textFieldSelection.html#character-reference-in-attribute-value-state"><span class="secno">8.2.4.41 </span>Character reference in attribute value state</a></li><li><a href="textFieldSelection.html#after-attribute-value-(quoted)-state"><span class="secno">8.2.4.42 </span>After attribute value (quoted) state</a></li><li><a href="textFieldSelection.html#self-closing-start-tag-state"><span class="secno">8.2.4.43 </span>Self-closing start tag state</a></li><li><a href="textFieldSelection.html#bogus-comment-state"><span class="secno">8.2.4.44 </span>Bogus comment state</a></li><li><a href="textFieldSelection.html#markup-declaration-open-state"><span class="secno">8.2.4.45 </span>Markup declaration open state</a></li><li><a href="textFieldSelection.html#comment-start-state"><span class="secno">8.2.4.46 </span>Comment start state</a></li><li><a href="textFieldSelection.html#comment-start-dash-state"><span class="secno">8.2.4.47 </span>Comment start dash state</a></li><li><a href="textFieldSelection.html#comment-state"><span class="secno">8.2.4.48 </span>Comment state</a></li><li><a href="textFieldSelection.html#comment-end-dash-state"><span class="secno">8.2.4.49 </span>Comment end dash state</a></li><li><a href="textFieldSelection.html#comment-end-state"><span class="secno">8.2.4.50 </span>Comment end state</a></li><li><a href="textFieldSelection.html#comment-end-bang-state"><span class="secno">8.2.4.51 </span>Comment end bang state</a></li><li><a href="textFieldSelection.html#doctype-state"><span class="secno">8.2.4.52 </span>DOCTYPE state</a></li><li><a href="textFieldSelection.html#before-doctype-name-state"><span class="secno">8.2.4.53 </span>Before DOCTYPE name state</a></li><li><a href="textFieldSelection.html#doctype-name-state"><span class="secno">8.2.4.54 </span>DOCTYPE name state</a></li><li><a href="textFieldSelection.html#after-doctype-name-state"><span class="secno">8.2.4.55 </span>After DOCTYPE name state</a></li><li><a href="textFieldSelection.html#after-doctype-public-keyword-state"><span class="secno">8.2.4.56 </span>After DOCTYPE public keyword state</a></li><li><a href="textFieldSelection.html#before-doctype-public-identifier-state"><span class="secno">8.2.4.57 </span>Before DOCTYPE public identifier state</a></li><li><a href="textFieldSelection.html#doctype-public-identifier-(double-quoted)-state"><span class="secno">8.2.4.58 </span>DOCTYPE public identifier (double-quoted) state</a></li><li><a href="textFieldSelection.html#doctype-public-identifier-(single-quoted)-state"><span class="secno">8.2.4.59 </span>DOCTYPE public identifier (single-quoted) state</a></li><li><a href="textFieldSelection.html#after-doctype-public-identifier-state"><span class="secno">8.2.4.60 </span>After DOCTYPE public identifier state</a></li><li><a href="textFieldSelection.html#between-doctype-public-and-system-identifiers-state"><span class="secno">8.2.4.61 </span>Between DOCTYPE public and system identifiers state</a></li><li><a href="textFieldSelection.html#after-doctype-system-keyword-state"><span class="secno">8.2.4.62 </span>After DOCTYPE system keyword state</a></li><li><a href="textFieldSelection.html#before-doctype-system-identifier-state"><span class="secno">8.2.4.63 </span>Before DOCTYPE system identifier state</a></li><li><a href="textFieldSelection.html#doctype-system-identifier-(double-quoted)-state"><span class="secno">8.2.4.64 </span>DOCTYPE system identifier (double-quoted) state</a></li><li><a href="textFieldSelection.html#doctype-system-identifier-(single-quoted)-state"><span class="secno">8.2.4.65 </span>DOCTYPE system identifier (single-quoted) state</a></li><li><a href="textFieldSelection.html#after-doctype-system-identifier-state"><span class="secno">8.2.4.66 </span>After DOCTYPE system identifier state</a></li><li><a href="textFieldSelection.html#bogus-doctype-state"><span class="secno">8.2.4.67 </span>Bogus DOCTYPE state</a></li><li><a href="textFieldSelection.html#cdata-section-state"><span class="secno">8.2.4.68 </span>CDATA section state</a></li><li><a href="textFieldSelection.html#tokenizing-character-references"><span class="secno">8.2.4.69 </span>Tokenizing character references</a></li></ol></li><li><a href="textFieldSelection.html#tree-construction"><span class="secno">8.2.5 </span>Tree construction</a>
386: <ol><li><a href="textFieldSelection.html#creating-and-inserting-elements"><span class="secno">8.2.5.1 </span>Creating and inserting elements</a></li><li><a href="textFieldSelection.html#closing-elements-that-have-implied-end-tags"><span class="secno">8.2.5.2 </span>Closing elements that have implied end tags</a></li><li><a href="textFieldSelection.html#foster-parenting"><span class="secno">8.2.5.3 </span>Foster parenting</a></li><li><a href="textFieldSelection.html#parsing-main-inhtml"><span class="secno">8.2.5.4 </span>The rules for parsing tokens in HTML content</a>
387: <ol><li><a href="textFieldSelection.html#the-initial-insertion-mode"><span class="secno">8.2.5.4.1 </span>The "initial" insertion mode</a></li><li><a href="textFieldSelection.html#the-before-html-insertion-mode"><span class="secno">8.2.5.4.2 </span>The "before html" insertion mode</a></li><li><a href="textFieldSelection.html#the-before-head-insertion-mode"><span class="secno">8.2.5.4.3 </span>The "before head" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inhead"><span class="secno">8.2.5.4.4 </span>The "in head" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inheadnoscript"><span class="secno">8.2.5.4.5 </span>The "in head noscript" insertion mode</a></li><li><a href="textFieldSelection.html#the-after-head-insertion-mode"><span class="secno">8.2.5.4.6 </span>The "after head" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inbody"><span class="secno">8.2.5.4.7 </span>The "in body" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-incdata"><span class="secno">8.2.5.4.8 </span>The "text" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-intable"><span class="secno">8.2.5.4.9 </span>The "in table" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-intabletext"><span class="secno">8.2.5.4.10 </span>The "in table text" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-incaption"><span class="secno">8.2.5.4.11 </span>The "in caption" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-incolgroup"><span class="secno">8.2.5.4.12 </span>The "in column group" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-intbody"><span class="secno">8.2.5.4.13 </span>The "in table body" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-intr"><span class="secno">8.2.5.4.14 </span>The "in row" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-intd"><span class="secno">8.2.5.4.15 </span>The "in cell" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inselect"><span class="secno">8.2.5.4.16 </span>The "in select" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inselectintable"><span class="secno">8.2.5.4.17 </span>The "in select in table" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-afterbody"><span class="secno">8.2.5.4.18 </span>The "after body" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-inframeset"><span class="secno">8.2.5.4.19 </span>The "in frameset" insertion mode</a></li><li><a href="textFieldSelection.html#parsing-main-afterframeset"><span class="secno">8.2.5.4.20 </span>The "after frameset" insertion mode</a></li><li><a href="textFieldSelection.html#the-after-after-body-insertion-mode"><span class="secno">8.2.5.4.21 </span>The "after after body" insertion mode</a></li><li><a href="textFieldSelection.html#the-after-after-frameset-insertion-mode"><span class="secno">8.2.5.4.22 </span>The "after after frameset" insertion mode</a></li></ol></li><li><a href="textFieldSelection.html#parsing-main-inforeign"><span class="secno">8.2.5.5 </span>The rules for parsing tokens in foreign content</a></li></ol></li><li><a href="textFieldSelection.html#the-end"><span class="secno">8.2.6 </span>The end</a></li><li><a href="textFieldSelection.html#coercing-an-html-dom-into-an-infoset"><span class="secno">8.2.7 </span>Coercing an HTML DOM into an infoset</a></li><li><a href="textFieldSelection.html#an-introduction-to-error-handling-and-strange-cases-in-the-parser"><span class="secno">8.2.8 </span>An introduction to error handling and strange cases in the parser</a>
388: <ol><li><a href="textFieldSelection.html#misnested-tags:-b-i-/b-/i"><span class="secno">8.2.8.1 </span>Misnested tags: <b><i></b></i></a></li><li><a href="textFieldSelection.html#misnested-tags:-b-p-/b-/p"><span class="secno">8.2.8.2 </span>Misnested tags: <b><p></b></p></a></li><li><a href="textFieldSelection.html#unexpected-markup-in-tables"><span class="secno">8.2.8.3 </span>Unexpected markup in tables</a></li><li><a href="textFieldSelection.html#scripts-that-modify-the-page-as-it-is-being-parsed"><span class="secno">8.2.8.4 </span>Scripts that modify the page as it is being parsed</a></li><li><a href="textFieldSelection.html#the-execution-of-scripts-that-are-moving-across-multiple-documents"><span class="secno">8.2.8.5 </span>The execution of scripts that are moving across multiple documents</a></li><li><a href="textFieldSelection.html#unclosed-formatting-elements"><span class="secno">8.2.8.6 </span>Unclosed formatting elements</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#serializing-html-fragments"><span class="secno">8.3 </span>Serializing HTML fragments</a></li><li><a href="textFieldSelection.html#parsing-html-fragments"><span class="secno">8.4 </span>Parsing HTML fragments</a></li><li><a href="textFieldSelection.html#named-character-references"><span class="secno">8.5 </span>Named character references</a></li></ol></li><li><a href="textFieldSelection.html#the-xhtml-syntax"><span class="secno">9 </span>The XHTML syntax</a>
389: <ol><li><a href="textFieldSelection.html#writing-xhtml-documents"><span class="secno">9.1 </span>Writing XHTML documents</a></li><li><a href="textFieldSelection.html#parsing-xhtml-documents"><span class="secno">9.2 </span>Parsing XHTML documents</a></li><li><a href="textFieldSelection.html#serializing-xhtml-fragments"><span class="secno">9.3 </span>Serializing XHTML fragments</a></li><li><a href="textFieldSelection.html#parsing-xhtml-fragments"><span class="secno">9.4 </span>Parsing XHTML fragments</a></li></ol></li><li><a href="textFieldSelection.html#rendering"><span class="secno">10 </span>Rendering</a>
390: <ol><li><a href="textFieldSelection.html#introduction-8"><span class="secno">10.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#the-css-user-agent-style-sheet-and-presentational-hints"><span class="secno">10.2 </span>The CSS user agent style sheet and presentational hints</a></li><li><a href="textFieldSelection.html#non-replaced-elements"><span class="secno">10.3 </span>Non-replaced elements</a>
391: <ol><li><a href="textFieldSelection.html#hidden-elements"><span class="secno">10.3.1 </span>Hidden elements</a></li><li><a href="textFieldSelection.html#the-page"><span class="secno">10.3.2 </span>The page</a></li><li><a href="textFieldSelection.html#flow-content-0"><span class="secno">10.3.3 </span>Flow content</a></li><li><a href="textFieldSelection.html#phrasing-content-0"><span class="secno">10.3.4 </span>Phrasing content</a></li><li><a href="textFieldSelection.html#bidirectional-text"><span class="secno">10.3.5 </span>Bidirectional text</a></li><li><a href="textFieldSelection.html#quotes"><span class="secno">10.3.6 </span>Quotes</a></li><li><a href="textFieldSelection.html#sections-and-headings"><span class="secno">10.3.7 </span>Sections and headings</a></li><li><a href="textFieldSelection.html#lists"><span class="secno">10.3.8 </span>Lists</a></li><li><a href="textFieldSelection.html#tables"><span class="secno">10.3.9 </span>Tables</a></li><li><a href="textFieldSelection.html#form-controls"><span class="secno">10.3.10 </span>Form controls</a></li><li><a href="textFieldSelection.html#the-hr-element-0"><span class="secno">10.3.11 </span>The <code>hr</code> element</a></li><li><a href="textFieldSelection.html#the-fieldset-element-0"><span class="secno">10.3.12 </span>The <code>fieldset</code> element</a></li></ol></li><li><a href="textFieldSelection.html#replaced-elements"><span class="secno">10.4 </span>Replaced elements</a>
392: <ol><li><a href="textFieldSelection.html#embedded-content-1"><span class="secno">10.4.1 </span>Embedded content</a></li><li><a href="textFieldSelection.html#images"><span class="secno">10.4.2 </span>Images</a></li><li><a href="textFieldSelection.html#attributes-for-embedded-content-and-images"><span class="secno">10.4.3 </span>Attributes for embedded content and images</a></li><li><a href="textFieldSelection.html#image-maps-0"><span class="secno">10.4.4 </span>Image maps</a></li><li><a href="textFieldSelection.html#toolbars-0"><span class="secno">10.4.5 </span>Toolbars</a></li></ol></li><li><a href="textFieldSelection.html#bindings"><span class="secno">10.5 </span>Bindings</a>
393: <ol><li><a href="textFieldSelection.html#introduction-9"><span class="secno">10.5.1 </span>Introduction</a></li><li><a href="textFieldSelection.html#the-button-element-0"><span class="secno">10.5.2 </span>The <code>button</code> element</a></li><li><a href="textFieldSelection.html#the-details-element-0"><span class="secno">10.5.3 </span>The <code>details</code> element</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-text-entry-widget"><span class="secno">10.5.4 </span>The <code>input</code> element as a text entry widget</a></li><li><a href="textFieldSelection.html#the-input-element-as-domain-specific-widgets"><span class="secno">10.5.5 </span>The <code>input</code> element as domain-specific widgets</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-range-control"><span class="secno">10.5.6 </span>The <code>input</code> element as a range control</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-color-well"><span class="secno">10.5.7 </span>The <code>input</code> element as a color well</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-checkbox-and-radio-button-widgets"><span class="secno">10.5.8 </span>The <code>input</code> element as a checkbox and radio button widgets</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-file-upload-control"><span class="secno">10.5.9 </span>The <code>input</code> element as a file upload control</a></li><li><a href="textFieldSelection.html#the-input-element-as-a-button"><span class="secno">10.5.10 </span>The <code>input</code> element as a button</a></li><li><a href="textFieldSelection.html#the-marquee-element"><span class="secno">10.5.11 </span>The <code>marquee</code> element</a></li><li><a href="textFieldSelection.html#the-meter-element-0"><span class="secno">10.5.12 </span>The <code>meter</code> element</a></li><li><a href="textFieldSelection.html#the-progress-element-0"><span class="secno">10.5.13 </span>The <code>progress</code> element</a></li><li><a href="textFieldSelection.html#the-select-element-0"><span class="secno">10.5.14 </span>The <code>select</code> element</a></li><li><a href="textFieldSelection.html#the-textarea-element-0"><span class="secno">10.5.15 </span>The <code>textarea</code> element</a></li><li><a href="textFieldSelection.html#the-keygen-element-0"><span class="secno">10.5.16 </span>The <code>keygen</code> element</a></li></ol></li><li><a href="textFieldSelection.html#frames-and-framesets"><span class="secno">10.6 </span>Frames and framesets</a></li><li><a href="textFieldSelection.html#interactive-media"><span class="secno">10.7 </span>Interactive media</a>
394: <ol><li><a href="textFieldSelection.html#links,-forms,-and-navigation"><span class="secno">10.7.1 </span>Links, forms, and navigation</a></li><li><a href="textFieldSelection.html#the-title-attribute-0"><span class="secno">10.7.2 </span>The <code title="attr-title">title</code> attribute</a></li><li><a href="textFieldSelection.html#editing-hosts"><span class="secno">10.7.3 </span>Editing hosts</a></li><li><a href="textFieldSelection.html#text-rendered-in-native-user-interfaces"><span class="secno">10.7.4 </span>Text rendered in native user interfaces</a></li></ol></li><li><a href="textFieldSelection.html#print-media"><span class="secno">10.8 </span>Print media</a></li></ol></li><li><a href="textFieldSelection.html#obsolete"><span class="secno">11 </span>Obsolete features</a>
395: <ol><li><a href="textFieldSelection.html#obsolete-but-conforming-features"><span class="secno">11.1 </span>Obsolete but conforming features</a>
396: <ol><li><a href="textFieldSelection.html#warnings-for-obsolete-but-conforming-features"><span class="secno">11.1.1 </span>Warnings for obsolete but conforming features</a></li></ol></li><li><a href="textFieldSelection.html#non-conforming-features"><span class="secno">11.2 </span>Non-conforming features</a></li><li><a href="textFieldSelection.html#requirements-for-implementations"><span class="secno">11.3 </span>Requirements for implementations</a>
397: <ol><li><a href="textFieldSelection.html#the-applet-element"><span class="secno">11.3.1 </span>The <code>applet</code> element</a></li><li><a href="textFieldSelection.html#the-marquee-element-0"><span class="secno">11.3.2 </span>The <code>marquee</code> element</a></li><li><a href="textFieldSelection.html#frames"><span class="secno">11.3.3 </span>Frames</a></li><li><a href="textFieldSelection.html#other-elements,-attributes-and-apis"><span class="secno">11.3.4 </span>Other elements, attributes and APIs</a></li></ol></li></ol></li><li><a href="textFieldSelection.html#iana"><span class="secno">12 </span>IANA considerations</a>
398: <ol><li><a href="textFieldSelection.html#text/html"><span class="secno">12.1 </span><code>text/html</code></a></li><li><a href="textFieldSelection.html#multipart/x-mixed-replace"><span class="secno">12.2 </span><code>multipart/x-mixed-replace</code></a></li><li><a href="textFieldSelection.html#application/xhtml+xml"><span class="secno">12.3 </span><code>application/xhtml+xml</code></a></li><li><a href="textFieldSelection.html#application/x-www-form-urlencoded"><span class="secno">12.4 </span><code>application/x-www-form-urlencoded</code></a></li><li><a href="textFieldSelection.html#text/cache-manifest"><span class="secno">12.5 </span><code>text/cache-manifest</code></a></li><li><a href="textFieldSelection.html#web+-scheme-prefix"><span class="secno">12.6 </span><code>web+</code> scheme prefix</a></li></ol></li><li><a class="no-num" href="textFieldSelection.html#index">Index</a>
1.198 sruby 399: <ol><li><a class="no-num" href="textFieldSelection.html#elements-1">Elements</a></li><li><a class="no-num" href="textFieldSelection.html#element-content-categories">Element content categories</a></li><li><a class="no-num" href="textFieldSelection.html#attributes-1">Attributes</a></li><li><a class="no-num" href="textFieldSelection.html#element-interfaces">Element Interfaces</a></li><li><a class="no-num" href="textFieldSelection.html#all-interfaces">All Interfaces</a></li><li><a class="no-num" href="textFieldSelection.html#events-0">Events</a></li></ol></li><li><a class="no-num" href="textFieldSelection.html#references">References</a></li><li><a class="no-num" href="textFieldSelection.html#acknowledgements">Acknowledgements</a></li></ol></div>
1.1 mike 400:
1.85 mike 401: <h4 id="textFieldSelection"><span class="secno">4.10.20 </span>APIs for the text field selections</h4>
402:
1.159 sruby 403: <!-- v2 idea: DOM Range APIs to expose the textarea/input edited
404: value (ack martijnw) -->
1.85 mike 405:
406: <p>The <code><a href="the-input-element.html#the-input-element">input</a></code> and <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements define
1.1 mike 407: the following members in their DOM interfaces for handling their
1.85 mike 408: selection:</p>
409:
1.190 sruby 410: <pre class="idl extract"> void <span title="dom-textarea/input-select">select</span>();
411: attribute unsigned long <span title="dom-textarea/input-selectionStart">selectionStart</span>;
412: attribute unsigned long <span title="dom-textarea/input-selectionEnd">selectionEnd</span>;
413: attribute DOMString <span title="dom-textarea/input-selectionDirection">selectionDirection</span>;
1.159 sruby 414:
1.190 sruby 415: void <span title="dom-textarea/input-setSelectionRange">setSelectionRange</span>(unsigned long start, unsigned long end, optional DOMString direction = "preserve");</pre>
1.159 sruby 416: <!-- v2: also add textLength? it seems to be widely used -->
417:
1.85 mike 418:
1.120 mike 419:
1.85 mike 420: <p>These methods and attributes expose and control the selection of
421: <code><a href="the-input-element.html#the-input-element">input</a></code> and <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> text fields.</p>
422:
1.190 sruby 423: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-textarea/input-select">select</code>()</dt>
1.1 mike 424:
425: <dd>
426:
427: <p>Selects everything in the text field.</p>
428:
429: </dd>
430:
431: <dt><var title="">element</var> . <code title="dom-textarea/input-selecionStart">selectionStart</code> [ = <var title="">value</var> ]</dt>
432:
433: <dd>
434:
435: <p>Returns the offset to the start of the selection.</p>
436:
437: <p>Can be set, to change the start of the selection.</p>
438:
439: </dd>
440:
441: <dt><var title="">element</var> . <code title="dom-textarea/input-selecionEnd">selectionEnd</code> [ = <var title="">value</var> ]</dt>
442:
443: <dd>
444:
445: <p>Returns the offset to the end of the selection.</p>
446:
447: <p>Can be set, to change the end of the selection.</p>
448:
449: </dd>
450:
451: <dt><var title="">element</var> . <code title="dom-textarea/input-selecionDirection">selectionDirection</code> [ = <var title="">value</var> ]</dt>
452:
453: <dd>
454:
455: <p>Returns the current direction of the selection.</p>
456:
457: <p>Can be set, to change the direction of the selection.</p>
458:
459: <p>The possible values are "<code title="">forward</code>", "<code title="">backward</code>", and "<code title="">none</code>".</p>
460:
461: </dd>
462:
1.190 sruby 463: <dt><var title="">element</var> . <code title="dom-textarea/input-setSelectionRange">setSelectionRange</code>(<var title="">start</var>, <var title="">end</var> [, <var title="">direction</var>] )</dt>
1.1 mike 464:
465: <dd>
466:
467: <p>Changes the selection to cover the given substring in the given direction. If the direction is omitted, it will be reset to be the platform default (none or forward).</p>
468:
469: </dd>
470:
1.120 mike 471:
1.159 sruby 472:
473:
1.1 mike 474: <p>All elements to which this API applies have either a selection or
475: a text entry cursor position at all times (even for elements that
1.190 sruby 476: are not <a href="#being-rendered">being rendered</a>). User agents should follow
1.1 mike 477: platform conventions to determine their initial state.</p>
478:
1.190 sruby 479:
1.85 mike 480:
481: <p>Characters with no visible rendering, such as U+200D ZERO WIDTH
1.1 mike 482: JOINER, still count as characters. Thus, for instance, the selection
483: can include just an invisible character, and the text insertion
1.85 mike 484: cursor can be placed to one side or another of such a character.</p>
485:
486: <div class="example">
1.1 mike 487:
488: <p>To obtain the currently selected text, the following JavaScript
489: suffices:</p>
490:
491: <pre>var selectionText = control.value.substring(control.selectionStart, control.selectionEnd);</pre>
492:
493: <p>...where <var title="">control</var> is the <code><a href="the-input-element.html#the-input-element">input</a></code>
494: or <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element.</p>
495:
1.85 mike 496: </div>
497:
498: <div class="example">
1.1 mike 499:
500: <p>To add some text at the start of a text control, while
501: maintaining the text selection, the three attributes must be
502: preserved:</p>
503:
504: <pre>var oldStart = control.selectionStart;
505: var oldEnd = control.selectionEnd;
506: var oldDirection = control.selectionDirection;
507: var prefix = "http://";
508: control.value = prefix + control.value;
509: control.setSelectionRange(oldStart + prefix.length, oldEnd + prefix.length, oldDirection);</pre>
510:
511: <p>...where <var title="">control</var> is the <code><a href="the-input-element.html#the-input-element">input</a></code>
512: or <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element.</p>
513:
1.85 mike 514: </div>
1.159 sruby 515: <!--TOPIC:HTML-->
1.85 mike 516:
517:
518:
1.190 sruby 519: <h4 id="constraints"><span class="secno">4.10.21 </span>Constraints</h4>
520:
521: <h5 id="definitions"><span class="secno">4.10.21.1 </span>Definitions</h5>
522:
523: <div class="impl">
524:
525: <p>A <a href="forms.html#category-submit" title="category-submit">submittable element</a> is a
526: <dfn id="candidate-for-constraint-validation">candidate for constraint validation</dfn> except when a
527: condition has <dfn id="barred-from-constraint-validation" title="barred from constraint validation">barred
528: the element from constraint validation</dfn>. (For example, an
529: element is <a href="#barred-from-constraint-validation">barred from constraint validation</a> if it is
530: an <code><a href="the-object-element.html#the-object-element">object</a></code> element.)</p>
531:
532: <p>An element can have a <dfn id="custom-validity-error-message">custom validity error message</dfn>
533: defined. Initially, an element must have its <a href="#custom-validity-error-message">custom validity
534: error message</a> set to the empty string. When its value is not
535: the empty string, the element is <a href="#suffering-from-a-custom-error">suffering from a custom
536: error</a>. It can be set using the <code title="dom-cva-setCustomValidity"><a href="#dom-cva-setcustomvalidity">setCustomValidity()</a></code>
537: method. The user agent should use the <a href="#custom-validity-error-message">custom validity error
538: message</a> when alerting the user to the problem with the
539: control.</p>
540:
541: <p>An element can be constrained in various ways. The following is
542: the list of <dfn id="validity-states">validity states</dfn> that a form control can be
543: in, making the control invalid for the purposes of constraint
544: validation. (The definitions below are non-normative; other parts of
545: this specification define more precisely when each state applies or
546: does not.)</p>
547:
548: <dl><dt> <dfn id="suffering-from-being-missing">Suffering from being missing</dfn> </dt>
549:
550: <dd> <p>When a control has no <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> but has a <code title="">required</code> attribute (<code><a href="the-input-element.html#the-input-element">input</a></code> <code title="attr-input-required"><a href="common-input-element-attributes.html#attr-input-required">required</a></code>, <code><a href="the-select-element.html#the-select-element">select</a></code>
551: <code title="attr-select-required"><a href="the-select-element.html#attr-select-required">required</a></code>,
552: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> <code title="attr-textarea-required"><a href="the-textarea-element.html#attr-textarea-required">required</a></code>), or, in the case of
553: an element in a <i><a href="states-of-the-type-attribute.html#radio-button-group">radio button group</a></i>, any of the other
554: elements in the group has a <code title="attr-input-required"><a href="common-input-element-attributes.html#attr-input-required">required</a></code> attribute. </p></dd>
555:
556: <dt> <dfn id="suffering-from-a-type-mismatch">Suffering from a type mismatch</dfn> </dt>
557:
558: <dd> <p>When a control that allows arbitrary user
559: input has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that is not
560: in the correct syntax (<a href="states-of-the-type-attribute.html#e-mail-state-(type=email)" title="attr-input-type-email">E-mail</a>, <a href="states-of-the-type-attribute.html#url-state-(type=url)" title="attr-input-type-url">URL</a>). </p></dd>
561:
562: <dt> <dfn id="suffering-from-a-pattern-mismatch">Suffering from a pattern mismatch</dfn> </dt>
563:
564: <dd> <p>When a control has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that doesn't satisfy the
565: <code title="attr-input-pattern"><a href="common-input-element-attributes.html#attr-input-pattern">pattern</a></code> attribute.</p></dd>
566:
567: <dt> <dfn id="suffering-from-being-too-long">Suffering from being too long</dfn> </dt>
568:
569: <dd> <p>When a control has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that is too long for the
570: <a href="attributes-common-to-form-controls.html#attr-fe-maxlength" title="attr-fe-maxlength">form control <code title="">maxlength</code> attribute</a> (<code><a href="the-input-element.html#the-input-element">input</a></code>
571: <code title="attr-input-maxlength"><a href="common-input-element-attributes.html#attr-input-maxlength">maxlength</a></code>,
572: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> <code title="attr-textarea-maxlength"><a href="the-textarea-element.html#attr-textarea-maxlength">maxlength</a></code>). </p></dd>
573:
574: <dt> <dfn id="suffering-from-an-underflow">Suffering from an underflow</dfn> </dt>
575:
576: <dd> <p>When a control has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that is too low for the <code title="attr-input-min"><a href="common-input-element-attributes.html#attr-input-min">min</a></code> attribute.</p></dd>
577:
578: <dt> <dfn id="suffering-from-an-overflow">Suffering from an overflow</dfn> </dt>
579:
580: <dd> <p>When a control has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that is too high for the
581: <code title="attr-input-max"><a href="common-input-element-attributes.html#attr-input-max">max</a></code> attribute.</p></dd>
582:
583: <dt> <dfn id="suffering-from-a-step-mismatch">Suffering from a step mismatch</dfn> </dt>
584:
585: <dd> <p>When a control has a <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> that doesn't fit the rules
586: given by the <code title="attr-input-step"><a href="common-input-element-attributes.html#attr-input-step">step</a></code>
587: attribute.</p></dd>
588:
589: <dt> <dfn id="suffering-from-a-custom-error">Suffering from a custom error</dfn> </dt>
590:
591: <dd> <p>When a control's <a href="#custom-validity-error-message">custom validity error
592: message</a> (as set by the element's <code title="dom-cva-setCustomValidity"><a href="#dom-cva-setcustomvalidity">setCustomValidity()</a></code>
593: method) is not the empty string.</p> </dd>
594:
595: </dl><p class="note">An element can still suffer from these states even
596: when the element is <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>; thus these states can
597: be represented in the DOM even if validating the form during
598: submission wouldn't indicate a problem to the user.</p>
599:
600: <p>An element <dfn id="concept-fv-valid" title="concept-fv-valid">satisfies its
601: constraints</dfn> if it is not suffering from any of the above
602: <a href="#validity-states">validity states</a>.</p>
603:
604: </div>
605:
606:
607:
608: <div class="impl">
609:
610: <h5 id="constraint-validation"><span class="secno">4.10.21.2 </span>Constraint validation</h5>
611:
612: <p>When the user agent is required to <dfn id="statically-validate-the-constraints">statically validate the
613: constraints</dfn> of <code><a href="the-form-element.html#the-form-element">form</a></code> element <var title="">form</var>, it must run the following steps, which return
614: either a <i>positive</i> result (all the controls in the form are
615: valid) or a <i>negative</i> result (there are invalid controls)
616: along with a (possibly empty) list of elements that are invalid and
617: for which no script has claimed responsibility:</p>
618:
619: <ol><li><p>Let <var title="">controls</var> be a list of all the <a href="forms.html#category-submit" title="category-submit">submittable elements</a> whose
620: <a href="association-of-controls-and-forms.html#form-owner">form owner</a> is <var title="">form</var>, in <a href="infrastructure.html#tree-order">tree
621: order</a>.</p></li>
622:
623: <li><p>Let <var title="">invalid controls</var> be an initially
624: empty list of elements.</p></li>
625:
626: <li>
627:
628: <p>For each element <var title="">field</var> in <var title="">controls</var>, in <a href="infrastructure.html#tree-order">tree order</a>, run the
629: following substeps:</p>
630:
631: <ol><li><p>If <var title="">field</var> is not a <a href="#candidate-for-constraint-validation">candidate for
632: constraint validation</a>, then move on to the next
633: element.</p></li>
634:
635: <li><p>Otherwise, if <var title="">field</var> <a href="#concept-fv-valid" title="concept-fv-valid">satisfies its constraints</a>, then
636: move on to the next element.</p></li>
637:
638: <li><p>Otherwise, add <var title="">field</var> to <var title="">invalid controls</var>.</p></li>
639:
640: </ol></li>
641:
642: <li><p>If <var title="">invalid controls</var> is empty, then
643: return a <i>positive</i> result and abort these steps.</p></li>
644:
645: <li><p>Let <var title="">unhandled invalid controls</var> be an
646: initially empty list of elements.</p></li>
647:
648: <li>
649:
650: <p>For each element <var title="">field</var> in <var title="">invalid controls</var>, if any, in <a href="infrastructure.html#tree-order">tree
651: order</a>, run the following substeps:</p>
652:
653: <ol><li><p><a href="#fire-a-simple-event">Fire a simple event</a> named <code title="event-invalid">invalid</code> that is cancelable at <var title="">field</var>.</p></li>
654:
655: <li><p>If the event was not canceled, then add <var title="">field</var> to <var title="">unhandled invalid
656: controls</var>.</p></li>
657:
658: </ol></li>
659:
660: <li><p>Return a <i>negative</i> result with the list of elements in
661: the <var title="">unhandled invalid controls</var> list.</p></li>
662:
663: </ol><p>If a user agent is to <dfn id="interactively-validate-the-constraints">interactively validate the
664: constraints</dfn> of <code><a href="the-form-element.html#the-form-element">form</a></code> element <var title="">form</var>, then the user agent must run the following
665: steps:</p>
666:
667: <ol><li><p><a href="#statically-validate-the-constraints">Statically validate the constraints</a> of <var title="">form</var>, and let <var title="">unhandled invalid
668: controls</var> be the list of elements returned if the result was
669: <i>negative</i>.</p></li>
670:
671: <li><p>If the result was <i>positive</i>, then return that result
672: and abort these steps.</p></li>
673:
674: <li><p>Report the problems with the constraints of at least one of
675: the elements given in <var title="">unhandled invalid
676: controls</var> to the user. User agents may focus one of those
677: elements in the process, by running the <a href="#focusing-steps">focusing steps</a>
678: for that element, and may change the scrolling position of the
679: document, or perform some other action that brings the element to
680: the user's attention. User agents may report more than one
681: constraint violation. User agents may coalesce related constraint
682: violation reports if appropriate (e.g. if multiple radio buttons in
683: a <a href="states-of-the-type-attribute.html#radio-button-group" title="radio button group">group</a> are marked as
684: required, only one error need be reported). If one of the controls
685: is not <a href="#being-rendered">being rendered</a> (e.g. it has the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute set) then user agents
686: may report a script error.</p></li>
687:
688: <li><p>Return a <i>negative</i> result.</p></li>
689:
690: </ol></div>
691:
692:
693:
694: <!--TOPIC:DOM APIs-->
695: <h5 id="the-constraint-validation-api"><span class="secno">4.10.21.3 </span>The <dfn>constraint validation API</dfn></h5>
696:
697: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-cva-willValidate"><a href="#dom-cva-willvalidate">willValidate</a></code></dt>
698:
699: <dd>
700:
701: <p>Returns true if the element will be validated when the form is submitted; false otherwise.</p>
702:
703: </dd>
704:
705: <dt><var title="">element</var> . <code title="dom-cva-setCustomValidity"><a href="#dom-cva-setcustomvalidity">setCustomValidity</a></code>(<var title="">message</var>)</dt>
706:
707: <dd>
708:
709: <p>Sets a custom error, so that the element would fail to
710: validate. The given message is the message to be shown to the user
711: when reporting the problem to the user.</p>
712:
713: <p>If the argument is the empty string, clears the custom error.</p>
714:
715: </dd>
716:
717: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-valueMissing"><a href="#dom-validitystate-valuemissing">valueMissing</a></code></dt>
718:
719: <dd>
720:
721: <p>Returns true if the element has no value but is a required field; false otherwise.</p>
722:
723: </dd>
724:
725: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-typeMismatch"><a href="#dom-validitystate-typemismatch">typeMismatch</a></code></dt>
726:
727: <dd>
728:
729: <p>Returns true if the element's value is not in the correct syntax; false otherwise.</p>
730:
731: </dd>
732:
733: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-patternMismatch"><a href="#dom-validitystate-patternmismatch">patternMismatch</a></code></dt>
734:
735: <dd>
736:
737: <p>Returns true if the element's value doesn't match the provided pattern; false otherwise.</p>
738:
739: </dd>
740:
741: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-tooLong"><a href="#dom-validitystate-toolong">tooLong</a></code></dt>
742:
743: <dd>
744:
745: <p>Returns true if the element's value is longer than the provided maximum length; false otherwise.</p>
746:
747: </dd>
748:
749: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-rangeUnderflow"><a href="#dom-validitystate-rangeunderflow">rangeUnderflow</a></code></dt>
750:
751: <dd>
752:
753: <p>Returns true if the element's value is lower than the provided minimum; false otherwise.</p>
754:
755: </dd>
756:
757: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-rangeOverflow"><a href="#dom-validitystate-rangeoverflow">rangeOverflow</a></code></dt>
758:
759: <dd>
760:
761: <p>Returns true if the element's value is higher than the provided maximum; false otherwise.</p>
762:
763: </dd>
764:
765: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-stepMismatch"><a href="#dom-validitystate-stepmismatch">stepMismatch</a></code></dt>
766:
767: <dd>
768:
769: <p>Returns true if the element's value doesn't fit the rules given by the <code title="attr-input-step"><a href="common-input-element-attributes.html#attr-input-step">step</a></code> attribute; false otherwise.</p>
770:
771: </dd>
772:
773: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-customError"><a href="#dom-validitystate-customerror">customError</a></code></dt>
774:
775: <dd>
776:
777: <p>Returns true if the element has a custom error; false otherwise.</p>
778:
779: </dd>
780:
781: <dt><var title="">element</var> . <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> . <code title="dom-validitystate-valid"><a href="#dom-validitystate-valid">valid</a></code></dt>
782:
783: <dd>
784:
785: <p>Returns true if the element's value has no validity problems; false otherwise.</p>
786:
787: </dd>
788:
789: <dt><var title="">valid</var> = <var title="">element</var> . <code title="dom-cva-checkValidity"><a href="#dom-cva-checkvalidity">checkValidity</a></code>()</dt>
790:
791: <dd>
792:
793: <p>Returns true if the element's value has no validity problems;
794: false otherwise. Fires an <code title="event-invalid">invalid</code> event at the element in the
795: latter case.</p>
796:
797: </dd>
798:
799: <dt><var title="">element</var> . <code title="dom-cva-validationMessage"><a href="#dom-cva-validationmessage">validationMessage</a></code></dt>
800:
801: <dd>
802:
803: <p>Returns the error message that would be shown to the user if
804: the element was to be checked for validity.</p>
805:
806: </dd>
807:
808: </dl><div class="impl">
809:
810: <p>The <dfn id="dom-cva-willvalidate" title="dom-cva-willValidate"><code>willValidate</code></dfn>
811: attribute must return true if an element is a <a href="#candidate-for-constraint-validation">candidate for
812: constraint validation</a>, and false otherwise (i.e. false if any
813: conditions are <a href="#barred-from-constraint-validation" title="barred from constraint
814: validation">barring it from constraint validation</a>).</p>
815:
816: <p>The <dfn id="dom-cva-setcustomvalidity" title="dom-cva-setCustomValidity"><code>setCustomValidity(<var title="">message</var>)</code></dfn>, when invoked, must set the
817: <a href="#custom-validity-error-message">custom validity error message</a> to the value of the given
818: <var title="">message</var> argument.</p>
819:
820: </div>
821:
822: <div class="example">
823:
824: <p>In the following example, a script checks the value of a form
825: control each time it is edited, and whenever it is not a valid
826: value, uses the <code title="dom-cva-setCustomValidity"><a href="#dom-cva-setcustomvalidity">setCustomValidity()</a></code> method
827: to set an appropriate message.</p>
828:
829: <pre><label>Feeling: <input name=f type="text" oninput="check(this)"></label>
830: <script>
831: function check(input) {
832: if (input.value == "good" ||
833: input.value == "fine" ||
834: input.value == "tired") {
835: input.setCustomValidity('"' + input.value + '" is not a feeling.');
836: <!-- } else if (input.value == "...") {
837: input.setCustomValidity('...');
838: --> } else {
839: // input is fine -- reset the error message
840: input.setCustomValidity('');
841: }
842: }
843: </script></pre>
844:
845: </div>
846:
847: <div class="impl">
848:
849: <p>The <dfn id="dom-cva-validity" title="dom-cva-validity"><code>validity</code></dfn>
850: attribute must return a <code><a href="#validitystate">ValidityState</a></code> object that
851: represents the <a href="#validity-states">validity states</a> of the element. This
852: object is <a href="infrastructure.html#live">live</a>, and the same object must be returned
853: each time the element's <code title="dom-cva-validity"><a href="#dom-cva-validity">validity</a></code> attribute is retrieved.</p>
854:
855: <pre class="idl">interface <dfn id="validitystate">ValidityState</dfn> {
856: readonly attribute boolean <a href="#dom-validitystate-valuemissing" title="dom-ValidityState-valueMissing">valueMissing</a>;
857: readonly attribute boolean <a href="#dom-validitystate-typemismatch" title="dom-ValidityState-typeMismatch">typeMismatch</a>;
858: readonly attribute boolean <a href="#dom-validitystate-patternmismatch" title="dom-ValidityState-patternMismatch">patternMismatch</a>;
859: readonly attribute boolean <a href="#dom-validitystate-toolong" title="dom-ValidityState-tooLong">tooLong</a>;
860: readonly attribute boolean <a href="#dom-validitystate-rangeunderflow" title="dom-ValidityState-rangeUnderflow">rangeUnderflow</a>;
861: readonly attribute boolean <a href="#dom-validitystate-rangeoverflow" title="dom-ValidityState-rangeOverflow">rangeOverflow</a>;
862: readonly attribute boolean <a href="#dom-validitystate-stepmismatch" title="dom-ValidityState-stepMismatch">stepMismatch</a>;
863: readonly attribute boolean <a href="#dom-validitystate-customerror" title="dom-ValidityState-customError">customError</a>;
864: readonly attribute boolean <a href="#dom-validitystate-valid" title="dom-ValidityState-valid">valid</a>;
865: };</pre>
866:
867: <p>A <code><a href="#validitystate">ValidityState</a></code> object has the following
868: attributes. On getting, they must return true if the corresponding
869: condition given in the following list is true, and false
870: otherwise.</p>
871:
872: <dl><dt><dfn id="dom-validitystate-valuemissing" title="dom-ValidityState-valueMissing"><code>valueMissing</code></dfn></dt>
873: <dd> <p>The control is <a href="#suffering-from-being-missing">suffering from being missing</a>.</p> </dd>
874:
875: <dt><dfn id="dom-validitystate-typemismatch" title="dom-ValidityState-typeMismatch"><code>typeMismatch</code></dfn></dt>
876: <dd> <p>The control is <a href="#suffering-from-a-type-mismatch">suffering from a type mismatch</a>.</p> </dd>
877:
878: <dt><dfn id="dom-validitystate-patternmismatch" title="dom-ValidityState-patternMismatch"><code>patternMismatch</code></dfn></dt>
879: <dd> <p>The control is <a href="#suffering-from-a-pattern-mismatch">suffering from a pattern mismatch</a>.</p> </dd>
880:
881: <dt><dfn id="dom-validitystate-toolong" title="dom-ValidityState-tooLong"><code>tooLong</code></dfn></dt>
882: <dd> <p>The control is <a href="#suffering-from-being-too-long">suffering from being too long</a>.</p> </dd>
883:
884: <dt><dfn id="dom-validitystate-rangeunderflow" title="dom-ValidityState-rangeUnderflow"><code>rangeUnderflow</code></dfn></dt>
885: <dd> <p>The control is <a href="#suffering-from-an-underflow">suffering from an underflow</a>.</p> </dd>
886:
887: <dt><dfn id="dom-validitystate-rangeoverflow" title="dom-ValidityState-rangeOverflow"><code>rangeOverflow</code></dfn></dt>
888: <dd> <p>The control is <a href="#suffering-from-an-overflow">suffering from an overflow</a>.</p> </dd>
889:
890: <dt><dfn id="dom-validitystate-stepmismatch" title="dom-ValidityState-stepMismatch"><code>stepMismatch</code></dfn></dt>
891: <dd> <p>The control is <a href="#suffering-from-a-step-mismatch">suffering from a step mismatch</a>.</p> </dd>
892:
893: <dt><dfn id="dom-validitystate-customerror" title="dom-ValidityState-customError"><code>customError</code></dfn></dt>
894: <dd> <p>The control is <a href="#suffering-from-a-custom-error">suffering from a custom error</a>.</p> </dd>
895:
896: <dt><dfn id="dom-validitystate-valid" title="dom-ValidityState-valid"><code>valid</code></dfn></dt>
897: <dd> <p>None of the other conditions are true.</p> </dd>
898:
899: </dl><p>When the <dfn id="dom-cva-checkvalidity" title="dom-cva-checkValidity"><code>checkValidity()</code></dfn>
900: method is invoked, if the element is a <a href="#candidate-for-constraint-validation">candidate for
901: constraint validation</a> and does not <a href="#concept-fv-valid" title="concept-fv-valid">satisfy its constraints</a>, the user
902: agent must <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-invalid">invalid</code> that is cancelable (but in this
903: case has no default action) at the element and return
904: false. Otherwise, it must only return true without doing anything
905: else.</p>
906:
907: <p>The <dfn id="dom-cva-validationmessage" title="dom-cva-validationMessage"><code>validationMessage</code></dfn>
908: attribute must return the empty string if the element is not a
909: <a href="#candidate-for-constraint-validation">candidate for constraint validation</a> or if it is one but
910: it <a href="#concept-fv-valid" title="concept-fv-valid">satisfies its constraints</a>;
911: otherwise, it must return a suitably localized message that the user
912: agent would show the user if this were the only form control with a
913: validity constraint problem. If the user agent would not actually
914: show a textual message in such a situation (e.g. it would show a
915: graphical cue instead), then the attribute must return a suitably
916: localized message that expresses (one or more of) the validity
917: constraint(s) that the control does not satisfy. If the element is a
918: <a href="#candidate-for-constraint-validation">candidate for constraint validation</a> and is
919: <a href="#suffering-from-a-custom-error">suffering from a custom error</a>, then the <a href="#custom-validity-error-message">custom
920: validity error message</a> should be present in the return
921: value.</p>
922:
923: </div>
924: <!--TOPIC:HTML-->
925:
926:
927: <!--ADD-TOPIC:Security-->
928: <h5 id="security-forms"><span class="secno">4.10.21.4 </span>Security</h5>
929:
930: <p id="security-0">Servers should not rely on client-side
931: validation. Client-side validation can be intentionally bypassed by
932: hostile users, and unintentionally bypassed by users of older user
933: agents or automated tools that do not implement these features. The
934: constraint validation features are only intended to improve the user
935: experience, not to provide any kind of security mechanism.</p>
936: <!--REMOVE-TOPIC:Security-->
937:
938:
939:
940:
941: <h4 id="form-submission-0"><span class="secno">4.10.22 </span><dfn>Form submission</dfn></h4>
942:
943: <div class="impl">
944:
945: <h5 id="introduction-2"><span class="secno">4.10.22.1 </span>Introduction</h5>
946:
947: </div>
948:
949: <p><i>This section is non-normative.</i></p>
950: <p>When a form is submitted, the data in the form is converted into
951: the structure specified by the <a href="form-submission.html#concept-fs-enctype" title="concept-fs-enctype">enctype</a>, and then sent to the
952: destination specified by the <a href="form-submission.html#concept-fs-action" title="concept-fs-action">action</a> using the given <a href="form-submission.html#concept-fs-method" title="concept-fs-method">method</a>.</p>
953:
954: <p>For example, take the following form:</p>
955:
956: <pre><form action="/find.cgi" method=get>
957: <input type=text name=t>
958: <input type=search name=q>
959: <input type=submit>
960: </form></pre>
961:
962: <p>If the user types in "cats" in the first field and "fur" in the
963: second, and then hits the submit button, then the user agent will
964: load <code title="">/find.cgi?t=cats&q=fur</code>.</p>
965:
966: <p>On the other hand, consider this form:</p>
967:
968: <pre><form action="/find.cgi" method=post enctype="multipart/form-data">
969: <input type=text name=t>
970: <input type=search name=q>
971: <input type=submit>
972: </form></pre>
973:
974: <p>Given the same user input, the result on submission is quite
975: different: the user agent instead does an HTTP POST to the given
976: URL, with as the entity body something like the following text:</p>
977:
978: <pre>------kYFrd4jNJEgCervE
979: Content-Disposition: form-data; name="t"
980:
981: cats
982: ------kYFrd4jNJEgCervE
983: Content-Disposition: form-data; name="q"
984:
985: fur
986: ------kYFrd4jNJEgCervE--</pre>
987:
988:
989:
990: <div class="impl">
991:
992: <h5 id="implicit-submission"><span class="secno">4.10.22.2 </span>Implicit submission</h5>
993:
994: <p>A <code><a href="the-form-element.html#the-form-element">form</a></code> element's <dfn id="default-button">default button</dfn> is the
995: first <a href="forms.html#concept-submit-button" title="concept-submit-button">submit button</a> in
996: <a href="infrastructure.html#tree-order">tree order</a> whose <a href="association-of-controls-and-forms.html#form-owner">form owner</a> is that
997: <code><a href="the-form-element.html#the-form-element">form</a></code> element.</p>
998:
999: <p>If the user agent supports letting the user submit a form
1000: implicitly (for example, on some platforms hitting the "enter" key
1001: while a text field is focused implicitly submits the form), then
1002: doing so for a form whose <a href="#default-button">default button</a> has a defined
1003: <a href="content-models.html#activation-behavior">activation behavior</a> must cause the user agent to
1004: <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation steps</a> on that
1005: <a href="#default-button">default button</a>.</p>
1006:
1007: <p class="note">Consequently, if the <a href="#default-button">default button</a> is
1008: <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>, the form is not
1009: submitted when such an implicit submission mechanism is used. (A
1010: button has no <a href="content-models.html#activation-behavior">activation behavior</a> when disabled.)</p>
1011:
1012: <p class="note">There are pages on the Web that are only usable if
1013: there is a way to implicitly submit forms, so user agents are
1014: strongly encouraged to support this.</p>
1015:
1016: <p><!-- For Web compatibility reasons caused by obscure historical
1017: accidents, -->If the form has no <a href="forms.html#concept-submit-button" title="concept-submit-button">submit button</a>, then the
1018: implicit submission mechanism must do nothing if the form has more
1019: than one <i>field that blocks implicit submission</i>, and must
1020: <a href="#concept-form-submit" title="concept-form-submit">submit</a> the
1021: <code><a href="the-form-element.html#the-form-element">form</a></code> element from the <code><a href="the-form-element.html#the-form-element">form</a></code> element itself
1022: otherwise.</p>
1023:
1024: <p>For the purpose of the previous paragraph, an element is a
1025: <i>field that blocks implicit submission</i> of a <code><a href="the-form-element.html#the-form-element">form</a></code>
1026: element if it is an <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <a href="association-of-controls-and-forms.html#form-owner">form
1027: owner</a> is that <code><a href="the-form-element.html#the-form-element">form</a></code> element and whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in one of the
1028: following states:
1029: <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a>,
1030: <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-search">Search</a>,
1031: <a href="states-of-the-type-attribute.html#url-state-(type=url)" title="attr-input-type-url">URL</a>,
1032: <a href="states-of-the-type-attribute.html#telephone-state-(type=tel)" title="attr-input-type-tel">Telephone</a>,
1033: <a href="states-of-the-type-attribute.html#e-mail-state-(type=email)" title="attr-input-type-email">E-mail</a>,
1034: <a href="states-of-the-type-attribute.html#password-state-(type=password)" title="attr-input-type-password">Password</a>,
1035: <a href="states-of-the-type-attribute.html#date-and-time-state-(type=datetime)" title="attr-input-type-datetime">Date and Time</a>,
1036: <a href="states-of-the-type-attribute.html#date-state-(type=date)" title="attr-input-type-date">Date</a>,
1037: <a href="states-of-the-type-attribute.html#month-state-(type=month)" title="attr-input-type-month">Month</a>,
1038: <a href="states-of-the-type-attribute.html#week-state-(type=week)" title="attr-input-type-week">Week</a>,
1039: <a href="states-of-the-type-attribute.html#time-state-(type=time)" title="attr-input-type-time">Time</a>,
1040: <a href="states-of-the-type-attribute.html#local-date-and-time-state-(type=datetime-local)" title="attr-input-type-datetime-local">Local Date and Time</a>,
1041: <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a>
1042: </p>
1043:
1044: </div>
1045:
1046:
1047: <div class="impl">
1048:
1049: <h5 id="form-submission-algorithm"><span class="secno">4.10.22.3 </span>Form submission algorithm</h5>
1050:
1051: <p>When a <code><a href="the-form-element.html#the-form-element">form</a></code> element <var title="">form</var> is <dfn id="concept-form-submit" title="concept-form-submit">submitted</dfn> from an element <var title="">submitter</var> (typically a button), optionally with a
1052: <var title="">submitted from <code title="dom-form-submit"><a href="the-form-element.html#dom-form-submit">submit()</a></code> method</var> flag set, the
1053: user agent must run the following steps:</p>
1054:
1055: <ol><li><p>Let <var title="">form document</var> be the <var title="">form</var>'s <code><a href="dom.html#document">Document</a></code>.</p></li>
1056:
1057: <li id="sandboxSubmitBlocked"><p>If <var title="">form
1058: document</var> has no associated <a href="#browsing-context">browsing context</a> or
1059: its <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has its
1060: <a href="#sandboxed-forms-browsing-context-flag">sandboxed forms browsing context flag</a> set, then abort
1061: these steps without doing anything.</p></li>
1062:
1063: <li><p>Let <var title="">form browsing context</var> be the
1064: <a href="#browsing-context">browsing context</a> of <var title="">form
1065: document</var>.</p></li>
1066:
1067: <li><p>If <var title="">form</var> is already being submitted
1068: (i.e. the form was <a href="#concept-form-submit" title="concept-form-submit">submitted</a> again while processing
1069: the events fired from the next two steps, probably from a script
1070: redundantly calling the <code title="dom-form-submit"><a href="the-form-element.html#dom-form-submit">submit()</a></code> method on <var title="">form</var>), then abort these steps. This doesn't affect
1071: the earlier instance of this algorithm.</p></li>
1072:
1073: <!-- lock (implicit in previous step) -->
1074:
1075: <li><p>If the <var title="">submitted from <code title="dom-form-submit"><a href="the-form-element.html#dom-form-submit">submit()</a></code> method</var> flag is not
1076: set, and the <var title="">submitter</var> element's <a href="form-submission.html#concept-fs-novalidate" title="concept-fs-novalidate">no-validate state</a> is false,
1077: then <a href="#interactively-validate-the-constraints">interactively validate the constraints</a> of <var title="">form</var> and examine the result: if the result is
1078: negative (the constraint validation concluded that there were
1079: invalid fields and probably informed the user of this) then abort
1080: these steps.</p></li>
1081:
1082: <li><p>If the <var title="">submitted from <code title="dom-form-submit"><a href="the-form-element.html#dom-form-submit">submit()</a></code> method</var> flag is not
1083: set, then <a href="#fire-a-simple-event">fire a simple event</a> that is cancelable named
1084: <code title="event-submit">submit</code>, at <var title="">form</var>. If the event's default action is prevented
1085: (i.e. if the event is canceled) then abort these steps. Otherwise,
1086: continue (effectively the default action is to perform the
1087: submission).</p></li>
1088:
1089: <!-- if you add any steps between the "lock" and "unlock" lines,
1090: make sure to update the step immediately before the "lock" line -->
1091:
1092: <!-- unlock -->
1093:
1094: <li><p>Let <var title="">form data set</var> be the result of
1095: <a href="#constructing-the-form-data-set">constructing the form data set</a> for <var title="">form</var> in the context of <var title="">submitter</var>.</p></li>
1096:
1097: <li><p>Let <var title="">action</var> be the <var title="">submitter</var> element's <a href="form-submission.html#concept-fs-action" title="concept-fs-action">action</a>.</p></li>
1098:
1099: <li>
1100:
1101: <p>If <var title="">action</var> is the empty string, let <var title="">action</var> be <a href="dom.html#the-document's-address">the document's address</a> of
1102: the <var title="">form document</var>.</p>
1103:
1104: <p class="note">This step is a <a href="introduction.html#willful-violation">willful violation</a> of
1105: RFC 3986, which would require base URL processing here. This
1106: violation is motivated by a desire for compatibility with legacy
1107: content. <a href="#refsRFC3986">[RFC3986]</a></p>
1108:
1109: <!-- Don't ask me why. But that's what IE does. It even treats
1110: action="" differently from action=" " or action="#" (the latter
1111: two resolve to the base URL, the first one resolves to the doc
1112: URL). And other browsers concur. It is even required, see e.g.
1113: http://bugs.webkit.org/show_bug.cgi?id=7763
1114: https://bugzilla.mozilla.org/show_bug.cgi?id=297761
1115: -->
1116:
1117: </li>
1118:
1119: <li><p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the
1120: <a href="urls.html#url">URL</a> <var title="">action</var>, relative to the <var title="">submitter</var> element. If this fails, abort these
1121: steps. Otherwise, let <var title="">action</var> be the resulting
1122: <a href="urls.html#absolute-url">absolute URL</a>.</p></li>
1123:
1124: <li><p>Let <var title="">scheme</var> be the <a href="urls.html#url-scheme" title="url-scheme"><scheme></a> of the resulting
1125: <a href="urls.html#absolute-url">absolute URL</a>.</p></li>
1126:
1127: <li><p>Let <var title="">enctype</var> be the <var title="">submitter</var> element's <a href="form-submission.html#concept-fs-enctype" title="concept-fs-enctype">enctype</a>.</p></li>
1128:
1129: <li><p>Let <var title="">method</var> be the <var title="">submitter</var> element's <a href="form-submission.html#concept-fs-method" title="concept-fs-method">method</a>.</p></li>
1130:
1131: <li><p>Let <var title="">target</var> be the <var title="">submitter</var> element's <a href="form-submission.html#concept-fs-target" title="concept-fs-target">target</a>.</p></li>
1132:
1133: <li><p>If the user indicated a specific <a href="#browsing-context">browsing
1134: context</a> to use when submitting the form, then let <var title="">target browsing context</var> be that <a href="#browsing-context">browsing
1135: context</a>. Otherwise, apply <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a
1136: browsing context given a browsing context name</a> using <var title="">target</var> as the name and <var title="">form browsing
1137: context</var> as the context in which the algorithm is executed,
1138: and let <var title="">target browsing context</var> be the
1139: resulting <a href="#browsing-context">browsing context</a>.</p></li>
1140:
1141: <li><p>If <var title="">target browsing context</var> was created
1142: in the previous step, or if the <var title="">form document</var>
1143: has not yet <a href="#completely-loaded">completely loaded</a>, then let <var title="">replace</var> be true. Otherwise, let it be
1144: false.</p></li>
1145:
1146: <li>
1147:
1148: <!--FORM-DIALOG-->
1149:
1150: <p>Otherwise, select the appropriate row in the table below based
1151: on the value of <var title="">scheme</var> as given by the first
1152: cell of each row. Then, select the appropriate cell on that row
1153: based on the value of <var title="">method</var> as given in the
1154: first cell of each column. Then, jump to the steps named in that
1155: cell and defined below the table.</p>
1156:
1157: <table><thead><tr><td>
1158: </td><th> <a href="form-submission.html#attr-fs-method-get" title="attr-fs-method-GET">GET</a>
1159: </th><th> <a href="form-submission.html#attr-fs-method-post" title="attr-fs-method-POST">POST</a>
1160: </th></tr></thead><tbody><tr><th> <code title="">http</code>
1161: </th><td> <a href="#submit-mutate-action" title="submit-mutate-action">Mutate action URL</a>
1162: </td><td> <a href="#submit-body" title="submit-body">Submit as entity body</a>
1163: </td></tr><tr><th> <code title="">https</code>
1164: </th><td> <a href="#submit-mutate-action" title="submit-mutate-action">Mutate action URL</a>
1165: </td><td> <a href="#submit-body" title="submit-body">Submit as entity body</a>
1166: </td></tr><tr><th> <code title="">ftp</code>
1167: </th><td> <a href="#submit-get-action" title="submit-get-action">Get action URL</a>
1168: </td><td> <a href="#submit-get-action" title="submit-get-action">Get action URL</a>
1169: </td></tr><tr><th> <code title="">javascript</code>
1170: </th><td> <a href="#submit-get-action" title="submit-get-action">Get action URL</a>
1171: </td><td> <a href="#submit-get-action" title="submit-get-action">Get action URL</a>
1172: </td></tr><tr><th> <code title="">data</code>
1173: </th><td> <a href="#submit-get-action" title="submit-get-action">Get action URL</a>
1174: </td><td> <a href="#submit-data-post" title="submit-data-post">Post to data:</a>
1175: </td></tr><tr><th> <code title="">mailto</code>
1176: </th><td> <a href="#submit-mailto-headers" title="submit-mailto-headers">Mail with headers</a>
1177: </td><td> <a href="#submit-mailto-body" title="submit-mailto-body">Mail as body</a>
1178: </td></tr></tbody></table><p>If <var title="">scheme</var> is not one of those listed in
1179: this table, then the behavior is not defined by this
1180: specification. User agents should, in the absence of another
1181: specification defining this, act in a manner analogous to that
1182: defined in this specification for similar schemes.</p>
1183:
1184: <p>The behaviors are as follows:</p>
1185:
1186: <dl><dt><dfn id="submit-mutate-action" title="submit-mutate-action">Mutate action URL</dfn>
1187: </dt><dd>
1188:
1189: <p>Let <var title="">query</var> be the result of encoding the
1190: <var title="">form data set</var> using the <a href="#application/x-www-form-urlencoded-encoding-algorithm"><code title="">application/x-www-form-urlencoded</code> encoding
1191: algorithm</a>, interpreted as a US-ASCII string.</p>
1192:
1193: <!-- by this point we've already tried to resolve the URL, so we
1194: know we can parse it -->
1195:
1196: <p>Let <var title="">destination</var> be a new <a href="urls.html#url">URL</a>
1197: that is equal to the <var title="">action</var> except that its
1198: <a href="urls.html#url-query" title="url-query"><query></a> component is
1199: replaced by <var title="">query</var> (adding a "?" (U+003F) character if appropriate).</p>
1200:
1201: <p><a href="#navigate">Navigate</a><!--DONAV form--> <var title="">target
1202: browsing context</var> to <var title="">destination</var>. If
1203: <var title="">replace</var> is true, then <var title="">target
1204: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1205: enabled</a>.</p>
1206:
1207: </dd>
1208:
1209: <dt><dfn id="submit-body" title="submit-body">Submit as entity body</dfn>
1210: </dt><dd>
1211:
1212: <p>Let <var title="">entity body</var> be the result of encoding
1213: the <var title="">form data set</var> using the
1214: <a href="#appropriate-form-encoding-algorithm">appropriate form encoding algorithm</a>.</p>
1215:
1216: <p>Let <var title="">MIME type</var> be determined as
1217: follows:</p>
1218:
1219: <dl><dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-urlencoded"><a href="form-submission.html#attr-fs-enctype-urlencoded">application/x-www-form-urlencoded</a></code></dt>
1220:
1221: <dd>Let <var title="">MIME type</var> be "<code title="">application/x-www-form-urlencoded</code>".</dd>
1222:
1223: <dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-formdata"><a href="form-submission.html#attr-fs-enctype-formdata">multipart/form-data</a></code></dt>
1224:
1225: <dd>Let <var title="">MIME type</var> be the concatenation of
1226: the string "<code title="">multipart/form-data;</code>", a
1227: U+0020 SPACE character, the string "<code title="">boundary=</code>", and the <a href="#multipart/form-data-boundary-string"><code title="">multipart/form-data</code> boundary string</a>
1228: generated by the <a href="#multipart/form-data-encoding-algorithm"><code title="">multipart/form-data</code> encoding
1229: algorithm</a>.</dd>
1230:
1231: <dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-text"><a href="form-submission.html#attr-fs-enctype-text">text/plain</a></code></dt>
1232:
1233: <dd>Let <var title="">MIME type</var> be "<code title="">text/plain</code>".</dd>
1234:
1235: </dl><!--<p>If <var title="">method</var> is anything but (GET or)
1236: POST, and the <span>origin</span> of <var title="">action</var>
1237: is not the <span>same origin</span> as that of <var
1238: title="">form document</var>, then abort these steps.</p> [or do
1239: CORS] (this is commented out since only POST can trigger this
1240: now, and that's historically unrestricted)--><p>Otherwise, <a href="#navigate">navigate</a><!--DONAV form--> <var title="">target browsing context</var> to <var title="">action</var> using the HTTP method given by <var title="">method</var> and with <var title="">entity body</var>
1241: as the entity body, of type <var title="">MIME type</var>. If
1242: <var title="">replace</var> is true, then <var title="">target
1243: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1244: enabled</a>.</p>
1245:
1246: </dd>
1247:
1248: <dt><dfn id="submit-get-action" title="submit-get-action">Get action URL</dfn>
1249: </dt><dd>
1250:
1251: <p><a href="#navigate">Navigate</a><!--DONAV form--> <var title="">target
1252: browsing context</var> to <var title="">action</var>. If <var title="">replace</var> is true, then <var title="">target
1253: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1254: enabled</a>.</p>
1255:
1256: </dd>
1257:
1258: <dt><dfn id="submit-data-post" title="submit-data-post">Post to data:</dfn>
1259: </dt><dd>
1260:
1261: <p>Let <var title="">data</var> be the result of encoding the
1262: <var title="">form data set</var> using the <a href="#appropriate-form-encoding-algorithm">appropriate
1263: form encoding algorithm</a>.</p>
1264:
1265: <p>If <var title="">action</var> contains the string "<code title="">%%%%</code>" (four U+0025 PERCENT SIGN characters),
1266: then %-escape all bytes in <var title="">data</var> that, if
1267: interpreted as US-ASCII, do not match the <code title="">unreserved</code> production in the URI Generic Syntax,
1268: and then, treating the result as a US-ASCII string, further
1269: %-escape all the U+0025 PERCENT SIGN characters in the resulting
1270: string and replace the first occurrence of "<code title="">%%%%</code>" in <var title="">action</var> with the
1271: resulting double-escaped string. <a href="#refsRFC3986">[RFC3986]</a></p>
1272:
1273: <p>Otherwise, if <var title="">action</var> contains the string
1274: "<code title="">%%</code>" (two U+0025 PERCENT SIGN characters
1275: in a row, but not four), then %-escape all characters in <var title="">data</var> that, if interpreted as US-ASCII, do not
1276: match the <code title="">unreserved</code> production in the URI
1277: Generic Syntax, and then, treating the result as a US-ASCII
1278: string, replace the first occurrence of "<code title="">%%</code>" in <var title="">action</var> with the
1279: resulting escaped string. <a href="#refsRFC3986">[RFC3986]</a></p>
1280:
1281: <p><a href="#navigate">Navigate</a><!--DONAV form--> <var title="">target
1282: browsing context</var> to the potentially modified <var title="">action</var> (which will be a <a href="infrastructure.html#data-protocol" title="data
1283: protocol"><code title="">data:</code> URL</a>). If <var title="">replace</var> is true, then <var title="">target
1284: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1285: enabled</a>.</p>
1286:
1287: </dd>
1288:
1289: <dt><dfn id="submit-mailto-headers" title="submit-mailto-headers">Mail with headers</dfn>
1290: </dt><dd>
1291:
1292: <p>Let <var title="">headers</var> be the resulting encoding the
1293: <var title="">form data set</var> using the <a href="#application/x-www-form-urlencoded-encoding-algorithm"><code title="">application/x-www-form-urlencoded</code> encoding
1294: algorithm</a>, interpreted as a US-ASCII string.</p>
1295:
1296: <p>Replace occurrences of "+" (U+002B) characters in
1297: <var title="">headers</var> with the string "<code title="">%20</code>".</p>
1298:
1299: <p>Let <var title="">destination</var> consist of all the
1300: characters from the first character in <var title="">action</var> to the character immediately before the
1301: first "?" (U+003F) character, if any, or the end of
1302: the string if there are none.</p>
1303:
1304: <p>Append a single "?" (U+003F) character to <var title="">destination</var>.</p>
1305:
1306: <p>Append <var title="">headers</var> to <var title="">destination</var>.</p>
1307:
1308: <p><a href="#navigate">Navigate</a><!--DONAV form--> <var title="">target
1309: browsing context</var> to <var title="">destination</var>. If
1310: <var title="">replace</var> is true, then <var title="">target
1311: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1312: enabled</a>.</p>
1313:
1314: </dd>
1315:
1316: <dt><dfn id="submit-mailto-body" title="submit-mailto-body">Mail as body</dfn>
1317: </dt><dd>
1318:
1319: <p>Let <var title="">body</var> be the resulting encoding the
1320: <var title="">form data set</var> using the <a href="#appropriate-form-encoding-algorithm">appropriate
1321: form encoding algorithm</a> and then %-escaping all the bytes
1322: in the resulting byte string that, when interpreted as US-ASCII,
1323: do not match the <code title="">unreserved</code> production in
1324: the URI Generic Syntax. <a href="#refsRFC3986">[RFC3986]</a></p>
1325:
1326: <p>Let <var title="">destination</var> have the same value as
1327: <var title="">action</var>.</p>
1328:
1329: <p>If <var title="">destination</var> does not contain a "?" (U+003F) character, append a single "?" (U+003F) character to <var title="">destination</var>. Otherwise, append a single U+0026
1330: AMPERSAND character (&).</p>
1331:
1332: <p>Append the string "<code title="">body=</code>" to <var title="">destination</var>.</p>
1333:
1334: <p>Append <var title="">body</var>, interpreted as a US-ASCII
1335: string, to <var title="">destination</var>.</p>
1336:
1337: <p><a href="#navigate">Navigate</a><!--DONAV form--> <var title="">target
1338: browsing context</var> to <var title="">destination</var>. If
1339: <var title="">replace</var> is true, then <var title="">target
1340: browsing context</var> must be navigated with <a href="#replacement-enabled">replacement
1341: enabled</a>.</p>
1342:
1343: </dd>
1344:
1345:
1346: <!--FORM-DIALOG-->
1347:
1348: </dl><p>The <dfn id="appropriate-form-encoding-algorithm">appropriate form encoding algorithm</dfn> is
1349: determined as follows:</p>
1350:
1351: <dl><dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-urlencoded"><a href="form-submission.html#attr-fs-enctype-urlencoded">application/x-www-form-urlencoded</a></code></dt>
1352:
1353: <dd>Use the <a href="#application/x-www-form-urlencoded-encoding-algorithm"><code title="">application/x-www-form-urlencoded</code> encoding
1354: algorithm</a>.</dd>
1355:
1356: <dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-formdata"><a href="form-submission.html#attr-fs-enctype-formdata">multipart/form-data</a></code></dt>
1357:
1358: <dd>Use the <a href="#multipart/form-data-encoding-algorithm"><code title="">multipart/form-data</code> encoding
1359: algorithm</a>.</dd>
1360:
1361: <dt>If <var title="">enctype</var> is <code title="attr-fs-enctype-text"><a href="form-submission.html#attr-fs-enctype-text">text/plain</a></code></dt>
1362:
1363: <dd>Use the <a href="#text/plain-encoding-algorithm"><code title="">text/plain</code> encoding
1364: algorithm</a>.</dd>
1365:
1366: </dl></li>
1367:
1368: </ol><h5 id="constructing-form-data-set"><span class="secno">4.10.22.4 </span>Constructing the form data set</h5>
1369:
1370: <p>The algorithm to <dfn id="constructing-the-form-data-set" title="constructing the form data
1371: set">construct the form data set</dfn> for a form <var title="">form</var> optionally in the context of a submitter <var title="">submitter</var> is as follows. If not specified otherwise,
1372: <var title="">submitter</var> is null.</p>
1373:
1374: <ol><li><p>Let <var title="">controls</var> be a list of all the <a href="forms.html#category-submit" title="category-submit">submittable elements</a> whose
1375: <a href="association-of-controls-and-forms.html#form-owner">form owner</a> is <var title="">form</var>, in <a href="infrastructure.html#tree-order">tree
1376: order</a>.</p></li>
1377:
1378: <li><p>Let the <var title="">form data set</var> be a list of
1379: name-value-type tuples, initially empty.</p></li>
1380:
1381: <li>
1382:
1383: <p><i>Loop</i>: For each element <var title="">field</var> in <var title="">controls</var>, in <a href="infrastructure.html#tree-order">tree order</a>, run the
1384: following substeps:</p>
1385:
1386: <ol><li>
1387:
1388: <p>If any of the following conditions are met, then skip these
1389: substeps for this element:</p>
1390:
1391: <ul><li>The <var title="">field</var> element has a
1392: <code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code> element ancestor.</li>
1393:
1394: <li>The <var title="">field</var> element is <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>.</li>
1395:
1396: <li>The <var title="">field</var> element is a <a href="forms.html#concept-button" title="concept-button">button</a> but it is not <var title="">submitter</var>.</li>
1397:
1398: <li>The <var title="">field</var> element is an
1399: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> state and
1400: whose <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checkedness</a> is
1401: false.</li>
1402:
1403: <li>The <var title="">field</var> element is an
1404: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)" title="attr-input-type-radio">Radio Button</a> state and
1405: whose <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checkedness</a> is
1406: false.</li>
1407:
1408: <li>The <var title="">field</var> element is not an
1409: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, and
1410: either the <var title="">field</var> element does not have a
1411: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute specified, or
1412: its <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute's value is
1413: the empty string.</li>
1414:
1415: <li>The <var title="">field</var> element is an
1416: <code><a href="the-object-element.html#the-object-element">object</a></code> element that is not using a
1417: <a href="infrastructure.html#plugin">plugin</a>.</li>
1418:
1419: </ul><p>Otherwise, process <var title="">field</var> as follows:</p>
1420:
1421: </li>
1422:
1423: <li><p>Let <var title="">type</var> be the value of the <code title="">type</code> IDL attribute of <var title="">field</var>.</p></li> <!-- if the field is an <object>
1424: element, this will get ignored. -->
1425:
1426: <li>
1427:
1428: <p>If the <var title="">field</var> element is an
1429: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state,
1430: then run these further nested substeps:</p>
1431:
1432: <ol><li><p>If the <var title="">field</var> element has a <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute specified and its
1433: value is not the empty string, let <var title="">name</var> be
1434: that value followed by a single "." (U+002E) character.
1435: Otherwise, let <var title="">name</var> be the empty
1436: string.</p></li>
1437:
1438: <li><p>Let <var title="">name<sub title="">x</sub></var> be the
1439: string consisting of the concatenation of <var title="">name</var> and a single "x" (U+0078) character.</p></li>
1440:
1441: <li><p>Let <var title="">name<sub title="">y</sub></var> be the
1442: string consisting of the concatenation of <var title="">name</var> and a single "y" (U+0079) character.</p></li>
1443:
1444: <li><p>The <var title="">field</var> element is <var title="">submitter</var>, and before this algorithm was invoked
1445: the user <a href="states-of-the-type-attribute.html#concept-input-type-image-coordinate" title="concept-input-type-image-coordinate">indicated a
1446: coordinate</a>. Let <var title="">x</var> be the <var title="">x</var>-component of the coordinate selected by the
1447: user, and let <var title="">y</var> be the <var title="">y</var>-component of the coordinate selected by the
1448: user.</p></li>
1449:
1450: <li><p>Append an entry to the <var title="">form data set</var>
1451: with the name <var title="">name<sub title="">x</sub></var>,
1452: the value <var title="">x</var>, and the type <var title="">type</var>.</p></li>
1453:
1454: <li><p>Append an entry to the <var title="">form data set</var>
1455: with the name <var title="">name<sub title="">y</sub></var> and
1456: the value <var title="">y</var>, and the type <var title="">type</var>.</p></li>
1457:
1458: <li><p>Skip the remaining substeps for this element: if there
1459: are any more elements in <var title="">controls</var>, return
1460: to the top of the <i>loop</i> step, otherwise, jump to the
1461: <i>end</i> step below.</p></li>
1462:
1463: </ol></li>
1464:
1465: <li><p>Let <var title="">name</var> be the value of the <var title="">field</var> element's <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute.</p></li>
1466:
1467: <li><p>If the <var title="">field</var> element is a
1468: <code><a href="the-select-element.html#the-select-element">select</a></code> element, then for each <code><a href="the-option-element.html#the-option-element">option</a></code>
1469: element in the <code><a href="the-select-element.html#the-select-element">select</a></code> element whose <a href="the-option-element.html#concept-option-selectedness" title="concept-option-selectedness">selectedness</a> is true,
1470: append an entry to the <var title="">form data set</var> with the
1471: <var title="">name</var> as the name, the <a href="the-option-element.html#concept-option-value" title="concept-option-value">value</a> of the
1472: <code><a href="the-option-element.html#the-option-element">option</a></code> element as the value, and <var title="">type</var> as the type.</p></li>
1473:
1474: <li>
1475:
1476: <p>Otherwise, if the <var title="">field</var> element is an
1477: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> state or the
1478: <a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)" title="attr-input-type-radio">Radio Button</a> state,
1479: then run these further nested substeps:</p>
1480:
1481: <ol><li><p>If the <var title="">field</var> element has a <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code> attribute specified, then
1482: let <var title="">value</var> be the value of that attribute;
1483: otherwise, let <var title="">value</var> be the string
1484: "<code title="">on</code>".</p></li>
1485:
1486: <li><p>Append an entry to the <var title="">form data set</var>
1487: with <var title="">name</var> as the name, <var title="">value</var> as the value, and <var title="">type</var>
1488: as the type.</p></li>
1489:
1490: </ol></li>
1491:
1492: <li><p>Otherwise, if the <var title="">field</var> element is an
1493: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#file-upload-state-(type=file)" title="attr-input-type-file">File Upload</a> state, then for
1494: each file <a href="states-of-the-type-attribute.html#concept-input-type-file-selected" title="concept-input-type-file-selected">selected</a> in the
1495: <code><a href="the-input-element.html#the-input-element">input</a></code> element, append an entry to the <var title="">form data set</var> with the <var title="">name</var> as
1496: the name, the file (consisting of the name, the type, and the
1497: body) as the value, and <var title="">type</var> as the type. If
1498: there are no <a href="states-of-the-type-attribute.html#concept-input-type-file-selected" title="concept-input-type-file-selected">selected files</a>,
1499: then append an entry to the <var title="">form data set</var>
1500: with the <var title="">name</var> as the name, the empty string
1501: as the value, and <code>application/octet-stream</code> as the
1502: type.</p></li>
1503: <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=529859 -->
1504:
1505: <li><p>Otherwise, if the <var title="">field</var> element is an
1506: <code><a href="the-object-element.html#the-object-element">object</a></code> element: try to obtain a form submission
1507: value from the <a href="infrastructure.html#plugin">plugin</a><!-- using NPAPI's
1508: NPP_GetValue() entry point with the NPPVformValue variable -->,
1509: and if that is successful, append an entry to the <var title="">form data set</var> with <var title="">name</var> as the
1510: name, the returned form submission value as the value, and the
1511: string "<code title="">object</code>" as the type.</p></li>
1512:
1513: <li><p>Otherwise, append an entry to the <var title="">form data
1514: set</var> with <var title="">name</var> as the name, the <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> of the <var title="">field</var> element as the value, and <var title="">type</var> as the type.</p></li>
1515:
1516: <li>
1517:
1518: <p>If the element has a <a href="form-submission.html#form-control-dirname-attribute">form control <code title="">dirname</code> attribute</a>, and that attribute's
1519: value is not the empty string, then run these substeps:</p>
1520:
1521: <ol><li><p>Let <var title="">dirname</var> be the value of the
1522: element's <code title="">dirname</code> attribute.</p></li>
1523:
1524: <li><p>Let <var title="">dir</var> be the string "<code title="">ltr</code>" if <a href="global-attributes.html#the-directionality">the directionality</a> of the
1525: element is '<a href="global-attributes.html#concept-ltr" title="concept-ltr">ltr</a>', and "<code title="">rtl</code>" otherwise (i.e. when <a href="global-attributes.html#the-directionality">the
1526: directionality</a> of the element is '<a href="global-attributes.html#concept-rtl" title="concept-rtl">rtl</a>').</p></li>
1527:
1528: <li><p>Append an entry to the <var title="">form data set</var>
1529: with <var title="">dirname</var> as the name, <var title="">dir</var> as the value, and the string "<code title="">direction</code>" as the type.</p></li>
1530:
1531: </ol><p class="note">An element can only have a <a href="form-submission.html#form-control-dirname-attribute">form control
1532: <code title="">dirname</code> attribute</a> if it is a
1533: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element or an <code><a href="the-input-element.html#the-input-element">input</a></code> element
1534: whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in
1535: either the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a> state
1536: or the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-search">Search</a>
1537: state.</p>
1538:
1539: </li>
1540:
1541: </ol></li>
1542:
1543: <li>
1544:
1545: <p><i>End</i>: For the name of each entry in the <var title="">form data set</var>, and for the value of each entry in
1546: the <var title="">form data set</var> whose type is not "<code title="">file</code>" or "<code title="">textarea</code>", replace
1547: every occurrence of a "CR" (U+000D) character not
1548: followed by a "LF" (U+000A) character, and every
1549: occurrence of a "LF" (U+000A) character not preceded by a
1550: "CR" (U+000D) character, by a two-character string
1551: consisting of a U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF)
1552: character pair.</p>
1553:
1554: <p class="note">In the case of the <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> of <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
1555: elements, this newline normalization is already performed during
1556: the conversion of the control's <a href="the-textarea-element.html#concept-textarea-raw-value" title="concept-textarea-raw-value">raw value</a> into the
1557: control's <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> (which also
1558: performs any necesary line wrapping). In the case of
1559: <code><a href="the-input-element.html#the-input-element">input</a></code> elements <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attributes in the <a href="states-of-the-type-attribute.html#file-upload-state-(type=file)" title="attr-input-type-file">File Upload</a> state, the value
1560: is not normalized.</p>
1561:
1562: </li>
1563:
1564: <li><p>Return the <var title="">form data set</var>.</p></li>
1565:
1566: </ol></div>
1567:
1568:
1569: <h5 id="url-encoded-form-data"><span class="secno">4.10.22.5 </span>URL-encoded form data</h5>
1570:
1571: <p class="note">This form data set encoding is in many ways an
1572: aberrant monstrosity, the result of many years of implementation
1573: accidents and compromises leading to a set of requirements necessary
1574: for interoperability, but in no way representing good design
1575: practices. In particular, readers are cautioned to pay close
1576: attention to the twisted details involving repeated (and in some
1577: cases nested) conversions between character encodings and byte
1578: sequences.</p>
1579:
1580: <div class="impl">
1581:
1582: <p>The <dfn id="application/x-www-form-urlencoded-encoding-algorithm"><code title="">application/x-www-form-urlencoded</code> encoding
1583: algorithm</dfn> is as follows:</p>
1584:
1585: <ol><!-- the first few steps of this are the same as in the next section --><li><p>Let <var title="">result</var> be the empty string.</p></li>
1586:
1587: <li>
1588:
1589: <p>If the <code><a href="the-form-element.html#the-form-element">form</a></code> element has an <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute,
1590: then, taking into account the characters found in the <var title="">form data set</var>'s names and values, and the character
1591: encodings supported by the user agent, select a character encoding
1592: from the list given in the <code><a href="the-form-element.html#the-form-element">form</a></code>'s <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute
1593: that is an <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>. If
1594: none of the encodings are supported, or if none are listed, then
1595: let the selected character encoding be UTF-8.</p>
1596:
1597: <p>Otherwise, if the <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> is
1598: an <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>, then that is
1599: the selected character encoding.</p>
1600:
1601: <p>Otherwise, let the selected character encoding be UTF-8.</p>
1602:
1603: </li>
1604:
1605: <li><p>Let <var title="">charset</var> be the <a href="infrastructure.html#preferred-mime-name">preferred MIME
1606: name</a> of the selected character encoding.</p></li>
1607:
1608: <li>
1609:
1610: <p>For each entry in the <var title="">form data set</var>,
1611: perform these substeps:</p>
1612:
1613: <ol><li><p>If the entry's name is "<code title="attr-fe-name-charset"><a href="attributes-common-to-form-controls.html#attr-fe-name-charset">_charset_</a></code>"
1614: and its type is "<code title="">hidden</code>", replace its value
1615: with <var title="">charset</var>.</p></li>
1616:
1617: <li><p>If the entry's type is "<code title="">file</code>",
1618: replace its value with the file's filename only.</p></li> <!--
1619: this is not present in the next section -->
1620:
1621: <li><p>For each character in the entry's name and value that
1622: cannot be expressed using the selected character encoding,
1623: replace the character by a string consisting of a U+0026
1624: AMPERSAND character (&), a "#" (U+0023) character,
1625: one or more characters in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a> representing the Unicode code point of the
1626: character in base ten, and finally a U+003B SEMICOLON character
1627: (;).</p></li><!-- we should say it should be the shortest
1628: possible string, no leading zeros. this whole step is asinine,
1629: though, so... -->
1630:
1631: <!-- this is where the similarities with the next section end -->
1632:
1633: <li>
1634:
1635: <p>Encode the entry's name and value using the selected
1636: character encoding. The entry's name and value are now byte
1637: strings.</p>
1638:
1639: </li>
1640:
1641: <li>
1642:
1643: <p>For each byte in the entry's name and value, apply the
1644: appropriate subsubsteps from the following list:</p>
1645:
1646: <dl class="switch"><dt>The byte is 0x20 (U+0020 SPACE if interpreted as ASCII)</dt>
1647:
1648: <dd>Replace the byte with a single 0x2B byte ("+" (U+002B) character if interpreted as ASCII).</dd>
1649:
1650:
1651: <!-- * - . 0-9 a-z _ A-Z -->
1652:
1653: <dt>If the byte is in the range 0x2A, 0x2D, 0x2E, 0x30 to 0x39,
1654: 0x41 to 0x5A, 0x5F, 0x61 to 0x7A</dt>
1655:
1656: <dd><p>Leave the byte as is.</p></dd>
1657:
1658:
1659: <dt>Otherwise</dt>
1660:
1661: <dd>
1662:
1663: <ol><li><p>Let <var title="">s</var> be a string consisting of a
1664: "%" (U+0025) character followed by two characters
1665: in the ranges <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>
1666: and U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL
1667: LETTER F representing the hexadecimal value of the byte in
1668: question (zero-padded if necessary).</p></li>
1669:
1670: <li><p>Encode the string <var title="">s</var> as US-ASCII,
1671: so that it is now a byte string.</p>
1672:
1673: </li><li><p>Replace the byte in question in the name or value
1674: being processed by the bytes in <var title="">s</var>,
1675: preserving their relative order.</p></li>
1676:
1677: </ol></dd>
1678:
1679: </dl></li>
1680:
1681: <li>
1682:
1683: <p>Interpret the entry's name and value as Unicode strings
1684: encoded in US-ASCII. (All of the bytes in the string will be in
1685: the range 0x00 to 0x7F; the high bit will be zero throughout.)
1686: The entry's name and value are now Unicode strings again.</p>
1687:
1688: </li>
1689:
1690: <li><p>If the entry's name is "<code title="attr-fe-name-isindex"><a href="attributes-common-to-form-controls.html#attr-fe-name-isindex">isindex</a></code>", its type is "<code title="">text</code>", and this is the first entry in the <var title="">form data set</var>, then append the value to <var title="">result</var> and skip the rest of the substeps for this
1691: entry, moving on to the next entry, if any, or the next step in
1692: the overall algorithm otherwise.</p></li>
1693:
1694: <li><p>If this is not the first entry, append a single U+0026
1695: AMPERSAND character (&) to <var title="">result</var>.</p></li>
1696:
1697: <li><p>Append the entry's name to <var title="">result</var>.</p></li>
1698:
1699: <li><p>Append a single "=" (U+003D) character to <var title="">result</var>.</p></li>
1700:
1701: <li><p>Append the entry's value to <var title="">result</var>.</p></li>
1702:
1703: </ol></li>
1704:
1705: <li><p>Encode <var title="">result</var> as US-ASCII and return the
1706: resulting byte stream.</p></li>
1707:
1708: </ol></div>
1709:
1710: <p>To <dfn id="application/x-www-form-urlencoded-decoding-algorithm" title="application/x-www-form-urlencoded decoding
1711: algorithm">decode <code>application/x-www-form-urlencoded</code>
1712: payloads</dfn>, the following algorithm should be used. This
1713: algorithm uses as inputs the payload itself, <var title="">payload</var>, consisting of a Unicode string using only
1714: characters in the range U+0000 to U+007F; a default character
1715: encoding <var title="">encoding</var>; and optionally an <var title="">isindex</var> flag indicating that the payload is to be
1716: processed as if it had been generated for a form containing an <code title="attr-fe-name-isindex"><a href="attributes-common-to-form-controls.html#attr-fe-name-isindex">isindex</a></code> control. The output of
1717: this algorithm is a sorted list of name-value pairs. If the <var title="">isindex</var> flag is set and the first control really was
1718: an <code title="attr-fe-name-isindex"><a href="attributes-common-to-form-controls.html#attr-fe-name-isindex">isindex</a></code> control, then
1719: the first name-value pair will have as its name the empty
1720: string.</p>
1721:
1722: <ol><li><p>Let <var title="">strings</var> be the result of <a href="common-microsyntaxes.html#strictly-split-a-string" title="strictly split a string">strictly splitting the
1723: string</a> <var title="">payload</var> on U+0026 AMPERSAND
1724: characters (&).</p></li>
1725:
1726: <li><p>If the <var title="">isindex</var> flag is set and the first
1727: string in <var title="">strings</var> does not contain a "=" (U+003D) character, insert a U+003D EQUALS SIGN character
1728: (=) at the start of the first string in <var title="">strings</var>.</p></li>
1729:
1730: <li><p>Let <var title="">pairs</var> be an empty list of name-value
1731: pairs.</p></li>
1732:
1733: <li>
1734:
1735: <p>For each string <var title="">string</var> in <var title="">strings</var>, run these substeps:</p>
1736:
1737: <ol><li>
1738:
1739: <p>If <var title="">string</var> contains a "=" (U+003D) character, then let <var title="">name</var> be the
1740: substring of <var title="">string</var> from the start of <var title="">string</var> up to but excluding its first "=" (U+003D) character, and let <var title="">value</var> be
1741: the substring from the first character, if any, after the first
1742: "=" (U+003D) character up to the end of <var title="">string</var>. If the first U+003D EQUALS SIGN character
1743: (=) is the first character, then <var title="">name</var> will
1744: be the empty string. If it is the last character, then <var title="">value</var> will be the empty string.</p>
1745:
1746: <p>Otherwise, <var title="">string</var> contains no "=" (U+003D) characters. Let <var title="">name</var> have
1747: the value of <var title="">string</var> and let <var title="">value</var> be the empty string.</p>
1748:
1749: </li>
1750:
1751: <li>
1752:
1753: <p>Replace any "+" (U+002B) characters in <var title="">name</var> and <var title="">value</var> with U+0020
1754: SPACE characters.</p>
1755:
1756: </li>
1757:
1758: <li>
1759:
1760: <p>Replace any escape in <var title="">name</var> and <var title="">value</var> with the character represented by the
1761: escape. This replacement most not be recursive.</p>
1762:
1763: <p>An escape is a "%" (U+0025) character followed by
1764: two characters in the ranges <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN
1765: CAPITAL LETTER F, and U+0061 LATIN SMALL LETTER A to U+0066
1766: LATIN SMALL LETTER F.</p>
1767:
1768: <p>The character represented by an escape is the Unicode
1769: character whose code point is equal to the value of the two
1770: characters after the "%" (U+0025) character,
1771: interpreted as a hexadecimal number (in the range 0..255).</p>
1772:
1773: <p class="example">So for instance the string "<code title="">A%2BC</code>" would become "<code title="">A+C</code>".
1774: Similarly, the string "<code title="">100%25AA%21</code>"
1775: becomes the string "<code title="">100%AA!</code>".</p>
1776:
1777: </li>
1778:
1779: <li><p>Convert the <var title="">name</var> and <var title="">value</var> strings to their byte representation in
1780: ISO-8859-1 (i.e. convert the Unicode string to a byte string,
1781: mapping code points to byte values directly).</p></li>
1782:
1783: <li><p>Add a pair consisting of <var title="">name</var> and <var title="">value</var> to <var title="">pairs</var>.</p></li>
1784:
1785: </ol></li>
1786:
1787: <li><p>If any of the name-value pairs in <var title="">pairs</var>
1788: have a name component consisting of the string "<code title="">_charset_</code>" encoded in US-ASCII, and the value
1789: component of the first such pair, when decoded as US-ASCII, is the
1790: name of a supported character encoding, then let <var title="">encoding</var> be that character encoding (replacing the
1791: default passed to the algorithm).</p></li>
1792:
1793: <li><p>Convert the name and value components of each name-value
1794: pair in <var title="">pairs</var> to Unicode by interpreting the
1795: bytes according to the encoding <var title="">encoding</var>.</p></li>
1796:
1797: <li><p>Return <var title="">pairs</var>.</p></li>
1798:
1799: </ol><p class="note">Parameters on the
1800: <code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code> MIME type are
1801: ignored. In particular, this MIME type does not support the <code title="">charset</code> parameter.</p>
1802:
1803:
1804:
1805: <div class="impl">
1806:
1807: <h5 id="multipart-form-data"><span class="secno">4.10.22.6 </span>Multipart form data</h5>
1808:
1809: <!-- http://hixie.ch/tests/adhoc/html/forms/submission/multipart_form-data/ -->
1810:
1811: <!-- NOTE: This algorithm is also used by the XHR spec -->
1812:
1813: <p>The <dfn id="multipart/form-data-encoding-algorithm"><code title="">multipart/form-data</code> encoding
1814: algorithm</dfn> is as follows:</p>
1815:
1816: <ol><!-- the first few steps of this are the same as in the previous section --><li><p>Let <var title="">result</var> be the empty string.</p></li>
1817:
1818: <li>
1819:
1820: <p>If the algorithm was invoked with an explicit character
1821: encoding, let the selected character encoding be that encoding.
1822: (This algorithm is used by other specifications, which provide an
1823: explicit character encoding to avoid the dependency on the
1824: <code><a href="the-form-element.html#the-form-element">form</a></code> element described in the next paragraph.)</p>
1825:
1826: <p>Otherwise, if the <code><a href="the-form-element.html#the-form-element">form</a></code> element has an <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute,
1827: then, taking into account the characters found in the <var title="">form data set</var>'s names and values, and the character
1828: encodings supported by the user agent, select a character encoding
1829: from the list given in the <code><a href="the-form-element.html#the-form-element">form</a></code>'s <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute
1830: that is an <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>. If
1831: none of the encodings are supported, or if none are listed, then
1832: let the selected character encoding be UTF-8.</p>
1833:
1834: <p>Otherwise, if the <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> is
1835: an <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>, then that is
1836: the selected character encoding.</p>
1837:
1838: <p>Otherwise, let the selected character encoding be UTF-8.</p>
1839:
1840: </li>
1841:
1842: <li><p>Let <var title="">charset</var> be the <a href="infrastructure.html#preferred-mime-name">preferred MIME
1843: name</a> of the selected character encoding.</p></li>
1844:
1845: <li>
1846:
1847: <p>For each entry in the <var title="">form data set</var>,
1848: perform these substeps:</p>
1849:
1850: <ol><li><p>If the entry's name is "<code title="attr-fe-name-charset"><a href="attributes-common-to-form-controls.html#attr-fe-name-charset">_charset_</a></code>" and its type is
1851: "<code title="">hidden</code>", replace its value with <var title="">charset</var>.</p></li>
1852:
1853: <!-- the step that replaces a file with its name is missing in
1854: this version of the algorithm -->
1855:
1856: <li><p>For each character in the entry's name and value that
1857: cannot be expressed using the selected character encoding,
1858: replace the character by a string consisting of a U+0026
1859: AMPERSAND character (&), a "#" (U+0023) character,
1860: one or more characters in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a> representing the Unicode code point of the
1861: character in base ten, and finally a U+003B SEMICOLON character
1862: (;).</p></li><!-- we should say it should be the shortest
1863: possible string, no leading zeros. this whole step is asinine,
1864: though, so... -->
1865:
1866: <!-- this is where the similarities with the previous section end -->
1867:
1868: </ol></li>
1869:
1870: <li>
1871:
1872: <p>Encode the (now mutated) <var title="">form data set</var>
1873: using the rules described by RFC 2388, <cite>Returning Values from
1874: Forms: <code title="">multipart/form-data</code></cite>, and
1875: return the resulting byte stream. <a href="#refsRFC2388">[RFC2388]</a></p>
1876:
1877: <p>Each entry in the <var title="">form data set</var> is a
1878: <i>field</i>, the name of the entry is the <i>field name</i> and
1879: the value of the entry is the <i>field value</i>.</p>
1880:
1881: <p>The order of parts must be the same as the order of fields in
1882: the <var title="">form data set</var>. Multiple entries with the
1883: same name must be treated as distinct fields.</p>
1884:
1885: <p class="note">In particular, this means that multiple files
1886: submitted as part of a single <code title=""><input type=file multiple></code> element
1887: will result in each file having its own field; the "sets of files"
1888: feature ("<code title="">multipart/mixed</code>") of RFC 2388 is
1889: not used.</p>
1890:
1891: <p>The parts of the generated <code title="">multipart/form-data</code> resource that correspond to
1892: non-file fields must not have a <code><a href="urls.html#content-type">Content-Type</a></code> header
1893: specified. Their names and values must be encoded using the
1894: character encoding selected above (field names in particular do
1895: not get converted to a 7-bit safe encoding as suggested in RFC
1896: 2388).</p>
1897:
1898: <p>File names included in the generated <code title="">multipart/form-data</code> resource (as part of file
1899: fields) must use the character encoding selected above, though the
1900: precise name may be approximated if necessary (e.g. newlines could
1901: be removed from file names, quotes could be changed to "%22", and
1902: characters not expressible in the selected character encoding
1903: could be replaced by other characters). User agents must not use
1904: the RFC 2231 encoding suggested by RFC 2388.</p> <!-- this isn't a
1905: willful violation since 2388 doesn't make it a requirement, it
1906: just vaguely suggests it -->
1907:
1908: <p>The boundary used by the user agent in generating the return
1909: value of this algorithm is the <dfn id="multipart/form-data-boundary-string"><code title="">multipart/form-data</code> boundary string</dfn>. (This
1910: value is used to generate the MIME type of the form submission
1911: payload generated by this algorithm.)</p>
1912:
1913: </li>
1914:
1915: </ol></div>
1916:
1917: <p>For details on how to interpret <code>multipart/form-data</code>
1918: payloads, see RFC 2388. <a href="#refsRFC2388">[RFC2388]</a></p>
1919:
1920:
1921:
1922: <h5 id="plain-text-form-data"><span class="secno">4.10.22.7 </span>Plain text form data</h5>
1923:
1924: <div class="impl">
1925:
1926: <p>The <dfn id="text/plain-encoding-algorithm"><code title="">text/plain</code> encoding
1927: algorithm</dfn> is as follows:</p>
1928:
1929: <ol><li><p>Let <var title="">result</var> be the empty string.</p></li>
1930:
1931: <li>
1932:
1933: <!-- this is different from application/x-www-form-urlencoded in
1934: that it isn't limited to ASCII-compatible encodings -->
1935:
1936: <p>If the <code><a href="the-form-element.html#the-form-element">form</a></code> element has an <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute,
1937: then, taking into account the characters found in the <var title="">form data set</var>'s names and values, and the character
1938: encodings supported by the user agent, select a character encoding
1939: from the list given in the <code><a href="the-form-element.html#the-form-element">form</a></code>'s <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code> attribute.
1940: If none of the encodings are supported, or if none are listed,
1941: then let the selected character encoding be UTF-8.</p>
1942:
1943: <p>Otherwise, the selected character encoding is the
1944: <a href="infrastructure.html#document's-character-encoding">document's character encoding</a>.</p>
1945:
1946: </li>
1947:
1948: <li><p>Let <var title="">charset</var> be the <a href="infrastructure.html#preferred-mime-name">preferred MIME
1949: name</a> of the selected character encoding.</p></li>
1950:
1951: <li><p>If the entry's name is "<code title="attr-fe-name-charset"><a href="attributes-common-to-form-controls.html#attr-fe-name-charset">_charset_</a></code>" and its type is
1952: "<code title="">hidden</code>", replace its value with <var title="">charset</var>.</p></li>
1953:
1954: <li><p>If the entry's type is "<code title="">file</code>", replace
1955: its value with the file's filename only.</p></li>
1956:
1957: <li>
1958:
1959: <p>For each entry in the <var title="">form data set</var>,
1960: perform these substeps:</p>
1961:
1962: <ol><li><p>Append the entry's name to <var title="">result</var>.</p></li>
1963:
1964: <li><p>Append a single "=" (U+003D) character to <var title="">result</var>.</p></li>
1965:
1966: <li><p>Append the entry's value to <var title="">result</var>.</p></li>
1967:
1968: <li><p>Append a "CR" (U+000D) "LF" (U+000A)
1969: character pair to <var title="">result</var>.</p></li>
1970:
1971: </ol></li>
1972:
1973: <li><p>Encode <var title="">result</var> using the selected
1974: character encoding and return the resulting byte stream.</p></li>
1975:
1976: </ol></div>
1977:
1978: <p>Payloads using the <code>text/plain</code> format are intended to
1979: be human readable. They are not reliably interpretable by computer,
1980: as the format is ambiguous (for example, there is no way to
1981: distinguish a literal newline in a value from the newline at the end
1982: of the value).</p>
1983:
1984:
1985:
1986: <div class="impl">
1987:
1988: <h4 id="resetting-a-form"><span class="secno">4.10.23 </span>Resetting a form</h4>
1989:
1990: <p>When a <code><a href="the-form-element.html#the-form-element">form</a></code> element <var title="">form</var> is <dfn id="concept-form-reset" title="concept-form-reset">reset</dfn>, the user agent must
1991: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-reset">reset</code>, that is cancelable, at <var title="">form</var>, and then, if that event is not canceled, must
1992: invoke the <a href="#concept-form-reset-control" title="concept-form-reset-control">reset
1993: algorithm</a> of each <a href="forms.html#category-reset" title="category-reset">resettable
1994: element</a> whose <a href="association-of-controls-and-forms.html#form-owner">form owner</a> is <var title="">form</var>.</p>
1995:
1996: <p>Each <a href="forms.html#category-reset" title="category-reset">resettable element</a>
1997: defines its own <dfn id="concept-form-reset-control" title="concept-form-reset-control">reset
1998: algorithm</dfn>. Changes made to form controls as part of these
1999: algorithms do not count as changes caused by the user (and thus,
2000: e.g., do not cause <code title="event-input">input</code> events to
2001: fire).</p>
2002:
2003: </div>
2004:
2005:
2006:
2007: <h3 id="interactive-elements"><span class="secno">4.11 </span>Interactive elements</h3>
2008:
2009: <h4 id="the-details-element"><span class="secno">4.11.1 </span>The <dfn><code>details</code></dfn> element</h4>
2010:
2011: <dl class="element"><dt><a href="element-definitions.html#element-dfn-categories" title="element-dfn-categories">Categories</a>:</dt>
2012: <dd><a href="content-models.html#flow-content-1">Flow content</a>.</dd>
2013: <dd><a href="headings-and-sections.html#sectioning-root">Sectioning root</a>.</dd>
2014: <dd><a href="content-models.html#interactive-content-0">Interactive content</a>.</dd>
2015: <dd><a href="content-models.html#palpable-content-0">Palpable content</a>.</dd>
2016: <dt><a href="element-definitions.html#element-dfn-contexts" title="element-dfn-contexts">Contexts in which this element can be used</a>:</dt>
2017: <dd>Where <a href="content-models.html#flow-content-1">flow content</a> is expected.</dd>
2018: <dt><a href="element-definitions.html#element-dfn-content-model" title="element-dfn-content-model">Content model</a>:</dt>
2019: <dd>One <code><a href="#the-summary-element">summary</a></code> element followed by <a href="content-models.html#flow-content-1">flow content</a>.</dd>
2020: <dt><a href="element-definitions.html#element-dfn-attributes" title="element-dfn-attributes">Content attributes</a>:</dt>
2021: <dd><a href="global-attributes.html#global-attributes">Global attributes</a></dd>
2022: <dd><code title="attr-details-open"><a href="#attr-details-open">open</a></code></dd>
2023: <dt><a href="element-definitions.html#element-dfn-dom" title="element-dfn-dom">DOM interface</a>:</dt><!--TOPIC:DOM APIs-->
2024: <dd>
2025: <pre class="idl">interface <dfn id="htmldetailselement">HTMLDetailsElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
2026: attribute boolean <a href="#dom-details-open" title="dom-details-open">open</a>;
2027: };</pre>
2028: </dd>
2029: </dl><!--TOPIC:HTML--><p>The <code><a href="#the-details-element">details</a></code> element <a href="#represents">represents</a> a
2030: disclosure widget from which the user can obtain additional
2031: information or controls.</p>
2032:
2033: <p class="note">The <code><a href="#the-details-element">details</a></code> element is not appropriate
2034: for footnotes. Please see <a href="#footnotes">the section on
2035: footnotes</a> for details on how to mark up footnotes.</p>
2036:
2037: <p>The <span class="impl">first</span> <code><a href="#the-summary-element">summary</a></code> element
2038: child of the element, if any, <a href="#represents">represents</a> the summary or
2039: legend of the details. <span class="impl">If there is no child
2040: <code><a href="#the-summary-element">summary</a></code> element, the user agent should provide its own
2041: legend (e.g. "Details").</span></p>
2042:
2043: <p>The rest of the element's contents <a href="#represents">represents</a> the
2044: additional information or controls.</p>
2045:
2046: <p>The <dfn id="attr-details-open" title="attr-details-open"><code>open</code></dfn>
2047: content attribute is a <a href="common-microsyntaxes.html#boolean-attribute">boolean attribute</a>. If present,
2048: it indicates that both the summary and the additional information is
2049: to be shown to the user. If the attribute is absent, only the
2050: summary is to be shown.</p>
2051:
2052: <div class="impl">
2053:
2054: <p>When the element is created, if the attribute is absent, the
2055: additional information should be hidden; if the attribute is
2056: present, that information should be shown. Subsequently, if the
2057: attribute is removed, then the information should be hidden; if the
2058: attribute is added, the information should be shown.</p>
2059:
2060: <p>The user agent should allow the user to request that the
2061: additional information be shown or hidden. To honor a request for
2062: the details to be shown, the user agent must set the <code title="attr-details-open"><a href="#attr-details-open">open</a></code> attribute on the element to
2063: the value <code title="">open</code>. To honor a request for the
2064: information to be hidden, the user agent must remove the <code title="attr-details-open"><a href="#attr-details-open">open</a></code> attribute from the
2065: element.</p>
2066:
2067: <p>The <dfn id="dom-details-open" title="dom-details-open"><code>open</code></dfn> IDL
2068: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-details-open"><a href="#attr-details-open">open</a></code> content attribute.</p>
2069:
2070: </div>
2071:
2072: <div class="example">
2073:
2074: <p>The following example shows the <code><a href="#the-details-element">details</a></code> element
2075: being used to hide technical details in a progress report.</p>
2076:
2077: <pre><section class="progress window">
2078: <h1>Copying "Really Achieving Your Childhood Dreams"</h1>
2079: <details>
2080: <summary>Copying... <progress max="375505392" value="97543282"></progress> 25%</summary>
2081: <dl>
2082: <dt>Transfer rate:</dt> <dd>452KB/s</dd>
2083: <dt>Local filename:</dt> <dd>/home/rpausch/raycd.m4v</dd>
2084: <dt>Remote filename:</dt> <dd>/var/www/lectures/raycd.m4v</dd>
2085: <dt>Duration:</dt> <dd>01:16:27</dd>
2086: <dt>Color profile:</dt> <dd>SD (6-1-6)</dd>
2087: <dt>Dimensions:</dt> <dd>320×240</dd>
2088: </dl>
2089: </details>
2090: </section></pre>
2091:
2092: </div>
2093:
2094: <div class="example">
2095:
2096: <p>The following shows how a <code><a href="#the-details-element">details</a></code> element can be
2097: used to hide some controls by default:</p>
2098:
2099: <pre><details>
2100: <summary><label for=fn>Name & Extension:</label></summary>
2101: <p><input type=text id=fn name=fn value="Pillar Magazine.pdf">
2102: <p><label><input type=checkbox name=ext checked> Hide extension</label>
2103: </details></pre>
2104:
2105: <p>One could use this in conjunction with other <code><a href="#the-details-element">details</a></code>
2106: in a list to allow the user to collapse a set of fields down to a
2107: small set of headings, with the ability to open each one.</p>
2108:
2109: <p class="details-example"><img alt="" height="611" src="images/sample-details-1.png" width="345"><img alt="" height="666" src="images/sample-details-2.png" width="345"></p>
2110:
2111: <p>In these examples, the summary really just summarises what the
2112: controls can change, and not the actual values, which is less than
2113: ideal.</p>
2114:
2115: </div>
2116:
2117: <div class="example">
2118:
2119: <p>Because the <code title="attr-details-open"><a href="#attr-details-open">open</a></code>
2120: attribute is added and removed automatically as the user interacts
2121: with the control, it can be used in CSS to style the element
2122: differently based on its state. Here, a stylesheet is used to
2123: animate the color of the summary when the element is opened or
2124: closed:</p>
2125:
2126: <pre><style>
2127: details > summary { transition: color 1s; color: black; }
2128: details[open] > summary { color: red; }
2129: </style>
2130: <details>
2131: <summary>Automated Status: Operational</summary>
2132: <p>Velocity: 12m/s</p>
2133: <p>Direction: North</p>
2134: </details></pre>
2135:
2136: </div>
2137:
2138:
2139: <h4 id="the-summary-element"><span class="secno">4.11.2 </span>The <dfn><code>summary</code></dfn> element</h4>
2140:
2141: <dl class="element"><dt><a href="element-definitions.html#element-dfn-categories" title="element-dfn-categories">Categories</a>:</dt>
2142: <dd>None.</dd>
2143: <dt><a href="element-definitions.html#element-dfn-contexts" title="element-dfn-contexts">Contexts in which this element can be used</a>:</dt>
2144: <dd>As the first child of a <code><a href="#the-details-element">details</a></code> element.</dd>
2145: <dt><a href="element-definitions.html#element-dfn-content-model" title="element-dfn-content-model">Content model</a>:</dt>
2146: <dd><a href="content-models.html#phrasing-content-1">Phrasing content</a>.</dd>
2147: <dt><a href="element-definitions.html#element-dfn-attributes" title="element-dfn-attributes">Content attributes</a>:</dt>
2148: <dd><a href="global-attributes.html#global-attributes">Global attributes</a></dd>
2149: <dt><a href="element-definitions.html#element-dfn-dom" title="element-dfn-dom">DOM interface</a>:</dt><!--TOPIC:DOM APIs-->
2150: <dd>Uses <code><a href="elements.html#htmlelement">HTMLElement</a></code>.</dd>
2151: </dl><!--TOPIC:HTML--><p>The <code><a href="#the-summary-element">summary</a></code> element <a href="#represents">represents</a> a
2152: summary, caption, or legend for the rest of the contents of the
2153: <code><a href="#the-summary-element">summary</a></code> element's parent <code><a href="#the-details-element">details</a></code>
2154: element<span class="impl">, if any</span>.</p>
2155:
2156:
2157:
2158:
2159: <h4 id="the-command-element"><span class="secno">4.11.3 </span>The <dfn id="the-command"><code>command</code></dfn> element</h4>
2160:
2161: <dl class="element"><dt><a href="element-definitions.html#element-dfn-categories" title="element-dfn-categories">Categories</a>:</dt>
2162: <dd><a href="content-models.html#metadata-content-0">Metadata content</a>.</dd>
2163: <dd><a href="content-models.html#flow-content-1">Flow content</a>.</dd>
2164: <dd><a href="content-models.html#phrasing-content-1">Phrasing content</a>.</dd>
2165: <dt><a href="element-definitions.html#element-dfn-contexts" title="element-dfn-contexts">Contexts in which this element can be used</a>:</dt>
2166: <dd>Where <a href="content-models.html#metadata-content-0">metadata content</a> is expected.</dd>
2167: <dd>Where <a href="content-models.html#phrasing-content-1">phrasing content</a> is expected.</dd>
2168: <dt><a href="element-definitions.html#element-dfn-content-model" title="element-dfn-content-model">Content model</a>:</dt>
2169: <dd>Empty.</dd>
2170: <dt><a href="element-definitions.html#element-dfn-attributes" title="element-dfn-attributes">Content attributes</a>:</dt>
2171: <dd><a href="global-attributes.html#global-attributes">Global attributes</a></dd>
2172: <dd><code title="attr-command-type"><a href="#attr-command-type">type</a></code></dd>
2173: <dd><code title="attr-command-label"><a href="#attr-command-label">label</a></code></dd>
2174: <dd><code title="attr-command-icon"><a href="#attr-command-icon">icon</a></code></dd>
2175: <dd><code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code></dd>
2176: <dd><code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code></dd>
2177: <dd><code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code></dd>
2178: <!--<dd><code title="attr-command-default">default</code></dd>-->
2179: <dd><code title="attr-command-command"><a href="#attr-command-command">command</a></code></dd>
2180: <dd>Also, the <code title="attr-command-title"><a href="#attr-command-title">title</a></code> attribute has special semantics on this element.</dd>
2181: <dt><a href="element-definitions.html#element-dfn-dom" title="element-dfn-dom">DOM interface</a>:</dt><!--TOPIC:DOM APIs-->
2182: <dd>
2183: <pre class="idl">interface <dfn id="htmlcommandelement">HTMLCommandElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
2184: attribute DOMString <a href="#dom-command-type" title="dom-command-type">type</a>;
2185: attribute DOMString <a href="#dom-command-label" title="dom-command-label">label</a>;
2186: attribute DOMString <a href="#dom-command-icon" title="dom-command-icon">icon</a>;
2187: attribute boolean <a href="#dom-command-disabled" title="dom-command-disabled">disabled</a>;
2188: attribute boolean <a href="#dom-command-checked" title="dom-command-checked">checked</a>;
2189: attribute DOMString <a href="#dom-command-radiogroup" title="dom-command-radiogroup">radiogroup</a>;<!--
2190: attribute boolean <span title="dom-command-default">default</span>;-->
2191: readonly attribute <a href="elements.html#htmlelement">HTMLElement</a>? <a href="#dom-command-command" title="dom-command-command">command</a>;
2192: };</pre>
2193: </dd>
2194: </dl><!--TOPIC:HTML--><p>The <code><a href="#the-command-element">command</a></code> element represents a command that the user
2195: can invoke.</p>
2196:
2197: <p>A command can be explicitly part of a context menu or toolbar,
2198: using the <code><a href="#the-menu-element">menu</a></code> element. It can also be put anywhere
2199: else on a page, either just to define a keyboard shortcut, or to
2200: define a command that is then referenced from other
2201: <code><a href="#the-command-element">command</a></code> elements.</p>
2202:
2203: <p>A <code><a href="#the-command-element">command</a></code> element that uses the
2204: <code title="attr-command-type"><a href="#attr-command-type">type</a></code>,
2205: <code title="attr-command-label"><a href="#attr-command-label">label</a></code>,
2206: <code title="attr-command-icon"><a href="#attr-command-icon">icon</a></code>,
2207: <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code>,
2208: <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code>,
2209: <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code>,
2210: <!--<code title="attr-command-default">default</code>,--> and
2211: <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attributes defines a new
2212: command. A <code><a href="#the-command-element">command</a></code> element that uses the <code title="attr-command-command"><a href="#attr-command-command">command</a></code> <em>attribute</em>
2213: defines a command by reference to another one. This allows authors
2214: to define a command once, and set its state (e.g. whether it is
2215: active or disabled) in one place, and have all references to that
2216: command in the user interface change at the same time.</p>
2217:
2218: <hr><p>The <dfn id="attr-command-type" title="attr-command-type"><code>type</code></dfn>
2219: attribute indicates the kind of command: either a normal command
2220: with an associated action, or a state or option that can be toggled,
2221: or a selection of one item from a list of items.</p>
2222:
2223: <p>The attribute is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated attribute</a> with three
2224: keywords and states. The "<dfn id="attr-command-type-keyword-command" title="attr-command-type-keyword-command"><code>command</code></dfn>"
2225: keyword maps to the <a href="#attr-command-type-state-command" title="attr-command-type-state-command">Command</a> state, the
2226: "<dfn id="attr-command-type-keyword-checkbox" title="attr-command-type-keyword-checkbox"><code>checkbox</code></dfn>"
2227: keyword maps to the <a href="#attr-command-type-state-checkbox" title="attr-command-type-state-checkbox">Checkbox</a> state, and
2228: the "<dfn id="attr-command-type-keyword-radio" title="attr-command-type-keyword-radio"><code>radio</code></dfn>"
2229: keyword maps to the <a href="#attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</a> state. The
2230: <i>missing value default</i> is the <a href="#attr-command-type-state-command" title="attr-command-type-state-command">Command</a> state.</p>
2231:
2232: <dl><dt>The <dfn id="attr-command-type-state-command" title="attr-command-type-state-command">Command</dfn> state</dt>
2233:
2234: <dd><p>The element <a href="#represents">represents</a> a normal command with an associated action.</p></dd>
2235:
2236: <dt>The <dfn id="attr-command-type-state-checkbox" title="attr-command-type-state-checkbox">Checkbox</dfn> state</dt>
2237:
2238: <dd><p>The element <a href="#represents">represents</a> a state or option that can be toggled.</p></dd>
2239:
2240: <dt>The <dfn id="attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</dfn> state</dt>
2241:
2242: <dd><p>The element <a href="#represents">represents</a> a selection of one item from a list of items.</p></dd>
2243:
2244: </dl><p>The <dfn id="attr-command-label" title="attr-command-label"><code>label</code></dfn>
2245: attribute gives the name of the command, as shown to the user. The
2246: <code title="attr-command-label"><a href="#attr-command-label">label</a></code> attribute must be
2247: specified and must have a value that is not the empty string.</p>
2248:
2249: <p>The <dfn id="attr-command-title" title="attr-command-title"><code>title</code></dfn>
2250: attribute gives a hint describing the command, which might be shown
2251: to the user to help him.</p>
2252:
2253: <p>The <dfn id="attr-command-icon" title="attr-command-icon"><code>icon</code></dfn>
2254: attribute gives a picture that represents the command. If the
2255: attribute is specified, the attribute's value must contain a
2256: <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">valid non-empty URL potentially surrounded by
2257: spaces</a>. <span class="impl">To obtain the <a href="urls.html#absolute-url">absolute
2258: URL</a> of the icon when the attribute's value is not the empty
2259: string, the attribute's value must be <a href="urls.html#resolve-a-url" title="resolve a
2260: url">resolved</a> relative to the element. When the attribute is
2261: absent, or its value is the empty string, or <a href="urls.html#resolve-a-url" title="resolve a
2262: url">resolving</a> its value fails, there is no icon.</span></p>
2263: <!-- this is affected by the base URL being changed, so users of
2264: this should cache the image once they've fetched it once, at least
2265: until the relative url changes again -->
2266:
2267: <p>The <dfn id="attr-command-disabled" title="attr-command-disabled"><code>disabled</code></dfn> attribute
2268: is a <a href="common-microsyntaxes.html#boolean-attribute">boolean attribute</a> that, if present, indicates that
2269: the command is not available in the current state.</p>
2270:
2271: <p class="note">The distinction between <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> and <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> is subtle. A command would be
2272: disabled if, in the same context, it could be enabled if only
2273: certain aspects of the situation were changed. A command would be
2274: marked as hidden if, in that situation, the command will never be
2275: enabled. For example, in the context menu for a water faucet, the
2276: command "open" might be disabled if the faucet is already open, but
2277: the command "eat" would be marked hidden since the faucet could
2278: never be eaten.</p>
2279:
2280: <p>The <dfn id="attr-command-checked" title="attr-command-checked"><code>checked</code></dfn>
2281: attribute is a <a href="common-microsyntaxes.html#boolean-attribute">boolean attribute</a> that, if present,
2282: indicates that the command is selected. The attribute must be
2283: omitted unless the <code title="attr-command-type"><a href="#attr-command-type">type</a></code>
2284: attribute is in either the <a href="#attr-command-type-state-checkbox" title="attr-command-type-state-checkbox">Checkbox</a> state or
2285: the <a href="#attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</a>
2286: state.</p>
2287:
2288: <p>The <dfn id="attr-command-radiogroup" title="attr-command-radiogroup"><code>radiogroup</code></dfn>
2289: attribute gives the name of the group of commands that will be
2290: toggled when the command itself is toggled, for commands whose <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute has the value "<code title="">radio</code>". The scope of the name is the child list of
2291: the parent element. The attribute must be omitted unless the <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is in the <a href="#attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</a> state.</p>
2292:
2293: <!--
2294: <p>If the <code>command</code> element is used when <span
2295: title="menu generation">generating</span> a <span>context
2296: menu</span>, then the <dfn
2297: title="attr-command-default"><code>default</code></dfn> attribute
2298: indicates, if present, that the command is the one that would have
2299: been invoked if the user had directly activated the menu's subject
2300: instead of using its context menu. The <code
2301: title="attr-command-default">default</code> attribute is a
2302: <span>boolean attribute</span>. The attribute must be omitted unless
2303: the <code title="attr-command-type">type</code> attribute is in the
2304: <span title="attr-command-type-state-command">Command</span>
2305: state.</p>
2306:
2307: <div class="example">
2308:
2309: ...an example that shows an element that, if double-clicked,
2310: invokes an action, but that also has a context menu, showing the
2311: various <code>command</code> attributes off, and that has a default
2312: command...
2313:
2314: </div>
2315: -->
2316:
2317: <hr><p>If a <code><a href="#the-command-element">command</a></code> element <var title="">slave</var> has a
2318: <dfn id="attr-command-command" title="attr-command-command"><code>command</code></dfn>
2319: attribute, and <var title="">slave</var> is <a href="infrastructure.html#in-a-document">in a
2320: <code>Document</code></a>, and there is an element in that
2321: <code><a href="dom.html#document">Document</a></code> whose <a href="infrastructure.html#concept-id" title="concept-id">ID</a> has a
2322: value equal to the value of <var title="">slave</var>'s <code title="attr-command-command"><a href="#attr-command-command">command</a></code> attribute, and the first
2323: such element in <a href="infrastructure.html#tree-order">tree order</a>, hereafter <var title="">master</var>, itself <a href="#concept-command" title="concept-command">defines
2324: a command</a> and either is not a <code><a href="#the-command-element">command</a></code> element or
2325: does not itself have a <code title="attr-command-command"><a href="#attr-command-command">command</a></code> attribute, then the
2326: <dfn id="master-command">master command</dfn> of <var title="">slave</var> is <var title="">master</var>.</p>
2327:
2328: <p>An element with a
2329: <code title="attr-command-command"><a href="#attr-command-command">command</a></code>
2330: attribute must have a <a href="#master-command">master command</a> and must not have any
2331: <code title="attr-command-type"><a href="#attr-command-type">type</a></code>,
2332: <code title="attr-command-label"><a href="#attr-command-label">label</a></code>,
2333: <code title="attr-command-icon"><a href="#attr-command-icon">icon</a></code>,
2334: <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code>,
2335: <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code>, or
2336: <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code>
2337: attributes.</p>
2338:
2339: <hr><div class="impl">
2340:
2341: <p>The <dfn id="dom-command-type" title="dom-command-type"><code>type</code></dfn> IDL
2342: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the
2343: same name, <a href="common-dom-interfaces.html#limited-to-only-known-values">limited to only known values</a>.</p>
2344:
2345: <p>The <dfn id="dom-command-label" title="dom-command-label"><code>label</code></dfn>, <dfn id="dom-command-icon" title="dom-command-icon"><code>icon</code></dfn>, <dfn id="dom-command-disabled" title="dom-command-disabled"><code>disabled</code></dfn>, <dfn id="dom-command-checked" title="dom-command-checked"><code>checked</code></dfn>, and <dfn id="dom-command-radiogroup" title="dom-command-radiogroup"><code>radiogroup</code></dfn><!--,
2346: and <dfn title="dom-command-default"><code>default</code></dfn>-->
2347: IDL attributes must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content
2348: attributes of the same name.</p>
2349:
2350: <p>The <dfn id="dom-command-command" title="dom-command-command"><code>command</code></dfn>
2351: IDL attribute must return the <a href="#master-command">master command</a>, if any,
2352: or null otherwise.</p>
2353:
2354: <hr><p>If the element's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> is false
2355: (enabled) then the element's <a href="content-models.html#activation-behavior">activation behavior</a>
2356: depends on the element's <code title="attr-command-type"><a href="#attr-command-type">type</a></code>
2357: and <code title="attr-command-command"><a href="#attr-command-command">command</a></code> attributes, as
2358: follows:</p>
2359:
2360: <dl class="switch"><dt>If the element has a <a href="#master-command">master command</a> set by its
2361: <code title="attr-command-command"><a href="#attr-command-command">command</a></code> attribute</dt>
2362:
2363: <dd><p>The user agent must <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation
2364: steps</a> on the element's <a href="#master-command">master command</a>.</p></dd>
2365: <!-- we know it has a defined <span>activation behavior</span> if
2366: we get here -->
2367:
2368:
2369: <dt>If the <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is
2370: in the <a href="#attr-command-type-state-checkbox" title="attr-command-type-state-checkbox">Checkbox</a> state</dt>
2371:
2372: <dd><p>If the element has a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code> attribute, the UA must
2373: remove that attribute. Otherwise, the UA must add a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code> attribute, with the
2374: literal value <code title="">checked</code>.</p></dd>
2375:
2376:
2377: <dt>If the <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is
2378: in the <a href="#attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</a> state</dt>
2379:
2380: <dd><p>If the element has a parent, then the UA must walk the list
2381: of child nodes of that parent element, and for each node that is a
2382: <code><a href="#the-command-element">command</a></code> element, if that element has a <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code> attribute whose
2383: value exactly matches the current element's (treating missing <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code> attributes as if
2384: they were the empty string), and has a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code> attribute, must remove
2385: that attribute.</p>
2386:
2387: <p>Then, the element's <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code> attribute attribute
2388: must be set to the literal value <code title="">checked</code>.</p></dd>
2389:
2390:
2391: <dt>Otherwise</dt>
2392:
2393: <dd><p>The element's <a href="content-models.html#activation-behavior">activation behavior</a> is to do
2394: nothing.</p></dd>
2395:
2396: </dl><p class="note">Firing a synthetic <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event at the element does not cause
2397: any of the actions described above to happen.</p>
2398:
2399: <!-- v2COMMAND: Expose the Triggers facet again. -->
2400:
2401: <p>If the element's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> is true
2402: (disabled) then the element has no <a href="content-models.html#activation-behavior">activation
2403: behavior</a>.</p>
2404:
2405: </div>
2406:
2407: <p class="note"><code><a href="#the-command-element">command</a></code> elements are not rendered
2408: unless they <a href="#the-menu-element" title="menu">form part of a menu</a>.</p>
2409:
2410: <div class="example">
2411:
2412: <p>Here is an example of a toolbar with three buttons that let the
2413: user toggle between left, center, and right alignment. One could
2414: imagine such a toolbar as part of a text editor. The toolbar also
2415: has a separator followed by another button labeled "Publish",
2416: though that button is disabled.</p>
2417:
2418: <pre><menu type="toolbar">
2419: <command type="radio" radiogroup="alignment" checked="checked"
2420: label="Left" icon="icons/alL.png" onclick="setAlign('left')">
2421: <command type="radio" radiogroup="alignment"
2422: label="Center" icon="icons/alC.png" onclick="setAlign('center')">
2423: <command type="radio" radiogroup="alignment"
2424: label="Right" icon="icons/alR.png" onclick="setAlign('right')">
2425: <hr>
2426: <command type="command" disabled
2427: label="Publish" icon="icons/pub.png" onclick="publish()">
2428: </menu></pre>
2429:
2430: </div>
2431:
2432:
2433:
2434: <h4 id="the-menu-element"><span class="secno">4.11.4 </span>The <dfn id="menus"><code>menu</code></dfn> element</h4>
2435:
2436: <dl class="element"><dt><a href="element-definitions.html#element-dfn-categories" title="element-dfn-categories">Categories</a>:</dt>
2437: <dd><a href="content-models.html#flow-content-1">Flow content</a>.</dd>
2438: <dd>If the element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state: <a href="content-models.html#interactive-content-0">Interactive content</a>.</dd>
2439: <dd>If the element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state or the <a href="#list-state" title="list state">list</a> state: <a href="content-models.html#palpable-content-0">Palpable content</a>.</dd>
2440: <dt><a href="element-definitions.html#element-dfn-contexts" title="element-dfn-contexts">Contexts in which this element can be used</a>:</dt>
2441: <dd>Where <a href="content-models.html#flow-content-1">flow content</a> is expected.</dd>
2442: <dt><a href="element-definitions.html#element-dfn-content-model" title="element-dfn-content-model">Content model</a>:</dt>
2443: <dd>Either: Zero or more <code><a href="the-li-element.html#the-li-element">li</a></code> elements.</dd>
2444: <dd>Or: <a href="content-models.html#flow-content-1">Flow content</a>.</dd>
2445: <dt><a href="element-definitions.html#element-dfn-attributes" title="element-dfn-attributes">Content attributes</a>:</dt>
2446: <dd><a href="global-attributes.html#global-attributes">Global attributes</a></dd>
2447: <dd><code title="attr-menu-type"><a href="#attr-menu-type">type</a></code></dd>
2448: <dd><code title="attr-menu-label"><a href="#attr-menu-label">label</a></code></dd>
2449: <dt><a href="element-definitions.html#element-dfn-dom" title="element-dfn-dom">DOM interface</a>:</dt><!--TOPIC:DOM APIs-->
2450: <dd>
2451: <pre class="idl">interface <dfn id="htmlmenuelement">HTMLMenuElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
2452: attribute DOMString <a href="#dom-menu-type" title="dom-menu-type">type</a>;
2453: attribute DOMString <a href="#dom-menu-label" title="dom-menu-label">label</a>;
2454: };</pre>
2455: </dd></dl><!--TOPIC:HTML--><p>The <code><a href="#the-menu-element">menu</a></code> element represents a list of commands.</p>
2456:
2457: <!-- v2 idea: <menu> should get an icon, like <command> -->
2458:
2459: <p>The <dfn id="attr-menu-type" title="attr-menu-type"><code>type</code></dfn> attribute
2460: is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated attribute</a> indicating the kind of menu
2461: being declared. The attribute has three states. The <code title="attr-menu-type-context">context</code> keyword maps to the
2462: <dfn id="context-menu-state" title="context menu state">context menu</dfn> state, in which
2463: the element is declaring a context menu. The <code title="attr-menu-type-toolbar">toolbar</code> keyword maps to the
2464: <dfn id="toolbar-state" title="toolbar state">toolbar</dfn> state, in which the
2465: element is declaring a toolbar. The attribute may also be
2466: omitted. The <i>missing value default</i> is the <dfn id="list-state" title="list
2467: state">list</dfn> state, which indicates that the element is merely
2468: a list of commands that is neither declaring a context menu nor
2469: defining a toolbar.</p>
2470:
2471: <p>If a <code><a href="#the-menu-element">menu</a></code> element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#context-menu-state" title="context menu state">context menu</a> state, then the
2472: element <a href="#represents">represents</a> the commands of a context menu, and
2473: the user can only interact with the commands if that context menu is
2474: activated.</p>
2475:
2476: <p>If a <code><a href="#the-menu-element">menu</a></code> element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state, then the element
2477: <a href="#represents">represents</a> a list of active commands that the user can
2478: immediately interact with.</p>
2479:
2480: <p>If a <code><a href="#the-menu-element">menu</a></code> element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#list-state" title="list state">list</a> state, then the element either
2481: <a href="#represents">represents</a> an unordered list of items (each represented
2482: by an <code><a href="the-li-element.html#the-li-element">li</a></code> element), each of which represents a command
2483: that the user can perform or activate, or, if the element has no
2484: <code><a href="the-li-element.html#the-li-element">li</a></code> element children, <a href="content-models.html#flow-content-1">flow content</a>
2485: describing available commands.</p>
2486:
2487: <p>The <dfn id="attr-menu-label" title="attr-menu-label"><code>label</code></dfn>
2488: attribute gives the label of the menu. It is used by user agents to
2489: display nested menus in the UI. For example, a context menu
2490: containing another menu would use the nested menu's <code title="attr-menu-label"><a href="#attr-menu-label">label</a></code> attribute for the submenu's
2491: menu label.</p>
2492:
2493: <div class="impl">
2494:
2495: <p>The <dfn id="dom-menu-type" title="dom-menu-type"><code>type</code></dfn> and <dfn id="dom-menu-label" title="dom-menu-label"><code>label</code></dfn> IDL attributes must
2496: <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the same
2497: name.</p>
2498:
2499: </div>
2500:
2501:
2502:
2503: <h5 id="menus-intro"><span class="secno">4.11.4.1 </span>Introduction</h5>
2504:
2505: <p><i>This section is non-normative.</i></p>
2506: <p>The <code><a href="#the-menu-element">menu</a></code> element is used to define context menus and
2507: toolbars.</p>
2508:
2509: <p>For example, the following represents a toolbar with three menu
2510: buttons on it, each of which has a dropdown menu with a series of
2511: options:</p>
2512:
2513: <pre><menu type="toolbar">
2514: <li>
2515: <menu label="File">
2516: <button type="button" onclick="fnew()">New...</button>
2517: <button type="button" onclick="fopen()">Open...</button>
2518: <button type="button" onclick="fsave()">Save</button>
2519: <button type="button" onclick="fsaveas()">Save as...</button>
2520: </menu>
2521: </li>
2522: <li>
2523: <menu label="Edit">
2524: <button type="button" onclick="ecopy()">Copy</button>
2525: <button type="button" onclick="ecut()">Cut</button>
2526: <button type="button" onclick="epaste()">Paste</button>
2527: </menu>
2528: </li>
2529: <li>
2530: <menu label="Help">
2531: <li><a href="help.html">Help</a></li>
2532: <li><a href="about.html">About</a></li>
2533: </menu>
2534: </li>
2535: </menu></pre>
2536:
2537: <p>In a supporting user agent, this might look like this:</p>
2538:
2539: <p><img alt="A toolbar with three buttons, labeled 'File', 'Edit', and 'Help'; where if you select the 'Edit' button you get a drop-down menu with three more options, 'Copy', 'Cut', and 'Paste'." height="101" src="images/sample-toolbar-1.png" width="303"></p>
2540:
2541: <p>In a legacy user agent, the above would look like a bulleted list
2542: with three items, the first of which has four buttons, the second of
2543: which has three, and the third of which has two nested bullet points
2544: with two items consisting of links.</p>
2545:
2546: <hr><p>The following implements a similar toolbar, with a single button
2547: whose values, when selected, redirect the user to Web sites.</p>
2548:
2549: <pre><form action="redirect.cgi">
2550: <menu type="toolbar">
2551: <label for="goto">Go to...</label>
2552: <menu label="Go">
2553: <select id="goto"<!--
2554: onchange="if (this.options[this.selectedIndex].value)
2555: window.location = this.options[this.selectedIndex].value"-->>
2556: <option value="" selected="selected"> Select site: </option>
2557: <option value="http://www.apple.com/"> Apple </option>
2558: <option value="http://www.mozilla.org/"> Mozilla </option>
2559: <option value="http://www.opera.com/"> Opera </option>
2560: </select>
2561: <span><input type="submit" value="Go"></span>
2562: </menu>
2563: </menu>
2564: </form></pre>
2565:
2566: <p>The behavior in supporting user agents is similar to the example
2567: above, but here the legacy behavior consists of a single
2568: <code><a href="the-select-element.html#the-select-element">select</a></code> element with a submit button. The submit button
2569: doesn't appear in the toolbar, because it is not a child of the
2570: <code><a href="#the-menu-element">menu</a></code> element or of its <code><a href="the-li-element.html#the-li-element">li</a></code> children.</p>
2571:
2572:
2573:
2574: <div class="impl">
2575:
2576: <h5 id="building-menus-and-toolbars"><span class="secno">4.11.4.2 </span><dfn>Building menus and toolbars</dfn></h5>
2577:
2578: <p>A menu (or toolbar) consists of a list of zero or more of the
2579: following components:</p>
2580:
2581: <ul class="brief"><li><a href="#concept-command" title="concept-command">Commands</a>, which can be marked as default commands</li>
2582: <li>Separators</li>
2583: <li>Other menus (which allows the list to be nested)</li>
2584: </ul><p>The list corresponding to a particular <code><a href="#the-menu-element">menu</a></code> element
2585: is built by iterating over its child nodes. For each child node in
2586: <a href="infrastructure.html#tree-order">tree order</a>, the required behavior depends on what the
2587: node is, as follows:</p>
2588:
2589: <dl class="switch"><dt>An element that <a href="#concept-command" title="concept-command">defines a command</a></dt>
2590:
2591: <dd>Append the command to the menu, respecting its <a href="#concept-facet" title="concept-facet">facets</a><!-- we might need to be
2592: explicit about what this means for each facet, if testing shows
2593: this isn't well-implemented. e.g.: If there's an Icon facet for the
1.191 sruby 2594: command, it should be <span title="fetch">fetched</span><!- -FETCH-
2595: -> (this would be http-origin privacy-sensitive), and then that
2596: image should be associated with the command, such that each command
2597: only has its image fetched once, to prevent changes to the base URL
2598: from having effects after the image has been fetched once. (no need
2599: to resolve the Icon facet, it's an absolute URL) -->. <!--If the
2600: element is a <code>command</code> element with a <code
1.190 sruby 2601: title="attr-command-default">default</code> attribute, mark the
2602: command as being a default command.--></dd>
2603:
2604:
2605: <dt>An <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element</dt>
2606: <dt>An <code><a href="the-option-element.html#the-option-element">option</a></code> element that has a <code title="attr-option-value"><a href="the-option-element.html#attr-option-value">value</a></code> attribute set to the empty
2607: string, and has a <code title="attr-option-disabled"><a href="the-option-element.html#attr-option-disabled">disabled</a></code> attribute, and whose
2608: <code><a href="infrastructure.html#textcontent">textContent</a></code> consists of a string of one or more
2609: hyphens (U+002D HYPHEN-MINUS)</dt>
2610:
2611: <dd>Append a separator to the menu.</dd>
2612:
2613:
2614: <dt>An <code><a href="the-li-element.html#the-li-element">li</a></code> element</dt>
2615: <dt>A <code><a href="the-label-element.html#the-label-element">label</a></code> element</dt>
2616:
2617: <dd>Iterate over the children of the element.</dd>
2618:
2619:
2620: <dt>A <code><a href="#the-menu-element">menu</a></code> element with no <code title="attr-menu-label"><a href="#attr-menu-label">label</a></code> attribute</dt>
2621: <dt>A <code><a href="the-select-element.html#the-select-element">select</a></code> element</dt>
2622:
2623: <dd>Append a separator to the menu, then iterate over the children
2624: of the <code><a href="#the-menu-element">menu</a></code> or <code><a href="the-select-element.html#the-select-element">select</a></code> element, then
2625: append another separator.</dd>
2626:
2627: <!-- v2: we might want to support <select> in <label> as giving a named submenu -->
2628:
2629:
2630: <dt>A <code><a href="#the-menu-element">menu</a></code> element with a <code title="attr-menu-label"><a href="#attr-menu-label">label</a></code> attribute</dt>
2631: <dt>An <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element with a <code title="attr-menu-label"><a href="#attr-menu-label">label</a></code> attribute</dt>
2632:
2633: <dd>Append a submenu to the menu, using the value of the element's
2634: <code title="">label</code> attribute as the label of the menu. The
2635: submenu must be constructed by taking the element and creating a
2636: new menu for it using the complete process described in this
2637: section.</dd>
2638:
2639:
2640: <dt>Any other node</dt>
2641:
2642: <dd><a href="infrastructure.html#ignore">Ignore</a> the node.</dd>
2643:
2644: </dl><p>Once all the nodes have been processed as described above, the
2645: user agent must the post-process the menu as follows:</p>
2646:
2647: <ol><li>Except for separators, any menu item with no label, or whose
2648: label is the empty string, must be removed.</li>
2649:
2650: <li>Any sequence of two or more separators in a row must be
2651: collapsed to a single separator.</li>
2652:
2653: <li>Any separator at the start or end of the menu must be
2654: removed.</li>
2655:
2656: </ol></div>
2657:
2658:
2659:
2660:
2661: <h5 id="context-menus"><span class="secno">4.11.4.3 </span><dfn>Context menus</dfn></h5>
2662:
2663: <p>The <dfn id="attr-contextmenu" title="attr-contextmenu"><code>contextmenu</code></dfn>
2664: attribute gives the element's <a href="#context-menus" title="context menus">context
2665: menu</a>. The value must be the <a href="infrastructure.html#concept-id" title="concept-id">ID</a> of a <code><a href="#the-menu-element">menu</a></code> element in the
2666: DOM. <span class="impl">If the node that would be obtained by
2667: invoking the <code title="dom-Document-getElementById"><a href="infrastructure.html#dom-document-getelementbyid">getElementById()</a></code> method
2668: using the attribute's value as the only argument is null or not a
2669: <code><a href="#the-menu-element">menu</a></code> element, then the element has no assigned context
2670: menu. Otherwise, the element's assigned context menu is the element
2671: so identified.</span></p>
2672:
2673: <div class="impl">
2674:
2675: <p>When an element's context menu is requested (e.g. by the user
2676: right-clicking the element, or pressing a context menu key), the
2677: user agent must apply the appropriate rules from the following
2678: list:</p>
2679:
2680: <dl class="switch"><dt>If the user requested a context menu using a pointing device</dt>
2681:
2682: <dd><p>The user agent must fire an event with the name <code title="event-contextmenu">contextmenu</code>, that bubbles and is
2683: cancelable, and that uses the <code><a href="infrastructure.html#mouseevent-10">MouseEvent</a></code> interface, at
2684: the element for which the menu was requested. The context
2685: information of the event must be initialized to the same values as
2686: the last <code><a href="infrastructure.html#mouseevent-10">MouseEvent</a></code> user interaction event that was
2687: fired as part of the gesture that that was interpreted as a request
2688: for the context menu.</p></dd>
2689:
2690: <dt>Otherwise</dt>
2691:
2692: <dd><p>The user agent must <a href="#fire-a-synthetic-mouse-event" title="fire a synthetic mouse
2693: event">fire a synthetic mouse event named <code title="event-contextmenu">contextmenu</code></a> that bubbles
2694: and is cancelable at the element for which the menu was
2695: requested.</p></dd>
2696:
2697: </dl><p class="note">Typically, therefore, the firing of the <code title="event-contextmenu">contextmenu</code> event will be the
2698: default action of a <code title="mouseup">mouseup</code> or <code title="event-keyup">keyup</code> event. The exact sequence of events
2699: is UA-dependent, as it will vary based on platform conventions.</p>
2700:
2701: <p>The default action of the <code title="event-contextmenu">contextmenu</code> event depends on
2702: whether the element or one of its ancestors has a context menu
2703: assigned (using the <code title="attr-contextmenu"><a href="#attr-contextmenu">contextmenu</a></code> attribute) or not. If
2704: there is no context menu assigned, the default action must be for
2705: the user agent to show its default context menu, if it has one.</p>
2706:
2707: <p>If the element or one of its ancestors <em>does</em> have a
2708: context menu assigned, then the user agent must <a href="#fire-a-simple-event">fire a simple
2709: event</a> named <code title="event-show">show</code> at the
2710: <code><a href="#the-menu-element">menu</a></code> element of the context menu of the nearest
2711: ancestor (including the element itself) with one assigned.</p>
2712: <!-- v2: include modifier key information -->
2713:
2714: <p>The default action of <em>this</em> event is that the user agent
2715: must show a context menu <a href="#building-menus-and-toolbars" title="building menus and
2716: toolbars">built</a> from the <code><a href="#the-menu-element">menu</a></code> element.</p>
2717:
2718: <p>The user agent may also provide access to its default context
2719: menu, if any, with the context menu shown. For example, it could
2720: merge the menu items from the two menus together, or provide the
2721: page's context menu as a submenu of the default menu.</p>
2722:
2723: <p>If the user dismisses the menu without making a selection,
2724: nothing in particular happens.</p>
2725:
2726: <p>If the user selects a menu item that represents a <a href="#concept-command" title="concept-command">command</a>, then the UA must invoke
2727: that command's <a href="#command-facet-action" title="command-facet-Action">Action</a>.</p>
2728:
2729: <p>Context menus must not, while being shown, reflect changes in the
2730: DOM; they are constructed as the default action of the <code title="event-show">show</code> event and must remain as constructed
2731: until dismissed.</p>
2732:
2733: <p>User agents may provide means for bypassing the context menu
2734: processing model, ensuring that the user can always access the UA's
2735: default context menus. For example, the user agent could handle
2736: right-clicks that have the Shift key depressed in such a way that it
2737: does not fire the <code title="event-contextmenu">contextmenu</code>
2738: event and instead always shows the default context menu.</p>
2739:
2740: <p>The <dfn id="dom-contextmenu" title="dom-contextMenu"><code>contextMenu</code></dfn>
2741: IDL attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-contextmenu"><a href="#attr-contextmenu">contextmenu</a></code> content attribute.</p>
2742:
2743: </div>
2744:
2745: <div class="example">
2746:
2747: <p>Here is an example of a context menu for an input control:</p>
2748:
2749: <pre><form name="npc">
2750: <label>Character name: <input name=char type=text contextmenu=namemenu required></label>
2751: <menu type=context id=namemenu>
2752: <command label="Pick random name" onclick="document.forms.npc.elements.char.value = getRandomName()">
2753: <command label="Prefill other fields based on name" onclick="prefillFields(document.forms.npc.elements.char.value)">
2754: </menu>
2755: </form></pre>
2756:
2757: <p>This adds two items to the control's context menu, one called
2758: "Pick random name", and one called "Prefill other fields based on
2759: name". They invoke scripts that are not shown in the example
2760: above.</p>
2761:
2762: </div>
2763:
2764:
2765:
2766: <div class="impl">
2767:
2768: <h5 id="toolbars"><span class="secno">4.11.4.4 </span><dfn>Toolbars</dfn></h5>
2769:
2770: <p>When a <code><a href="#the-menu-element">menu</a></code> element has a <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state, then the user agent
2771: must <a href="#building-menus-and-toolbars" title="building menus and toolbars">build</a> the
2772: menu for that <code><a href="#the-menu-element">menu</a></code> element, and use the result in the
2773: rendering.</p>
2774:
2775: <p>The user agent must reflect changes made to the
2776: <code><a href="#the-menu-element">menu</a></code>'s DOM, by immediately <a href="#building-menus-and-toolbars" title="building menus
2777: and toolbars">rebuilding</a> the menu.</p>
2778:
2779: </div>
2780:
2781:
2782:
2783: <h4 id="commands"><span class="secno">4.11.5 </span>Commands</h4>
2784:
2785: <p>A <dfn id="concept-command" title="concept-command">command</dfn> is the abstraction
2786: behind menu items, buttons, and links. Once a command is defined,
2787: other parts of the interface can refer to the same command, allowing
2788: many access points to a single feature to share facets such as the
2789: <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a>.</p>
2790:
2791: <p id="facets">Commands are defined to have the following
2792: <dfn id="concept-facet" title="concept-facet">facets</dfn>:</p>
2793:
2794: <dl><dt><dfn id="command-facet-type" title="command-facet-Type">Type</dfn></dt>
2795:
2796: <dd>The kind of command: "command", meaning it is a normal command;
2797: "radio", meaning that triggering the command will, amongst other
2798: things, set the <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked
2799: State</a> to true (and probably uncheck some other commands); or
2800: "checkbox", meaning that triggering the command will, amongst other
2801: things, toggle the value of the <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>.</dd>
2802:
2803: <dt><dfn id="command-facet-id" title="command-facet-ID">ID</dfn></dt>
2804:
2805: <dd>The name of the command, for referring to the command from the
2806: markup or from script. If a command has no ID, it is an
2807: <dfn id="anonymous-command">anonymous command</dfn>.</dd>
2808:
2809: <dt><dfn id="command-facet-label" title="command-facet-Label">Label</dfn></dt>
2810:
2811: <dd>The name of the command as seen by the user.</dd>
2812:
2813: <dt><dfn id="command-facet-hint" title="command-facet-Hint">Hint</dfn></dt>
2814:
2815: <dd>A helpful or descriptive string that can be shown to the
2816: user.</dd>
2817:
2818: <dt><dfn id="command-facet-icon" title="command-facet-Icon">Icon</dfn></dt>
2819:
2820: <dd>An <a href="urls.html#absolute-url">absolute URL</a> identifying a graphical image that
2821: represents the action. A command might not have an Icon.</dd> <!--
2822: changing base URLs might change the icon -->
2823:
2824: <dt><dfn id="command-facet-accesskey" title="command-facet-AccessKey">Access Key</dfn></dt>
2825:
2826: <dd>A key combination selected by the user agent that triggers the
2827: command. A command might not have an Access Key.</dd>
2828:
2829: <dt><dfn id="command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</dfn></dt>
2830:
2831: <dd>Whether the command is hidden or not (basically, whether it
2832: should be shown in menus).</dd>
2833:
2834: <dt><dfn id="command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</dfn></dt>
2835:
2836: <dd>Whether the command is relevant and can be triggered or not.</dd>
2837:
2838: <dt><dfn id="command-facet-checkedstate" title="command-facet-CheckedState">Checked State</dfn></dt>
2839:
2840: <dd>Whether the command is checked or not.</dd>
2841:
2842: <dt><dfn id="command-facet-action" title="command-facet-Action">Action</dfn></dt>
2843:
2844: <dd>The actual effect that triggering the command will have. This
2845: could be a scripted event handler, a <a href="urls.html#url">URL</a> to which to
2846: <a href="#navigate">navigate</a>, or a form submission.</dd>
2847:
2848: <!-- v2COMMAND
2849: <dt><dfn title="command-facet-Triggers">Triggers</dfn></dt>
2850:
2851: <dd>The list of elements that can trigger the command. The element
2852: defining a command is always in the list of elements that can
2853: trigger the command. For anonymous commands, only the element
2854: defining the command is on the list, since other elements have no
2855: way to refer to it.</dd>
2856: -->
2857:
2858: </dl><!--TOPIC:DOM APIs--><p>These facets are exposed on elements using the <dfn id="command-api">command
2859: API</dfn>:</p>
2860:
2861: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-command-ro-commandType"><a href="#dom-command-ro-commandtype">commandType</a></code></dt>
2862:
2863: <dd>
2864:
2865: <p>Exposes the <a href="#command-facet-type" title="command-facet-Type">Type</a> facet of the command.</p>
2866:
2867: </dd>
2868:
2869: <dt><var title="">element</var> . <code title="dom-Element-id"><a href="infrastructure.html#dom-element-id">id</a></code></dt>
2870:
2871: <dd>
2872:
2873: <p>Exposes the <a href="#command-facet-id" title="command-facet-ID">ID</a> facet of the command.</p>
2874:
2875: </dd>
2876:
2877: <dt><var title="">element</var> . <code title="dom-command-ro-commandLabel"><a href="#dom-command-ro-commandlabel">commandLabel</a></code></dt>
2878:
2879: <dd>
2880:
2881: <p>Exposes the <a href="#command-facet-label" title="command-facet-Label">Label</a> facet of the command.</p>
2882:
2883: </dd>
2884:
2885: <dt><var title="">element</var> . <code title="dom-title"><a href="global-attributes.html#dom-title">title</a></code></dt>
2886:
2887: <dd>
2888:
2889: <p>Exposes the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> facet of the command.</p>
2890:
2891: </dd>
2892:
2893: <dt><var title="">element</var> . <code title="dom-command-ro-commandIcon"><a href="#dom-command-ro-commandicon">commandIcon</a></code></dt>
2894:
2895: <dd>
2896:
2897: <p>Exposes the <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> facet of the command.</p>
2898:
2899: </dd>
2900:
2901: <dt><var title="">element</var> . <code title="dom-accessKeyLabel"><a href="#dom-accesskeylabel">accessKeyLabel</a></code></dt>
2902:
2903: <dd>
2904:
2905: <p>Exposes the <a href="#command-facet-accesskey" title="command-facet-AccessKey">Access Key</a> facet of the command.</p>
2906:
2907: </dd>
2908:
2909: <dt><var title="">element</var> . <code title="dom-command-ro-commandHidden"><a href="#dom-command-ro-commandhidden">commandHidden</a></code></dt>
2910:
2911: <dd>
2912:
2913: <p>Exposes the <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a> facet of the command.</p>
2914:
2915: </dd>
2916:
2917: <dt><var title="">element</var> . <code title="dom-command-ro-commandDisabled"><a href="#dom-command-ro-commanddisabled">commandDisabled</a></code></dt>
2918:
2919: <dd>
2920:
2921: <p>Exposes the <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> facet of the command.</p>
2922:
2923: </dd>
2924:
2925: <dt><var title="">element</var> . <code title="dom-command-ro-commandChecked"><a href="#dom-command-ro-commandchecked">commandChecked</a></code></dt>
2926:
2927: <dd>
2928:
2929: <p>Exposes the <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a> facet of the command.</p>
2930:
2931: </dd>
2932:
2933: <dt><var title="">element</var> . <code title="dom-click"><a href="#dom-click">click</a></code>()</dt>
2934:
2935: <dd>
2936:
2937: <p>Triggers the <a href="#command-facet-action" title="command-facet-Action">Action</a> of the command.</p>
2938:
2939: </dd>
2940:
2941: <!--v2COMMAND
2942: <dt><var title="">element</var> . <code title="dom-command-ro-commandTriggers">commandTriggers</code></dt>
2943:
2944: <dd>
2945:
2946: <p>Exposes the <span title="command-facet-Triggers">Triggers</span> facet of the command.</p>
2947:
2948: </dd>
2949: -->
2950:
2951: </dl><div class="impl">
2952:
2953: <p>The <dfn id="dom-command-ro-commandtype" title="dom-command-ro-commandType"><code>commandType</code></dfn>
2954: attribute must return a string whose value is either "<code title="">command</code>", "<code title="">radio</code>", or "<code title="">checkbox</code>", depending on whether the <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command defined by the
2955: element is "command", "radio", or "checkbox" respectively. If the
2956: element does not define a command, it must return null.</p>
2957:
2958: <p>The <dfn id="dom-command-ro-commandlabel" title="dom-command-ro-commandLabel"><code>commandLabel</code></dfn>
2959: attribute must return the command's <a href="#command-facet-label" title="command-facet-Label">Label</a>, or null if the element
2960: does not define a command or does not specify a <a href="#command-facet-label" title="command-facet-Label">Label</a>.</p>
2961:
2962: <p>The <dfn id="dom-command-ro-commandicon" title="dom-command-ro-commandIcon"><code>commandIcon</code></dfn>
2963: attribute must return the <a href="urls.html#absolute-url">absolute URL</a> of the command's
2964: <a href="#command-facet-icon" title="command-facet-Icon">Icon</a>. If the element does
2965: not specify an icon, or if the element does not define a command,
2966: then the attribute must return null.</p>
2967:
2968: <p>The <dfn id="dom-command-ro-commandhidden" title="dom-command-ro-commandHidden"><code>commandHidden</code></dfn>
2969: attribute must return true if the command's <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a> is that the
2970: command is hidden, and false if the command is not hidden. If the
2971: element does not define a command, the attribute must return
2972: null.</p>
2973:
2974: <p>The <dfn id="dom-command-ro-commanddisabled" title="dom-command-ro-commandDisabled"><code>commandDisabled</code></dfn>
2975: attribute must return true if the command's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> is that
2976: the command is disabled, and false if the command is not disabled.
2977: This attribute is not affected by the command's <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>. If the
2978: element does not define a command, the attribute must return
2979: null.</p>
2980:
2981: <p>The <dfn id="dom-command-ro-commandchecked" title="dom-command-ro-commandChecked"><code>commandChecked</code></dfn>
2982: attribute must return true if the command's <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a> is that the
2983: command is checked, and false if it is that the command is not
2984: checked. If the element does not define a command, the attribute
2985: must return null.</p>
2986:
2987: <!--v2COMMAND
2988: <p>The <dfn
2989: title="dom-command-ro-commandTriggers"><code>commandTriggers</code></dfn>
2990: attribute must return a list containing the elements that can
2991: trigger the command (the command's <span
2992: title="command-facet-Triggers">Triggers</span>). The list must be
2993: <span>live</span>. The same object must be returned each time. While
2994: the element does not define a command, the list must be empty.</p>
2995: -->
2996:
2997: <p class="note">The <a href="#command-facet-id" title="command-facet-ID">ID</a> facet
2998: is exposed by the <code title="dom-Element-id"><a href="infrastructure.html#dom-element-id">id</a></code> IDL attribute, the
2999: <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> facet is exposed by the
3000: <code title="dom-title"><a href="global-attributes.html#dom-title">title</a></code> IDL attribute, and the <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> facet is exposed by
3001: the <code title="dom-accessKeyLabel"><a href="#dom-accesskeylabel">accessKeyLabel</a></code> IDL
3002: attribute.</p>
3003:
3004: </div>
3005:
3006: <hr><dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-commands"><a href="#dom-document-commands">commands</a></code></dt>
3007: <dd>
3008: <p>Returns an <code><a href="infrastructure.html#htmlcollection">HTMLCollection</a></code> of the elements in the
3009: <code><a href="dom.html#document">Document</a></code> that define commands and have IDs.</p>
3010: </dd>
3011:
3012: </dl><div class="impl">
3013:
3014: <p>The <dfn id="dom-document-commands" title="dom-document-commands"><code>commands</code></dfn> attribute
3015: of the document's <code><a href="dom.html#document">Document</a></code> interface must return an
3016: <code><a href="infrastructure.html#htmlcollection">HTMLCollection</a></code> rooted at the <code><a href="dom.html#document">Document</a></code>
3017: node, whose filter matches only elements that <a href="#concept-command" title="concept-command">define commands</a> and have <a href="#command-facet-id" title="command-facet-ID">IDs</a>.</p>
3018:
3019: </div>
3020: <!--TOPIC:HTML-->
3021:
3022: <hr><p>User agents may expose the <a href="#concept-command" title="concept-command">commands</a> whose <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a> facet is false
3023: (visible) and whose elements are <a href="infrastructure.html#in-a-document">in a
3024: <code>Document</code></a>. For example, such commands could be
3025: listed in the user agent's menu bar. User agents are encouraged to
3026: do this especially for commands that have <a href="#command-facet-accesskey" title="command-facet-AccessKey">Access Keys</a>, as a way to
3027: advertise those keys to the user.</p>
3028:
3029:
3030: <div class="impl">
3031:
3032: <h5 id="using-the-a-element-to-define-a-command"><span class="secno">4.11.5.1 </span><dfn title="a-command">Using the <code>a</code> element to define a command</dfn></h5>
3033:
3034: <p>An <code><a href="the-a-element.html#the-a-element">a</a></code> element with an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3035:
3036: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3037: is "command".</p>
3038:
3039: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3040: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3041: element, if the attribute is present and not empty. Otherwise the
3042: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3043:
3044: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3045: is the string given by the element's <code><a href="infrastructure.html#textcontent">textContent</a></code> IDL
3046: attribute.</p>
3047:
3048: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3049: is the value of the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute
3050: of the element. If the attribute is not present, the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> is the empty string.</p>
3051:
3052: <p>The <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> of the command
3053: is the <a href="urls.html#absolute-url">absolute URL</a> obtained from <a href="urls.html#resolve-a-url" title="resolve
3054: a url">resolving</a> the value of the <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute of the first
3055: <code><a href="the-img-element.html#the-img-element">img</a></code> element descendant of the element in <a href="infrastructure.html#tree-order">tree
3056: order</a>, relative to that element, if there is such an element
3057: and resolving its attribute is successful. Otherwise, there is no
3058: <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the command.</p>
3059:
3060: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3061: command is the element's <a href="#assigned-access-key">assigned access key</a>, if
3062: any.</p>
3063:
3064: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3065: of the command is true (hidden) if the element has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute, and false
3066: otherwise.</p>
3067:
3068: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3069: State</a> facet of the command is true if the element or one of
3070: its ancestors is <a href="#inert">inert</a>, and false otherwise.</p>
3071:
3072: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3073: of the command is always false. (The command is never checked.)</p>
3074:
3075: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3076: command, if the element has a defined <a href="content-models.html#activation-behavior">activation
3077: behavior</a>, is to <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation
3078: steps</a> on the element. Otherwise, it is just to <a href="#fire-a-click-event">fire a
3079: <code title="event-click">click</code> event</a> at the
3080: element.</p>
3081:
3082:
3083: <h5 id="using-the-button-element-to-define-a-command"><span class="secno">4.11.5.2 </span><dfn title="button-command">Using the <code>button</code> element to define a command</dfn></h5>
3084:
3085: <p>A <code><a href="the-button-element.html#the-button-element">button</a></code> element always <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3086:
3087: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a>, <a href="#command-facet-id" title="command-facet-ID">ID</a>, <a href="#command-facet-label" title="command-facet-Label">Label</a>, <a href="#command-facet-hint" title="command-facet-Hint">Hint</a>, <a href="#command-facet-icon" title="command-facet-Icon">Icon</a>, <a href="#command-facet-accesskey" title="command-facet-AccessKey">Access Key</a>, <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>, <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>, and <a href="#command-facet-action" title="command-facet-Action">Action</a> facets of the command are
3088: determined <a href="#using-the-a-element-to-define-a-command" title="a-command">as for <code>a</code>
3089: elements</a> (see the previous section).</p>
3090:
3091: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3092: State</a> of the command is true if the element or one of its
3093: ancestors is <a href="#inert">inert</a>, or if the element's <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a> state is set, and false
3094: otherwise.</p>
3095:
3096:
3097: <h5 id="using-the-input-element-to-define-a-command"><span class="secno">4.11.5.3 </span><dfn title="input-command">Using the <code>input</code> element to define a command</dfn></h5>
3098:
3099: <p>An <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in one of the <a href="states-of-the-type-attribute.html#submit-button-state-(type=submit)" title="attr-input-type-submit">Submit Button</a>, <a href="states-of-the-type-attribute.html#reset-button-state-(type=reset)" title="attr-input-type-reset">Reset Button</a>, <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a>, <a href="states-of-the-type-attribute.html#button-state-(type=button)" title="attr-input-type-button">Button</a>, <a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)" title="attr-input-type-radio">Radio Button</a>, or <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> states <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3100:
3101: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3102: is "radio" if the <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>
3103: attribute is in the <code title="attr-input-type-radio"><a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)">Radio
3104: Button</a></code> state, "checkbox" if the <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <code title="attr-input-type-checkbox"><a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)">Checkbox</a></code> state, and
3105: "command" otherwise.</p>
3106:
3107: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3108: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3109: element, if the attribute is present and not empty. Otherwise the
3110: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3111:
3112: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3113: depends on the Type of the command:</p>
3114:
3115: <p>If the <a href="#command-facet-type" title="command-facet-Type">Type</a> is "command",
3116: then it is the string given by the <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code> attribute, if any, and a
3117: UA-dependent, locale-dependent value that the UA uses to label the
3118: button itself if the attribute is absent.</p>
3119:
3120: <p>Otherwise, the <a href="#command-facet-type" title="command-facet-Type">Type</a> is
3121: "radio" or "checkbox". If the element is a <a href="the-label-element.html#labeled-control">labeled
3122: control</a>, the <code><a href="infrastructure.html#textcontent">textContent</a></code> of the first
3123: <code><a href="the-label-element.html#the-label-element">label</a></code> element in <a href="infrastructure.html#tree-order">tree order</a> whose
3124: <a href="the-label-element.html#labeled-control">labeled control</a> is the element in question is the <a href="#command-facet-label" title="command-facet-Label">Label</a> (in DOM terms, this is the
3125: string given by <code><var title="">element</var>.labels[0].textContent</code>). Otherwise,
3126: the value of the <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code>
3127: attribute, if present, is the <a href="#command-facet-label" title="command-facet-Label">Label</a>. Otherwise, the <a href="#command-facet-label" title="command-facet-Label">Label</a> is the empty string.</p>
3128:
3129: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3130: is the value of the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute
3131: of the <code><a href="the-input-element.html#the-input-element">input</a></code> element. If the attribute is not present, the
3132: <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> is the empty
3133: string.</p>
3134:
3135: <p>If the element's <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>
3136: attribute is in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image
3137: Button</a> state, and the element has a <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute, and that attribute's
3138: value can be successfully <a href="urls.html#resolve-a-url" title="resolve a
3139: url">resolved</a> relative to the element, then the <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> of the command is the
3140: <a href="urls.html#absolute-url">absolute URL</a> obtained from resolving that attribute
3141: that way. Otherwise, there is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the command.</p>
3142:
3143: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3144: command is the element's <a href="#assigned-access-key">assigned access key</a>, if
3145: any.</p>
3146:
3147: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3148: of the command is true (hidden) if the element has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute, and false
3149: otherwise.</p>
3150:
3151: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3152: State</a> of the command is true if the element or one of its
3153: ancestors is <a href="#inert">inert</a>, or if the element's <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a> state is set, and false
3154: otherwise.</p>
3155:
3156: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3157: of the command is true if the command is of <a href="#command-facet-type" title="command-facet-Type">Type</a> "radio" or "checkbox" and the
3158: element is <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checked</a>
3159: attribute, and false otherwise.</p>
3160:
3161: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3162: command, if the element has a defined <a href="content-models.html#activation-behavior">activation
3163: behavior</a>, is to <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation
3164: steps</a> on the element. Otherwise, it is just to <a href="#fire-a-click-event">fire a
3165: <code title="event-click">click</code> event</a> at the
3166: element.</p>
3167:
3168:
3169: <h5 id="using-the-option-element-to-define-a-command"><span class="secno">4.11.5.4 </span><dfn title="option-command">Using the <code>option</code> element to define a command</dfn></h5>
3170:
3171: <p>An <code><a href="the-option-element.html#the-option-element">option</a></code> element with an ancestor
3172: <code><a href="the-select-element.html#the-select-element">select</a></code> element and either no <code title="attr-option-value"><a href="the-option-element.html#attr-option-value">value</a></code> attribute or a <code title="attr-option-value"><a href="the-option-element.html#attr-option-value">value</a></code> attribute that is not the
3173: empty string <a href="#concept-command" title="concept-command">defines a
3174: command</a>.</p>
3175:
3176: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3177: is "radio" if the <code><a href="the-option-element.html#the-option-element">option</a></code>'s nearest ancestor
3178: <code><a href="the-select-element.html#the-select-element">select</a></code> element has no <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">multiple</a></code> attribute, and
3179: "checkbox" if it does.</p>
3180:
3181: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3182: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3183: element, if the attribute is present and not empty. Otherwise the
3184: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3185:
3186: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3187: is the value of the <code><a href="the-option-element.html#the-option-element">option</a></code> element's <code title="attr-option-label"><a href="the-option-element.html#attr-option-label">label</a></code> attribute, if there is one,
3188: or else the value of <code><a href="the-option-element.html#the-option-element">option</a></code> element's
3189: <code><a href="infrastructure.html#textcontent">textContent</a></code> IDL attribute, with <a href="common-microsyntaxes.html#strip-leading-and-trailing-whitespace" title="strip
3190: leading and trailing whitespace">leading and trailing whitespace
3191: stripped</a>, and with any sequences of two or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a> replaced by a single
3192: U+0020 SPACE character.</p>
3193:
3194: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3195: is the string given by the element's <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute, if any, and the empty
3196: string if the attribute is absent.</p>
3197:
3198: <p>There is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the
3199: command.</p>
3200:
3201: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3202: command is the element's <a href="#assigned-access-key">assigned access key</a>, if
3203: any.</p>
3204:
3205: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3206: of the command is true (hidden) if the element has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute, and false
3207: otherwise.</p>
3208:
3209: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3210: State</a> of the command is true if the element is <a href="the-option-element.html#concept-option-disabled" title="concept-option-disabled">disabled</a>, or if its nearest
3211: ancestor <code><a href="the-select-element.html#the-select-element">select</a></code> element is <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>, or if it or one of its
3212: ancestors is <a href="#inert">inert</a>, and false otherwise.</p>
3213:
3214: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3215: of the command is true (checked) if the element's <a href="the-option-element.html#concept-option-selectedness" title="concept-option-selectedness">selectedness</a> is true, and
3216: false otherwise.</p>
3217:
3218: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3219: command depends on its <a href="#command-facet-type" title="command-facet-Type">Type</a>. If the command is of <a href="#command-facet-type" title="command-facet-Type">Type</a> "radio" then it must <a href="the-select-element.html#concept-select-pick" title="concept-select-pick">pick</a> the <code><a href="the-option-element.html#the-option-element">option</a></code>
3220: element. Otherwise, it must <a href="the-select-element.html#concept-select-toggle" title="concept-select-toggle">toggle</a> the <code><a href="the-option-element.html#the-option-element">option</a></code>
3221: element.</p>
3222:
3223:
3224:
3225: <h5 id="using-the-command-element-to-define-a-command"><span class="secno">4.11.5.5 </span>Using the <dfn title="command-element"><code>command</code></dfn> element to define
3226: a command</h5>
3227:
3228: <p>A <code><a href="#the-command-element">command</a></code> element that does not have a <code title="attr-command-command"><a href="#attr-command-command">command</a></code> attribute <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3229:
3230: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3231: is "radio" if the <code><a href="#the-command-element">command</a></code>'s <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is
3232: "<code>radio</code>", "checkbox" if the attribute's value is
3233: "<code>checkbox</code>", and "command" otherwise.</p>
3234:
3235: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3236: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3237: element, if the attribute is present and not empty. Otherwise the
3238: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3239:
3240: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3241: is the value of the element's <code title="attr-command-label"><a href="#attr-command-label">label</a></code> attribute, if there is one,
3242: or the empty string if it doesn't.</p>
3243:
3244: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3245: is the string given by the element's <code title="attr-command-title"><a href="#attr-command-title">title</a></code> attribute, if any, and the
3246: empty string if the attribute is absent.</p>
3247:
3248: <p>The <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the command
3249: is the <a href="urls.html#absolute-url">absolute URL</a> obtained from <a href="urls.html#resolve-a-url" title="resolve
3250: a url">resolving</a> the value of the element's <code title="attr-command-icon"><a href="#attr-command-icon">icon</a></code> attribute, relative to the
3251: element, if it has such an attribute and resolving it is
3252: successful. Otherwise, there is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the command.</p>
3253:
3254: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3255: command is the element's <a href="#assigned-access-key">assigned access key</a>, if
3256: any.</p>
3257:
3258: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3259: of the command is true (hidden) if the element has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute, and false
3260: otherwise.</p>
3261:
3262: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3263: State</a> of the command is true if the element or one of its
3264: ancestors is <a href="#inert">inert</a>, or if the element has a <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> attribute, and false
3265: otherwise.</p>
3266:
3267: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3268: of the command is true (checked) if the element has a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code> attribute, and false
3269: otherwise.</p>
3270:
3271: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3272: command, if the element has a defined <a href="content-models.html#activation-behavior">activation
3273: behavior</a>, is to <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation
3274: steps</a> on the element. Otherwise, it is just to <a href="#fire-a-click-event">fire a
3275: <code title="event-click">click</code> event</a> at the
3276: element.</p>
3277:
3278:
3279:
3280: <h5 id="using-the-command-attribute-on-command-elements-to-define-a-command-indirectly"><span class="secno">4.11.5.6 </span><dfn title="command-command-command">Using the <code title="attr-command-command">command</code> attribute on <code>command</code> elements to define a command indirectly</dfn></h5>
3281:
3282: <p>A <code><a href="#the-command-element">command</a></code> element with a <a href="#master-command">master command</a>
3283: <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3284:
3285: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3286: is the <a href="#command-facet-type" title="command-facet-Type">Type</a> of the
3287: <a href="#master-command">master command</a>.</p>
3288:
3289: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3290: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3291: element, if the attribute is present and not empty. Otherwise the
3292: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3293:
3294: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3295: is the <a href="#command-facet-label" title="command-facet-Label">Label</a> of the
3296: <a href="#master-command">master command</a>.</p>
3297:
3298: <p>If the element has a <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code>
3299: attribute, then the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of
3300: the command is the value of that <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute. Otherwise, the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command is the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the <a href="#master-command">master
3301: command</a>.</p>
3302:
3303: <p>The <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> of the command
3304: is the <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> of the
3305: <a href="#master-command">master command</a>.</p>
3306:
3307: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3308: command is the element's <a href="#assigned-access-key">assigned access key</a>, if
3309: any.</p>
3310:
3311: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3312: of the command is the <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden
3313: State</a> of the <a href="#master-command">master command</a>.</p>
3314:
3315: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3316: State</a> of the command is the <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> of the
3317: <a href="#master-command">master command</a>.</p>
3318:
3319: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked
3320: State</a> of the command is the <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a> of the
3321: <a href="#master-command">master command</a>.</p>
3322:
3323: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3324: command is to invoke the <a href="#command-facet-action" title="command-facet-Action">Action</a> of the <a href="#master-command">master
3325: command</a>.</p>
3326:
3327:
3328:
3329: <h5 id="using-the-accesskey-attribute-on-a-label-element-to-define-a-command"><span class="secno">4.11.5.7 </span><dfn title="label-command">Using the <code title="attr-accesskey">accesskey</code> attribute on a <code>label</code> element to define a command</dfn></h5>
3330:
3331: <p>A <code><a href="the-label-element.html#the-label-element">label</a></code> element that has an <a href="#assigned-access-key">assigned access
3332: key</a> and a <a href="the-label-element.html#labeled-control">labeled control</a> and whose
3333: <a href="the-label-element.html#labeled-control">labeled control</a> <a href="#concept-command" title="concept-command">defines a
3334: command</a>, itself <a href="#concept-command" title="concept-command">defines a
3335: command</a>.</p>
3336:
3337: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3338: is "command".</p>
3339:
3340: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3341: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3342: element, if the attribute is present and not empty. Otherwise the
3343: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3344:
3345: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3346: is the string given by the element's <code><a href="infrastructure.html#textcontent">textContent</a></code> IDL
3347: attribute.</p>
3348:
3349: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3350: is the value of the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute
3351: of the element.</p>
3352:
3353: <p>There is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the
3354: command.</p>
3355:
3356: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3357: command is the element's <a href="#assigned-access-key">assigned access key</a>.</p>
3358:
3359: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>,
3360: <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a>, and
3361: <a href="#command-facet-action" title="command-facet-Action">Action</a> facets of the
3362: command are the same as the respective facets of the element's
3363: <a href="the-label-element.html#labeled-control">labeled control</a>.</p>
3364:
3365: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3366: of the command is always false. (The command is never checked.)</p>
3367:
3368:
3369:
3370: <h5 id="using-the-accesskey-attribute-on-a-legend-element-to-define-a-command"><span class="secno">4.11.5.8 </span><dfn title="legend-command">Using the <code title="attr-accesskey">accesskey</code> attribute on a <code>legend</code> element to define a command</dfn></h5>
3371:
3372: <p>A <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element that has an <a href="#assigned-access-key">assigned access
3373: key</a> and is a child of a <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element that
3374: has a descendant that is not a descendant of the <code><a href="the-legend-element.html#the-legend-element">legend</a></code>
3375: element and is neither a <code><a href="the-label-element.html#the-label-element">label</a></code> element nor a
3376: <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element but that <a href="#concept-command" title="concept-command">defines a command</a>, itself <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3377:
3378: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3379: is "command".</p>
3380:
3381: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3382: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3383: element, if the attribute is present and not empty. Otherwise the
3384: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3385:
3386: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3387: is the string given by the element's <code><a href="infrastructure.html#textcontent">textContent</a></code> IDL
3388: attribute.</p>
3389:
3390: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3391: is the value of the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute
3392: of the element.</p>
3393:
3394: <p>There is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the
3395: command.</p>
3396:
3397: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3398: command is the element's <a href="#assigned-access-key">assigned access key</a>.</p>
3399:
3400: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>,
3401: <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a>, and
3402: <a href="#command-facet-action" title="command-facet-Action">Action</a> facets of the
3403: command are the same as the respective facets of the first element
3404: in <a href="infrastructure.html#tree-order">tree order</a> that is a descendant of the parent of the
3405: <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element that <a href="#concept-command" title="concept-command">defines a command</a> but is not a
3406: descendant of the <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element and is neither a
3407: <code><a href="the-label-element.html#the-label-element">label</a></code> nor a <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element.</p>
3408:
3409: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3410: of the command is always false. (The command is never checked.)</p>
3411:
3412:
3413:
3414: <h5 id="using-the-accesskey-attribute-to-define-a-command-on-other-elements"><span class="secno">4.11.5.9 </span><dfn title="accesskey-command">Using the <code title="attr-accesskey">accesskey</code> attribute to define a command on other elements</dfn></h5>
3415:
3416: <p>An element that has an <a href="#assigned-access-key">assigned access key</a> <a href="#concept-command" title="concept-command">defines a command</a>.</p>
3417:
3418: <p>If one of the earlier sections that define elements that <a href="#concept-command" title="concept-command">define commands</a> define that this
3419: element <a href="#concept-command" title="concept-command">defines a command</a>, then
3420: that section applies to this element, and this section does not.
3421: Otherwise, this section applies to that element.</p>
3422:
3423: <p>The <a href="#command-facet-type" title="command-facet-Type">Type</a> of the command
3424: is "command".</p>
3425:
3426: <p>The <a href="#command-facet-id" title="command-facet-ID">ID</a> of the command is
3427: the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute of the
3428: element, if the attribute is present and not empty. Otherwise the
3429: command is an <a href="#anonymous-command">anonymous command</a>.</p>
3430:
3431: <p>The <a href="#command-facet-label" title="command-facet-Label">Label</a> of the command
3432: depends on the element. If the element is a <a href="the-label-element.html#labeled-control">labeled
3433: control</a>, the <code><a href="infrastructure.html#textcontent">textContent</a></code> of the first
3434: <code><a href="the-label-element.html#the-label-element">label</a></code> element in <a href="infrastructure.html#tree-order">tree order</a> whose
3435: <a href="the-label-element.html#labeled-control">labeled control</a> is the element in question is the <a href="#command-facet-label" title="command-facet-Label">Label</a> (in DOM terms, this is the
3436: string given by <code><var title="">element</var>.labels[0].textContent</code>). Otherwise, the
3437: <a href="#command-facet-label" title="command-facet-Label">Label</a> is the
3438: <code><a href="infrastructure.html#textcontent">textContent</a></code> of the element itself.</p>
3439:
3440: <p>The <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> of the command
3441: is the value of the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute
3442: of the element. If the attribute is not present, the <a href="#command-facet-hint" title="command-facet-Hint">Hint</a> is the empty string.</p>
3443:
3444: <p>There is no <a href="#command-facet-icon" title="command-facet-Icon">Icon</a> for the
3445: command.</p>
3446:
3447: <p>The <a href="#command-facet-accesskey" title="command-facet-AccessKey">AccessKey</a> of the
3448: command is the element's <a href="#assigned-access-key">assigned access key</a>.</p>
3449:
3450: <p>The <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden State</a>
3451: of the command is true (hidden) if the element has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute, and false
3452: otherwise.</p>
3453:
3454: <p>The <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled
3455: State</a> of the command is true if the element or one of its
3456: ancestors is <a href="#inert">inert</a>, and false otherwise.</p>
3457:
3458: <p>The <a href="#command-facet-checkedstate" title="command-facet-CheckedState">Checked State</a>
3459: of the command is always false. (The command is never checked.)</p>
3460:
3461: <p>The <a href="#command-facet-action" title="command-facet-Action">Action</a> of the
3462: command is to run the following steps:</p>
3463:
3464: <ol><li>If the element is <a href="#focusable">focusable</a>, run the
3465: <a href="#focusing-steps">focusing steps</a> for the element.</li>
3466:
3467: <li>If the element has a defined <a href="content-models.html#activation-behavior">activation behavior</a>,
3468: <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation steps</a> on the
3469: element.</li>
3470:
3471: <li>Otherwise, if the element does not have a defined
3472: <a href="content-models.html#activation-behavior">activation behavior</a>, <a href="#fire-a-click-event">fire a <code title="event-click">click</code> event</a> at the element.</li>
3473:
3474: </ol></div>
3475:
3476:
3477: <h4 id="the-dialog-element"><span class="secno">4.11.6 </span>The <dfn><code>dialog</code></dfn> element</h4>
3478:
3479: <dl class="element"><dt><a href="element-definitions.html#element-dfn-categories" title="element-dfn-categories">Categories</a>:</dt>
3480: <dd><a href="content-models.html#flow-content-1">Flow content</a>.</dd>
3481: <dd><a href="headings-and-sections.html#sectioning-root">Sectioning root</a>.</dd>
3482: <dt><a href="element-definitions.html#element-dfn-contexts" title="element-dfn-contexts">Contexts in which this element can be used</a>:</dt>
3483: <dd>Where <a href="content-models.html#flow-content-1">flow content</a> is expected.</dd>
3484: <dd>As a child of a <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element.</dd>
3485: <dd>As a child of a <code><a href="the-th-element.html#the-th-element">th</a></code> element.</dd>
3486: <dt><a href="element-definitions.html#element-dfn-content-model" title="element-dfn-content-model">Content model</a>:</dt>
3487: <dd><a href="content-models.html#flow-content-1">Flow content</a>.</dd>
3488: <dt><a href="element-definitions.html#element-dfn-attributes" title="element-dfn-attributes">Content attributes</a>:</dt>
3489: <dd><a href="global-attributes.html#global-attributes">Global attributes</a></dd>
3490: <dd><code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code></dd>
3491: <dt><a href="element-definitions.html#element-dfn-dom" title="element-dfn-dom">DOM interface</a>:</dt><!--TOPIC:DOM APIs-->
3492: <dd>
3493: <pre class="idl">interface <dfn id="htmldialogelement">HTMLDialogElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
3494: attribute boolean <a href="#dom-dialog-open" title="dom-dialog-open">open</a>;
3495: attribute DOMString <a href="#dom-dialog-returnvalue" title="dom-dialog-returnValue">returnValue</a>;
3496: void <a href="#dom-dialog-show" title="dom-dialog-show">show</a>(optional (<a href="infrastructure.html#mouseevent-10">MouseEvent</a> or <a href="infrastructure.html#element">Element</a>) anchor);
3497: void <a href="#dom-dialog-showmodal" title="dom-dialog-showModal">showModal</a>(optional (<a href="infrastructure.html#mouseevent-10">MouseEvent</a> or <a href="infrastructure.html#element">Element</a>) anchor);
3498: void <a href="#dom-dialog-close" title="dom-dialog-close">close</a>(optional DOMString returnValue);
3499: };</pre>
3500: </dd>
3501: </dl><!--TOPIC:HTML--><p>The <code><a href="#the-dialog-element">dialog</a></code> element represents a part of an
3502: application that a user interacts with to perform a task, for
3503: example a dialog box, inspector, or window.</p>
3504:
3505: <p>The <dfn id="attr-dialog-open" title="attr-dialog-open"><code>open</code></dfn>
3506: attribute is a <a href="common-microsyntaxes.html#boolean-attribute">boolean attribute</a>. When specified, it
3507: indicates that the <code><a href="#the-dialog-element">dialog</a></code> element is active and that
3508: the user can interact with it.</p>
3509:
3510: <div class="impl">
3511:
3512: <p>A <code><a href="#the-dialog-element">dialog</a></code> element without an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute specified should not
3513: be shown to the user. This requirement may be implemented indirectly
3514: through the style layer. For example, user agents that <a href="infrastructure.html#renderingUA">support the suggested default rendering</a>
3515: implement this requirement using the CSS rules described in the <a href="#rendering">rendering section</a>.</p>
3516:
3517: </div>
3518:
3519: <!--TOPIC:DOM APIs-->
3520:
3521: <dl class="domintro"><dt><var title="">dialog</var> . <code title="dom-dialog-show"><a href="#dom-dialog-show">show</a></code>( [ <var title="">anchor</var> ] )</dt>
3522:
3523: <dd>
3524:
3525: <p>Displays the <code><a href="#the-dialog-element">dialog</a></code> element.</p>
3526:
3527: <p>The argument, if provided, provides an anchor point to which
3528: the element will be fixed.</p>
3529:
3530: </dd>
3531:
3532: <dt><var title="">dialog</var> . <code title="dom-dialog-showModal"><a href="#dom-dialog-showmodal">showModal</a></code>( [ <var title="">anchor</var> ] )</dt>
3533:
3534: <dd>
3535:
3536: <p>Displays the <code><a href="#the-dialog-element">dialog</a></code> element and makes it the top-most modal dialog.</p>
3537:
3538: <p>The argument, if provided, provides an anchor point to which
3539: the element will be fixed.</p>
3540:
3541: <p>This method honors the <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code> attribute.</p>
3542:
3543: </dd>
3544:
3545: <dt><var title="">dialog</var> . <code title="dom-dialog-close"><a href="#dom-dialog-close">close</a></code>( [ <var title="">result</var> ] )</dt>
3546:
3547: <dd>
3548:
3549: <p>Closes the <code><a href="#the-dialog-element">dialog</a></code> element.</p>
3550:
3551: <p>The argument, if provided, provides a return value.</p>
3552:
3553: </dd>
3554:
3555: <dt><var title="">dialog</var> . <code title="dom-dialog-returnValue"><a href="#dom-dialog-returnvalue">returnValue</a></code> [ = <var title="">result</var> ]</dt>
3556:
3557: <dd>
3558:
3559: <p>Returns the <code><a href="#the-dialog-element">dialog</a></code>'s return value.</p>
3560:
3561: <p>Can be set, to update the return value.</p>
3562:
3563: </dd>
3564:
3565: </dl><div class="impl">
3566:
3567: <p>When the <dfn id="dom-dialog-show" title="dom-dialog-show"><code>show()</code></dfn>
3568: method is invoked, the user agent must run the following steps:</p>
3569:
3570: <ol><li><p>If the element already has an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute, then abort these
3571: steps.</p></li>
3572:
3573: <li><p>Add an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute
3574: to the <code><a href="#the-dialog-element">dialog</a></code> element, whose value is the empty
3575: string.</p></li>
3576:
3577: <li><p>If the <code title="dom-dialog-show"><a href="#dom-dialog-show">show()</a></code> method
3578: was invoked with an argument, <a href="#set-up-the-position">set up the position</a> of
3579: the <code><a href="#the-dialog-element">dialog</a></code> element, using that argument as the anchor.
3580: Otherwise, <a href="#set-up-the-default-static-position">set up the default static position</a> of the
3581: dialog element.</p></li>
3582:
3583: </ol><hr><p>Each <code><a href="dom.html#document">Document</a></code> has a stack of <code><a href="#the-dialog-element">dialog</a></code>
3584: elements known as the <dfn id="pending-dialog-stack">pending dialog stack</dfn>. When a
3585: <code><a href="dom.html#document">Document</a></code> is created, this stack must be initialized to
3586: be empty.</p>
3587:
3588: <p>When an element is added to the <a href="#pending-dialog-stack">pending dialog
3589: stack</a>, it must also be added to the <a href="infrastructure.html#top-layer">top layer</a>
3590: layer. When an element is removed from the <a href="#pending-dialog-stack">pending dialog
3591: stack</a>, it must be removed from the <a href="infrastructure.html#top-layer">top layer</a>. <a href="#refsFULLSCREEN">[FULLSCREEN]</a></p>
3592:
3593: <p>When the <dfn id="dom-dialog-showmodal" title="dom-dialog-showModal"><code>showModal()</code></dfn> method
3594: is invoked, the user agent must run the following steps:</p>
3595:
3596: <ol><li><p>Let <var title="">dialog</var> be the <code><a href="#the-dialog-element">dialog</a></code>
3597: element on which the method was invoked.</p></li>
3598:
3599: <li><p>If <var title="">dialog</var> already has an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute, then throw an
3600: <a href="infrastructure.html#invalidstateerror">InvalidStateError</a> exception and abort these
3601: steps.</p></li>
3602:
3603: <li><p>If <var title="">dialog</var> is not <a href="infrastructure.html#in-a-document">in a
3604: <code>Document</code></a>, then throw an
3605: <a href="infrastructure.html#invalidstateerror">InvalidStateError</a> exception and abort these
3606: steps.</p></li>
3607:
3608: <li><p>Add an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute
3609: to <var title="">dialog</var>, whose value is the empty
3610: string.</p></li>
3611:
3612: <li><p>If the <code title="dom-dialog-showModal"><a href="#dom-dialog-showmodal">showModal()</a></code>
3613: method was invoked with an argument, <a href="#set-up-the-position">set up the
3614: position</a> of <var title="">dialog</var>, using that argument
3615: as the anchor. Otherwise, <a href="#set-up-the-default-static-position">set up the default static
3616: position</a> of the dialog element.</p></li>
3617:
3618: <li><p>Let <var title="">dialog</var>'s <code><a href="dom.html#document">Document</a></code> be
3619: <a href="#blocked-by-a-modal-dialog" title="blocked by a modal dialog">blocked by the modal
3620: dialog</a> <var title="">dialog</var>.</p></li>
3621:
3622: <li><p>Push <var title="">dialog</var> onto <var title="">dialog</var>'s <code><a href="dom.html#document">Document</a></code>'s <a href="#pending-dialog-stack">pending
3623: dialog stack</a>.</p></li>
3624:
3625: <li><p>Let <var title="">control</var> be the first element in tree
3626: order whose nearest ancestor <code><a href="#the-dialog-element">dialog</a></code> element is <var title="">dialog</var> and that has an <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code> attribute
3627: specified, if any.</p></li>
3628:
3629: <li><p>If there is no <var title="">control</var>, then abort these
3630: steps.</p></li>
3631:
3632: <li><p>Run the <a href="#focusing-steps">focusing steps</a> for <var title="">control</var>.</p></li>
3633:
3634: </ol><p>If at any time a <code><a href="#the-dialog-element">dialog</a></code> element is <a href="infrastructure.html#remove-an-element-from-a-document" title="remove an element from a document">removed from a
3635: <code>Document</code></a>, then if that <code><a href="#the-dialog-element">dialog</a></code> is in
3636: that <code><a href="dom.html#document">Document</a></code>'s <a href="#pending-dialog-stack">pending dialog stack</a>, the
3637: following steps must be run:</p>
3638:
3639: <ol><li><p>Let <var title="">dialog</var> be that <code><a href="#the-dialog-element">dialog</a></code>
3640: element and <var title="">document</var> be the
3641: <code><a href="dom.html#document">Document</a></code> from which it is being removed.</p></li>
3642:
3643: <li><p>Remove <var title="">dialog</var> from <var title="">document</var>'s <a href="#pending-dialog-stack">pending dialog
3644: stack</a>.</p></li>
3645:
3646: <li><p>If <var title="">document</var>'s <a href="#pending-dialog-stack">pending dialog
3647: stack</a> is not empty, then let <var title="">document</var> be
3648: <a href="#blocked-by-a-modal-dialog" title="blocked by a modal dialog">blocked by the modal
3649: dialog</a> that is at the top of <var title="">document</var>'s
3650: <a href="#pending-dialog-stack">pending dialog stack</a>. Otherwise, let <var title="">document</var> be no longer <a href="#blocked-by-a-modal-dialog">blocked by a modal
3651: dialog</a> at all.</p></li>
3652:
3653: </ol><p>When the <dfn id="dom-dialog-close" title="dom-dialog-close"><code>close()</code></dfn>
3654: method is invoked, the user agent must <a href="#close-the-dialog">close the dialog</a>
3655: that the method was invoked on. If the method was invoked with an
3656: argument, that argument must be used as the return value; otherwise,
3657: there is no return value.</p>
3658:
3659: <!--TOPIC:HTML-->
3660:
3661: <p>When a <code><a href="#the-dialog-element">dialog</a></code> element <var title="">dialog</var> is
3662: to be <dfn id="close-the-dialog" title="close the dialog">closed</dfn>, optionally with a
3663: return value <var title="">result</var>, the user agent must run the
3664: following steps:</p>
3665:
3666: <ol><li><p>If <var title="">dialog</var> does not have an <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute, then throw an
3667: <a href="infrastructure.html#invalidstateerror">InvalidStateError</a> exception and abort these
3668: steps.</p></li>
3669:
3670: <li><p>Remove <var title="">dialog</var>'s <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> attribute.</p></li>
3671:
3672: <li><p>If the argument was passed a <var title="">result</var>,
3673: then set the <code title="dom-dialog-returnValue"><a href="#dom-dialog-returnvalue">returnValue</a></code> attribute to the
3674: value of <var title="">result</var>.</p></li>
3675:
3676: <li>
3677:
3678: <p>If <var title="">dialog</var> is in its <code><a href="dom.html#document">Document</a></code>'s
3679: <a href="#pending-dialog-stack">pending dialog stack</a>, then run these substeps:</p>
3680:
3681: <ol><li><p>Remove <var title="">dialog</var> from that <a href="#pending-dialog-stack">pending
3682: dialog stack</a>.</p></li>
3683:
3684: <li><p>If that <a href="#pending-dialog-stack">pending dialog stack</a> is not empty,
3685: then let <var title="">dialog</var>'s <code><a href="dom.html#document">Document</a></code> be
3686: <a href="#blocked-by-a-modal-dialog" title="blocked by a modal dialog">blocked by the modal
3687: dialog</a> that is at the top of the <a href="#pending-dialog-stack">pending dialog
3688: stack</a>. Otherwise, let <var title="">document</var> be no
3689: longer <a href="#blocked-by-a-modal-dialog">blocked by a modal dialog</a> at all.</p></li>
3690:
3691: </ol></li>
3692:
3693: <li><p><a href="#queue-a-task">Queue a task</a> to <a href="#fire-a-simple-event">fire a simple
3694: event</a> named <code title="event-close">close</code> at <var title="">dialog</var>.</p></li>
3695:
3696: </ol><!--TOPIC:DOM APIs--><p>The <dfn id="dom-dialog-returnvalue" title="dom-dialog-returnValue"><code>returnValue</code></dfn> IDL
3697: attribute, on getting, must return the last value to which it was
3698: set. On setting, it must be set to the new value. When the element
3699: is created, it must be set to the empty string.</p>
3700:
3701: <!--TOPIC:HTML-->
3702:
3703: <hr><p><strong>Canceling dialogs</strong>: When a
3704: <code><a href="dom.html#document">Document</a></code>'s <a href="#pending-dialog-stack">pending dialog stack</a> is not
3705: empty, user agents may provide a user interface that, upon
3706: activation, <a href="#queue-a-task" title="queue a task">queues a task</a> to
3707: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-cancel">cancel</code> that is cancelable at the top
3708: <code><a href="#the-dialog-element">dialog</a></code> element on the <code><a href="dom.html#document">Document</a></code>'s
3709: <a href="#pending-dialog-stack">pending dialog stack</a>. The default action of this event
3710: must be to <a href="#close-the-dialog">close the dialog</a> with no return value.</p>
3711:
3712: <p class="note">An example of such a UI mechanism would be the user
3713: pressing the "Escape" key.</p>
3714:
3715: <hr><p>When a user agent is to <dfn id="set-up-the-default-static-position">set up the default static
3716: position</dfn> of an element <var title="">dialog</var> without an
3717: anchor, it must set up the element such that its top static
3718: position, for the purposes of calculating the used value of the
3719: 'top' property, is the value that would place the element's top
3720: margin edge as far from the top of the viewport as the element's
3721: bottom margin edge from the bottom of the viewport, if the element's
3722: height is less than the height of the viewport, and otherwise is the
3723: value that would place the element's top margin edge at the top of
3724: the viewport.</p>
3725:
3726: <p>This top static position must remain the element's top static
3727: position until it is next changed by the above algorithm or the next
3728: one. (The element's static position is only used in calculating the
3729: used value of the 'top' property in certain situations; it's not
3730: used, for instance, to position the element if its 'position'
3731: property is set to 'static'.)</p>
3732:
3733: <p>When a user agent is to <dfn id="set-up-the-position">set up the position</dfn> of an
3734: element <var title="">dialog</var> using an anchor <var title="">anchor</var>, it must run the following steps:</p>
3735:
3736: <ol><li>
3737:
3738: <p>If <var title="">anchor</var> is a <code><a href="infrastructure.html#mouseevent-10">MouseEvent</a></code>
3739: object, then run these substeps:</p>
3740:
3741: <ol><li><p>If <var title="">anchor</var>'s target element does not
3742: have a rendered box, or is in a different document than <var title="">dialog</var>, then abort the <a href="#set-up-the-position">set up the
3743: position</a> steps.</p></li>
3744:
3745: <li><p>Let <var title="">anchor element</var> be an anonymous
3746: element rendered as a box with zero height and width (so its
3747: margin and border boxes both just form a point), positioned so
3748: that its top and left are at the coordinate identified by the
3749: event, and whose properties all compute to their initial
3750: values.</p></li>
3751:
3752: </ol><p>Otherwise, let <var title="">anchor element</var> be <var title="">anchor</var>.</p>
3753:
3754: </li>
3755:
3756: <li><p>Let <var title="">dialog</var> be <a href="#magically-aligned">magically
3757: aligned</a> to <var title="">anchor element</var>.</p></li>
3758:
3759: </ol><p>While an element <var title="">A</var> is <dfn id="magically-aligned">magically
3760: aligned</dfn> to an element <var title="">B</var>, <var title="">A</var> and <var title="">B</var> both have rendered boxes,
3761: and <var title="">B</var> is not a descendant of <var title="">A</var>, the following requirements apply:</p>
3762:
3763: <ul><li><p><var title="">A</var>'s 'position' property must compute to
3764: the keyword '<dfn id="css-position-absolute-anchored" title="css-position-absolute-anchored">absolute-anchored</dfn>'.</p></li>
3765:
3766: <li>
3767:
3768: <p>Let <var title="">A</var> and <var title="">B</var>'s anchor
3769: points be defined as per the appropriate entry in the following
3770: list:</p>
3771:
3772: <dl class="switch"><dt>If the computed value of 'anchor-point' is 'none' on both
3773: <var title="">A</var> and <var title="">B</var>
3774:
3775: </dt><dd>
3776:
3777: <p>The anchor points of <var title="">A</var> and <var title="">B</var> are the center points of their respective first
3778: boxes' border boxes.
3779:
3780:
3781: </p></dd><dt>If the computed value of 'anchor-point' is 'none' on <var title="">A</var> and a specific point on <var title="">B</var>
3782:
3783: </dt><dd>
3784: <p>The anchor point of <var title="">B</var> is the point given
3785: by its 'anchor-point' property.
3786:
3787: </p><p>If the anchor point of <var title="">B</var> is the center
3788: point of <var title="">B</var>'s first box's border box, then
3789: <var title="">A</var>'s anchor point is the center point of its
3790: first box's margin box.
3791:
3792: </p><p>Otherwise, <var title="">A</var>'s anchor point is on one of
3793: its margin edges. Consider four hypothetical half-infinite lines
3794: L1, L2, L3, and L4 that each start in the center of <var title="">B</var>'s first box's border box, and that extend
3795: respectively through the top left corner, top right corner,
3796: bottom right corner, and bottom left corner of <var title="">B</var>'s first box's border box. <var title="">A</var>'s anchor point is determined by the location of
3797: <var title="">B</var>'s anchor point relative to these four
3798: hypothetical lines, as follows:
3799:
3800: </p><p>If the anchor point of <var title="">B</var> lies on L1 or
3801: L2, or inside the area bounded by L1 and L2 that also contains
3802: the points above <var title="">B</var>'s first box's border box,
3803: then let <var title="">A</var>'s anchor point be the horizontal
3804: center of <var title="">A</var>'s bottom margin edge.</p>
3805:
3806: <p>Otherwise, if the anchor point of <var title="">B</var> lies
3807: on L3 or L4, or inside the area bounded by L4 and L4 that also
3808: contains the points below <var title="">B</var>'s first box's
3809: border box, then let <var title="">A</var>'s anchor point be the
3810: horizontal center of <var title="">A</var>'s top margin
3811: edge.</p>
3812:
3813: <p>Otherwise, if the anchor point of <var title="">B</var> lies
3814: inside the area bounded by L4 and L1 that also contains the
3815: points to the left of <var title="">B</var>'s first box's border
3816: box, then let <var title="">A</var>'s anchor point be the
3817: vertical center of <var title="">A</var>'s right margin
3818: edge.</p>
3819:
3820: <p>Otherwise, the anchor point of <var title="">B</var> lies
3821: inside the area bounded by L2 and L3 that also contains the
3822: points to the right of <var title="">B</var>'s first box's
3823: border box; let <var title="">A</var>'s anchor point be the
3824: vertical center of <var title="">A</var>'s left margin edge.</p>
3825:
3826:
3827: </dd><dt>If the computed value of 'anchor-point' is a specific point
3828: on <var title="">A</var> and 'none' on <var title="">B</var>
3829:
3830: </dt><dd>
3831: <p>The anchor point of <var title="">A</var> is the point given
3832: by its 'anchor-point' property.
3833:
3834: </p><p>If the anchor point of <var title="">A</var> is the center
3835: point of <var title="">A</var>'s first box's margin box, then
3836: <var title="">B</var>'s anchor point is the center point of its
3837: first box's border box.
3838:
3839: </p><p>Otherwise, <var title="">B</var>'s anchor point is on one of
3840: its border edges. Consider four hypothetical half-infinite lines
3841: L1, L2, L3, and L4 that each start in the center of <var title="">A</var>'s first box's margin box, and that extend
3842: respectively through the top left corner, top right corner,
3843: bottom right corner, and bottom left corner of <var title="">A</var>'s first box's margin box. <var title="">B</var>'s anchor point is determined by the location of
3844: <var title="">A</var>'s anchor point relative to these four
3845: hypothetical lines, as follows:
3846:
3847: </p><p>If the anchor point of <var title="">A</var> lies on L1 or
3848: L2, or inside the area bounded by L1 and L2 that also contains
3849: the points above <var title="">A</var>'s first box's margin box,
3850: then let <var title="">B</var>'s anchor point be the horizontal
3851: center of <var title="">B</var>'s bottom border edge.</p>
3852:
3853: <p>Otherwise, if the anchor point of <var title="">A</var> lies
3854: on L3 or L4, or inside the area bounded by L4 and L4 that also
3855: contains the points below <var title="">A</var>'s first box's
3856: margin box, then let <var title="">B</var>'s anchor point be the
3857: horizontal center of <var title="">B</var>'s top border
3858: edge.</p>
3859:
3860: <p>Otherwise, if the anchor point of <var title="">A</var> lies
3861: inside the area bounded by L4 and L1 that also contains the
3862: points to the left of <var title="">A</var>'s first box's margin
3863: box, then let <var title="">B</var>'s anchor point be the
3864: vertical center of <var title="">B</var>'s right border
3865: edge.</p>
3866:
3867: <p>Otherwise, the anchor point of <var title="">A</var> lies
3868: inside the area bounded by L2 and L3 that also contains the
3869: points to the right of <var title="">A</var>'s first box's
3870: margin box; let <var title="">B</var>'s anchor point be the
3871: vertical center of <var title="">B</var>'s left border edge.</p>
3872:
3873:
3874: </dd><dt>If the computed value of 'anchor-point' is a specific point
3875: on both <var title="">A</var> and <var title="">B</var>
3876:
3877: </dt><dd>
3878: <p>The anchor points of <var title="">A</var> and <var title="">B</var> are the points given by their respective
3879: 'anchor-point' properties.
3880:
3881: </p></dd></dl><p class="note">The rules above generally use <var title="">A</var>'s <em>margin</em> box, but <var title="">B</var>'s <em>border</em> box. This is because while <var title="">A</var> always has a margin box, and using the margin box
3882: allows for the dialog to be positioned offset from the box it is
3883: annotating, <var title="">B</var> sometimes does not have a margin
3884: box (e.g. if it is a table-cell), or has a margin box whose
3885: position may be not entirely clear (e.g. in the face of margin
3886: collapsing and 'clear' handling of in-flow blocks).</p>
3887:
3888: <p>In cases where <var title="">B</var> does not have a border box
3889: but its border box is used by the algorithm above, user agents
3890: must use its first box's content area instead. (This is in
3891: particular an issue with boxes in tables that have
3892: 'border-collapse' set to 'collapse'.)</p>
3893:
3894: </li>
3895:
3896: </ul><p class="note">The trivial example of an element that does not have
3897: a rendered box is one whose 'display' property computes to 'none'.
3898: However, there are many other cases; e.g. table columns do not have
3899: boxes (their properties merely affect other boxes).</p>
3900:
3901: <p>When an element's 'position' property must compute to
3902: 'absolute-anchored', the 'float', property does not apply and must
3903: compute to 'none', the 'display' property must compute to a value as
3904: described by the table in <a href="http://www.w3.org/TR/CSS21/visuren.html#dis-pos-flo">the
3905: section of CSS 2.1 describing the <cite>relationships between
3906: 'display', 'position', and 'float'</cite></a>, and the element's box
3907: must be positioned using the rules for absolute positioning but with
3908: its static position set such that if the box is positioned in its
3909: static position, its anchor point is exactly aligned over the anchor
3910: point of the element to which it is <a href="#magically-aligned">magically
3911: aligned</a>.</p>
3912:
3913: <p class="note">The 'absolute-anchored' keyword is not a keyword
3914: that can be specified in CSS; the 'position' property can only
3915: compute to this value if the <code><a href="#the-dialog-element">dialog</a></code> element is
3916: positioned via the APIs described above.</p>
3917:
3918: <!--TOPIC:DOM APIs-->
3919: <p>The <dfn id="dom-dialog-open" title="dom-dialog-open"><code>open</code></dfn> IDL
3920: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code> content attribute.</p>
3921: <!--TOPIC:HTML-->
3922:
3923: </div>
3924:
3925:
3926: <h5 id="anchor-points"><span class="secno">4.11.6.1 </span>Anchor points</h5>
3927:
3928: <p class="critical">This section will eventually be moved to a CSS
3929: specification; it is specified here only on an interim basis until
3930: an editor can be found to own this.</p>
3931:
3932: <table class="css-property"><caption>'anchor-point'</caption>
3933: <tr><th>Value:
3934: </th><td> none | <position>
3935: </td></tr><tr><th>Initial:
3936: </th><td> none
3937: </td></tr><tr><th>Applies to:
3938: </th><td> all elements
3939: </td></tr><tr><th>Inherited:
3940: </th><td> no
3941: </td></tr><tr><th>Percentages:
3942: </th><td> refer to width or height of box; see prose
3943: </td></tr><tr><th>Media:
3944: </th><td> visual
3945: </td></tr><tr><th>Computed value:
3946: </th><td> The specified value, but with any lengths replaced by their corresponding absolute length
3947: </td></tr><tr><th>Animatable:
3948: </th><td> no
3949: </td></tr><tr><th>Canonical order:
3950: </th><td> per grammar
3951: </td></tr></table><p>The 'anchor-point' property specifies a point to which dialog
3952: boxes are to be aligned.</p>
3953:
3954: <p>If the value is a <position>, the alignment point is the point
3955: given by the value, which must be interpreted relative to the
3956: element's first rendered box's margin box. Percentages must be
3957: calculated relative to the element's first rendered box's margin box
3958: (specifically, its width for the horizontal position and its height
3959: for the vertical position). <a href="#refsCSSVALUES">[CSSVALUES]</a>
3960: <a href="#refsCSS">[CSS]</a></p>
3961:
3962: <p>If the value is the keyword 'none', then no explicit alignment
3963: point is defined. The user agent will pick an alignment point
3964: automatically if necessary (as described in the definition of the
3965: <code title="dom-dialog-open"><a href="#dom-dialog-open">open()</a></code> method above).</p>
3966:
3967:
3968: <h3 id="links"><span class="secno">4.12 </span>Links</h3>
3969:
3970: <h4 id="introduction-3"><span class="secno">4.12.1 </span>Introduction</h4>
3971:
3972: <p>Links are a conceptual construct, created by <code><a href="the-a-element.html#the-a-element">a</a></code>,
3973: <code><a href="the-area-element.html#the-area-element">area</a></code>, and <code><a href="the-link-element.html#the-link-element">link</a></code> elements, that <a href="#represents" title="represents">represent</a> a connection between two
3974: resources, one of which is the current <code><a href="dom.html#document">Document</a></code>. There
3975: are two kinds of links in HTML:</p>
3976:
3977: <dl><dt><dfn id="external-resource-link" title="external resource link">Links to external
3978: resources</dfn></dt>
3979:
3980: <dd><p>These are links to resources that are to be used to augment
3981: the current document, generally automatically processed by the user
3982: agent.</p></dd>
3983:
3984: <dt><dfn id="hyperlink" title="hyperlink">Hyperlinks</dfn></dt>
3985:
3986: <dd><p>These are links to other resources that are generally
3987: exposed to the user by the user agent so that the user can cause
3988: the user agent to <a href="#navigate">navigate</a> to those resources, e.g. to
3989: visit them in a browser or download them.</p></dd>
3990:
3991: </dl><p>For <code><a href="the-link-element.html#the-link-element">link</a></code> elements with an <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code> attribute and a <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">rel</a></code> attribute, links must be created
3992: for the keywords of the <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">rel</a></code>
3993: attribute, as defined for those keywords in the <a href="#linkTypes">link types</a> section.</p>
3994:
3995: <p>Similarly, for <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements with
3996: an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute and a
3997: <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code> attribute, links must be
3998: created for the keywords of the <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code> attribute as defined for those
3999: keywords in the <a href="#linkTypes">link types</a> section. Unlike
4000: <code><a href="the-link-element.html#the-link-element">link</a></code> elements, however, <code><a href="the-a-element.html#the-a-element">a</a></code> and
4001: <code><a href="the-area-element.html#the-area-element">area</a></code> element with an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute that either do not
4002: have a <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code> attribute, or
4003: whose <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code> attribute has no
4004: keywords that are defined as specifying <a href="#hyperlink" title="hyperlink">hyperlinks</a>, must also create a
4005: <a href="#hyperlink">hyperlink</a>. This implied hyperlink has no special
4006: meaning (it has no <a href="#linkTypes">link type</a>) beyond
4007: linking the element's document to the resource given by the
4008: element's <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>
4009: attribute.</p>
4010:
4011: <p>A <a href="#hyperlink">hyperlink</a> can have one or more <dfn id="hyperlink-annotation" title="hyperlink annotation">hyperlink annotations</dfn> that modify
4012: the processing semantics of that hyperlink.</p>
4013:
4014:
4015: <h4 id="links-created-by-a-and-area-elements"><span class="secno">4.12.2 </span>Links created by <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements</h4>
4016:
4017: <p>The <dfn id="attr-hyperlink-href" title="attr-hyperlink-href"><code>href</code></dfn>
4018: attribute on <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements must have
4019: a value that is a <a href="urls.html#valid-url-potentially-surrounded-by-spaces">valid URL potentially surrounded by
4020: spaces</a>.</p>
4021:
4022: <p class="note">The <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>
4023: attribute on <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements is not
4024: required; when those elements do not have <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attributes they do not
4025: create hyperlinks.</p>
4026:
4027: <p>The <dfn id="attr-hyperlink-target" title="attr-hyperlink-target"><code>target</code></dfn>
4028: attribute, if present, must be a <a href="#valid-browsing-context-name-or-keyword">valid browsing context name
4029: or keyword</a>. It gives the name of the <a href="#browsing-context">browsing
4030: context</a> that will be used. <span class="impl">User agents use
4031: this name when <a href="#following-hyperlinks-0">following hyperlinks</a>.</span></p>
4032:
4033: <!--PING-->
4034:
4035: <p>The <dfn id="attr-hyperlink-rel" title="attr-hyperlink-rel"><code>rel</code></dfn>
4036: attribute on <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements controls
4037: what kinds of links the elements create. The attribue's value must
4038: be a <a href="common-microsyntaxes.html#set-of-space-separated-tokens">set of space-separated tokens</a>. The <a href="#linkTypes">allowed keywords and their meanings</a> are
4039: defined below.</p>
4040:
4041: <p>The <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code> attribute has
4042: no default value. If the attribute is omitted or if none of the
4043: values in the attribute are recognized by the user agent, then the
4044: document has no particular relationship with the destination
4045: resource other than there being a hyperlink between the two.</p>
4046:
4047: <p>The <dfn id="attr-hyperlink-media" title="attr-hyperlink-media"><code>media</code></dfn>
4048: attribute describes for which media the target document was
4049: designed. It is purely advisory. The value must be a <a href="common-microsyntaxes.html#valid-media-query">valid
4050: media query</a>. The default, if the <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code> attribute is omitted, is
4051: "<code title="">all</code>".</p>
4052:
4053: <p>The <dfn id="attr-hyperlink-hreflang" title="attr-hyperlink-hreflang"><code>hreflang</code></dfn>
4054: attribute on <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements that
4055: create <a href="#hyperlink" title="hyperlink">hyperlinks</a>, if present, gives
4056: the language of the linked resource. It is purely advisory. The
4057: value must be a valid BCP 47 language tag. <a href="#refsBCP47">[BCP47]</a> <span class="impl">User agents must
4058: not consider this attribute authoritative — upon fetching the
4059: resource, user agents must use only language information associated
4060: with the resource to determine its language, not metadata included
4061: in the link to the resource.</span></p>
4062:
4063: <p>The <dfn id="attr-hyperlink-type" title="attr-hyperlink-type"><code>type</code></dfn>
4064: attribute, if present, gives the <a href="infrastructure.html#mime-type">MIME type</a> of the
4065: linked resource. It is purely advisory. The value must be a
4066: <a href="infrastructure.html#valid-mime-type">valid MIME type</a>. <span class="impl">User agents must
4067: not consider the <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code>
4068: attribute authoritative — upon fetching the resource, user
4069: agents must not use metadata included in the link to the resource to
4070: determine its type.</span></p>
4071:
4072:
4073: <div class="impl">
4074:
4075: <h4 id="following-hyperlinks"><span class="secno">4.12.3 </span>Following hyperlinks</h4>
4076:
4077: <!-- This whole section should be rewritten to use algorithmic style -->
4078:
4079: <p>When a user <dfn id="following-hyperlinks-0" title="following hyperlinks">follows a
4080: hyperlink</dfn> created by an element, the user agent must <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the <a href="urls.html#url">URL</a> given by
4081: the <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute of that
4082: element, relative to that element, and if that is successful, must
4083: <a href="#navigate">navigate</a><!--DONAV hyperlink--> a <a href="#browsing-context">browsing
4084: context</a> to the resulting <a href="urls.html#absolute-url">absolute URL</a>. In the
4085: case of server-side image maps, that <a href="urls.html#absolute-url">absolute URL</a> must
4086: have its <var><a href="the-a-element.html#hyperlink-suffix">hyperlink suffix</a></var> appended to it before the
4087: navigation is started.</p>
4088:
4089: <p>If <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> the
4090: <a href="urls.html#url">URL</a> fails, the user agent may report the error to the
4091: user in a user-agent-specific manner, may
4092: <a href="#navigate">navigate</a><!--DONAV hyperlink--> to an error page to
4093: report the error, or may ignore the error and do nothing.</p>
4094:
4095: <p>If the user indicated a specific <a href="#browsing-context">browsing context</a>
4096: when following the hyperlink, or if the user agent is configured to
4097: follow hyperlinks by navigating a particular browsing context, then
4098: that must be the <a href="#browsing-context">browsing context</a> that is
4099: navigated.</p>
4100:
4101: <p>Otherwise, if the element is an <code><a href="the-a-element.html#the-a-element">a</a></code> or
4102: <code><a href="the-area-element.html#the-area-element">area</a></code> element that has a <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code> attribute, then the
4103: <a href="#browsing-context">browsing context</a> that is navigated must be chosen by
4104: applying <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a browsing context given a
4105: browsing context name</a>, using the value of the <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code> attribute as the
4106: browsing context name. If these rules result in the creation of a
4107: new <a href="#browsing-context">browsing context</a>, it must be navigated with
4108: <a href="#replacement-enabled">replacement enabled</a>.</p>
4109:
4110:
4111:
4112: <p>Otherwise, if the element is an <code><a href="the-a-element.html#the-a-element">a</a></code> or
4113: <code><a href="the-area-element.html#the-area-element">area</a></code> element with no <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code> attribute, but the
4114: <code><a href="dom.html#document">Document</a></code> contains a <code><a href="the-base-element.html#the-base-element">base</a></code> element with a
4115: <code title="attr-base-target"><a href="the-base-element.html#attr-base-target">target</a></code> attribute, then the
4116: browsing context that is navigated must be chosen by applying
4117: <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a browsing context given a browsing
4118: context name</a>, using the value of the <code title="attr-base-target"><a href="the-base-element.html#attr-base-target">target</a></code> attribute of the first such
4119: <code><a href="the-base-element.html#the-base-element">base</a></code> element as the browsing context name. If these
4120: rules result in the creation of a new <a href="#browsing-context">browsing context</a>,
4121: it must be navigated with <a href="#replacement-enabled">replacement enabled</a>.</p>
4122: <!-- c.f. concept-fs-target -->
4123:
4124: <p>Otherwise, the browsing context that must be navigated is the
4125: same browsing context as the one which the element itself is in.</p>
4126:
4127: <p>The navigation must be done with the <a href="#browsing-context">browsing
4128: context</a> that contains the <code><a href="dom.html#document">Document</a></code> object with
4129: which the element in question is associated as the <a href="#source-browsing-context">source
4130: browsing context</a>.</p>
4131:
4132: </div>
4133:
4134:
1.191 sruby 4135: <!--DOWNLOAD-->
4136:
4137: <h4 id="downloading-resources"><span class="secno">4.12.4 </span>Downloading resources</h4>
4138:
4139: <p>In some cases, resources are intended for later use rather than
4140: immediate viewing. To indicate that a resource is intended to be
4141: downloaded for use later, rather than immediately used, the <code title="attr-hyperlink-download">download</code> attribute can be
4142: specified on the <code><a href="the-a-element.html#the-a-element">a</a></code> or <code><a href="the-area-element.html#the-area-element">area</a></code> element that
4143: creates the <a href="#hyperlink">hyperlink</a> to that resource.</p>
4144:
4145: <p>The attribute can furthermore be given a value, to specify the
4146: filename that user agents are to use when storing the resource in a
4147: file system. This value can be overridden by the <code title="http-content-disposition">Content-Disposition</code> HTTP
4148: header's filename parameters. <a href="#refsRFC6266">[RFC6266]</a></p>
4149:
4150: <p>In cross-origin situations, the <code title="attr-hyperlink-download">download</code> attribute has to be
4151: combined with the <code title="http-content-disposition">Content-Disposition</code> HTTP
4152: header, specifically with the <code title="">attachment</code>
4153: disposition type, to avoid the user being warned of possibly
4154: nefarious activity. (This is to protect users from being made to
4155: download sensitive personal or confidential information without
4156: their full understanding.)</p>
4157:
4158: <div class="impl">
4159:
4160: <hr><p>When a user <dfn id="downloading-hyperlinks" title="downloading hyperlinks">downloads a
4161: hyperlink</dfn> created by an element, the user agent must run the
4162: following steps:</p>
4163:
4164: <ol><li><p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the
4165: <a href="urls.html#url">URL</a> given by the <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute of that element,
4166: relative to that element.</p></li>
4167:
4168: <li><p>If <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> the
4169: <a href="urls.html#url">URL</a> fails, the user agent may report the error to the
4170: user in a user-agent-specific manner, may
4171: <a href="#navigate">navigate</a><!--DONAV download error--> to an error page
4172: to report the error, or may ignore the error and do nothing. In
4173: either case, the user agent must abort these steps.</p>
4174:
4175: </li><li><p>Otherwise, let <var title="">URL</var> be the resulting
4176: <a href="urls.html#absolute-url">absolute URL</a>.</p></li>
4177:
4178: <li><p>In the case of server-side image maps, append the
4179: <var><a href="the-a-element.html#hyperlink-suffix">hyperlink suffix</a></var> to <var title="">URL</var>.</p></li>
4180:
4181: <li><p>Return to whatever algorithm invoked these steps and continue
4182: these steps asynchronously.</p></li>
4183:
4184: <li><p><a href="urls.html#fetch">Fetch</a><!--FETCH--> <var title="">URL</var> and
4185: handle the resulting resource <a href="#as-a-download">as a download</a>.</p></li>
4186: <!-- http-origin privacy sensitive -->
4187:
4188: </ol><p>When a user agent is to handle a resource obtained from a
4189: <a href="urls.html#fetch">fetch</a> algorithm <dfn id="as-a-download">as a download</dfn>, it should
4190: provide the user with a way to save the resource for later use, if a
4191: resource is successfully obtained; or otherwise should report any
4192: problems downloading the file to the user.</p>
4193:
4194: <p>If the user agent needs a file name for a resource being handled
4195: <a href="#as-a-download">as a download</a>, it should select one using the following
4196: algorithm.</p>
4197:
4198: <p class="warning">This algorithm is intended to mitigate security
4199: dangers involved in downloading files from untrusted sites, and user
4200: agents are strongly recommended to follow it.</p> <!-- but it's
4201: optional, since it's not really an interoperability issue -->
4202:
4203: <ol><li><p>Let <var title="">filename</var> be the void value.</p></li>
4204:
4205: <li><p>If the resource has a <code title="http-content-disposition">Content-Disposition</code> header, <!-- Content-Disposition: attachment; filename="" is always honoured, even cross-origin -->
4206: that header specifies the <code title="">attachment</code>
4207: disposition type, and the header includes filename information,
4208: then let <var title="">filename</var> have the value specified by
4209: the header, and jump to the step labeled "sanitize" below. <a href="#refsRFC6266">[RFC6266]</a></p></li>
4210:
4211: <li><p>Let <var title="">resource origin</var> be the
4212: <a href="#origin-0">origin</a> of the resource being downloaded.</p></li>
4213:
4214: <li><p>Let <var title="">interface origin</var> be the
4215: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> in which the <a href="#downloading-hyperlinks" title="downloading hyperlinks">download</a> or
4216: <a href="#navigate">navigate</a> action resulting in the download was
4217: initiated, if any.</p></li>
4218:
4219: <li><p>If there is no <var title="">interface origin</var>, then
4220: let <var title="">trusted operation</var> be true. Otherwise, let
4221: <var title="">trusted operation</var> be true if <var title="">resource origin</var> is the <a href="#same-origin">same origin</a> as
4222: <var title="">interface origin</var>, and false otherwise.</p></li>
4223:
4224: <li><p>If <var title="">trusted operation</var> is true and the <!-- Content-Disposition: *; filename="" overrides download="" for same-origin -->
4225: resource has a <code title="http-content-disposition">Content-Disposition</code> header
4226: and that header includes filename information, then let <var title="">filename</var> have the value specified by the header, and
4227: jump to the step labeled "sanitize" below. <a href="#refsRFC6266">[RFC6266]</a></p></li>
4228:
4229: <li><p>If the download was not initiated from a
4230: <a href="#hyperlink">hyperlink</a> created by an <code><a href="the-a-element.html#the-a-element">a</a></code> or
4231: <code><a href="the-area-element.html#the-area-element">area</a></code> element, or if the element of the
4232: <a href="#hyperlink">hyperlink</a> from which it was initiated did not have a
4233: <code title="attr-hyperlink-download">download</code> attribute
4234: when the download was initiated, or if there was such an attribute
4235: but its value when the download was initiated was the empty string,
4236: then jump to the step labeled <i>no proposed filename</i>.</p></li>
4237:
4238: <li><p>Let <var title="">proposed filename</var> have the value of
4239: the <code title="attr-hyperlink-download">download</code> attribute
4240: of the element of the <a href="#hyperlink">hyperlink</a> that initiated the
4241: download at the time the download was initiated.</p></li>
4242:
4243: <li><p>If <var title="">trusted operation</var> is true, let <var title="">filename</var> have the value of <var title="">proposed
4244: filename</var>, and jump to the step labeled "sanitize" <!-- download="" works for all links when same-origin -->
4245: below.</p></li> <!-- it is not used cross-origin, though, even for explicit user gestures -->
4246: <!-- except: -->
4247: <li><p>If the resource has a <code title="http-content-disposition">Content-Disposition</code> header <!-- Content-Disposition: attachment with no filename="" allows download="" cross-origin -->
4248: and that header specifies the <code title="">attachment</code>
4249: disposition type, let <var title="">filename</var> have the value
4250: of <var title="">proposed filename</var>, and jump to the step
4251: labeled "sanitize" below. <a href="#refsRFC6266">[RFC6266]</a></p></li>
4252:
4253: <li><p><i>No proposed filename</i>: If <var title="">trusted <!-- fallback for same-origin resources or explicit downloads: use the resource's file name -->
4254: operation</var> is true, or if the user indicated a preference for
4255: having the resource in question downloaded, let <var title="">filename</var> have a value derived from the
4256: <a href="urls.html#url">URL</a> of the resource in a user-agent-defined manner,
4257: and jump to the step labeled "sanitize" below.</p></li>
4258:
4259: <li>
4260:
4261: <p>Act in a user-agent-defined manner to safeguard the user from a <!-- no C-D: a header on cross-origin raises red flags -->
4262: potentially hostile cross-origin download. If the download is not
4263: to be aborted, then let <var title="">filename</var> be set to the
4264: user's preferred file name or to a file name selected by the user
4265: agent, and jump to the step labeled "sanitize" below.</p>
4266:
4267: <div class="warning">
4268:
4269: <p>If the algorithm reaches this step, then a download was begun
4270: from a different origin than the resource being downloaded, and
4271: the origin did not mark the file as suitable for downloading, and
4272: the download was not initiated by the user. This could be because
4273: a <code title="attr-hyperlink-download">download</code> attribute
4274: was used to trigger the download, or because the resource in
4275: question is not of a type that the user agent supports.</p>
4276:
4277: <p>This could be dangerous, because, for instance, a hostile
4278: server could be trying to get a user to unknowingly download
4279: private information and then re-upload it to the hostile server,
4280: by tricking the user into thinking the data is from the hostile
4281: server.</p>
4282:
4283: <p>Thus, it is in the user's interests that the user be somehow
4284: notified that the resource in question comes from quite a
4285: different source, and to prevent confusion, any suggested
4286: filename from the potentially hostile <var title="">interface
4287: origin</var> should be ignored.</p>
4288:
4289: </div>
4290:
4291: </li>
4292:
4293: <li><p><i>Sanitize</i>: Optionally, allow the user to influence <var title="">filename</var>. For example, a user agent could prompt the
4294: user for a file name, potentially providing the value of <var title="">filename</var> as determined above as a default
4295: value.</p></li>
4296:
4297: <li>
4298:
4299: <p>Adjust <var title="">filename</var> to be suitable for the
4300: local file system.</p>
4301:
4302: <p class="example">For example, this could involve removing
4303: characters that are not legal in file names, or trimming leading
4304: and trailing whitespace.</p>
4305:
4306: </li>
4307:
4308: <li><p>If the platform conventions do not in any way use <a href="#concept-extension" title="concept-extension">extensions</a> to determine the types
4309: of file on the file system, then return <var title="">filename</var> as the file name and abort these
4310: steps.</p></li>
4311:
4312: <li><p>Let <var title="">claimed type</var> be the type given by
4313: the resource's <a href="urls.html#content-type" title="Content-Type">Content-Type
4314: metadata</a>, if any is known. Let <var title="">named
4315: type</var> be the type given by <var title="">filename</var>'s
4316: <a href="#concept-extension" title="concept-extension">extension</a>, if any is known.
4317: For the purposes of this step, a <i>type</i> is a mapping of a
4318: <a href="infrastructure.html#mime-type">MIME type</a> to an <a href="#concept-extension" title="concept-extension">extension</a>.</p></li>
4319:
4320: <li><p>If <var title="">named type</var> is consistent with the
4321: user's preferences (e.g. because the value of <var title="">filename</var> was determined by prompting the user), then
4322: return <var title="">filename</var> as the file name and abort
4323: these steps.</p></li>
4324:
4325: <li><p>If <var title="">claimed type</var> and <var title="">named
4326: type</var> are the same type (i.e. the type given by the resource's
4327: <a href="urls.html#content-type" title="Content-Type">Content-Type metadata</a> is
4328: consistent with the type given by <var title="">filename</var>'s
4329: <a href="#concept-extension" title="concept-extension">extension</a>), then return <var title="">filename</var> as the file name and abort these
4330: steps.</p></li>
4331:
4332: <li>
4333:
4334: <p>If the <var title="">claimed type</var> is known, then alter
4335: <var title="">filename</var> to add an <a href="#concept-extension" title="concept-extension">extension</a> corresponding to <var title="">claimed type</var>.</p>
4336:
4337: <p>Otherwise, if <var title="">named type</var> is known to be
4338: potentially dangerous (e.g. it will be treated by the platform
4339: conventions as a native executable, shell script, HTML
4340: application, or executable-macro-capable document) then optionally
4341: alter <var title="">filename</var> to add a known-safe <a href="#concept-extension" title="concept-extension">extension</a> (e.g. "<code title="">.txt</code>").</p>
4342:
4343: <p class="note">This last step would make it impossible to
4344: download executables, which might not be desireable. As always,
4345: implementors are forced to balance security and usability in this
4346: matter.</p>
4347:
4348: </li>
4349:
4350: <li><p>Return <var title="">filename</var> as the file
4351: name.</p></li>
4352:
4353: </ol><p>For the purposes of this algorithm, a file <dfn id="concept-extension" title="concept-extension">extension</dfn> consists of any part of
4354: the file name that platform conventions dictate will be used for
4355: identifying the type of the file. For example, many operating
4356: systems use the part of the file name following the last dot ("<code title="">.</code>") in the file name to determine the type of the
4357: file, and from that the manner in which the file is to be opened or
4358: executed.</p>
4359:
4360: <p>User agents should ignore any directory or path information
4361: provided by the resource itself, its <a href="urls.html#url">URL</a>, and any <code title="attr-hyperlink-download">download</code> attribute, in
4362: deciding where to store the resulting file in the user's file
4363: system.</p>
4364:
4365: </div>
4366:
4367:
1.190 sruby 4368: <!--PING-->
4369:
1.191 sruby 4370: <div class="impl">
4371:
4372: <h5 id="hyperlink-auditing"><span class="secno">4.12.4.1 </span><dfn>Hyperlink auditing</dfn></h5>
4373:
4374: <p>If a <a href="#hyperlink">hyperlink</a> created by an <code><a href="the-a-element.html#the-a-element">a</a></code> or
4375: <code><a href="the-area-element.html#the-area-element">area</a></code> element has a <code title="attr-hyperlink-ping">ping</code> attribute, and the user
4376: follows the hyperlink, and the value of the element's <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute can be <a href="urls.html#resolve-a-url" title="resolve a url">resolved</a>, relative to the element,
4377: without failure, then the user agent must take the <code title="attr-hyperlink-ping">ping</code> attribute's value, <a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on spaces">split that string on spaces</a>,
4378: <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> each resulting token
4379: relative to the element, and then each of the resulting <a href="urls.html#absolute-url" title="absolute URL">absolute URLs</a> should be <a href="urls.html#fetch" title="fetch">fetched</a><!--FETCH--> from the
4380: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> containing the
4381: <a href="#hyperlink">hyperlink</a> <!-- not http-origin privacy sensitive -->
4382: (as described below). (Tokens that fail to resolve are ignored.)
4383: This may be done in parallel with the primary request, and is
4384: independent of the result of that request.</p>
4385:
4386: <p>User agents should allow the user to adjust this behavior, for
4387: example in conjunction with a setting that disables the sending of
4388: HTTP <code title="http-referer">Referer</code> (sic) headers. Based
4389: on the user's preferences, UAs may either <a href="infrastructure.html#ignore">ignore</a> the
4390: <code title="attr-hyperlink-ping">ping</code> attribute altogether,
4391: or selectively ignore URLs in the list (e.g. ignoring any
4392: third-party URLs).</p>
4393:
4394: <p>For URLs that are HTTP URLs, the requests must be performed using
4395: the POST method, with an entity body with the <a href="infrastructure.html#mime-type">MIME type</a>
4396: <code>text/ping</code> consisting of the four-character string
4397: "<code title="">PING</code>". All relevant cookie and HTTP
4398: authentication headers must be included in the request. Which other
4399: headers are required depends on the URLs involved.</p>
4400:
4401: <dl class="switch"><dt>If both the <a href="dom.html#the-document's-address" title="the document's address">address</a>
4402: of the <code><a href="dom.html#document">Document</a></code> object containing the hyperlink being
4403: audited and the ping URL have the <a href="#same-origin">same origin</a></dt>
4404:
4405: <dd>The request must include a <code title="http-ping-from">Ping-From</code> HTTP header with, as its
4406: value, the <a href="dom.html#the-document's-address" title="the document's address">address</a> of
4407: the document containing the hyperlink, and a <code title="http-ping-to">Ping-To</code> HTTP header with, as its value,
4408: the address of the <a href="urls.html#absolute-url">absolute URL</a> of the target of the
4409: hyperlink. The request must not include a <code title="http-referer">Referer</code> (sic) HTTP header. <!-- because
4410: otherwise it would look like a trustable same-origin POST --></dd>
4411:
4412: <dt>Otherwise, if the origins are different, but the document
4413: containing the hyperlink being audited was not retrieved over an
4414: encrypted connection</dt>
4415:
4416: <dd>The request must include a <code title="http-referer">Referer</code> (sic) HTTP header with, as its
4417: value, the <a href="dom.html#the-document's-address" title="the document's address">address</a> of
4418: the document containing the hyperlink, a <code title="http-ping-from">Ping-From</code> HTTP header with the same
4419: value, and a <code title="http-ping-to">Ping-To</code> HTTP header
4420: with, as its value, the address of the target of the
4421: hyperlink.</dd>
4422:
4423: <dt>Otherwise, the origins are different and the document
4424: containing the hyperlink being audited was retrieved over an
4425: encrypted connection</dt>
4426:
4427: <dd>The request must include a <code title="http-ping-to">Ping-To</code> HTTP header with, as its value,
4428: the address of the target of the hyperlink. The request must
4429: neither include a <code title="http-referer">Referer</code> (sic)
4430: HTTP header nor include a <code title="http-ping-from">Ping-From</code> HTTP header.</dd>
4431:
4432: </dl><p class="note">To save bandwidth, implementors might also wish to
4433: consider omitting optional headers such as <code>Accept</code> from
4434: these requests.</p>
4435:
4436: <p>User agents must, unless otherwise specified by the user, honor
4437: the HTTP headers (including, in particular, redirects and HTTP
4438: cookie headers), but must ignore any entity bodies returned in the
4439: responses. User agents may close the connection prematurely once
4440: they start receiving an entity body. <a href="#refsCOOKIES">[COOKIES]</a></p>
4441:
4442: <p>When the <code title="attr-hyperlink-ping">ping</code> attribute is
4443: present, user agents should clearly indicate to the user that
4444: following the hyperlink will also cause secondary requests to be
4445: sent in the background, possibly including listing the actual target
4446: URLs.</p>
4447:
4448: <p class="example">For example, a visual user agent could include
4449: the hostnames of the target ping URLs along with the hyperlink's
4450: actual URL in a status bar or tooltip.</p>
4451:
4452: </div>
4453:
4454: <div class="note">
4455:
4456: <p>The <code title="attr-hyperlink-ping">ping</code> attribute is redundant
4457: with pre-existing technologies like HTTP redirects and JavaScript
4458: in allowing Web pages to track which off-site links are most
4459: popular or allowing advertisers to track click-through rates.</p>
4460:
4461: <p>However, the <code title="attr-hyperlink-ping">ping</code> attribute
4462: provides these advantages to the user over those alternatives:</p>
4463:
4464: <ul><li>It allows the user to see the final target URL
4465: unobscured.</li>
4466:
4467: <li>It allows the UA to inform the user about the out-of-band
4468: notifications.</li>
4469:
4470: <li>It allows the user to disable the notifications without losing
4471: the underlying link functionality.</li>
4472:
4473: <li>It allows the UA to optimize the use of available network
4474: bandwidth so that the target page loads faster.</li>
1.190 sruby 4475:
1.191 sruby 4476: </ul><p>Thus, while it is possible to track users without this feature,
4477: authors are encouraged to use the <code title="attr-hyperlink-ping">ping</code> attribute so that the user
4478: agent can make the user experience more transparent.</p>
1.190 sruby 4479:
1.191 sruby 4480: </div>
4481:
4482: <!-- resolving ping urls happens at audit time, so base URL changes
4483: affect the values of ping attributes -->
4484:
4485:
4486:
4487: <h4 id="linkTypes"><span class="secno">4.12.5 </span>Link types</h4>
1.190 sruby 4488:
4489: <p>The following table summarizes the link types that are defined by
4490: this specification. This table is non-normative; the actual
4491: definitions for the link types are given in the next few
4492: sections.</p>
4493:
4494: <p>In this section, the term <i>referenced document</i> refers to
4495: the resource identified by the element representing the link, and
4496: the term <i>current document</i> refers to the resource within
4497: which the element representing the link finds itself.</p>
4498:
4499: <div class="impl">
4500:
4501: <p>To determine which link types apply to a <code><a href="the-link-element.html#the-link-element">link</a></code>,
4502: <code><a href="the-a-element.html#the-a-element">a</a></code>, or <code><a href="the-area-element.html#the-area-element">area</a></code> element, the element's <code title="">rel</code> attribute must be <a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on
4503: spaces">split on spaces</a>. The resulting tokens are the link
4504: types that apply to that element.</p>
4505:
4506: </div>
4507:
4508: <p>Except where otherwise specified, a keyword must not be specified
4509: more than once per <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code>
4510: attribute.</p>
4511:
4512: <p>Link types are always <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a><span class="impl">, and must be compared as such</span>.</p>
4513:
4514: <p class="example">Thus, <code title="">rel="next"</code> is the
4515: same as <code title="">rel="NEXT"</code>.</p>
4516:
4517: <table><thead><tr><th rowspan="2">Link type</th>
4518: <th colspan="2">Effect on...</th>
4519: <th rowspan="2">Brief description</th>
4520: </tr><tr><th><code><a href="the-link-element.html#the-link-element">link</a></code></th>
4521: <th><code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code></th>
4522: </tr></thead><tbody><tr><td><code title="rel-alternate"><a href="#rel-alternate">alternate</a></code></td> <!-- second most used <link rel> value -->
4523: <td><a href="#hyperlink">Hyperlink</a></td>
4524: <td><a href="#hyperlink">Hyperlink</a></td>
4525: <td>Gives alternate representations of the current document.</td>
4526: </tr><tr><td><code title="rel-author"><a href="#link-type-author">author</a></code></td>
4527: <td><a href="#hyperlink">Hyperlink</a></td>
4528: <td><a href="#hyperlink">Hyperlink</a></td>
4529: <td>Gives a link to the author of the current document or article.</td>
4530: </tr><tr><td><code title="rel-bookmark"><a href="#link-type-bookmark">bookmark</a></code></td> <!-- fourth most used <a rel> value -->
4531: <td><em>not allowed</em></td>
4532: <td><a href="#hyperlink">Hyperlink</a></td>
4533: <td>Gives the permalink for the nearest ancestor section.</td>
4534: </tr><!-- (commented out on the assumption that rel=contact is really XFN)
4535: <tr>
4536: <td><code title="rel-contact">contact</code></td> <!- 8th most used <a rel> value ->
4537: <td><span>Hyperlink</span></td>
4538: <td><span>Hyperlink</span></td>
4539: <td>Gives a link to contact information for the current document.</td>
4540: </tr>
4541: --><!-- fifth and sixth most used <a rel> value (sixth is "external nofollow"), but moved to the wiki because of http://www.w3.org/Bugs/Public/show_bug.cgi?id=11181 --><!--!--><!--
4542: <tr>
4543: <td><code title="rel-external">external</code></td>
4544: <td><em>not allowed</em></td>
4545: <td><span>Hyperlink</span></td>
4546: <td>Indicates that the referenced document is not part of the same site as the current document.</td>
4547: </tr>
4548: --><tr><td><code title="rel-help"><a href="#link-type-help">help</a></code></td>
4549: <td><a href="#hyperlink">Hyperlink</a></td>
4550: <td><a href="#hyperlink">Hyperlink</a></td>
4551: <td>Provides a link to context-sensitive help.</td>
4552: </tr><tr><td><code title="rel-icon"><a href="#rel-icon">icon</a></code></td> <!-- link rel="shortcut icon" and its ilk are the fourth, sixth, and ninth most used values -->
4553: <td><a href="#external-resource-link" title="external resource link">External Resource</a></td>
4554: <td><em>not allowed</em></td>
4555: <td>Imports an icon to represent the current document.</td>
4556: </tr><tr><td><code title="rel-license"><a href="#link-type-license">license</a></code></td> <!-- seventh most used <a rel> value -->
4557: <td><a href="#hyperlink">Hyperlink</a></td>
4558: <td><a href="#hyperlink">Hyperlink</a></td>
4559: <td>Indicates that the main content of the current document is covered by the copyright license described by the referenced document.</td>
4560: </tr><tr><td><code title="rel-next"><a href="#link-type-next">next</a></code></td>
4561: <td><a href="#hyperlink">Hyperlink</a></td>
4562: <td><a href="#hyperlink">Hyperlink</a></td>
4563: <td>Indicates that the current document is a part of a series, and that the next document in the series is the referenced document.</td>
4564: </tr><tr><td><code title="rel-nofollow"><a href="#link-type-nofollow">nofollow</a></code></td> <!-- most used <a rel> value (and sixth most used is "external nofollow") -->
4565: <td><em>not allowed</em></td>
4566: <td><a href="#hyperlink-annotation" title="hyperlink annotation">Annotation</a></td>
4567: <td>Indicates that the current document's original author or publisher does not endorse the referenced document.</td>
4568: </tr><tr><td><code title="rel-noreferrer"><a href="#link-type-noreferrer">noreferrer</a></code></td>
4569: <td><em>not allowed</em></td>
4570: <td><a href="#hyperlink-annotation" title="hyperlink annotation">Annotation</a></td>
4571: <td>Requires that the user agent not send an HTTP <code title="http-referer">Referer</code> (sic) header if the user follows the hyperlink.</td>
4572: </tr><!-- used quite a bit; removed for http://www.w3.org/Bugs/Public/show_bug.cgi?id=12224 --><!-- now registered in http://microformats.org/wiki/existing-rel-values#formats --><!--
4573: <tr>
4574: <td><code title="rel-pingback">pingback</code></td>
4575: <td><span title="external resource link">External Resource</span></td>
4576: <td><em>not allowed</em></td>
4577: <td>Gives the address of the pingback server that handles pingbacks to the current document.</td>
4578: </tr>
4579: --><tr><td><code title="rel-prefetch"><a href="#link-type-prefetch">prefetch</a></code></td>
4580: <td><a href="#external-resource-link" title="external resource link">External Resource</a></td>
4581: <td><a href="#external-resource-link" title="external resource link">External Resource</a></td>
4582: <td>Specifies that the target resource should be preemptively cached.</td>
4583: </tr><tr><td><code title="rel-prev"><a href="#link-type-prev">prev</a></code></td> <!-- prev is used more than previous -->
4584: <td><a href="#hyperlink">Hyperlink</a></td>
4585: <td><a href="#hyperlink">Hyperlink</a></td>
4586: <td>Indicates that the current document is a part of a series, and that the previous document in the series is the referenced document.</td>
4587: </tr><tr><td><code title="rel-search"><a href="#link-type-search">search</a></code></td> <!-- used quite a bit -->
4588: <td><a href="#hyperlink">Hyperlink</a></td>
4589: <td><a href="#hyperlink">Hyperlink</a></td>
4590: <td>Gives a link to a resource that can be used to search through the current document and its related pages.</td>
4591: </tr><!-- used quite a bit, but dropped due to wg decision in http://www.w3.org/Bugs/Public/show_bug.cgi?id=11183 --><!--!--><!--
4592: <tr>
4593: <td><code title="rel-sidebar">sidebar</code></td>
4594: <td><span>Hyperlink</span></td>
4595: <td><span>Hyperlink</span></td>
4596: <td>Specifies that the referenced document, if retrieved, is intended to be shown in the browser's sidebar (if it has one).</td>
4597: </tr>
4598: --><tr><td><code title="rel-stylesheet"><a href="#link-type-stylesheet">stylesheet</a></code></td> <!-- most commonly used <link rel> value, variants came in 7th, 8th, 12th, 17th... -->
4599: <td><a href="#external-resource-link" title="external resource link">External Resource</a></td>
4600: <td><em>not allowed</em></td>
4601: <td>Imports a stylesheet.</td>
4602: </tr><tr><td><code title="rel-tag"><a href="#link-type-tag">tag</a></code></td> <!-- second and third most used <a rel> value (third is technically "category tag"). -->
4603: <td><em>not allowed</em></td>
4604: <td><a href="#hyperlink">Hyperlink</a></td>
4605: <td>Gives a tag (identified by the given address) that applies to the current document.</td>
4606: </tr></tbody></table><div class="impl">
4607:
4608: <p>Some of the types described below list synonyms for these
4609: values. These <!--<span class="impl">-->are to be handled as
4610: specified by user agents, but<!--</span>--> must not be used in
4611: documents.</p>
4612:
4613: </div>
4614:
4615: <!-- v2 ideas:
4616: * rel="related" // see also
4617: * http://microformats.org/wiki/rel-enclosure
4618: -->
4619:
4620:
1.191 sruby 4621: <h5 id="rel-alternate"><span class="secno">4.12.5.1 </span>Link type "<dfn title="rel-alternate"><code>alternate</code></dfn>"</h5>
1.190 sruby 4622:
4623: <p>The <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword may be
4624: used with <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
4625: elements.</p>
4626:
4627: <p>The meaning of this keyword depends on the values of the other
4628: attributes.</p>
4629:
4630: <dl class="switch"><dt>If the element is a <code><a href="the-link-element.html#the-link-element">link</a></code> element and the <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">rel</a></code> attribute also contains the
4631: keyword <code title="rel-stylesheet"><a href="#link-type-stylesheet">stylesheet</a></code></dt>
4632:
4633: <dd>
4634:
4635: <p>The <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword
4636: modifies the meaning of the <code title="rel-stylesheet"><a href="#link-type-stylesheet">stylesheet</a></code> keyword in the way
4637: described for that keyword. The <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword does not create a
4638: link of its own.</p>
4639:
4640: </dd>
4641:
4642:
4643: <dt>The <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword is
4644: used with the <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code>
4645: attribute set to the value <code title="">application/rss+xml</code> or the value <code title="">application/atom+xml</code></dt>
4646:
4647: <dd>
4648:
4649: <p>The keyword creates a <a href="#hyperlink">hyperlink</a> referencing a
4650: syndication feed (though not necessarily syndicating exactly the
4651: same content as the current page).</p>
4652:
4653: <div class="impl">
4654:
4655: <p>The first <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, or <code><a href="the-area-element.html#the-area-element">area</a></code>
4656: element in the document (in tree order) with the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword used with the <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code> attribute set to the value
4657: <code title="">application/rss+xml</code> or the value <code title="">application/atom+xml</code> must be treated as the default
4658: syndication feed for the purposes of feed autodiscovery.</p>
4659:
4660: <div class="example">
4661: <p>The following <code><a href="the-link-element.html#the-link-element">link</a></code> element gives the syndication
4662: feed for the current page:</p>
4663: <pre><link rel="alternate" type="application/atom+xml" href="data.xml"></pre>
4664: <p>The following extract offers various different syndication
4665: feeds:</p>
4666: <pre><p>You can access the planets database using Atom feeds:</p>
4667: <ul>
4668: <li><a href="recently-visited-planets.xml" rel="alternate" type="application/atom+xml">Recently Visited Planets</a></li>
4669: <li><a href="known-bad-planets.xml" rel="alternate" type="application/atom+xml">Known Bad Planets</a></li>
4670: <li><a href="unexplored-planets.xml" rel="alternate" type="application/atom+xml">Unexplored Planets</a></li>
4671: </ul></pre>
4672: </div>
4673:
4674: </div>
4675:
4676: </dd>
4677:
4678:
4679: <dt>Otherwise</dt>
4680:
4681: <dd>
4682:
4683: <p>The keyword creates a <a href="#hyperlink">hyperlink</a> referencing an
4684: alternate representation of the current document.</p>
4685:
4686: <p>The nature of the referenced document is given by the <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code>, <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">hreflang</a></code>, and <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code> attributes.</p>
4687:
4688: <p>If the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword is
4689: used with the <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code>
4690: attribute, it indicates that the referenced document is intended for
4691: use with the media specified.</p>
4692:
4693: <p>If the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword is
4694: used with the <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">hreflang</a></code>
4695: attribute, and that attribute's value differs from the <a href="infrastructure.html#root-element">root
4696: element</a>'s <a href="global-attributes.html#language">language</a>, it indicates that the
4697: referenced document is a translation.</p>
4698:
4699: <p>If the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword is
4700: used with the <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code>
4701: attribute, it indicates that the referenced document is a
4702: reformulation of the current document in the specified format.</p>
4703:
4704: <p>The <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code>, <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">hreflang</a></code>, and <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code> attributes can be combined
4705: when specified with the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code>
4706: keyword.</p>
4707:
4708: <div class="example">
4709:
4710: <p>For example, the following link is a French translation that
4711: uses the PDF format:</p>
4712:
4713: <pre><link rel=alternate type=application/pdf hreflang=fr href=manual-fr></pre>
4714:
4715: </div>
4716:
4717: <p>This relationship is transitive — that is, if a document
4718: links to two other documents with the link type "<code title="rel-alternate"><a href="#rel-alternate">alternate</a></code>", then, in addition to
4719: implying that those documents are alternative representations of
4720: the first document, it is also implying that those two documents
4721: are alternative representations of each other.</p>
4722:
4723: </dd>
4724:
1.191 sruby 4725: </dl><h5 id="link-type-author"><span class="secno">4.12.5.2 </span>Link type "<dfn title="rel-author"><code>author</code></dfn>"</h5>
1.190 sruby 4726:
4727: <p>The <code title="rel-author"><a href="#link-type-author">author</a></code> keyword may be
4728: used with <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
4729: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
4730:
4731: <p>For <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements, the <code title="rel-author"><a href="#link-type-author">author</a></code> keyword indicates that the
4732: referenced document provides further information about the author of
4733: the nearest <code><a href="the-article-element.html#the-article-element">article</a></code> element ancestor of the element
4734: defining the hyperlink, if there is one, or of the page as a whole,
4735: otherwise.</p>
4736:
4737: <p>For <code><a href="the-link-element.html#the-link-element">link</a></code> elements, the <code title="rel-author"><a href="#link-type-author">author</a></code> keyword indicates that the
4738: referenced document provides further information about the author
4739: for the page as a whole.</p>
4740:
4741: <p class="note">The "referenced document" can be, and often is, a
4742: <code title="">mailto:</code> URL giving the e-mail address of the
4743: author. <a href="#refsMAILTO">[MAILTO]</a></p>
4744:
4745: <div class="impl">
4746:
4747: <p><strong>Synonyms</strong>: For historical reasons, user agents
4748: must also treat <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and
4749: <code><a href="the-area-element.html#the-area-element">area</a></code> elements that have a <code title="">rev</code>
4750: attribute with the value "<code>made</code>" as having the <code title="rel-author"><a href="#link-type-author">author</a></code> keyword specified as a link
4751: relationship.</p>
4752:
4753: </div>
4754:
4755:
1.191 sruby 4756: <h5 id="link-type-bookmark"><span class="secno">4.12.5.3 </span>Link type "<dfn title="rel-bookmark"><code>bookmark</code></dfn>"</h5>
1.190 sruby 4757:
4758: <p>The <code title="rel-bookmark"><a href="#link-type-bookmark">bookmark</a></code> keyword may be
4759: used with <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements. This
4760: keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
4761:
4762: <p>The <code title="rel-bookmark"><a href="#link-type-bookmark">bookmark</a></code> keyword gives a
4763: permalink for the nearest ancestor <code><a href="the-article-element.html#the-article-element">article</a></code> element of
4764: the linking element in question, or of <a href="headings-and-sections.html#associatedSection">the section the linking element is most
4765: closely associated with</a>, if there are no ancestor
4766: <code><a href="the-article-element.html#the-article-element">article</a></code> elements.</p>
4767:
4768: <div class="example">
4769: <p>The following snippet has three permalinks. A user agent could
4770: determine which permalink applies to which part of the spec by
4771: looking at where the permalinks are given.</p>
4772: <pre> ...
4773: <body>
4774: <h1>Example of permalinks</h1>
4775: <div id="a">
4776: <h2>First example</h2>
4777: <p><a href="a.html" rel="bookmark">This</a> permalink applies to
4778: only the content from the first H2 to the second H2. The DIV isn't
4779: exactly that section, but it roughly corresponds to it.</p>
4780: </div>
4781: <h2>Second example</h2>
4782: <article id="b">
4783: <p><a href="b.html" rel="bookmark">This</a> permalink applies to
4784: the outer ARTICLE element (which could be, e.g., a blog post).</p>
4785: <article id="c">
4786: <p><a href="c.html" rel="bookmark">This</a> permalink applies to
4787: the inner ARTICLE element (which could be, e.g., a blog comment).</p>
4788: </article>
4789: </article>
4790: </body>
4791: ...</pre>
4792: </div>
4793:
4794: <!-- (commented out on the assumption that rel=contact is really XFN)
4795: <h5>Link type "<dfn title="rel-contact"><code>contact</code></dfn>"</h5>
4796:
4797: <p>The <code title="rel-contact">contact</code> keyword may be used
4798: with <code>link</code>, <code>a</code>, and <code>area</code>
4799: elements. This keyword creates a <span>hyperlink</span>.</p>
4800:
4801: <p>For <code>a</code> and <code>area</code> elements, the <code
4802: title="rel-contact">contact</code> keyword indicates that the
4803: referenced document provides further contact information for the
4804: author of the nearest <code>article</code> element ancestor of the
4805: element defining the hyperlink, if there is one, or of the page as a
4806: whole, otherwise.</p>
4807:
4808: <div class="impl">
4809:
4810: <p>User agents must treat any hyperlink in an <code>address</code>
4811: element as having the <code title="rel-contact">contact</code> link
4812: type specified.</p>
4813:
4814: </div>
4815:
4816: <p>For <code>link</code> elements, the <code
4817: title="rel-contact">contact</code> keyword indicates that the
4818: referenced document provides further contact information for the
4819: page as a whole.</p>
4820: -->
4821:
4822: <!-- fifth and sixth most used <a rel> value (sixth is "external nofollow"), but moved to the wiki because of http://www.w3.org/Bugs/Public/show_bug.cgi?id=11181 --> <!--!-->
4823: <!--
4824: <h5>Link type "<dfn title="rel-external"><code>external</code></dfn>"</h5>
4825:
4826: <p>The <code title="rel-external">external</code> keyword may be
4827: used with <code>a</code> and <code>area</code> elements. This
4828: keyword creates a <span>hyperlink</span>.</p>
4829:
4830: <p>The <code title="rel-external">external</code> keyword indicates
4831: that the link is leading to a document that is not part of the site
4832: that the current document forms a part of.</p>
4833: -->
4834:
1.191 sruby 4835: <h5 id="link-type-help"><span class="secno">4.12.5.4 </span>Link type "<dfn title="rel-help"><code>help</code></dfn>"</h5>
1.190 sruby 4836:
4837: <p>The <code title="rel-help"><a href="#link-type-help">help</a></code> keyword may be used with
4838: <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
4839: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
4840:
4841: <p>For <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements, the <code title="rel-help"><a href="#link-type-help">help</a></code> keyword indicates that the referenced
4842: document provides further help information for the parent of the
4843: element defining the hyperlink, and its children.</p>
4844:
4845: <div class="example">
4846:
4847: <p>In the following example, the form control has associated
4848: context-sensitive help. The user agent could use this information,
4849: for example, displaying the referenced document if the user presses
4850: the "Help" or "F1" key.</p>
4851:
4852: <pre> <p><label> Topic: <input name=topic> <a href="help/topic.html" rel="help">(Help)</a></label></p></pre>
4853:
4854: </div>
4855:
4856: <p>For <code><a href="the-link-element.html#the-link-element">link</a></code> elements, the <code title="rel-help"><a href="#link-type-help">help</a></code> keyword indicates that the referenced
4857: document provides help for the page as a whole.</p>
4858:
4859: <p>For <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements, on some
4860: browsers, the <code title="rel-help"><a href="#link-type-help">help</a></code> keyword causes the
4861: link to use a different cursor.</p>
4862:
4863:
1.191 sruby 4864: <h5 id="rel-icon"><span class="secno">4.12.5.5 </span>Link type "<dfn title="rel-icon"><code>icon</code></dfn>"</h5>
1.190 sruby 4865:
4866: <p>The <code title="rel-icon"><a href="#rel-icon">icon</a></code> keyword may be used with
4867: <code><a href="the-link-element.html#the-link-element">link</a></code> elements. This keyword creates an <a href="#external-resource-link" title="external resource link">external resource link</a>.</p>
4868:
4869: <div class="impl">
4870:
4871: <p>The specified resource is an icon representing the page or site,
4872: and should be used by the user agent when representing the page in
4873: the user interface.</p>
4874:
4875: </div>
4876:
4877: <p>Icons could be auditory icons, visual icons, or other kinds of
4878: icons. <span class="impl">If multiple icons are provided, the user
4879: agent must select the most appropriate icon according to the <code title="attr-link-type"><a href="the-link-element.html#attr-link-type">type</a></code>, <code title="attr-link-media"><a href="the-link-element.html#attr-link-media">media</a></code>, and <code title="attr-link-sizes"><a href="#attr-link-sizes">sizes</a></code> attributes. If there are
4880: multiple equally appropriate icons, user agents must use the last
4881: one declared in <a href="infrastructure.html#tree-order">tree order</a> at the time that the user
4882: agent collected the list of icons. If the user agent tries to use an
4883: icon but that icon is determined, upon closer examination, to in
4884: fact be inappropriate (e.g. because it uses an unsupported format),
4885: then the user agent must try the next-most-appropriate icon as
4886: determined by the attributes.</span></p>
4887:
4888: <div class="impl">
4889:
4890: <p class="note">User agents are not required to update icons when
4891: the list of icons changes, but are encouraged to do so.</p>
4892:
4893: <p>There is no default type for resources given by the <code title="rel-icon"><a href="#rel-icon">icon</a></code> keyword. However, for the purposes of
4894: <a href="the-link-element.html#concept-link-type-sniffing">determining the type of the
4895: resource</a>, user agents must expect the resource to be an image.</p>
4896:
4897: </div>
4898:
4899: <p>The <dfn id="attr-link-sizes" title="attr-link-sizes"><code>sizes</code></dfn>
4900: attribute gives the sizes of icons for visual media. Its value, if
4901: present, is merely advisory. User agents may use the value to decide
4902: which icon(s) to use if multiple icons are available.</p>
4903:
4904: <p>If specified, the attribute must have a value that is an
4905: <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">unordered set of unique space-separated tokens</a> which
4906: are <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>. Each value must be either
4907: an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="attr-link-sizes-any"><a href="#attr-link-sizes-any">any</a></code>", or a value that consists of
4908: two <a href="common-microsyntaxes.html#valid-non-negative-integer" title="valid non-negative integer">valid non-negative
4909: integers</a> that do not have a leading "0" (U+0030)
4910: character and that are separated by a single U+0078 LATIN SMALL
4911: LETTER X or U+0058 LATIN CAPITAL LETTER X character.</p>
4912:
4913: <p>The keywords represent icon sizes.</p>
4914:
4915: <div class="impl">
4916:
4917: <p>To parse and process the attribute's value, the user agent must
4918: first <a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on spaces">split the attribute's
4919: value on spaces</a>, and must then parse each resulting keyword
4920: to determine what it represents.</p>
4921:
4922: </div>
4923:
4924: <p>The <dfn id="attr-link-sizes-any" title="attr-link-sizes-any"><code>any</code></dfn> keyword
4925: represents that the resource contains a scalable icon, e.g. as
4926: provided by an SVG image.</p>
4927:
4928: <div class="impl">
4929:
4930: <p>Other keywords must be further parsed as follows to determine
4931: what they represent:</p>
4932:
4933: <ul><li><p>If the keyword doesn't contain exactly one U+0078 LATIN
4934: SMALL LETTER X or U+0058 LATIN CAPITAL LETTER X character, then
4935: this keyword doesn't represent anything. Abort these steps for that
4936: keyword.</p></li>
4937:
4938: <li><p>Let <var title="">width string</var> be the string before
4939: the "<code title="">x</code>" or "<code title="">X</code>".</p></li>
4940:
4941: <li><p>Let <var title="">height string</var> be the string after
4942: the "<code title="">x</code>" or "<code title="">X</code>".</p></li>
4943:
4944: <li><p>If either <var title="">width string</var> or <var title="">height string</var> start with a "0" (U+0030)
4945: character or contain any characters other than characters in the
4946: range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, then this
4947: keyword doesn't represent anything. Abort these steps for that
4948: keyword.</p></li>
4949:
4950: <li><p>Apply the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
4951: integers</a> to <var title="">width string</var> to obtain <var title="">width</var>.</p></li>
4952:
4953: <li><p>Apply the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
4954: integers</a> to <var title="">height string</var> to obtain <var title="">height</var>.</p></li>
4955:
4956: <li><p>The keyword represents that the resource contains a bitmap
4957: icon with a width of <var title="">width</var> device pixels and a
4958: height of <var title="">height</var> device pixels.</p></li>
4959:
4960: </ul></div>
4961:
4962: <p>The keywords specified on the <code title="attr-link-sizes"><a href="#attr-link-sizes">sizes</a></code> attribute must not represent
4963: icon sizes that are not actually available in the linked
4964: resource.</p>
4965:
4966: <div class="impl">
4967:
4968: <p>In the absence of a <code><a href="the-link-element.html#the-link-element">link</a></code> with the <code title="rel-icon"><a href="#rel-icon">icon</a></code> keyword, for <code><a href="dom.html#document">Document</a></code>s
4969: obtained over HTTP or HTTPS, user agents may instead attempt to
1.191 sruby 4970: <a href="urls.html#fetch">fetch</a><!--FETCH--> and use an icon with the
4971: <a href="urls.html#absolute-url">absolute URL</a> obtained by resolving the <a href="urls.html#url">URL</a>
4972: "<code title="">/favicon.ico</code>" against <a href="dom.html#the-document's-address">the document's
1.190 sruby 4973: address</a>, as if the page had declared that icon using the
4974: <code title="rel-icon"><a href="#rel-icon">icon</a></code> keyword.</p>
4975:
4976: </div>
4977:
4978: <div class="example">
4979:
4980: <p>The following snippet shows the top part of an application with
4981: several icons.</p>
4982:
4983: <pre><!DOCTYPE HTML>
4984: <html>
4985: <head>
4986: <title>lsForums — Inbox</title>
4987: <link rel=icon href=favicon.png sizes="16x16" type="image/png">
4988: <link rel=icon href=windows.ico sizes="32x32 48x48" type="image/vnd.microsoft.icon">
4989: <link rel=icon href=mac.icns sizes="128x128 512x512 8192x8192 32768x32768">
4990: <link rel=icon href=iphone.png sizes="57x57" type="image/png">
4991: <link rel=icon href=gnome.svg sizes="any" type="image/svg+xml">
4992: <link rel=stylesheet href=lsforums.css>
4993: <script src=lsforums.js></script>
4994: <meta name=application-name content="lsForums">
4995: </head>
4996: <body>
4997: ...</pre>
4998:
4999: </div>
5000:
5001: <p>For historical reasons, the <code title="rel-icon"><a href="#rel-icon">icon</a></code>
5002: keyword may be preceded by the keyword "<code title="">shortcut</code>". If the "<code title="">shortcut</code>"
5003: keyword is present, it must be come immediately before the <code title="rel-icon"><a href="#rel-icon">icon</a></code> keyword and the two keywords must be
5004: separated by only a single U+0020 SPACE character.</p>
5005:
5006:
1.191 sruby 5007: <h5 id="link-type-license"><span class="secno">4.12.5.6 </span>Link type "<dfn title="rel-license"><code>license</code></dfn>"</h5>
1.190 sruby 5008:
5009: <p>The <code title="rel-license"><a href="#link-type-license">license</a></code> keyword may be used
5010: with <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
5011: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
5012:
5013: <p>The <code title="rel-license"><a href="#link-type-license">license</a></code> keyword indicates
5014: that the referenced document provides the copyright license terms
5015: under which the main content of the current document is
5016: provided.</p>
5017:
5018: <p>This specification does not specify how to distinguish between
5019: the main content of a document and content that is not deemed to be
5020: part of that main content. The distinction should be made clear to
5021: the user.</p>
5022:
5023: <div class="example">
5024:
5025: <p>Consider a photo sharing site. A page on that site might
5026: describe and show a photograph, and the page might be marked up as
5027: follows:</p>
5028:
5029: <pre><!DOCTYPE HTML>
5030: <html>
5031: <head>
5032: <title>Exampl Pictures: Kissat</title>
5033: <link rel="stylesheet" href="/style/default">
5034: </head>
5035: <body>
5036: <h1>Kissat</h1>
5037: <nav>
5038: <a href="../">Return to photo index</a>
5039: </nav>
5040: <figure>
5041: <img src="/pix/39627052_fd8dcd98b5.jpg">
5042: <figcaption>Kissat</figcaption>
5043: </figure>
5044: <p>One of them has six toes!</p>
5045: <p><small><a rel="license" href="http://www.opensource.org/licenses/mit-license.php">MIT Licensed</a></small></p>
5046: <footer>
5047: <a href="/">Home</a> | <a href="../">Photo index</a>
5048: <p><small>© copyright 2009 Exampl Pictures. All Rights Reserved.</small></p>
5049: </footer>
5050: </body>
5051: </html></pre>
5052:
5053: <p>In this case the <code title="rel-license"><a href="#link-type-license">license</a></code>
5054: applies to just the photo (the main content of the document), not
5055: the whole document. In particular not the design of the page
5056: itself, which is covered by the copyright given at the bottom of
5057: the document. This could be made clearer in the styling
5058: (e.g. making the license link prominently positioned near the
5059: photograph, while having the page copyright in light small text at
5060: the foot of the page.</p>
5061:
5062: </div>
5063:
5064: <div class="impl">
5065:
5066: <p><strong>Synonyms</strong>: For historical reasons, user agents
5067: must also treat the keyword "<code title="">copyright</code>" like
5068: the <code title="rel-license"><a href="#link-type-license">license</a></code> keyword.</p>
5069:
5070: </div>
5071:
5072:
1.191 sruby 5073: <h5 id="link-type-nofollow"><span class="secno">4.12.5.7 </span>Link type "<dfn title="rel-nofollow"><code>nofollow</code></dfn>"</h5>
1.190 sruby 5074:
5075: <p>The <code title="rel-nofollow"><a href="#link-type-nofollow">nofollow</a></code> keyword may be
5076: used with <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements. This
5077: keyword does not create a <a href="#hyperlink">hyperlink</a>, but <a href="#hyperlink-annotation" title="hyperlink annotation">annotates</a> any other hyperlinks
5078: created by the element (the implied hyperlink, if no other keywords
5079: create one).</p>
5080:
5081: <p>The <code title="rel-nofollow"><a href="#link-type-nofollow">nofollow</a></code> keyword indicates
5082: that the link is not endorsed by the original author or publisher of
5083: the page, or that the link to the referenced document was included
5084: primarily because of a commercial relationship between people
5085: affiliated with the two pages.</p>
5086:
5087:
1.191 sruby 5088: <h5 id="link-type-noreferrer"><span class="secno">4.12.5.8 </span>Link type "<dfn title="rel-noreferrer"><code>noreferrer</code></dfn>"</h5>
1.190 sruby 5089:
5090: <p>The <code title="rel-noreferrer"><a href="#link-type-noreferrer">noreferrer</a></code> keyword may be
5091: used with <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements. This
5092: keyword does not create a <a href="#hyperlink">hyperlink</a>, but <a href="#hyperlink-annotation" title="hyperlink annotation">annotates</a> any other hyperlinks
5093: created by the element (the implied hyperlink, if no other keywords
5094: create one).</p>
5095:
5096: <p>It indicates that no referrer information is to be leaked when
5097: following the link.</p>
5098:
5099: <div class="impl">
5100:
5101: <p>If a user agent follows a link defined by an <code><a href="the-a-element.html#the-a-element">a</a></code> or
5102: <code><a href="the-area-element.html#the-area-element">area</a></code> element that has the <code title="rel-noreferrer"><a href="#link-type-noreferrer">noreferrer</a></code> keyword, the user agent
5103: must not include a <code title="http-referer">Referer</code> (sic)
5104: HTTP header (<a href="urls.html#concept-http-equivalent-headers" title="concept-http-equivalent-headers">or
5105: equivalent</a> for other protocols) in the request.</p>
5106:
5107: <p>This keyword also <a href="#noopener">causes the <code title="dom-opener">opener</code> attribute to remain null</a> if the
5108: hyperlink creates a new <a href="#browsing-context">browsing context</a>.</p>
5109:
5110: </div>
5111:
5112: <!-- v2: Would be nice to apply this to other elements too,
5113: e.g. letting <img> or CSS or <video> hide the referrer -->
5114:
5115: <!-- used quite a bit; removed for http://www.w3.org/Bugs/Public/show_bug.cgi?id=12224 -->
5116: <!-- now registered in http://microformats.org/wiki/existing-rel-values#formats -->
5117: <!--
5118: <h5>Link type "<dfn title="rel-pingback"><code>pingback</code></dfn>"</h5>
5119:
5120: <p>The <code title="rel-pingback">pingback</code> keyword may be
5121: used with <code>link</code> elements. This keyword creates an <span
5122: title="external resource link">external resource link</span>.</p>
5123:
5124: <p>For the semantics of the <code
5125: title="rel-pingback">pingback</code> keyword, see the Pingback 1.0
5126: specification. <a href="#refsPINGBACK">[PINGBACK]</a></p>
5127: -->
5128:
1.191 sruby 5129: <h5 id="link-type-prefetch"><span class="secno">4.12.5.9 </span>Link type "<dfn title="rel-prefetch"><code>prefetch</code></dfn>"</h5>
1.190 sruby 5130:
5131: <p>The <code title="rel-prefetch"><a href="#link-type-prefetch">prefetch</a></code> keyword may be
5132: used with <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
5133: elements. This keyword creates an <a href="#external-resource-link" title="external resource
5134: link">external resource link</a>.</p>
5135:
5136: <p>The <code title="rel-prefetch"><a href="#link-type-prefetch">prefetch</a></code> keyword indicates
5137: that preemptively fetching and caching the specified resource is
5138: likely to be beneficial, as it is highly likely that the user will
5139: require this resource.</p>
5140:
5141: <p>There is no default type for resources given by the <code title="rel-prefetch"><a href="#link-type-prefetch">prefetch</a></code> keyword.</p>
5142:
5143:
1.191 sruby 5144: <h5 id="link-type-search"><span class="secno">4.12.5.10 </span>Link type "<dfn title="rel-search"><code>search</code></dfn>"</h5>
1.190 sruby 5145:
5146: <p>The <code title="rel-search"><a href="#link-type-search">search</a></code> keyword may be used
5147: with <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
5148: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
5149:
5150: <p>The <code title="rel-search"><a href="#link-type-search">search</a></code> keyword indicates that
5151: the referenced document provides an interface specifically for
5152: searching the document and its related resources.</p>
5153:
5154: <p class="note">OpenSearch description documents can be used with
5155: <code><a href="the-link-element.html#the-link-element">link</a></code> elements and the <code title="rel-search"><a href="#link-type-search">search</a></code> link type to enable user agents to
5156: autodiscover search interfaces. <a href="#refsOPENSEARCH">[OPENSEARCH]</a></p>
5157:
5158:
5159: <!-- dropped due to wg decision in http://www.w3.org/Bugs/Public/show_bug.cgi?id=11183 --> <!--!-->
5160: <!--
5161: <h5>Link type "<dfn title="rel-sidebar"><code>sidebar</code></dfn>"</h5>
5162:
5163: <p>The <code title="rel-sidebar">sidebar</code> keyword may be used
5164: with <code>link</code>, <code>a</code>, and <code>area</code>
5165: elements. This keyword creates a <span>hyperlink</span>.</p>
5166:
5167: <p>The <code title="rel-sidebar">sidebar</code> keyword indicates
5168: that the referenced document, if retrieved, is intended to be shown
5169: in a <span>secondary browsing context</span> (if possible), instead
5170: of in the current <span>browsing context</span>.</p>
5171:
5172: <p>A <span>hyperlink</span> with the <code
5173: title="rel-sidebar">sidebar</code> keyword specified is a <dfn
5174: title="rel-sidebar-hyperlink">sidebar hyperlink</dfn>.</p>
5175: -->
5176:
1.191 sruby 5177: <h5 id="link-type-stylesheet"><span class="secno">4.12.5.11 </span>Link type "<dfn title="rel-stylesheet"><code>stylesheet</code></dfn>"</h5>
1.190 sruby 5178:
5179: <p>The <code title="rel-stylesheet"><a href="#link-type-stylesheet">stylesheet</a></code> keyword may be
5180: used with <code><a href="the-link-element.html#the-link-element">link</a></code> elements. This keyword creates an <a href="#external-resource-link" title="external resource link">external resource link</a> that
5181: contributes to the <a href="styling.html#styling">styling processing model</a>.</p>
5182:
5183: <p>The specified resource is a resource that describes how to
5184: present the document. Exactly how the resource is to be processed
5185: depends on the actual type of the resource.</p>
5186:
5187: <p>If the <code title="rel-alternate"><a href="#rel-alternate">alternate</a></code> keyword is
5188: also specified on the <code><a href="the-link-element.html#the-link-element">link</a></code> element, then <dfn id="the-link-is-an-alternative-stylesheet">the link
5189: is an alternative stylesheet</dfn>; in this case, the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute must be specified on the
5190: <code><a href="the-link-element.html#the-link-element">link</a></code> element, with a non-empty value.</p>
5191:
5192: <p>The default type for resources given by the <code title="rel-stylesheet"><a href="#link-type-stylesheet">stylesheet</a></code> keyword is <code title="">text/css</code>.</p>
5193:
5194: <div class="impl">
5195:
5196: <p>The appropriate time to <a href="the-link-element.html#concept-link-obtain" title="concept-link-obtain">obtain</a> the resource is when the
5197: <a href="#external-resource-link" title="external resource link">external resource link</a>
5198: is created or when its element is <a href="infrastructure.html#insert-an-element-into-a-document" title="insert an element
5199: into a document">inserted into a document</a>, whichever happens
5200: last. If the resource is <a href="#the-link-is-an-alternative-stylesheet" title="the link is an alternative
5201: stylesheet">an alternative stylesheet</a> then the user agent may
5202: defer obtaining the resource until it is part of the <a href="infrastructure.html#preferred-style-sheet-set">preferred
5203: style sheet set</a>. <a href="#refsCSSOM">[CSSOM]</a></p> <!--
5204: what about DOM access of alt style sheets? -->
5205:
5206: <p><strong>Quirk</strong>: If the document has been set to
5207: <a href="infrastructure.html#quirks-mode">quirks mode</a>, has the <a href="#same-origin">same origin</a> as the
5208: <a href="urls.html#url">URL</a> of the external resource<!-- CVE-2010-0654 -->, and
5209: the <a href="urls.html#content-type" title="Content-Type">Content-Type metadata</a> of the
5210: external resource is not a supported style sheet type, the user
5211: agent must instead assume it to be <code title="">text/css</code>.</p>
5212:
5213: </div>
5214:
5215:
1.191 sruby 5216: <h5 id="link-type-tag"><span class="secno">4.12.5.12 </span>Link type "<dfn title="rel-tag"><code>tag</code></dfn>"</h5>
1.190 sruby 5217:
5218: <p>The <code title="rel-tag"><a href="#link-type-tag">tag</a></code> keyword may be used with
5219: <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code> elements. This keyword creates
5220: a <a href="#hyperlink">hyperlink</a>.</p>
5221:
5222: <p>The <code title="rel-tag"><a href="#link-type-tag">tag</a></code> keyword indicates that the
5223: <em>tag</em> that the referenced document represents applies to the
5224: current document.</p>
5225:
5226: <p class="note">Since it indicates that the tag <em>applies to the
5227: current document</em>, it would be inappropriate to use this keyword
5228: in the markup of a <a href="#tag-cloud">tag cloud</a>, which lists
5229: the popular tags across a set of pages.</p>
5230:
5231: <div class="example">
5232:
5233: <p>This document is about some gems, and so it is <i>tagged</i>
5234: with "<code title="">http://en.wikipedia.org/wiki/Gemstone</code>"
5235: to unambiguously categorise it as applying to the "jewel" kind of
5236: gems, and not to, say, the towns in the US, the Ruby package
5237: format, or the Swiss locomotive class:</p>
5238:
5239: <pre><!DOCTYPE HTML>
5240: <html>
5241: <head>
5242: <title>My Precious</title>
5243: </head>
5244: <body>
5245: <header><h1>My precious</h1> <p>Summer 2012</p></header>
5246: <p>Recently I managed to dispose of a red gem that had been
5247: bothering me. I now have a much nicer blue sapphire.</p>
5248: <p>The red gem had been found in a bauxite stone while I was digging
5249: out the office level, but nobody was willing to haul it away. The
5250: same red gem stayed there for literally years.</p>
5251: <footer>
5252: Tags: <a rel=tag href="http://en.wikipedia.org/wiki/Gemstone">Gemstone</a>
5253: </footer>
5254: </body>
5255: </html></pre>
5256:
5257: </div>
5258:
5259: <div class="example">
5260:
5261: <p>In <em>this</em> document, there are two articles. The "<code title="rel-tag"><a href="#link-type-tag">tag</a></code>" link, however, applies to the whole
5262: page (and would do so wherever it was placed, including if it was
5263: within the <code><a href="the-article-element.html#the-article-element">article</a></code> elements).</p>
5264:
5265: <pre><!DOCTYPE HTML>
5266: <html>
5267: <head>
5268: <title>Gem 4/4</title>
5269: </head>
5270: <body>
5271: <article>
5272: <h1>801: Steinbock</h1>
5273: <p>The number 801 Gem 4/4 electro-diesel has an ibex and was rebuilt in 2002.</p>
5274: </article>
5275: <article>
5276: <h1>802: Murmeltier</h1>
5277: <figure>
5278: <img src="http://upload.wikimedia.org/wikipedia/commons/b/b0/Trains_de_la_Bernina_en_hiver_2.jpg"
5279: alt="The 802 was red with pantographs and tall vents on the side.">
5280: <figcaption>The 802 in the 1980s, above Lago Bianco.</figcaption>
5281: </figure>
5282: <p>The number 802 Gem 4/4 electro-diesel has a marmot and was rebuilt in 2003.</p>
5283: </article>
5284: <p class="topic"><a rel=tag href="http://en.wikipedia.org/wiki/Rhaetian_Railway_Gem_4/4">Gem 4/4</a></p>
5285: </body>
5286: </html></pre>
5287:
5288: </div>
5289:
5290:
5291:
1.191 sruby 5292: <h5 id="sequential-link-types"><span class="secno">4.12.5.13 </span>Sequential link types</h5>
1.190 sruby 5293:
5294: <p>Some documents form part of a sequence of documents.</p>
5295:
5296: <p>A sequence of documents is one where each document can have a
5297: <em>previous sibling</em> and a <em>next sibling</em>. A document
5298: with no previous sibling is the start of its sequence, a document
5299: with no next sibling is the end of its sequence.</p>
5300:
5301: <p>A document may be part of multiple sequences.</p>
5302:
5303:
1.191 sruby 5304: <h6 id="link-type-next"><span class="secno">4.12.5.13.1 </span>Link type "<dfn title="rel-next"><code>next</code></dfn>"</h6>
1.190 sruby 5305:
5306: <p>The <code title="rel-next"><a href="#link-type-next">next</a></code> keyword may be used with
5307: <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
5308: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
5309:
5310: <p>The <code title="rel-next"><a href="#link-type-next">next</a></code> keyword indicates that the
5311: document is part of a sequence, and that the link is leading to the
5312: document that is the next logical document in the sequence.</p>
5313:
5314:
1.191 sruby 5315: <h6 id="link-type-prev"><span class="secno">4.12.5.13.2 </span>Link type "<dfn title="rel-prev"><code>prev</code></dfn>"</h6>
1.190 sruby 5316:
5317: <p>The <code title="rel-prev"><a href="#link-type-prev">prev</a></code> keyword may be used with
5318: <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code>
5319: elements. This keyword creates a <a href="#hyperlink">hyperlink</a>.</p>
5320:
5321: <p>The <code title="rel-prev"><a href="#link-type-prev">prev</a></code> keyword indicates that the
5322: document is part of a sequence, and that the link is leading to the
5323: document that is the previous logical document in the sequence.</p>
5324:
5325: <div class="impl">
5326:
5327: <p><strong>Synonyms</strong>: For historical reasons, user agents
5328: must also treat the keyword "<code title="">previous</code>" like
5329: the <code title="rel-prev"><a href="#link-type-prev">prev</a></code> keyword.</p>
5330:
5331: </div>
5332:
5333:
1.191 sruby 5334: <h5 id="other-link-types"><span class="secno">4.12.5.14 </span>Other link types</h5>
1.190 sruby 5335:
5336: <!-- XXX should update this section to more closely match the wiki -->
5337: <!-- possibly also applying the principles described here:
5338: http://lists.w3.org/Archives/Public/public-html/2011Mar/0497.html
5339: -->
5340:
5341: <p><dfn id="concept-rel-extensions" title="concept-rel-extensions">Extensions to the predefined
5342: set of link types</dfn> may be registered in the <a href="http://microformats.org/wiki/existing-rel-values#HTML5_link_type_extensions">microformats wiki existing-rel-values page</a>. <a href="#refsMFREL">[MFREL]</a></p>
5343:
5344: <p>Anyone is free to edit the <span title="">microformats wiki
5345: existing-rel-values page</span> at any time to add a type. Extension
5346: types must be specified with the following information:</p>
5347:
5348: <dl><dt>Keyword</dt>
5349:
5350: <dd>
5351:
5352: <p>The actual value being defined. The value should not be
5353: confusingly similar to any other defined value (e.g. differing
5354: only in case).</p>
5355:
5356: <p>If the value contains a ":" (U+003A) character, it must
5357: also be an <a href="urls.html#absolute-url">absolute URL</a>.</p>
5358:
5359: </dd>
5360:
5361:
5362: <dt>Effect on... <code><a href="the-link-element.html#the-link-element">link</a></code></dt>
5363:
5364: <dd>
5365:
5366: <p>One of the following:</p>
5367:
5368: <dl><dt>Not allowed</dt>
5369:
5370: <dd>The keyword must not be specified on <code><a href="the-link-element.html#the-link-element">link</a></code>
5371: elements.</dd>
5372:
5373: <dt>Hyperlink</dt>
5374:
5375: <dd>The keyword may be specified on a <code><a href="the-link-element.html#the-link-element">link</a></code> element;
5376: it creates a <a href="#hyperlink">hyperlink</a>.</dd>
5377:
5378: <dt>External Resource</dt>
5379:
5380: <dd>The keyword may be specified on a <code><a href="the-link-element.html#the-link-element">link</a></code> element;
5381: it creates an <a href="#external-resource-link">external resource link</a>.</dd>
5382:
5383: </dl></dd>
5384:
5385:
5386: <dt>Effect on... <code><a href="the-a-element.html#the-a-element">a</a></code> and <code><a href="the-area-element.html#the-area-element">area</a></code></dt>
5387:
5388: <dd>
5389:
5390: <p>One of the following:</p>
5391:
5392: <dl><dt>Not allowed</dt>
5393:
5394: <dd>The keyword must not be specified on <code><a href="the-a-element.html#the-a-element">a</a></code> and
5395: <code><a href="the-area-element.html#the-area-element">area</a></code> elements.</dd>
5396:
5397: <dt>Hyperlink</dt>
5398:
5399: <dd>The keyword may be specified on <code><a href="the-a-element.html#the-a-element">a</a></code> and
5400: <code><a href="the-area-element.html#the-area-element">area</a></code> elements; it creates a
5401: <a href="#hyperlink">hyperlink</a>.</dd>
5402:
5403: <dt>External Resource</dt>
5404:
5405: <dd>The keyword may be specified on <code><a href="the-a-element.html#the-a-element">a</a></code> and
5406: <code><a href="the-area-element.html#the-area-element">area</a></code> elements; it creates an <a href="#external-resource-link">external resource
5407: link</a>.</dd>
5408:
5409: <dt>Hyperlink Annotation</dt>
5410:
5411: <dd>The keyword may be specified on <code><a href="the-a-element.html#the-a-element">a</a></code> and
5412: <code><a href="the-area-element.html#the-area-element">area</a></code> elements; it <a href="#hyperlink-annotation" title="hyperlink
5413: annotation">annotates</a> other <a href="#hyperlink" title="hyperlink">hyperlinks</a> created by the element.</dd>
5414:
5415: </dl></dd>
5416:
5417:
5418: <dt>Brief description</dt>
5419:
5420: <dd><p>A short non-normative description of what the keyword's
5421: meaning is.</p></dd>
5422:
5423:
5424: <dt>Specification</dt>
5425:
5426: <dd><p>A link to a more detailed description of the keyword's
5427: semantics and requirements. It could be another page on the Wiki,
5428: or a link to an external page.</p></dd>
5429:
5430:
5431: <dt>Synonyms</dt>
5432:
5433: <dd><p>A list of other keyword values that have exactly the same
5434: processing requirements. Authors should not use the values defined
5435: to be synonyms, they are only intended to allow user agents to
5436: support legacy content. Anyone may remove synonyms that are not
5437: used in practice; only names that need to be processed as synonyms
5438: for compatibility with legacy content are to be registered in this
5439: way.</p></dd>
5440:
5441:
5442: <dt>Status</dt>
5443:
5444: <dd>
5445:
5446: <p>One of the following:</p>
5447:
5448: <dl><dt>Proposed</dt>
5449:
5450: <dd>The keyword has not received wide peer review and
5451: approval. Someone has proposed it and is, or soon will be, using
5452: it.</dd>
5453:
5454: <dt>Ratified</dt>
5455:
5456: <dd>The keyword has received wide peer review and approval. It
5457: has a specification that unambiguously defines how to handle
5458: pages that use the keyword, including when they use it in
5459: incorrect ways.</dd>
5460:
5461: <dt>Discontinued</dt>
5462:
5463: <dd>The keyword has received wide peer review and it has been
5464: found wanting. Existing pages are using this keyword, but new
5465: pages should avoid it. The "brief description" and
5466: "specification" entries will give details of what authors should
5467: use instead, if anything.</dd>
5468:
5469: </dl><p>If a keyword is found to be redundant with existing values, it
5470: should be removed and listed as a synonym for the existing
5471: value.</p>
5472:
5473: <p>If a keyword is registered in the "proposed" state for a
5474: period of a month or more without being used or specified, then it
5475: may be removed from the registry.</p>
5476:
5477: <p>If a keyword is added with the "proposed" status and found to
5478: be redundant with existing values, it should be removed and listed
5479: as a synonym for the existing value. If a keyword is added with
5480: the "proposed" status and found to be harmful, then it should be
5481: changed to "discontinued" status.</p>
5482:
5483: <p>Anyone can change the status at any time, but should only do so
5484: in accordance with the definitions above.</p>
5485:
5486: </dd>
5487:
5488: </dl><div class="impl">
5489:
5490: <p>Conformance checkers may use the information given on the <span title="">microformats wiki existing-rel-values page</span> to
5491: establish if a value is allowed or not: values defined in this
5492: specification or marked as "proposed" or "ratified" must be accepted
5493: when used on the elements for which they apply as described in the
5494: "Effect on..." field, whereas values marked as "discontinued" or
5495: values not containing a U+003A COLON character but not listed in
5496: either this specification or on the aforementioned page must be
5497: reported as invalid. The remaining values must be accepted as valid
5498: if they are absolute URLs containing US-ASCII characters only and
5499: rejected otherwise. Conformance checkers may cache this
5500: information (e.g. for performance reasons or to avoid the use of
5501: unreliable network connectivity).</p>
5502:
5503: <p class="note">Note: Even URL-valued link types are compared
5504: ASCII-case-insensitively. Validators might choose to warn about
5505: characters U+0041 (LATIN CAPITAL LETTER A) through
5506: U+005A (LATIN CAPITAL LETTER Z) (inclusive) in the pre-case-folded
5507: form of link types that contain a colon.</p>
5508:
5509: <p>When an author uses a new type not defined by either this
5510: specification or the Wiki page, conformance checkers should offer to
5511: add the value to the Wiki, with the details described above, with
5512: the "proposed" status.</p>
5513:
5514: </div>
5515:
5516: <p>Types defined as extensions in the <a href="http://microformats.org/wiki/existing-rel-values#HTML5_link_type_extensions">microformats
5517: wiki existing-rel-values page</a> with the status "proposed" or
5518: "ratified" may be used with the <code title="">rel</code> attribute
5519: on <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-a-element.html#the-a-element">a</a></code>, and <code><a href="the-area-element.html#the-area-element">area</a></code> elements
5520: in accordance to the "Effect on..." field. <a href="#refsMFREL">[MFREL]</a></p>
5521:
5522:
5523:
5524: <h3 id="common-idioms"><span class="secno">4.13 </span>Common idioms without dedicated elements</h3>
5525:
5526: <h4 id="the-main-part-of-the-content"><span class="secno">4.13.1 </span>The main part of the content</h4>
5527:
5528: <p>The main content of a page — not including headers and
5529: footers, navigation links, sidebars, advertisements, and so forth
5530: — can be marked up in a variety of ways, depending on the
5531: needs of the author.</p>
5532:
5533: <p>The simplest solution is to not mark up the main content at all,
5534: and just leave it as implicit. Another way to think of this is that
5535: the <code><a href="the-body-element.html#the-body-element">body</a></code> elements marks up the main content of the
5536: page, and the bits that aren't main content are excluded through the
5537: use of more appropriate elements like <code><a href="the-aside-element.html#the-aside-element">aside</a></code> and
5538: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>.</p>
5539:
5540: <div class="example">
5541:
5542: <p>Here is a short Web page marked up along this minimalistic
5543: school of thought. The main content is highlighted. Notice how all
5544: the <em>other</em> content in the <code><a href="the-body-element.html#the-body-element">body</a></code> is marked up
5545: with elements to indicate that it's not part of the main content,
5546: in this case <code><a href="the-header-element.html#the-header-element">header</a></code>, <code><a href="the-nav-element.html#the-nav-element">nav</a></code>, and
5547: <code><a href="the-footer-element.html#the-footer-element">footer</a></code>.</p>
5548:
5549: <pre><!DOCTYPE HTML>
5550: <html>
5551: <head>
5552: <title> My Toys </title>
5553: </head>
5554: <body>
5555: <header>
5556: <h1>My toys</h1>
5557: </header>
5558: <nav>
5559: <p><a href="/">Home</a></p>
5560: <p><a href="/contact">Contact</a></p>
5561: </nav>
5562: <strong> <p>I really like my chained book and my telephone. I'm not such a
5563: fan of my big ball.</p>
5564: <p>Another toy I like is my mirror.</p></strong>
5565: <footer>
5566: <p>© copyright 2010 by the boy</p>
5567: </footer>
5568: </body>
5569: </html></pre>
5570:
5571: </div>
5572:
5573: <p>If the main content is an independent unit of content that one
5574: could imagine syndicating independently, then the
5575: <code><a href="the-article-element.html#the-article-element">article</a></code> element would be appropriate to mark up the
5576: main content of the document.</p>
5577:
5578: <div class="example">
5579:
5580: <p>The document in the previous example is here recast as a blog
5581: post:</p>
5582:
5583: <pre><!DOCTYPE HTML>
5584: <html>
5585: <head>
5586: <title> The Boy Blog: My Toys </title>
5587: </head>
5588: <body>
5589: <header>
5590: <h1>The Boy Blog</h1>
5591: </header>
5592: <nav>
5593: <p><a href="/">Home</a></p>
5594: <p><a href="/contact">Contact</a></p>
5595: </nav>
5596: <strong> <article>
5597: <header>
5598: <h1>My toys</h1>
5599: <p>Published August 4th</p>
5600: </header>
5601: <p>I really like my chained book and my telephone. I'm not such a
5602: fan of my big ball.</p>
5603: <p>Another toy I like is my mirror.</p>
5604: </article></strong>
5605: <footer>
5606: <p>© copyright 2010 by the boy</p>
5607: </footer>
5608: </body>
5609: </html></pre>
5610:
5611: </div>
5612:
5613: <p>If the main content is not an independent unit of content so much
5614: as a section of a larger work, for instance a chapter, then the
5615: <code><a href="the-section-element.html#the-section-element">section</a></code> element would be appropriate to mark up the
5616: main content of the document.</p>
5617:
5618: <div class="example">
5619:
5620: <p>Here is the same document, case as a chapter in an online
5621: book:</p>
5622:
5623: <pre><!DOCTYPE HTML>
5624: <html>
5625: <head>
5626: <title> Chapter 2: My Toys — The Book of the Boy </title>
5627: </head>
5628: <body>
5629: <header>
5630: <h1>Chapter 2: My Toys</h1>
5631: </header>
5632: <nav>
5633: <p><a href="/">Front Page</a></p>
5634: <p><a href="/toc">Table of Contents</a></p>
5635: <p><a href="/c1">Chapter 1</a> — <a href="/c3">Chapter 3</a></p>
5636: </nav>
5637: <strong> <section>
5638: <p>I really like my chained book and my telephone. I'm not such a
5639: fan of my big ball.</p>
5640: <p>Another toy I like is my mirror.</p>
5641: </section></strong>
5642: <footer>
5643: <p>© copyright 2010 by the boy</p>
5644: </footer>
5645: </body>
5646: </html></pre>
5647:
5648: </div>
5649:
5650: <p>If neither <code><a href="the-article-element.html#the-article-element">article</a></code> nor <code><a href="the-section-element.html#the-section-element">section</a></code> would be
5651: appropriate, but the main content still needs an explicit element,
5652: for example for styling purposes, then the <code><a href="the-div-element.html#the-div-element">div</a></code> element
5653: can be used.</p>
5654:
5655: <div class="example">
5656:
5657: <p>This is the same as the original example, but using
5658: <code><a href="the-div-element.html#the-div-element">div</a></code> for the main content instead of leaving it
5659: implied:</p>
5660:
5661: <pre><!DOCTYPE HTML>
5662: <html>
5663: <head>
5664: <title> My Toys </title>
5665: <style>
5666: body > div { background: navy; color: yellow; }
5667: </style>
5668: </head>
5669: <body>
5670: <header>
5671: <h1>My toys</h1>
5672: </header>
5673: <nav>
5674: <p><a href="/">Home</a></p>
5675: <p><a href="/contact">Contact</a></p>
5676: </nav>
5677: <strong> <div>
5678: <p>I really like my chained book and my telephone. I'm not such a
5679: fan of my big ball.</p>
5680: <p>Another toy I like is my mirror.</p>
5681: </div></strong>
5682: <footer>
5683: <p>© copyright 2010 by the boy</p>
5684: </footer>
5685: </body>
5686: </html></pre>
5687:
5688: </div>
5689:
5690:
5691: <h4 id="rel-up"><span class="secno">4.13.2 </span>Bread crumb navigation</h4>
5692:
5693: <p>This specification does not provide a machine-readable way of
5694: describing bread-crumb navigation menus. Authors are encouraged to
5695: just use a series of links in a paragraph. The <code><a href="the-nav-element.html#the-nav-element">nav</a></code>
5696: element can be used to mark the section containing these
5697: paragraphs as being navigation blocks.</p>
5698:
5699: <div class="example">
5700:
5701: <p>In the following example, the current page can be reached via
5702: two paths.</p>
5703:
5704: <pre><nav>
5705: <p>
5706: <a href="/">Main</a> >
5707: <a href="/products/">Products</a> >
5708: <a href="/products/dishwashers/">Dishwashers</a> >
5709: <a>Second hand</a>
5710: </p>
5711: <p>
5712: <a href="/">Main</a> >
5713: <a href="/second-hand/">Second hand</a> >
5714: <a>Dishwashers</a>
5715: </p>
5716: </nav></pre>
5717:
5718: </div>
5719:
5720:
5721: <h4 id="tag-clouds"><span class="secno">4.13.3 </span>Tag clouds</h4>
5722:
5723: <p id="tag-cloud">This specification does not define any markup
5724: specifically for marking up lists of keywords that apply to a group
5725: of pages (also known as <i>tag clouds</i>). In general, authors are
5726: encouraged to either mark up such lists using <code><a href="the-ul-element.html#the-ul-element">ul</a></code>
5727: elements with explicit inline counts that are then hidden and turned
5728: into a presentational effect using a style sheet, or to use SVG.</p>
5729:
5730: <div class="example">
5731:
5732: <p>Here, three tags are included in a short tag cloud:</p>
5733:
5734: <pre><style>
5735: @media screen, print, handheld, tv {
5736: /* should be ignored by non-visual browsers */
5737: .tag-cloud > li > span { display: none; }
5738: .tag-cloud > li { display: inline; }
5739: .tag-cloud-1 { font-size: 0.7em; }
5740: .tag-cloud-2 { font-size: 0.9em; }
5741: .tag-cloud-3 { font-size: 1.1em; }
5742: .tag-cloud-4 { font-size: 1.3em; }
5743: .tag-cloud-5 { font-size: 1.5em; }
5744: }
5745: </style>
5746: ...
5747: <ul class="tag-cloud">
5748: <li class="tag-cloud-4"><a title="28 instances" href="/t/apple">apple</a> <span>(popular)</span>
5749: <li class="tag-cloud-2"><a title="6 instances" href="/t/kiwi">kiwi</a> <span>(rare)</span>
5750: <li class="tag-cloud-5"><a title="41 instances" href="/t/pear">pear</a> <span>(very popular)</span>
5751: </ul></pre>
5752:
5753: <p>The actual frequency of each tag is given using the <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute. A CSS style sheet is
5754: provided to convert the markup into a cloud of differently-sized
5755: words, but for user agents that do not support CSS or are not
5756: visual, the markup contains annotations like "(popular)" or
5757: "(rare)" to categorize the various tags by frequency, thus enabling
5758: all users to benefit from the information.</p>
5759:
5760: <p>The <code><a href="the-ul-element.html#the-ul-element">ul</a></code> element is used (rather than
5761: <code><a href="the-ol-element.html#the-ol-element">ol</a></code>) because the order is not particularly important:
5762: while the list is in fact ordered alphabetically, it would convey
5763: the same information if ordered by, say, the length of the tag.</p>
5764:
5765: <p>The <code title="rel-tag"><a href="#link-type-tag">tag</a></code> <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code>-keyword is <em>not</em> used
5766: on these <code><a href="the-a-element.html#the-a-element">a</a></code> elements because they do not represent tags
5767: that apply to the page itself; they are just part of an index
5768: listing the tags themselves.</p>
5769:
5770: </div>
5771:
5772:
5773: <h4 id="conversations"><span class="secno">4.13.4 </span>Conversations</h4>
5774:
5775: <!-- http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-September/022576.html -->
5776:
5777: <p>This specification does not define a specific element for marking
5778: up conversations, meeting minutes, chat transcripts, dialogues in
5779: screenplays, instant message logs, and other situations where
5780: different players take turns in discourse.</p>
5781:
5782: <p>Instead, authors are encouraged to mark up conversations using
5783: <code><a href="the-p-element.html#the-p-element">p</a></code> elements and punctuation. Authors who need to mark
5784: the speaker for styling purposes are encouraged to use
5785: <code><a href="the-span-element.html#the-span-element">span</a></code> or <code><a href="the-b-element.html#the-b-element">b</a></code>. Paragraphs with their text
5786: wrapped in the <code><a href="the-i-element.html#the-i-element">i</a></code> element can be used for marking up
5787: stage directions.</p>
5788:
5789: <div class="example">
5790:
5791: <p>This example demonstrates this using an extract from Abbot and
5792: Costello's famous sketch, <cite>Who's on first</cite>:</p>
5793:
5794: <pre><p> Costello: Look, you gotta first baseman?
5795: <p> Abbott: Certainly.
5796: <p> Costello: Who's playing first?
5797: <p> Abbott: That's right.
5798: <p> Costello becomes exasperated.
5799: <p> Costello: When you pay off the first baseman every month, who gets the money?
5800: <p> Abbott: Every dollar of it.</pre>
5801:
5802: </div>
5803:
5804: <!--DATA--><!--FORK-->
5805:
5806: <div class="example">
5807:
5808: <p>HTML does not have a good way to mark up graphs, so descriptions
5809: of interactive conversations from games are more difficult to mark
5810: up. This example shows one possible convention using
5811: <code><a href="the-dl-element.html#the-dl-element">dl</a></code> elements to list the possible responses at each
5812: point in the conversation. Another option to consider is describing
5813: the conversation in the form of a DOT file, and outputting the
5814: result as an SVG image to place in the document. <a href="#refsDOT">[DOT]</a></p>
5815:
5816: <pre><p> Next, you meet a fisherman. You can say one of several greetings:
5817: <dl>
5818: <dt> "Hello there!"
5819: <dd>
5820: <p> He responds with "Hello, how may I help you?"; you can respond with:
5821: <dl>
5822: <dt> "I would like to buy a fish."
5823: <dd> <p> He sells you a fish and the conversation finishes.
5824: <dt> "Can I borrow your boat?"
5825: <dd>
5826: <p> He is surprised and asks "What are you offering in return?".
5827: <dl>
5828: <dt> "Five gold." (if you have enough)
5829: <dt> "Ten gold." (if you have enough)
5830: <dt> "Fifteen gold." (if you have enough)
5831: <dd> <p> He lends you his boat. The conversation ends.
5832: <dt> "A fish." (if you have one)
5833: <dt> "A newspaper." (if you have one)
5834: <dt> "A pebble." (if you have one)
5835: <dd> <p> "No thanks", he replies. Your conversation options
5836: at this point are the same as they were after asking to borrow
5837: his boat, minus any options you've suggested before.
5838: </dl>
5839: </dd>
5840: </dl>
5841: </dd>
5842: <dt> "Vote for me in the next election!"
5843: <dd> <p> He turns away. The conversation finishes.
5844: <dt> "Sir, are you aware that your fish are running away?"
5845: <dd>
5846: <p> He looks at you skeptically and says "Fish cannot run, sir".
5847: <dl>
5848: <dt> "You got me!"
5849: <dd> <p> The fisherman sighs and the conversation ends.
5850: <dt> "Only kidding."
5851: <dd> <p> "Good one!" he retorts. Your conversation options at this
5852: point are the same as those following "Hello there!" above.
5853: <dt> "Oh, then what are they doing?"
5854: <dd> <p> He looks at his fish, giving you an opportunity to steal
5855: his boat, which you do. The conversation ends.
5856: </dl>
5857: </dd>
5858: </ul></pre>
5859:
5860: </div>
5861:
5862:
5863: <h4 id="footnotes"><span class="secno">4.13.5 </span>Footnotes</h4>
5864:
5865: <p>HTML does not have a dedicated mechanism for marking up
5866: footnotes. Here are the recommended alternatives.</p>
5867:
5868: <!--FORK--><!--TITLE-->
5869:
5870: <hr><p>For
5871: <!--FORK--><!--TITLE-->
5872: annotations, the <code><a href="the-a-element.html#the-a-element">a</a></code> element should be used, pointing to
5873: an element later in the document. The convention is that the
5874: contents of the link be a number in square brackets.</p>
5875:
5876: <div class="example">
5877:
5878: <p>In this example, a footnote in the dialogue links to a paragraph
5879: below the dialogue. The paragraph then reciprocally links back to the
5880: dialogue, allowing the user to return to the location of the
5881: footnote.</p>
5882:
5883: <pre><p> Announcer: Number 16: The <i>hand</i>.
5884: <p> Interviewer: Good evening. I have with me in the studio tonight
5885: Mr Norman St John Polevaulter, who for the past few years has been
5886: contradicting people. Mr Polevaulter, why <em>do</em> you
5887: contradict people?
5888: <p> Norman: I don't. <sup><a href="#fn1" id="r1">[1]</a></sup>
5889: <p> Interviewer: You told me you did!
5890: <em>...</em>
5891: <section>
5892: <p id="fn1"><a href="#r1">[1]</a> This is, naturally, a lie,
5893: but paradoxically if it were true he could not say so without
5894: contradicting the interviewer and thus making it false.</p>
5895: </section></pre>
5896:
5897: </div>
5898:
5899: <hr><p>For side notes, longer annotations that apply to entire sections
5900: of the text rather than just specific words or sentences, the
5901: <code><a href="the-aside-element.html#the-aside-element">aside</a></code> element should be used.</p>
5902:
5903: <div class="example">
5904:
5905: <p>In this example, a sidebar is given after a dialogue, giving it
5906: some context.</p>
5907:
5908: <pre><p> <span class="speaker">Customer</span>: I will not buy this record, it is scratched.
5909: <p> <span class="speaker">Shopkeeper</span>: I'm sorry?
5910: <p> <span class="speaker">Customer</span>: I will not buy this record, it is scratched.
5911: <p> <span class="speaker">Shopkeeper</span>: No no no, this's'a tobacconist's.
5912: <aside>
5913: <p>In 1970, the British Empire lay in ruins, and foreign
5914: nationalists frequented the streets — many of them Hungarians
5915: (not the streets — the foreign nationals). Sadly, Alexander
5916: Yalt has been publishing incompetently-written phrase books.
5917: </aside></pre>
5918:
5919: </div>
5920:
5921: <hr><p>For figures or tables, footnotes can be included in the relevant
5922: <code><a href="the-figcaption-element.html#the-figcaption-element">figcaption</a></code> or <code><a href="the-caption-element.html#the-caption-element">caption</a></code> element, or in
5923: surrounding prose.</p>
5924:
5925: <div class="example">
5926:
5927: <p>In this example, a <!-- round --> table has cells with footnotes
5928: that are given in prose. A <code><a href="the-figure-element.html#the-figure-element">figure</a></code> element is used to
5929: give a single legend to the combination of the table and its
5930: footnotes.</p>
5931:
5932: <pre><figure>
5933: <figcaption>Table 1. Alternative activities for knights.</figcaption>
5934: <table>
5935: <tr>
5936: <th> Activity
5937: <th> Location
5938: <th> Cost
5939: <tr>
5940: <td> Dance
5941: <td> Wherever possible
5942: <td> £0<sup><a href="#fn1">1</a></sup>
5943: <tr>
5944: <td> Routines, chorus scenes<sup><a href="#fn2">2</a></sup>
5945: <td> Undisclosed
5946: <td> Undisclosed
5947: <tr>
5948: <td> Dining<sup><a href="#fn3">3</a></sup>
5949: <td> Camelot
5950: <td> Cost of ham, jam, and spam<sup><a href="#fn4">4</a></sup>
5951: </table>
5952: <p id="fn1">1. Assumed.</p>
5953: <p id="fn2">2. Footwork impeccable.</p>
5954: <p id="fn3">3. Quality described as "well".</p>
5955: <p id="fn4">4. A lot.</p>
5956: </figure></pre>
5957:
5958: </div>
5959:
5960:
5961:
5962:
5963: <div class="impl">
5964:
5965: <h3 id="selectors"><span class="secno">4.14 </span>Matching HTML elements using selectors</h3>
5966:
5967: <h4 id="case-sensitivity"><span class="secno">4.14.1 </span>Case-sensitivity</h4>
5968:
5969: <p>The Selectors specification leaves the case-sensitivity of IDs,
5970: classes, element names, attribute names, and attribute values to be
5971: defined by the host language. <a href="#refsSELECTORS">[SELECTORS]</a></p>
5972:
5973: <p>The <a href="infrastructure.html#concept-id" title="concept-id">unique identifier</a> of
5974: <a href="infrastructure.html#html-elements">HTML elements</a> in documents that are in <a href="infrastructure.html#quirks-mode">quirks
5975: mode</a> must be treated as <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>
5976: for the purposes of selector matching.</p>
5977:
5978: <p>Classes from the <code title="attr-class"><a href="global-attributes.html#classes">class</a></code> attribute
5979: of <a href="infrastructure.html#html-elements">HTML elements</a> in documents that are in <a href="infrastructure.html#quirks-mode">quirks
5980: mode</a> must be treated as <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>
5981: for the purposes of selector matching.</p>
5982:
5983: <p>Attribute and element <em>names</em> of <a href="infrastructure.html#html-elements">HTML
5984: elements</a> in <a href="infrastructure.html#html-documents">HTML documents</a> must be treated as
5985: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> for the purposes of selector
5986: matching.</p>
5987:
5988: <p>Everything else (attribute values on <a href="infrastructure.html#html-elements">HTML elements</a>,
5989: IDs and classes in <a href="infrastructure.html#no-quirks-mode">no-quirks mode</a> and
5990: <a href="infrastructure.html#limited-quirks-mode">limited-quirks mode</a>, and element names, attribute
5991: names, and attribute values in <a href="infrastructure.html#xml-documents">XML documents</a>) must be
5992: treated as <a href="infrastructure.html#case-sensitive">case-sensitive</a> for the purposes of selector
5993: matching.</p>
5994:
5995:
5996: <h4 id="pseudo-classes"><span class="secno">4.14.2 </span>Pseudo-classes</h4>
5997:
5998: <p>There are a number of dynamic selectors that can be used with
5999: HTML. This section defines when these selectors match HTML elements.
6000: <a href="#refsSELECTORS">[SELECTORS]</a> <a href="#refsCSSUI">[CSSUI]</a></p>
6001:
6002: <dl><dt><dfn id="selector-link" title="selector-link"><code>:link</code></dfn></dt>
6003: <dt><dfn id="selector-visited" title="selector-visited"><code>:visited</code></dfn></dt>
6004:
6005: <dd>
6006:
6007: <p>All <code><a href="the-a-element.html#the-a-element">a</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute, all
6008: <code><a href="the-area-element.html#the-area-element">area</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute, and all
6009: <code><a href="the-link-element.html#the-link-element">link</a></code> elements that have an <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code> attribute, must match one of
6010: <code title="selector-link"><a href="#selector-link">:link</a></code> and <code title="selector-visited"><a href="#selector-visited">:visited</a></code>.</p>
6011:
6012: <p>Other specifications might apply more specific rules regarding
6013: how these elements are to match these pseudo-classes, to mitigate
6014: some privacy concerns that apply with straightforward
6015: implementations of this requirement.</p>
6016:
6017: </dd>
6018:
6019:
6020: <dt><dfn id="selector-active" title="selector-active"><code>:active</code></dfn></dt>
6021:
6022: <dd>
6023:
6024: <p>The <code title="selector-active"><a href="#selector-active">:active</a></code> pseudo-class
6025: is defined to match an element <q cite="http://dev.w3.org/csswg/selectors3/#the-user-action-pseudo-classes-hover-act">while
6026: an element is <i>being activated</i> by the user</q>. For the
6027: purposes of defining the <code title="selector-active"><a href="#selector-active">:active</a></code> pseudo-class only, an HTML
6028: user agent must consider an element as <i>being activated</i> if
6029: it is:</p>
6030:
6031: <ul><li>
6032:
6033: <p>An element falling into one of the following categories
6034: between the time the user begins to indicate an intent to
6035: trigger the element's <a href="content-models.html#activation-behavior">activation behavior</a> and
6036: either the time the user stops indicating an intent to trigger
6037: the element's <a href="content-models.html#activation-behavior">activation behavior</a>, or the time the
6038: element's <a href="content-models.html#activation-behavior">activation behavior</a> has finished running,
6039: which ever comes first:</p>
6040:
6041: <ul><li><code><a href="the-a-element.html#the-a-element">a</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</li>
6042:
6043: <li><code><a href="the-area-element.html#the-area-element">area</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</li>
6044:
6045: <li><code><a href="the-link-element.html#the-link-element">link</a></code> elements that have an <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code> attribute</li>
6046:
6047: <li><code><a href="the-button-element.html#the-button-element">button</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6048:
6049: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#submit-button-state-(type=submit)" title="attr-input-type-submit">Submit Button</a>, <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a>, <a href="states-of-the-type-attribute.html#reset-button-state-(type=reset)" title="attr-input-type-reset">Reset Button</a>, or <a href="states-of-the-type-attribute.html#button-state-(type=button)" title="attr-input-type-button">Button</a> state</li>
6050:
6051: <li><code><a href="#the-command-element">command</a></code> elements that do not have a <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> attribute</li>
6052:
6053: <li>elements that have their <a href="#specially-focusable">tabindex focus flag</a> set</li>
6054:
6055: </ul><p class="example">For example, if the user is using a keyboard
6056: to push a <code><a href="the-button-element.html#the-button-element">button</a></code> element by pressing the space bar,
6057: the element would match this pseudo-class in between the time
6058: that the element received the <code title="event-keydown">keydown</code> event and the time the
6059: element received the <code title="event-keyup">keyup</code>
6060: event.</p>
6061:
6062: </li>
6063:
6064: <li>
6065:
6066: <p>An element that the user indicates using a pointing device
6067: while that pointing device is in the "down" state (e.g. for a
6068: mouse, between the time the mouse button is pressed and the time
6069: it is depressed).</p>
6070:
6071: </li>
6072:
6073: <li>
6074:
6075: <p>An element that has a descendant that is currently matching
6076: the <code title="selector-active"><a href="#selector-active">:active</a></code>
6077: pseudo-class.</p>
6078:
6079: </li>
6080:
6081: </ul></dd>
6082:
6083:
6084: <dt><dfn id="selector-hover" title="selector-hover"><code>:hover</code></dfn></dt>
6085:
6086: <dd>
6087:
6088: <p>The <code title="selector-hover"><a href="#selector-hover">:hover</a></code> pseudo-class is
6089: defined to match an element <q cite="http://dev.w3.org/csswg/selectors3/#the-user-action-pseudo-classes-hover-act">while
6090: the user <i>designates</i> an element with a pointing device</q>.
6091: For the purposes of defining the <code title="selector-hover"><a href="#selector-hover">:hover</a></code> pseudo-class only, an HTML
6092: user agent must consider an element as being one that the user
6093: <i>designates</i> if it is:</p>
6094:
6095: <ul><li>
6096:
6097: <p>An element that the user indicates using a pointing device.</p>
6098:
6099: </li>
6100:
6101: <li>
6102:
6103: <p>An element that has a descendant that the user indicates
6104: using a pointing device.</p>
6105:
6106: </li>
6107:
6108: <li>
6109:
6110: <p>An element that is the <a href="the-label-element.html#labeled-control">labeled control</a> of a
6111: <code><a href="the-label-element.html#the-label-element">label</a></code> element that is currently matching <a href="#selector-hover" title="selector-hover">:hover</a>.</p>
6112:
6113: </li>
6114:
6115: </ul><!--
6116: Demos:
6117: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1315
6118: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1316
6119: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1317
6120: --><div class="example">
6121:
6122: <p>Consider in particular a fragment such as:</p>
6123:
6124: <pre><p> <label for=c> <input id=a> </label> <span id=b> <input id=c> </span> </p></pre>
6125:
6126: <p>If the user designates the element with ID "<code title="">a</code>" with their pointing device, then the
6127: <code><a href="the-p-element.html#the-p-element">p</a></code> element (and all its ancestors not shown in the
6128: snippet above), the <code><a href="the-label-element.html#the-label-element">label</a></code> element, the element with
6129: ID "<code title="">a</code>", and the element with ID "<code title="">c</code>" will match the <a href="#selector-hover" title="selector-hover">:hover</a> pseudo-class. The element
6130: with ID "<code title="">a</code>" matches it from condition 1,
6131: the <code><a href="the-label-element.html#the-label-element">label</a></code> and <code><a href="the-p-element.html#the-p-element">p</a></code> elements match it
6132: because of condition 2 (one of their descendants is designated),
6133: and the element with ID "<code title="">c</code>" matches it
6134: through condition 3 (its <code><a href="the-label-element.html#the-label-element">label</a></code> element matches <a href="#selector-hover" title="selector-hover">:hover</a>). However, the element with
6135: ID "<code title="">b</code>" does <em>not</em> match <a href="#selector-hover" title="selector-hover">:hover</a>: its descendant is not
6136: designated, even though it matches <a href="#selector-hover" title="selector-hover">:hover</a>.</p>
6137:
6138: </div>
6139:
6140: </dd>
6141:
6142:
6143: <dt><dfn id="selector-enabled" title="selector-enabled"><code>:enabled</code></dfn></dt>
6144:
6145: <dd>
6146:
6147: <p>The <code title="selector-enabled"><a href="#selector-enabled">:enabled</a></code> pseudo-class
6148: must match any element falling into one of the following
6149: categories:</p>
6150:
6151: <ul><li><code><a href="the-a-element.html#the-a-element">a</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</li>
6152:
6153: <li><code><a href="the-area-element.html#the-area-element">area</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</li>
6154:
6155: <li><code><a href="the-link-element.html#the-link-element">link</a></code> elements that have an <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code> attribute</li>
6156:
6157: <li><code><a href="the-button-element.html#the-button-element">button</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6158:
6159: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6160:
6161: <li><code><a href="the-select-element.html#the-select-element">select</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6162:
6163: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6164:
6165: <li><code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> elements that do not have a <code title="attr-optgroup-disabled"><a href="the-optgroup-element.html#attr-optgroup-disabled">disabled</a></code> attribute</li>
6166:
6167: <li><code><a href="the-option-element.html#the-option-element">option</a></code> elements that are not <a href="the-option-element.html#concept-option-disabled" title="concept-option-disabled">disabled</a></li>
6168:
6169: <li><code><a href="#the-command-element">command</a></code> elements that do not have a <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> attribute</li>
6170:
6171: <li><code><a href="the-li-element.html#the-li-element">li</a></code> elements that are children of
6172: <code><a href="#the-menu-element">menu</a></code> elements, and that have a child element that
6173: defines a <a href="#concept-command" title="concept-command">command</a>, if the
6174: first such element's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> facet
6175: is false (not disabled)</li>
6176:
6177: <li><code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> elements that do not have a <code title="attr-fieldset-disabled"><a href="the-fieldset-element.html#attr-fieldset-disabled">disabled</a></code> attribute</li>
6178:
6179: </ul></dd>
6180:
6181:
6182: <dt><dfn id="selector-disabled" title="selector-disabled"><code>:disabled</code></dfn></dt>
6183:
6184: <dd>
6185:
6186: <p>The <code title="selector-disabled"><a href="#selector-disabled">:disabled</a></code>
6187: pseudo-class must match any element falling into one of the
6188: following categories:</p>
6189:
6190: <ul><li><code><a href="the-button-element.html#the-button-element">button</a></code> elements that are <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6191:
6192: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements that are <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6193:
6194: <li><code><a href="the-select-element.html#the-select-element">select</a></code> elements that are <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6195:
6196: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that are <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6197:
6198: <li><code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> elements that have a <code title="attr-optgroup-disabled"><a href="the-optgroup-element.html#attr-optgroup-disabled">disabled</a></code> attribute</li>
6199:
6200: <li><code><a href="the-option-element.html#the-option-element">option</a></code> elements that are <a href="the-option-element.html#concept-option-disabled" title="concept-option-disabled">disabled</a></li>
6201:
6202: <li><code><a href="#the-command-element">command</a></code> elements that have a <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> attribute</li>
6203:
6204: <li><code><a href="the-li-element.html#the-li-element">li</a></code> elements that are children of
6205: <code><a href="#the-menu-element">menu</a></code> elements, and that have a child element that
6206: defines a <a href="#concept-command" title="concept-command">command</a>, if the
6207: first such element's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> facet
6208: is true (disabled)</li>
6209:
6210: <li><code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> elements that have a <code title="attr-fieldset-disabled"><a href="the-fieldset-element.html#attr-fieldset-disabled">disabled</a></code> attribute</li>
6211:
6212: </ul></dd>
6213:
6214:
6215: <dt><dfn id="selector-checked" title="selector-checked"><code>:checked</code></dfn></dt>
6216:
6217: <dd>
6218:
6219: <p>The <code title="selector-checked"><a href="#selector-checked">:checked</a></code> pseudo-class
6220: must match any element falling into one of the following
6221: categories:</p>
6222:
6223: <ul><li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> state and whose
6224: <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checkedness</a> state is
6225: true</li>
6226:
6227: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)" title="attr-input-type-radio">Radio Button</a> state and whose
6228: <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checkedness</a> state is
6229: true</li>
6230:
6231: <li><code><a href="the-option-element.html#the-option-element">option</a></code> elements whose <a href="the-option-element.html#concept-option-selectedness" title="concept-option-selectedness">selectedness</a> is
6232: true</li>
6233:
6234: <li><code><a href="#the-command-element">command</a></code> elements whose <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is in the <a href="#attr-command-type-state-checkbox" title="attr-command-type-state-checkbox">Checkbox</a> state
6235: and that have a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code>
6236: attribute</li>
6237:
6238: <li><code><a href="#the-command-element">command</a></code> elements whose <code title="attr-command-type"><a href="#attr-command-type">type</a></code> attribute is in the <a href="#attr-command-type-state-radio" title="attr-command-type-state-radio">Radio</a> state and that
6239: have a <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code>
6240: attribute</li>
6241:
6242: </ul></dd>
6243:
6244:
6245: <dt><dfn id="selector-indeterminate" title="selector-indeterminate"><code>:indeterminate</code></dfn></dt>
6246:
6247: <dd>
6248:
6249: <!-- does this pseudo-class even exist? -->
6250:
6251: <p>The <code title="selector-indeterminate"><a href="#selector-indeterminate">:indeterminate</a></code>
6252: pseudo-class must match any element falling into one of the
6253: following categories:</p>
6254:
6255: <ul><li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> state and whose
6256: <code title="dom-input-indeterminate"><a href="the-input-element.html#dom-input-indeterminate">indeterminate</a></code> IDL
6257: attribute is set to true</li>
6258:
6259: <li><code><a href="the-progress-element.html#the-progress-element">progress</a></code> elements with no <code title="attr-progress-value"><a href="the-progress-element.html#attr-progress-value">value</a></code> content attribute</li>
6260:
6261: </ul></dd>
6262:
6263:
6264: <dt><dfn id="selector-default" title="selector-default"><code>:default</code></dfn></dt>
6265:
6266: <dd>
6267:
6268: <p>The <code title="selector-default"><a href="#selector-default">:default</a></code> pseudo-class
6269: must match any element falling into one of the following
6270: categories:</p>
6271:
6272: <ul><li><code><a href="the-button-element.html#the-button-element">button</a></code> elements that are their form's
6273: <a href="#default-button">default button</a></li>
6274:
6275: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#submit-button-state-(type=submit)" title="attr-input-type-submit">Submit Button</a> or <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, and that
6276: are their form's <a href="#default-button">default button</a></li>
6277:
6278: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements to which the <code title="attr-input-checked"><a href="the-input-element.html#attr-input-checked">checked</a></code> attribute applies and
6279: that have a <code title="attr-input-checked"><a href="the-input-element.html#attr-input-checked">checked</a></code>
6280: attribute</li>
6281:
6282: <li><code><a href="the-option-element.html#the-option-element">option</a></code> elements that have a <code title="attr-option-selected"><a href="the-option-element.html#attr-option-selected">selected</a></code> attribute</li>
6283: <!--
6284: <li><code>command</code> elements that have a <code
6285: title="attr-command-default">default</code> attribute</li>
6286: -->
6287: </ul></dd>
6288:
6289:
6290: <dt><dfn id="selector-valid" title="selector-valid"><code>:valid</code></dfn></dt>
6291:
6292: <dd>
6293:
6294: <p>The <code title="selector-valid"><a href="#selector-valid">:valid</a></code> pseudo-class
6295: must match any element falling into one of the following
6296: categories:</p>
6297:
6298: <ul><li>elements that are <a href="#candidate-for-constraint-validation" title="candidate for constraint
6299: validation">candidates for constraint validation</a> and that
6300: <a href="#concept-fv-valid" title="concept-fv-valid">satisfy their
6301: constraints</a></li>
6302:
6303: <li><code><a href="the-form-element.html#the-form-element">form</a></code> elements that are not the <a href="association-of-controls-and-forms.html#form-owner">form
6304: owner</a> of any elements that themselves are <a href="#candidate-for-constraint-validation" title="candidate for constraint validation">candidates for
6305: constraint validation</a> but do not <a href="#concept-fv-valid" title="concept-fv-valid">satisfy their constraints</a></li>
6306:
6307: </ul></dd>
6308:
6309:
6310: <dt><dfn id="selector-invalid" title="selector-invalid"><code>:invalid</code></dfn></dt>
6311:
6312: <dd>
6313:
6314: <p>The <code title="selector-invalid"><a href="#selector-invalid">:invalid</a></code> pseudo-class
6315: must match any element falling into one of the following
6316: categories:</p>
6317:
6318: <ul><li>elements that are <a href="#candidate-for-constraint-validation" title="candidate for constraint
6319: validation">candidates for constraint validation</a> but that
6320: do not <a href="#concept-fv-valid" title="concept-fv-valid">satisfy their
6321: constraints</a></li>
6322:
6323: <li><code><a href="the-form-element.html#the-form-element">form</a></code> elements that are the <a href="association-of-controls-and-forms.html#form-owner">form
6324: owner</a> of one or more elements that themselves are <a href="#candidate-for-constraint-validation" title="candidate for constraint validation">candidates for
6325: constraint validation</a> but do not <a href="#concept-fv-valid" title="concept-fv-valid">satisfy their constraints</a></li>
6326:
6327: </ul></dd>
6328:
6329:
6330: <dt><dfn id="selector-in-range" title="selector-in-range"><code>:in-range</code></dfn></dt>
6331:
6332: <dd>
6333:
6334: <p>The <code title="selector-in-range"><a href="#selector-in-range">:in-range</a></code>
6335: pseudo-class must match all elements that are <a href="#candidate-for-constraint-validation" title="candidate for constraint validation">candidates for
6336: constraint validation</a>, <a href="common-input-element-attributes.html#have-range-limitations">have range limitations</a>,
6337: and that are neither <a href="#suffering-from-an-underflow">suffering from an underflow</a> nor
6338: <a href="#suffering-from-an-overflow">suffering from an overflow</a>.</p>
6339:
6340: </dd>
6341:
6342:
6343: <dt><dfn id="selector-out-of-range" title="selector-out-of-range"><code>:out-of-range</code></dfn></dt>
6344:
6345: <dd>
6346:
6347: <p>The <code title="selector-out-of-range"><a href="#selector-out-of-range">:out-of-range</a></code>
6348: pseudo-class must match all elements that are <a href="#candidate-for-constraint-validation" title="candidate for constraint validation">candidates for
6349: constraint validation</a>, <a href="common-input-element-attributes.html#have-range-limitations">have range limitations</a>,
6350: and that are either <a href="#suffering-from-an-underflow">suffering from an underflow</a> or
6351: <a href="#suffering-from-an-overflow">suffering from an overflow</a>.</p>
6352:
6353: </dd>
6354:
6355:
6356: <dt><dfn id="selector-required" title="selector-required"><code>:required</code></dfn></dt>
6357:
6358: <dd>
6359:
6360: <p>The <code title="selector-required"><a href="#selector-required">:required</a></code>
6361: pseudo-class must match any element falling into one of the
6362: following categories:</p>
6363:
6364: <ul><li><code><a href="the-input-element.html#the-input-element">input</a></code> elements that are <i title="concept-input-required"><a href="common-input-element-attributes.html#concept-input-required">required</a></i></li>
6365:
6366: <li><code><a href="the-select-element.html#the-select-element">select</a></code> elements that have a <code title="attr-select-required"><a href="the-select-element.html#attr-select-required">required</a></code>
6367: attribute</li>
6368:
6369: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that have a <code title="attr-textarea-required"><a href="the-textarea-element.html#attr-textarea-required">required</a></code>
6370: attribute</li>
6371:
6372: </ul></dd>
6373:
6374:
6375: <dt><dfn id="selector-optional" title="selector-optional"><code>:optional</code></dfn></dt>
6376:
6377: <dd>
6378:
6379: <p>The <code title="selector-optional"><a href="#selector-optional">:optional</a></code>
6380: pseudo-class must match any element falling into one of the
6381: following categories:</p>
6382:
6383: <ul><li><code><a href="the-input-element.html#the-input-element">input</a></code> elements to which the <code title="attr-input-required"><a href="common-input-element-attributes.html#attr-input-required">required</a></code> attribute applies
6384: that are not <i title="concept-input-required"><a href="common-input-element-attributes.html#concept-input-required">required</a></i></li>
6385:
6386: <li><code><a href="the-select-element.html#the-select-element">select</a></code> elements that do not have a <code title="attr-select-required"><a href="the-select-element.html#attr-select-required">required</a></code> attribute</li>
6387:
6388: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that do not have a <code title="attr-textarea-required"><a href="the-textarea-element.html#attr-textarea-required">required</a></code>
6389: attribute</li>
6390:
6391: </ul></dd>
6392:
6393:
6394: <dt><dfn id="selector-read-only" title="selector-read-only"><code>:read-only</code></dfn></dt>
6395: <dt><dfn id="selector-read-write" title="selector-read-write"><code>:read-write</code></dfn></dt>
6396:
6397: <dd>
6398:
6399: <p>The <code title="selector-read-write"><a href="#selector-read-write">:read-write</a></code>
6400: pseudo-class must match any element falling into one of the
6401: following categories:</p>
6402:
6403: <ul><li><code><a href="the-input-element.html#the-input-element">input</a></code> elements to which the <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">readonly</a></code> attribute applies,
6404: but that are not <i title="concept-input-immutable"><a href="the-input-element.html#concept-input-immutable">immutable</a></i>
6405: (i.e. that do not have the <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">readonly</a></code> attribute specified
6406: and that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>)</li>
6407:
6408: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that do not have a <code title="attr-textarea-readonly"><a href="the-textarea-element.html#attr-textarea-readonly">readonly</a></code> attribute, and
6409: that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
6410:
6411: <li>elements that are <a href="#editing-host" title="editing host">editing
6412: hosts</a> or <a href="#editable">editable</a> and are neither
6413: <code><a href="the-input-element.html#the-input-element">input</a></code> elements nor <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
6414: elements</li>
6415:
6416: </ul><p>The <code title="selector-read-only"><a href="#selector-read-only">:read-only</a></code>
6417: pseudo-class must match all other <a href="infrastructure.html#html-elements">HTML elements</a>.</p>
6418:
6419: </dd>
6420:
6421:
6422: <dt><dfn id="selector-ltr" title="selector-ltr"><code>:dir(ltr)</code></dfn></dt>
6423:
6424: <dd>
6425:
6426: <p>The <code title="selector-ltr"><a href="#selector-ltr">:dir(ltr)</a></code> pseudo-class must
6427: match all elements whose <a href="global-attributes.html#the-directionality" title="the
6428: directionality">directionality</a> is '<a href="global-attributes.html#concept-ltr" title="concept-ltr">ltr</a>'.</p>
6429:
6430: </dd>
6431:
6432: <dt><dfn id="selector-rtl" title="selector-rtl"><code>:dir(rtl)</code></dfn></dt>
6433:
6434: <dd>
6435:
6436: <p>The <code title="selector-rtl"><a href="#selector-rtl">:dir(rtl)</a></code> pseudo-class must
6437: match all elements whose <a href="global-attributes.html#the-directionality" title="the
6438: directionality">directionality</a> is '<a href="global-attributes.html#concept-rtl" title="concept-rtl">rtl</a>'.</p>
6439:
6440: </dd>
6441:
6442: </dl><p class="note">Another section of this specification defines the
6443: <i><a href="#target-element">target element</a></i> used with the <code title="selector-target">:target</code> pseudo-class.</p>
6444:
6445: <p class="note">This specification does not define when an element
6446: matches the <code title="selector-focus">:focus</code> or <code title="selector-lang()">:lang()</code> dynamic pseudo-classes, as
6447: those are all defined in sufficient detail in a language-agnostic
6448: fashion in the Selectors specification. <a href="#refsSELECTORS">[SELECTORS]</a></p>
6449:
6450: </div>
6451:
6452: <!--MD-->
6453:
6454:
6455: <h2 id="browsers"><span class="secno">5 </span>Loading Web pages</h2>
6456:
6457: <div class="impl">
6458:
6459: <p>This section describes features that apply most directly to Web
6460: browsers. Having said that, except where specified otherwise, the
6461: requirements defined in this section <em>do</em> apply to all user
6462: agents, whether they are Web browsers or not.</p>
6463:
6464: </div>
6465:
6466:
6467:
6468: <h3 id="windows"><span class="secno">5.1 </span>Browsing contexts</h3>
6469:
6470: <p>A <dfn id="browsing-context">browsing context</dfn> is an environment in which
6471: <code><a href="dom.html#document">Document</a></code> objects are presented to the user.</p>
6472:
6473: <p class="note">A tab or window in a Web browser typically contains
6474: a <a href="#browsing-context">browsing context</a>, as does an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code><span class="impl"> or <code><a href="#frame">frame</a></code>s in a
6475: <code><a href="#frameset">frameset</a></code></span>.</p>
6476:
6477: <p>Each <a href="#browsing-context">browsing context</a> has a corresponding
6478: <code><a href="#windowproxy">WindowProxy</a></code> object.</p>
6479:
6480: <p>A <a href="#browsing-context">browsing context</a> has a <a href="#session-history">session
6481: history</a>, which lists the <code><a href="dom.html#document">Document</a></code> objects that
6482: that <a href="#browsing-context">browsing context</a> has presented, is presenting, or
6483: will present. At any time, one <code><a href="dom.html#document">Document</a></code> in each
6484: <a href="#browsing-context">browsing context</a> is designated the <dfn id="active-document">active
6485: document</dfn>. A <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
6486: context</a> is that <a href="#browsing-context">browsing context</a> whose
6487: <a href="#session-history">session history</a> contains the <code><a href="dom.html#document">Document</a></code>, if
6488: any. (A <code><a href="dom.html#document">Document</a></code> created using an API such as <code title="dom-DOMImplementation-createDocument"><a href="infrastructure.html#dom-domimplementation-createdocument">createDocument()</a></code>
6489: has no <a href="#browsing-context">browsing context</a>.)</p>
6490:
6491: <p>Each <code><a href="dom.html#document">Document</a></code> is associated with a
6492: <code><a href="#window">Window</a></code> object. A <a href="#browsing-context">browsing context</a>'s
6493: <code><a href="#windowproxy">WindowProxy</a></code> object forwards everything to the
6494: <a href="#browsing-context">browsing context</a>'s <a href="#active-document">active document</a>'s
6495: <code><a href="#window">Window</a></code> object.</p>
6496:
6497: <p class="note">In general, there is a 1-to-1 mapping from the
6498: <code><a href="#window">Window</a></code> object to the <code><a href="dom.html#document">Document</a></code> object.
6499: There are two exceptions. First, a <code><a href="#window">Window</a></code> can be reused
6500: for the presentation of a second <code><a href="dom.html#document">Document</a></code> in the same
6501: <a href="#browsing-context">browsing context</a>, such that the mapping is then 1-to-2.
6502: This occurs when a <a href="#browsing-context">browsing context</a> is <a href="#navigate" title="navigate">navigated</a> from the initial
6503: <code><a href="urls.html#about:blank">about:blank</a></code> <code><a href="dom.html#document">Document</a></code> to another, with
6504: <a href="#replacement-enabled">replacement enabled</a>. Second, a <code><a href="dom.html#document">Document</a></code>
6505: can end up being reused for several <code><a href="#window">Window</a></code> objects when
6506: the <code title="dom-document-open"><a href="dynamic-markup-insertion.html#dom-document-open">document.open()</a></code> method is
6507: used, such that the mapping is then many-to-1.</p>
6508:
6509: <p class="note">A <code><a href="dom.html#document">Document</a></code> does not necessarily have a
6510: <a href="#browsing-context">browsing context</a> associated with it. In particular,
6511: data mining tools are likely to never instantiate browsing
6512: contexts.</p>
6513:
6514: <hr><p>A <a href="#browsing-context">browsing context</a> can have a <dfn id="creator-browsing-context">creator browsing
6515: context</dfn>, the <a href="#browsing-context">browsing context</a> that was
6516: responsible for its creation. If a <a href="#browsing-context">browsing context</a> has
6517: a <a href="#parent-browsing-context">parent browsing context</a>, then that is its
6518: <a href="#creator-browsing-context">creator browsing context</a>. Otherwise, if the
6519: <a href="#browsing-context">browsing context</a> has an <a href="#opener-browsing-context">opener browsing
6520: context</a>, then <em>that</em> is its <a href="#creator-browsing-context">creator browsing
6521: context</a>. Otherwise, the <a href="#browsing-context">browsing context</a> has no
6522: <a href="#creator-browsing-context">creator browsing context</a>.</p>
6523:
6524: <p>If a <a href="#browsing-context">browsing context</a> <var title="">A</var> has a
6525: <a href="#creator-browsing-context">creator browsing context</a>, then the
6526: <code><a href="dom.html#document">Document</a></code> that was the <a href="#active-document">active document</a> of
6527: that <a href="#creator-browsing-context">creator browsing context</a> at the time <var title="">A</var> was created is the <dfn id="creator-document">creator
6528: <code>Document</code></dfn>.</p>
6529:
6530: <div class="impl">
6531:
6532: <p>When a <a href="#browsing-context">browsing context</a> is first created, it must be
6533: created with a single <code><a href="dom.html#document">Document</a></code> in its session history,
6534: whose <a href="dom.html#the-document's-address" title="the document's address">address</a> is
6535: <code><a href="urls.html#about:blank">about:blank</a></code>, which is marked as being an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, whose <a href="infrastructure.html#document's-character-encoding" title="document's character encoding">character encoding</a> is
6536: UTF-8, and which is both <a href="#ready-for-post-load-tasks">ready for post-load tasks</a> and
6537: <a href="#completely-loaded">completely loaded</a> immediately. The
6538: <code><a href="dom.html#document">Document</a></code> must have a single child <code><a href="the-html-element.html#the-html-element">html</a></code>
6539: node, which itself has a single child <code><a href="the-body-element.html#the-body-element">body</a></code> node.</p>
6540:
6541: <p class="note">If the <a href="#browsing-context">browsing context</a> is created
6542: specifically to be immediately navigated, then that initial
6543: navigation will have <a href="#replacement-enabled">replacement enabled</a>.</p>
6544:
6545: <p id="about-blank-origin">The <a href="#origin-0">origin</a> and
6546: <a href="#effective-script-origin">effective script origin</a> of the <code><a href="urls.html#about:blank">about:blank</a></code>
6547: <code><a href="dom.html#document">Document</a></code> are set when the <code><a href="dom.html#document">Document</a></code> is
6548: created. If the new <a href="#browsing-context">browsing context</a> has a
6549: <a href="#creator-browsing-context">creator browsing context</a>, then the <a href="#origin-0">origin</a>
6550: of the <code><a href="urls.html#about:blank">about:blank</a></code> <code><a href="dom.html#document">Document</a></code> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the <a href="#origin-0">origin</a>
6551: of the <a href="#creator-document">creator <code>Document</code></a> and the
6552: <a href="#effective-script-origin">effective script origin</a> of the <code><a href="urls.html#about:blank">about:blank</a></code>
6553: <code><a href="dom.html#document">Document</a></code> is initially an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the <a href="#effective-script-origin">effective
6554: script origin</a> of the <a href="#creator-document">creator
6555: <code>Document</code></a>. Otherwise, the <a href="#origin-0">origin</a> of
6556: the <code><a href="urls.html#about:blank">about:blank</a></code> <code><a href="dom.html#document">Document</a></code> is a globally
6557: unique identifier assigned when the new <a href="#browsing-context">browsing
6558: context</a> is created and the <a href="#effective-script-origin">effective script
6559: origin</a> of the <code><a href="urls.html#about:blank">about:blank</a></code> <code><a href="dom.html#document">Document</a></code>
6560: is initially an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to
6561: its <a href="#origin-0">origin</a>.</p>
6562:
6563: </div>
6564:
6565:
6566: <h4 id="nested-browsing-contexts"><span class="secno">5.1.1 </span>Nested browsing contexts</h4>
6567:
6568: <p>Certain elements (for example, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements) can
6569: instantiate further <a href="#browsing-context" title="browsing context">browsing
6570: contexts</a>. These are called <dfn id="nested-browsing-context" title="nested browsing
6571: context">nested browsing contexts</dfn>. If a browsing context <var title="">P</var> has a <code><a href="dom.html#document">Document</a></code> <var title="">D</var>
6572: with an element <var title="">E</var> that nests another browsing
6573: context <var title="">C</var> inside it, then <var title="">C</var>
6574: is said to be <dfn id="browsing-context-nested-through" title="browsing context nested through">nested
6575: through</dfn> <var title="">D</var>, and <var title="">E</var> is
6576: said to be the <dfn id="browsing-context-container">browsing context container</dfn> of <var title="">C</var>. If the <a href="#browsing-context-container">browsing context container</a>
6577: element <var title="">E</var> is <a href="infrastructure.html#in-a-document" title="in a
6578: Document">in</a> the <code><a href="dom.html#document">Document</a></code> <var title="">D</var>,
6579: then <var title="">P</var> is said to be the <dfn id="parent-browsing-context">parent browsing
6580: context</dfn> of <var title="">C</var> and <var title="">C</var> is
6581: said to be a <dfn id="child-browsing-context">child browsing context</dfn> of <var title="">P</var>. Otherwise, the <a href="#nested-browsing-context">nested browsing
6582: context</a> <var title="">C</var> has no <a href="#parent-browsing-context">parent browsing
6583: context</a>.</p>
6584:
6585: <p>A browsing context <var title="">A</var> is said to be an <dfn id="ancestor-browsing-context" title="ancestor browsing context">ancestor</dfn> of a browsing
6586: context <var title="">B</var> if there exists a browsing context
6587: <var title="">A'</var> that is a <a href="#child-browsing-context">child browsing context</a>
6588: of <var title="">A</var> and that is itself an <a href="#ancestor-browsing-context" title="ancestor
6589: browsing context">ancestor</a> of <var title="">B</var>, or if
6590: there is a browsing context <var title="">P</var> that is a
6591: <a href="#child-browsing-context">child browsing context</a> of <var title="">A</var> and
6592: that is the <a href="#parent-browsing-context">parent browsing context</a> of <var title="">B</var>.</p>
6593:
6594: <p>A browsing context that is not a <a href="#nested-browsing-context">nested browsing
6595: context</a> has no <a href="#parent-browsing-context">parent browsing context</a>, and is
6596: the <dfn id="top-level-browsing-context">top-level browsing context</dfn> of all the browsing
6597: contexts for which it is an <a href="#ancestor-browsing-context">ancestor browsing
6598: context</a>.</p>
6599:
6600: <p>The transitive closure of <a href="#parent-browsing-context" title="parent browsing
6601: context">parent browsing contexts</a> for a <a href="#nested-browsing-context">nested browsing
6602: context</a> gives the list of <a href="#ancestor-browsing-context" title="ancestor browsing
6603: context">ancestor browsing contexts</a>.</p>
6604:
6605: <p>The <dfn id="list-of-the-descendant-browsing-contexts">list of the descendant browsing contexts</dfn> of a
6606: <code><a href="dom.html#document">Document</a></code> <var title="">d</var> is the (ordered) list
6607: returned by the following algorithm:</p>
6608:
6609: <ol><li><p>Let <var title="">list</var> be an empty list.</p></li>
6610:
6611: <li>
6612:
6613: <p>For each <a href="#child-browsing-context">child browsing context</a> of <var title="">d</var> that is <a href="#browsing-context-nested-through" title="browsing context nested
6614: through">nested through</a> an element that is <a href="infrastructure.html#in-a-document" title="in
6615: a document">in the <code>Document</code></a> <var title="">d</var>, in the <a href="infrastructure.html#tree-order">tree order</a> of the elements
6616: nesting those <a href="#browsing-context" title="browsing context">browsing
6617: contexts</a>, run these substeps:</p>
6618:
6619: <ol><li><p>Append that <a href="#child-browsing-context">child browsing context</a> to the
6620: list <var title="">list</var>.</p>
6621:
6622: </li><li><p>Append the <a href="#list-of-the-descendant-browsing-contexts">list of the descendant browsing
6623: contexts</a> of the <a href="#active-document">active document</a> of that
6624: <a href="#child-browsing-context">child browsing context</a> to the list <var title="">list</var>.</p></li>
6625:
6626: </ol></li>
6627:
6628: <li><p>Return the constructed <var title="">list</var>.</p></li>
6629:
6630: </ol><p>A <code><a href="dom.html#document">Document</a></code> is said to be <dfn id="fully-active">fully active</dfn>
6631: when it is the <a href="#active-document">active document</a> of its <a href="#browsing-context">browsing
6632: context</a>, and either its browsing context is a <a href="#top-level-browsing-context">top-level
6633: browsing context</a>, or it has a <a href="#parent-browsing-context">parent browsing
6634: context</a> and the <code><a href="dom.html#document">Document</a></code> <a href="#browsing-context-nested-through" title="browsing
6635: context nested through">through which</a> it is <a href="#nested-browsing-context" title="nested browsing context">nested</a> is itself <a href="#fully-active">fully
6636: active</a>.</p>
6637:
6638: <p>Because they are nested through an element, <a href="#child-browsing-context" title="child
6639: browsing context">child browsing contexts</a> are always tied to
6640: a specific <code><a href="dom.html#document">Document</a></code> in their <a href="#parent-browsing-context">parent browsing
6641: context</a>. User agents must not allow the user to interact with
6642: <a href="#child-browsing-context" title="child browsing context">child browsing contexts</a>
6643: of elements that are in <code><a href="dom.html#document">Document</a></code>s that are not
6644: themselves <a href="#fully-active">fully active</a>.</p>
6645:
6646: <p>A <a href="#nested-browsing-context">nested browsing context</a> can have a <a href="the-iframe-element.html#seamless-browsing-context-flag">seamless
6647: browsing context flag</a> set, if it is embedded through an
6648: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element with a <code title="attr-iframe-seamless"><a href="the-iframe-element.html#attr-iframe-seamless">seamless</a></code> attribute.</p>
6649:
6650: <p class="note">A <a href="#nested-browsing-context">nested browsing context</a> can in some
6651: cases be taken out of its <a href="#parent-browsing-context">parent browsing context</a> (e.g.
6652: if an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element is removed from its
6653: <code><a href="dom.html#document">Document</a></code>). In such a situation, the <a href="#nested-browsing-context">nested
6654: browsing context</a> has no <a href="#parent-browsing-context">parent browsing context</a>,
6655: but it still has the same <a href="#browsing-context-container">browsing context container</a>
6656: and is still <a href="#browsing-context-nested-through" title="browsing context nested through">nested
6657: through</a> that element's <code><a href="dom.html#document">Document</a></code>. Such a
6658: <a href="#nested-browsing-context">nested browsing context</a> is <em>not</em> a
6659: <a href="#top-level-browsing-context">top-level browsing context</a>, and cannot contain
6660: <code><a href="dom.html#document">Document</a></code>s that are <a href="#fully-active">fully active</a>.
6661: Furthermore, if a <a href="#browsing-context-container">browsing context container</a> (such as
6662: an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>) is moved to another <code><a href="dom.html#document">Document</a></code>,
6663: then the <a href="#parent-browsing-context">parent browsing context</a> of its <a href="#nested-browsing-context">nested
6664: browsing context</a> will change.</p>
6665:
6666: <p>The <dfn id="document-family">document family</dfn> of a <a href="#browsing-context">browsing context</a>
6667: consists of the union of all the <code><a href="dom.html#document">Document</a></code> objects in
6668: that <a href="#browsing-context">browsing context</a>'s <a href="#session-history">session history</a>
6669: and the <a href="#document-family" title="document family">document families</a> of
6670: all those <code><a href="dom.html#document">Document</a></code> objects. The <a href="#document-family">document
6671: family</a> of a <code><a href="dom.html#document">Document</a></code> object consists of the
6672: union of all the <a href="#document-family" title="document family">document
6673: families</a> of the <a href="#browsing-context" title="browsing context">browsing
6674: contexts</a> that are <a href="#browsing-context-nested-through" title="browsing context nested
6675: through">nested through</a> the <code><a href="dom.html#document">Document</a></code> object.</p>
6676:
6677:
6678: <h5 id="navigating-nested-browsing-contexts-in-the-dom"><span class="secno">5.1.1.1 </span>Navigating nested browsing contexts in the DOM</h5>
6679:
6680: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-top"><a href="#dom-top">top</a></code></dt>
6681:
6682: <dd>
6683:
6684: <p>Returns the <code><a href="#windowproxy">WindowProxy</a></code> for the <a href="#top-level-browsing-context">top-level browsing context</a>.</p>
6685:
6686: </dd>
6687:
6688: <dt><var title="">window</var> . <code title="dom-parent"><a href="#dom-parent">parent</a></code></dt>
6689:
6690: <dd>
6691:
6692: <p>Returns the <code><a href="#windowproxy">WindowProxy</a></code> for the <a href="#parent-browsing-context">parent browsing context</a>.</p>
6693:
6694: </dd>
6695:
6696: <dt><var title="">window</var> . <code title="dom-frameElement"><a href="#dom-frameelement">frameElement</a></code></dt>
6697:
6698: <dd>
6699:
6700: <p>Returns the <code><a href="infrastructure.html#element">Element</a></code> for the <a href="#browsing-context-container">browsing context container</a>.</p>
6701:
6702: <p>Returns null if there isn't one.</p>
6703:
6704: <p>Throws a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception in cross-origin situations.</p>
6705:
6706: </dd>
6707:
6708: </dl><div class="impl">
6709:
6710: <p>The <dfn id="dom-top" title="dom-top"><code>top</code></dfn> IDL attribute on
6711: the <code><a href="#window">Window</a></code> object of a <code><a href="dom.html#document">Document</a></code> in a
6712: <a href="#browsing-context">browsing context</a> <var title="">b</var> must return the
6713: <code><a href="#windowproxy">WindowProxy</a></code> object of its <a href="#top-level-browsing-context">top-level browsing
6714: context</a> (which would be its own <code><a href="#windowproxy">WindowProxy</a></code>
6715: object if it was a <a href="#top-level-browsing-context">top-level browsing context</a> itself),
6716: if it has one, or its own <code><a href="#windowproxy">WindowProxy</a></code> object otherwise
6717: (e.g. if it was a detached <a href="#nested-browsing-context">nested browsing
6718: context</a>).</p>
6719:
6720: <p>The <dfn id="dom-parent" title="dom-parent"><code>parent</code></dfn> IDL
6721: attribute on the <code><a href="#window">Window</a></code> object of a
6722: <code><a href="dom.html#document">Document</a></code> in a <a href="#browsing-context">browsing context</a> <var title="">b</var> must return the <code><a href="#windowproxy">WindowProxy</a></code> object of
6723: the <a href="#parent-browsing-context">parent browsing context</a>, if there is one (i.e. if
6724: <var title="">b</var> is a <a href="#child-browsing-context">child browsing context</a>), or
6725: the <code><a href="#windowproxy">WindowProxy</a></code> object of the <a href="#browsing-context">browsing
6726: context</a> <var title="">b</var> itself, otherwise (i.e. if it
6727: is a <a href="#top-level-browsing-context">top-level browsing context</a> or a detached
6728: <a href="#nested-browsing-context">nested browsing context</a>).</p>
6729:
6730: <p>The <dfn id="dom-frameelement" title="dom-frameElement"><code>frameElement</code></dfn>
6731: IDL attribute on the <code><a href="#window">Window</a></code> object of a
6732: <code><a href="dom.html#document">Document</a></code> <var title="">d</var>, on getting, must run
6733: the following algorithm:</p>
6734:
6735: <ol><li><p>If <var title="">d</var> is not a <code><a href="dom.html#document">Document</a></code> in a
6736: <a href="#nested-browsing-context">nested browsing context</a>, return null and abort these
6737: steps.</p></li>
6738:
6739: <li><p>If the <a href="#browsing-context-container">browsing context container</a>'s
6740: <code><a href="dom.html#document">Document</a></code> does not have the <a href="#same-origin" title="same
6741: origin">same</a> <a href="#effective-script-origin">effective script origin</a> as the
6742: <a href="#entry-script">entry script</a>, then throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code>
6743: exception.</p></li>
6744:
6745: <li><p>Otherwise, return the <a href="#browsing-context-container">browsing context
6746: container</a> for <var title="">b</var>.</p></li>
6747:
6748: </ol></div>
6749:
6750:
6751:
6752: <h4 id="auxiliary-browsing-contexts"><span class="secno">5.1.2 </span>Auxiliary browsing contexts</h4>
6753:
6754: <p>It is possible to create new browsing contexts that are related
6755: to a <a href="#top-level-browsing-context">top-level browsing context</a> without being nested
6756: through an element. Such browsing contexts are called <dfn id="auxiliary-browsing-context" title="auxiliary browsing context">auxiliary browsing
6757: contexts</dfn>. Auxiliary browsing contexts are always <a href="#top-level-browsing-context" title="top-level browsing context">top-level browsing
6758: contexts</a>.</p>
6759:
6760: <p>An <a href="#auxiliary-browsing-context">auxiliary browsing context</a> has an <dfn id="opener-browsing-context">opener
6761: browsing context</dfn>, which is the <a href="#browsing-context">browsing context</a>
6762: from which the <a href="#auxiliary-browsing-context">auxiliary browsing context</a> was
6763: created.</p>
6764:
6765:
6766: <h5 id="navigating-auxiliary-browsing-contexts-in-the-dom"><span class="secno">5.1.2.1 </span>Navigating auxiliary browsing contexts in the DOM</h5>
6767:
6768: <p>The <dfn id="dom-opener" title="dom-opener"><code>opener</code></dfn> IDL
6769: attribute on the <code><a href="#window">Window</a></code> object, on getting, must return
6770: the <code><a href="#windowproxy">WindowProxy</a></code> object of the <a href="#browsing-context">browsing
6771: context</a> from which the current <a href="#browsing-context">browsing context</a>
6772: was created (its <a href="#opener-browsing-context">opener browsing context</a>), if there is
6773: one, if it is still available, and if the current <a href="#browsing-context">browsing
6774: context</a> has not <i><a href="#disowned-its-opener">disowned its opener</a></i>; otherwise, it
6775: must return null. On setting, if the new value is null then the
6776: current <a href="#browsing-context">browsing context</a> must <dfn id="disowned-its-opener" title="disowned its
6777: opener">disown its opener</dfn>; if the new value is anything else
6778: then the user agent must ignore the new value.</p>
6779:
6780:
6781:
6782: <h4 id="secondary-browsing-contexts"><span class="secno">5.1.3 </span>Secondary browsing contexts</h4>
6783:
6784: <!-- This section only exists for the purpose of defining
6785: rel=sidebar, which was dropped due to wg decision in
6786: http://www.w3.org/Bugs/Public/show_bug.cgi?id=11183
6787: and then moved to the wiki -->
6788:
6789: <p>User agents may support <dfn id="secondary-browsing-context" title="secondary browsing
6790: context">secondary browsing contexts</dfn>, which are <a href="#browsing-context" title="browsing context">browsing contexts</a> that form part of
6791: the user agent's interface, apart from the main content area.</p>
6792:
6793:
6794: <!--ADD-TOPIC:Security-->
6795: <div class="impl">
6796:
6797: <h4 id="security-nav"><span class="secno">5.1.4 </span>Security</h4>
6798:
6799: <p id="security-1">A <a href="#browsing-context">browsing context</a> <var title="">A</var> is <dfn id="allowed-to-navigate">allowed to navigate</dfn> a second
6800: <a href="#browsing-context">browsing context</a> <var title="">B</var> if one of the
6801: following conditions is true:</p>
6802:
6803: <ul><li>Either the <a href="#origin-0">origin</a> of the <a href="#active-document">active
6804: document</a> of <var title="">A</var> is the <a href="#same-origin" title="same
6805: origin">same</a> as the <a href="#origin-0">origin</a> of the <a href="#active-document">active
6806: document</a> of <var title="">B</var>, or</li>
6807:
6808: <li>The browsing context <var title="">A</var> is a <a href="#nested-browsing-context">nested
6809: browsing context</a> with a <a href="#top-level-browsing-context">top-level browsing
6810: context</a>, and its <a href="#top-level-browsing-context">top-level browsing context</a> is
6811: <var title="">B</var>, or</li>
6812:
6813: <li>The browsing context <var title="">B</var> is an
6814: <a href="#auxiliary-browsing-context">auxiliary browsing context</a> and <var title="">A</var>
6815: is <a href="#allowed-to-navigate">allowed to navigate</a> <var title="">B</var>'s
6816: <a href="#opener-browsing-context">opener browsing context</a>, or</li>
6817:
6818: <li>The browsing context <var title="">B</var> is not a
6819: <a href="#top-level-browsing-context">top-level browsing context</a>, but there exists an
6820: <a href="#ancestor-browsing-context">ancestor browsing context</a> of <var title="">B</var>
6821: whose <a href="#active-document">active document</a> has the <a href="#same-origin" title="same
6822: origin">same</a> <a href="#origin-0">origin</a> as the <a href="#active-document">active
6823: document</a> of <var title="">A</var> (possibly in fact being
6824: <var title="">A</var> itself).</li>
6825:
6826: </ul><hr><p>An element has a <dfn id="browsing-context-scope-origin">browsing context scope origin</dfn> if its
6827: <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a> is a
6828: <a href="#top-level-browsing-context">top-level browsing context</a> or if all of its
6829: <code><a href="dom.html#document">Document</a></code>'s <a href="#ancestor-browsing-context" title="ancestor browsing
6830: context">ancestor browsing contexts</a> all have <a href="#active-document" title="active document">active documents</a> whose
6831: <a href="#origin-0">origin</a> are the <a href="#same-origin">same origin</a> as the
6832: element's <code><a href="dom.html#document">Document</a></code>'s <a href="#origin-0">origin</a>. If an element
6833: has a <a href="#browsing-context-scope-origin">browsing context scope origin</a>, then its value is
6834: the <a href="#origin-0">origin</a> of the element's <code><a href="dom.html#document">Document</a></code>.</p>
6835:
6836: </div>
6837: <!--REMOVE-TOPIC:Security-->
6838:
6839:
6840: <div class="impl">
6841:
6842: <h4 id="groupings-of-browsing-contexts"><span class="secno">5.1.5 </span>Groupings of browsing contexts</h4>
6843:
6844: <p>Each <a href="#browsing-context">browsing context</a> is defined as having a list of
6845: one or more <dfn id="directly-reachable-browsing-contexts">directly reachable browsing contexts</dfn>. These
6846: are:</p>
6847:
6848: <ul><li>The <a href="#browsing-context">browsing context</a> itself.</li>
6849:
6850: <li>All the <a href="#browsing-context">browsing context</a>'s <a href="#child-browsing-context" title="child
6851: browsing context">child browsing contexts</a>.</li>
6852:
6853: <li>The <a href="#browsing-context">browsing context</a>'s <a href="#parent-browsing-context">parent browsing
6854: context</a>.</li>
6855:
6856: <li>All the <a href="#browsing-context" title="browsing context">browsing contexts</a>
6857: that have the <a href="#browsing-context">browsing context</a> as their <a href="#opener-browsing-context">opener
6858: browsing context</a>.</li>
6859:
6860: <li>The <a href="#browsing-context">browsing context</a>'s <a href="#opener-browsing-context">opener browsing
6861: context</a>.</li>
6862:
6863: </ul><p>The transitive closure of all the <a href="#browsing-context" title="browsing
6864: context">browsing contexts</a> that are <a href="#directly-reachable-browsing-contexts">directly reachable
6865: browsing contexts</a> forms a <dfn id="unit-of-related-browsing-contexts">unit of related browsing
6866: contexts</dfn>.</p>
6867:
6868: <p>Each <a href="#unit-of-related-browsing-contexts">unit of related browsing contexts</a> is then
6869: further divided into the smallest number of groups such that every
6870: member of each group has an <a href="#active-document">active document</a> with an
6871: <a href="#effective-script-origin">effective script origin</a> that, through appropriate
6872: manipulation of the <code title="dom-document-domain"><a href="#dom-document-domain">document.domain</a></code> attribute, could
6873: be made to be the same as other members of the group, but could not
6874: be made the same as members of any other group. Each such group is a
6875: <dfn id="unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing contexts</dfn>.</p>
6876:
6877: <p>Each <a href="#unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing
6878: contexts</a> can have an <dfn id="entry-script">entry script</dfn> which is used to
6879: obtain, amongst other things, the <a href="#script's-base-url">script's base URL</a> to
6880: <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> relative <a href="urls.html#url" title="URL">URLs</a> used in scripts running in that <a href="#unit-of-related-similar-origin-browsing-contexts">unit
6881: of related similar-origin browsing contexts</a>. Initially, there
6882: is no <a href="#entry-script">entry script</a>. It is changed by the <a href="#jump-to-a-code-entry-point">jump to
6883: a code entry-point</a> algorithm.</p>
6884:
6885: <p>Each <a href="#unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing
6886: contexts</a> also has a <dfn id="running-mutation-observers">running mutation observers</dfn>
6887: flag, which must initially be false. It is used to prevent reentrant
6888: invocation of the algorithm to <a href="infrastructure.html#concept-mo-invoke" title="concept-mo-invoke">invoke <code>MutationObserver</code>
6889: objects</a>. For the purposes of <code><a href="infrastructure.html#mutationobserver">MutationObserver</a></code>
6890: objects, each <a href="#unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing
6891: contexts</a> is a distinct <var title="MutationObserver scripting
6892: environment"><a href="infrastructure.html#mutationobserver-scripting-environment">scripting environment</a></var>.</p>
6893:
6894: <p class="note">There is also at most one <a href="#event-loop">event loop</a>
6895: per <a href="#unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing contexts</a>
6896: (though several <a href="#unit-of-related-similar-origin-browsing-contexts" title="unit of related similar-origin browsing
6897: contexts">units of related similar-origin browsing contexts</a>
6898: can have a shared <a href="#event-loop">event loop</a>).</p>
6899:
6900: </div>
6901:
6902:
6903:
6904: <h4 id="browsing-context-names"><span class="secno">5.1.6 </span>Browsing context names</h4>
6905:
6906: <p>Browsing contexts can have a <dfn id="browsing-context-name">browsing context name</dfn>. By
6907: default, a browsing context has no name (its name is not set).</p>
6908:
6909: <p>A <dfn id="valid-browsing-context-name">valid browsing context name</dfn> is any string with at
6910: least one character that does not start with a U+005F LOW LINE
6911: character. (Names starting with an underscore are reserved for
6912: special keywords.)</p>
6913:
6914: <p>A <dfn id="valid-browsing-context-name-or-keyword">valid browsing context name or keyword</dfn> is any string
6915: that is either a <a href="#valid-browsing-context-name">valid browsing context name</a> or that is
6916: an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for one of: <code title="">_blank</code>, <code title="">_self</code>, <code title="">_parent</code>, or <code title="">_top</code>.</p>
6917:
6918: <p>These values have different meanings based on whether the page is
6919: sandboxed or not, as summarized in the following (non-normative)
6920: table. In this table, "current" means the <a href="#browsing-context">browsing
6921: context</a> that the link or script is in, "parent" means the
6922: <a href="#parent-browsing-context">parent browsing context</a> of the one the link or script
6923: is in, "master" means the nearest <a href="#ancestor-browsing-context">ancestor browsing
6924: context</a> of the one the link or script is in that is not
6925: itself in a <a href="the-iframe-element.html#attr-iframe-seamless" title="attr-iframe-seamless">seamless
6926: iframe</a>, "top" means the <a href="#top-level-browsing-context">top-level browsing
6927: context</a> of the one the link or script is in, "new" means a
6928: new <a href="#top-level-browsing-context">top-level browsing context</a> or <a href="#auxiliary-browsing-context">auxiliary
6929: browsing context</a> is to be created, subject to various user
6930: preferences and user agent policies, "none" means that nothing will
6931: happen, and "maybe new" means the same as "new" if the "<code title="attr-iframe-sandbox-allow-popups"><a href="#attr-iframe-sandbox-allow-popups">allow-popups</a></code>"
6932: keyword is also specified on the <code title="attr-iframe-sandbox"><a href="the-iframe-element.html#attr-iframe-sandbox">sandbox</a></code> attribute (or if the user
6933: overrode the sandboxing), and the same as "none" otherwise.</p>
6934:
6935: <table><thead><tr><th rowspan="2">Keyword
6936: </th><th rowspan="2">Ordinary effect
6937: </th><th colspan="5">Effect in an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> with...
6938: </th></tr><tr><!-- nothing --><th><code title="">seamless=""</code>
6939: </th><th><code title="">sandbox=""</code>
6940: </th><th><code title="">sandbox="" seamless=""</code>
6941: </th><th><code title="">sandbox="allow-top-navigation"</code>
6942: </th><th><code title="">sandbox="allow-top-navigation" seamless=""</code>
6943:
6944: </th></tr></thead><tbody><tr><td>none specified, for links and form submissions <!-- same as empty string -->
6945: </td><td>current
6946: </td><td>master
6947: </td><td>current
6948: </td><td>master
6949: </td><td>current
6950: </td><td>master
6951:
6952: </td></tr><tr><td>none specified, for <code title="dom-open"><a href="#dom-open">window.open()</a></code> <!-- same as _blank -->
6953: </td><td>new
6954: </td><td>new
6955: </td><td>maybe new†
6956: </td><td>maybe new†
6957: </td><td>maybe new†
6958: </td><td>maybe new†
6959:
6960: </td></tr><tr><td>empty string
6961: </td><td>current
6962: </td><td>master
6963: </td><td>current
6964: </td><td>master
6965: </td><td>current
6966: </td><td>master
6967:
6968: </td></tr><tr><td><code title="">_blank</code>
6969: </td><td>new
6970: </td><td>new
6971: </td><td>maybe new
6972: </td><td>maybe new
6973: </td><td>maybe new
6974: </td><td>maybe new
6975:
6976: </td></tr><tr><td><code title="">_self</code>
6977: </td><td>current
6978: </td><td>current
6979: </td><td>current
6980: </td><td>current
6981: </td><td>current
6982: </td><td>current
6983:
6984: </td></tr><tr><td><code title="">_parent</code> if there isn't a parent
6985: </td><td>current
6986: </td><td>current
6987: </td><td>current
6988: </td><td>current
6989: </td><td>current
6990: </td><td>current
6991:
6992: </td></tr><tr><td><code title="">_parent</code> if parent is also top
6993: </td><td>parent/top
6994: </td><td>parent/top
6995: </td><td>none
6996: </td><td>none
6997: </td><td>parent/top
6998: </td><td>parent/top
6999:
7000: </td></tr><tr><td><code title="">_parent</code> if there is one and it's not top
7001: </td><td>parent
7002: </td><td>parent
7003: </td><td>none
7004: </td><td>none
7005: </td><td>none
7006: </td><td>none
7007:
7008: </td></tr><tr><td><code title="">_top</code> if top is current
7009: </td><td>current
7010: </td><td>current
7011: </td><td>current
7012: </td><td>current
7013: </td><td>current
7014: </td><td>current
7015:
7016: </td></tr><tr><td><code title="">_top</code> if top is not current
7017: </td><td>top
7018: </td><td>top
7019: </td><td>none
7020: </td><td>none
7021: </td><td>top
7022: </td><td>top
7023:
7024: </td></tr><tr><td>name that doesn't exist
7025: </td><td>new
7026: </td><td>new
7027: </td><td>maybe new
7028: </td><td>maybe new
7029: </td><td>maybe new
7030: </td><td>maybe new
7031:
7032: </td></tr><tr><td>name that exists and is a descendant
7033: </td><td>specified descendant
7034: </td><td>specified descendant
7035: </td><td>specified descendant
7036: </td><td>specified descendant
7037: </td><td>specified descendant
7038: </td><td>specified descendant
7039:
7040: </td></tr><tr><td>name that exists and is current
7041: </td><td>current
7042: </td><td>current
7043: </td><td>current
7044: </td><td>current
7045: </td><td>current
7046: </td><td>current
7047:
7048: </td></tr><tr><td>name that exists and is an ancestor that is top
7049: </td><td>specified ancestor
7050: </td><td>specified ancestor
7051: </td><td>none
7052: </td><td>none
7053: </td><td>specified ancestor/top
7054: </td><td>specified ancestor/top
7055:
7056: </td></tr><tr><td>name that exists and is an ancestor that is not top
7057: </td><td>specified ancestor
7058: </td><td>specified ancestor
7059: </td><td>none
7060: </td><td>none
7061: </td><td>none
7062: </td><td>none
7063:
7064: </td></tr></tbody></table><p><small>† This case is only possible if the <code title="attr-iframe-sandbox"><a href="the-iframe-element.html#attr-iframe-sandbox">sandbox</a></code> attribute also allows
7065: scripts.</small></p>
7066:
7067: <div class="impl">
7068:
7069: <hr><p>An algorithm is <dfn id="allowed-to-show-a-pop-up">allowed to show a pop-up</dfn> if, in the
7070: <a href="#concept-task" title="concept-task">task</a> in which the algorithm is
7071: running, either:</p>
7072:
7073: <ul class="brief"><li>an <a href="content-models.html#activation-behavior">activation behavior</a> is currently being
7074: processed whose <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event was
7075: <a href="infrastructure.html#concept-events-trusted" title="concept-events-trusted">trusted</a>, or</li>
7076:
7077: <li>the event listener for a <a href="infrastructure.html#concept-events-trusted" title="concept-events-trusted">trusted</a> <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event is being handled.</li>
7078:
7079: </ul><hr><p><dfn id="the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">The rules for choosing a browsing context given a browsing
7080: context name</dfn> are as follows. The rules assume that they are
7081: being applied in the context of a <a href="#browsing-context">browsing context</a>.</p>
7082:
7083: <ol><li>
7084:
7085: <p>If the given browsing context name is the empty string or <code title="">_self</code>, then the chosen browsing context must be
7086: the current one.</p>
7087:
7088: <p>If the given browsing context name is <code title="">_self</code>, then this is an <a href="#explicit-self-navigation-override">explicit
7089: self-navigation override</a>, which overrides the behavior of
7090: the <a href="the-iframe-element.html#seamless-browsing-context-flag">seamless browsing context flag</a> set by the <code title="attr-iframe-seamless"><a href="the-iframe-element.html#attr-iframe-seamless">seamless</a></code> attribute on
7091: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements.</p>
7092:
7093: </li>
7094:
7095: <li><p>If the given browsing context name is <code title="">_parent</code>, then the chosen browsing context must be
7096: the <a href="#parent-browsing-context"><em>parent</em> browsing context</a> of the current
7097: one, unless there isn't one, in which case the chosen browsing
7098: context must be the current browsing context.</p></li>
7099:
7100: <li><p>If the given browsing context name is <code title="">_top</code>, then the chosen browsing context must be the
7101: <a href="#top-level-browsing-context">top-level browsing context</a> of the current one, if
7102: there is one, or else the current browsing context.</p></li>
7103:
7104: <li>
7105:
7106: <p>If the given browsing context name is not <code title="">_blank</code> and there exists a browsing context whose
7107: <a href="#browsing-context-name" title="browsing context name">name</a> is the same as the
7108: given browsing context name, and the current browsing context is
7109: <a href="#allowed-to-navigate">allowed to navigate</a> that browsing context, and the
7110: user agent determines that the two browsing contexts are related
7111: enough that it is ok if they reach each other, then that browsing
7112: context must be the chosen one. If there are multiple matching
7113: browsing contexts, the user agent should select one in some
7114: arbitrary consistent manner, such as the most recently opened,
7115: most recently focused, or more closely related.</p>
7116:
7117: <p>If the browsing context is chosen by this step to be the
7118: current browsing context, then this is also an <a href="#explicit-self-navigation-override">explicit
7119: self-navigation override</a>.</p>
7120:
7121: </li>
7122:
7123: <li>
7124:
7125: <p>Otherwise, a new browsing context is being requested, and what
7126: happens depends on the user agent's configuration and/or abilities
7127: — it is determined by the rules given for the first
7128: applicable option from the following list:</p>
7129:
7130: <dl class="switch"><dt id="sandboxWindowOpen">If the current browsing context's
7131: <a href="#active-document">active document</a>'s <a href="#active-sandboxing-flag-set">active sandboxing flag
7132: set</a> has the <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing
7133: context flag</a> set.</dt>
7134:
7135: <dd>
7136:
7137: <p>Typically, there is no chosen browsing context.</p>
7138:
7139: <p>The user agent may offer to create a new <a href="#top-level-browsing-context">top-level
7140: browsing context</a> or reuse an existing <a href="#top-level-browsing-context">top-level
7141: browsing context</a>. If the user picks one of those options,
7142: then the designated browsing context must be the chosen one (the
7143: browsing context's name isn't set to the given browsing context
7144: name). The default behaviour (if the user agent doesn't offer
7145: the option to the user, or if the user declines to allow a
7146: browsing context to be used) must be that there must not be a
7147: chosen browsing context.</p>
7148:
7149: <p class="warning">If this case occurs, it means that an author
7150: has explicitly sandboxed the document that is trying to open a
7151: link.</p>
7152:
7153: </dd>
7154:
7155:
7156: <dt id="noopener">If the user agent has been configured such that
7157: in this instance it will create a new browsing context, and the
7158: browsing context is being requested as part of <a href="#following-hyperlinks-0" title="following hyperlinks">following a hyperlink</a> whose
7159: <a href="#linkTypes">link types</a> include the <code title="rel-noreferrer"><a href="#link-type-noreferrer">noreferrer</a></code> keyword</dt>
7160:
7161: <dd><p>A new <a href="#top-level-browsing-context">top-level browsing context</a> must be
7162: created. If the given browsing context name is not <code title="">_blank</code>, then the new top-level browsing context's
7163: name must be the given browsing context name (otherwise, it has
7164: no name). The chosen browsing context must be this new browsing
7165: context.</p>
7166:
7167: <p class="note">If it is immediately <a href="#navigate" title="navigate">navigated</a>, then the navigation will be
7168: done with <a href="#replacement-enabled">replacement enabled</a>.</p></dd>
7169:
7170:
7171: <dt>If the user agent has been configured such that in this
7172: instance it will create a new browsing context, and the <code title="rel-noreferrer"><a href="#link-type-noreferrer">noreferrer</a></code> keyword doesn't
7173: apply</dt>
7174:
7175: <dd><p>A new <a href="#auxiliary-browsing-context">auxiliary browsing context</a> must be
7176: created, with the <a href="#opener-browsing-context">opener browsing context</a> being the
7177: current one. If the given browsing context name is not <code title="">_blank</code>, then the new auxiliary browsing context's
7178: name must be the given browsing context name (otherwise, it has
7179: no name). The chosen browsing context must be this new browsing
7180: context.</p>
7181:
7182: <p class="note">If it is immediately <a href="#navigate" title="navigate">navigated</a>, then the navigation will be
7183: done with <a href="#replacement-enabled">replacement enabled</a>.</p></dd>
7184:
7185:
7186: <dt>If the user agent has been configured such that in this
7187: instance it will reuse the current browsing context</dt>
7188:
7189: <dd><p>The chosen browsing context is the current browsing
7190: context.</p></dd>
7191:
7192:
7193: <dt>If the user agent has been configured such that in this
7194: instance it will not find a browsing context</dt>
7195:
7196: <dd><p>There must not be a chosen browsing context.</p></dd>
7197:
7198: </dl><p>User agent implementors are encouraged to provide a way for
7199: users to configure the user agent to always reuse the current
7200: browsing context.</p>
7201:
7202: <p>If the current browsing context's <a href="#active-document">active
7203: document</a>'s <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has the
7204: <a href="#sandboxed-navigation-browsing-context-flag">sandboxed navigation browsing context flag</a> set and
7205: chosen browsing context picked above, if any, is a new browsing
7206: context (whether top-level or auxiliary), then all the flags that
7207: are set in the current browsing context's <a href="#active-document">active
7208: document</a>'s <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> when the
7209: new browsing context is created must be set in the new browsing
7210: context's <a href="#popup-sandboxing-flag-set">popup sandboxing flag set</a>, and the current
7211: browsing context must be set as the new browsing context's
7212: <a href="#one-permitted-sandboxed-navigator">one permitted sandboxed navigator</a>.</p>
7213:
7214: </li>
7215:
7216: </ol></div>
7217:
7218:
7219:
7220: <!--TOPIC:DOM APIs-->
7221: <h3 id="the-window-object"><span class="secno">5.2 </span>The <code><a href="#window">Window</a></code> object</h3>
7222:
7223: <pre class="idl">[NamedPropertiesObject]
7224: interface <dfn id="window">Window</dfn> : <a href="infrastructure.html#eventtarget">EventTarget</a> {
7225: // the current browsing context
7226: [Unforgeable] readonly attribute <a href="#windowproxy">WindowProxy</a> <a href="#dom-window" title="dom-window">window</a>;
7227: [Replaceable] readonly attribute <a href="#windowproxy">WindowProxy</a> <a href="#dom-self" title="dom-self">self</a>;
7228: [Unforgeable] readonly attribute <a href="dom.html#document">Document</a> <a href="#dom-document-0" title="dom-document">document</a>;
7229: attribute DOMString <a href="#dom-name" title="dom-name">name</a>; <!-- not [Replaceable] per WebKit and IE8 -->
7230: [PutForwards=<a href="#dom-location-href" title="dom-location-href">href</a>, Unforgeable] readonly attribute <a href="#location">Location</a> <a href="#dom-location" title="dom-location">location</a>;
7231: readonly attribute <a href="#history-1">History</a> <a href="#dom-history" title="dom-history">history</a>;
7232: <!--FIND-->
7233: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-locationbar" title="dom-window-locationbar">locationbar</a>;
7234: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-menubar" title="dom-window-menubar">menubar</a>;
7235: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-personalbar" title="dom-window-personalbar">personalbar</a>;
7236: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-scrollbars" title="dom-window-scrollbars">scrollbars</a>;
7237: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-statusbar" title="dom-window-statusbar">statusbar</a>;
7238: [Replaceable] readonly attribute <a href="#barprop">BarProp</a> <a href="#dom-window-toolbar" title="dom-window-toolbar">toolbar</a>;<!--
7239: [Replaceable] readonly attribute <span>BarProp</span> <span title="dom-window-directories">directories</span>; // legacy (Gecko-only) -->
7240: attribute DOMString <a href="#dom-window-status" title="dom-window-status">status</a>;
7241: void <a href="#dom-window-close" title="dom-window-close">close</a>();
7242: void <a href="#dom-window-stop" title="dom-window-stop">stop</a>();
7243: void <a href="#dom-window-focus" title="dom-window-focus">focus</a>();
7244: void <a href="#dom-window-blur" title="dom-window-blur">blur</a>();
7245:
7246: // other browsing contexts
7247: [Replaceable] readonly attribute <a href="#windowproxy">WindowProxy</a> <a href="#dom-frames" title="dom-frames">frames</a>;
7248: [Replaceable] readonly attribute unsigned long <a href="#dom-length" title="dom-length">length</a>;
7249: [Unforgeable] readonly attribute <a href="#windowproxy">WindowProxy</a> <a href="#dom-top" title="dom-top">top</a>;
7250: attribute <a href="#windowproxy">WindowProxy</a>? <a href="#dom-opener" title="dom-opener">opener</a>;
7251: readonly attribute <a href="#windowproxy">WindowProxy</a> <a href="#dom-parent" title="dom-parent">parent</a>;
7252: readonly attribute <a href="infrastructure.html#element">Element</a>? <a href="#dom-frameelement" title="dom-frameElement">frameElement</a>;
7253: <a href="#windowproxy">WindowProxy</a> <a href="#dom-open" title="dom-open">open</a>(optional DOMString url, optional DOMString target, optional DOMString features, optional boolean replace);
7254: <a href="#dom-window-item" title="dom-window-item">getter</a> <a href="#windowproxy">WindowProxy</a> (unsigned long index);
7255: <a href="#dom-window-nameditem" title="dom-window-namedItem">getter</a> object (DOMString name);
7256:
7257: // the user agent
7258: readonly attribute <a href="#navigator">Navigator</a> <a href="#dom-navigator" title="dom-navigator">navigator</a>; <!-- IE also has window.clientInformation === window.navigator -->
7259: readonly attribute <a href="#external">External</a> <a href="#dom-external" title="dom-external">external</a>;
7260: readonly attribute <a href="#applicationcache">ApplicationCache</a> <a href="#dom-applicationcache" title="dom-applicationCache">applicationCache</a>;
7261:
7262: // user prompts
7263: void <a href="#dom-alert" title="dom-alert">alert</a>(DOMString message);
7264: boolean <a href="#dom-confirm" title="dom-confirm">confirm</a>(DOMString message);
7265: DOMString? <a href="#dom-prompt" title="dom-prompt">prompt</a>(DOMString message, optional DOMString default);
7266: void <a href="#dom-print" title="dom-print">print</a>();
7267: any <a href="#dom-showmodaldialog" title="dom-showModalDialog">showModalDialog</a>(DOMString url, optional any argument<!--, optional DOMString features-->);
7268:
7269: <!--POSTMSG-->
7270: // <a href="#event-handler-idl-attributes">event handler IDL attributes</a>
7271: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onabort" title="handler-onabort">onabort</a>;
7272: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onafterprint" title="handler-window-onafterprint">onafterprint</a>;
7273: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onbeforeprint" title="handler-window-onbeforeprint">onbeforeprint</a>;
7274: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onbeforeunload" title="handler-window-onbeforeunload">onbeforeunload</a>;
7275: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onblur" title="handler-window-onblur">onblur</a>;
7276: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oncancel" title="handler-oncancel">oncancel</a>;
7277: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oncanplay" title="handler-oncanplay">oncanplay</a>;
7278: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oncanplaythrough" title="handler-oncanplaythrough">oncanplaythrough</a>;
7279: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onchange" title="handler-onchange">onchange</a>;
7280: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onclick" title="handler-onclick">onclick</a>;
7281: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onclose" title="handler-onclose">onclose</a>;
7282: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oncontextmenu" title="handler-oncontextmenu">oncontextmenu</a>;
7283: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oncuechange" title="handler-oncuechange">oncuechange</a>;
7284: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondblclick" title="handler-ondblclick">ondblclick</a>;
7285: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondrag" title="handler-ondrag">ondrag</a>;
7286: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondragend" title="handler-ondragend">ondragend</a>;
7287: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondragenter" title="handler-ondragenter">ondragenter</a>;
7288: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondragleave" title="handler-ondragleave">ondragleave</a>;
7289: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondragover" title="handler-ondragover">ondragover</a>;
7290: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondragstart" title="handler-ondragstart">ondragstart</a>;
7291: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondrop" title="handler-ondrop">ondrop</a>;
7292: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ondurationchange" title="handler-ondurationchange">ondurationchange</a>;
7293: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onemptied" title="handler-onemptied">onemptied</a>;
7294: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onended" title="handler-onended">onended</a>;
7295: attribute <a href="#onerroreventhandler">OnErrorEventHandler</a> <a href="#handler-window-onerror" title="handler-window-onerror">onerror</a>;
7296: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onfocus" title="handler-window-onfocus">onfocus</a>;
7297: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onhashchange" title="handler-window-onhashchange">onhashchange</a>;
7298: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oninput" title="handler-oninput">oninput</a>;
7299: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-oninvalid" title="handler-oninvalid">oninvalid</a>;
7300: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onkeydown" title="handler-onkeydown">onkeydown</a>;
7301: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onkeypress" title="handler-onkeypress">onkeypress</a>;
7302: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onkeyup" title="handler-onkeyup">onkeyup</a>;
7303: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onload" title="handler-window-onload">onload</a>;
7304: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onloadeddata" title="handler-onloadeddata">onloadeddata</a>;
7305: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onloadedmetadata" title="handler-onloadedmetadata">onloadedmetadata</a>;
7306: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onloadstart" title="handler-onloadstart">onloadstart</a>;
7307: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onmessage" title="handler-window-onmessage">onmessage</a>;
7308: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmousedown" title="handler-onmousedown">onmousedown</a>;
7309: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmousemove" title="handler-onmousemove">onmousemove</a>;
7310: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmouseout" title="handler-onmouseout">onmouseout</a>;
7311: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmouseover" title="handler-onmouseover">onmouseover</a>;
7312: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmouseup" title="handler-onmouseup">onmouseup</a>;
7313: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onmousewheel" title="handler-onmousewheel">onmousewheel</a>;
7314: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onoffline" title="handler-window-onoffline">onoffline</a>;
7315: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-ononline" title="handler-window-ononline">ononline</a>;
7316: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onpause" title="handler-onpause">onpause</a>;
7317: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onplay" title="handler-onplay">onplay</a>;
7318: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onplaying" title="handler-onplaying">onplaying</a>;
7319: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpagehide" title="handler-window-onpagehide">onpagehide</a>;
7320: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpageshow" title="handler-window-onpageshow">onpageshow</a>;
7321: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpopstate" title="handler-window-onpopstate">onpopstate</a>;
7322: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onprogress" title="handler-onprogress">onprogress</a>;
7323: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onratechange" title="handler-onratechange">onratechange</a>;
7324: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onreset" title="handler-onreset">onreset</a>;
7325: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onresize" title="handler-window-onresize">onresize</a>;
7326: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onscroll" title="handler-onscroll">onscroll</a>;
7327: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onseeked" title="handler-onseeked">onseeked</a>;
7328: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onseeking" title="handler-onseeking">onseeking</a>;
7329: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onselect" title="handler-onselect">onselect</a>;
7330: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onshow" title="handler-onshow">onshow</a>;
7331: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onstalled" title="handler-onstalled">onstalled</a>;
7332: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onstorage" title="handler-window-onstorage">onstorage</a>;
7333: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onsubmit" title="handler-onsubmit">onsubmit</a>;
7334: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onsuspend" title="handler-onsuspend">onsuspend</a>;
7335: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-ontimeupdate" title="handler-ontimeupdate">ontimeupdate</a>;
7336: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onunload" title="handler-window-onunload">onunload</a>;
7337: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onvolumechange" title="handler-onvolumechange">onvolumechange</a>;
7338: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-onwaiting" title="handler-onwaiting">onwaiting</a>;
7339: };</pre>
7340:
7341: <!-- for more features to add here, look here:
7342: http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_window.asp
7343: http://www.mozilla.org/docs/dom/domref/dom_window_ref.html
7344: http://lxr.mozilla.org/mozilla/source/dom/public/idl/base/nsIDOMWindow.idl - scrollBy, etc
7345: http://lxr.mozilla.org/mozilla/source/dom/public/idl/base/nsIDOMWindowInternal.idl - DOM level 0
7346: -->
7347:
7348: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-window"><a href="#dom-window">window</a></code></dt>
7349: <dt><var title="">window</var> . <code title="dom-frames"><a href="#dom-frames">frames</a></code></dt>
7350: <dt><var title="">window</var> . <code title="dom-self"><a href="#dom-self">self</a></code></dt>
7351:
7352: <dd>
7353:
7354: <p>These attributes all return <var title="">window</var>.</p>
7355:
7356: </dd>
7357:
7358:
7359: <dt><var title="">window</var> . <code title="dom-document"><a href="#dom-document-0">document</a></code></dt>
7360:
7361: <dd>
7362:
7363: <p>Returns the <a href="#active-document">active document</a>.</p>
7364:
7365: </dd>
7366:
7367:
7368: <dt><var title="">document</var> . <code title="dom-document-defaultView"><a href="#dom-document-defaultview">defaultView</a></code></dt>
7369:
7370: <dd>
7371:
7372: <p>Returns the <code><a href="#window">Window</a></code> object of the <a href="#active-document">active document</a>.</p>
7373:
7374: </dd>
7375:
7376: </dl><div class="impl">
7377:
7378: <p>The <code><a href="#window">Window</a></code> interface must only be <a href="infrastructure.html#expose" title="expose">exposed</a> if the <a href="infrastructure.html#javascript-global-environment">JavaScript global
7379: environment</a> is a <a href="#document-environment">document environment</a>.</p>
7380:
7381: <p>The <dfn id="dom-window" title="dom-window"><code>window</code></dfn>, <dfn id="dom-frames" title="dom-frames"><code>frames</code></dfn>, and <dfn id="dom-self" title="dom-self"><code>self</code></dfn> IDL attributes must all
7382: return the <code><a href="#window">Window</a></code> object's <a href="#browsing-context">browsing
7383: context</a>'s <code><a href="#windowproxy">WindowProxy</a></code> object.</p>
7384:
7385: <p>The <dfn id="dom-document-0" title="dom-document"><code>document</code></dfn> IDL
7386: attribute must return the <code><a href="dom.html#document">Document</a></code> object of the
7387: <code><a href="#window">Window</a></code> object's <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
7388: context</a>'s <a href="#active-document">active document</a>.</p>
7389:
7390: <p>The <dfn id="dom-document-defaultview" title="dom-document-defaultView"><code>defaultView</code></dfn> IDL
7391: attribute of the <code><a href="dom.html#document">Document</a></code> interface must return the
7392: <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a>'s
7393: <code><a href="#windowproxy">WindowProxy</a></code> object, if there is one, or null
7394: otherwise.</p>
7395:
7396: <hr><p>For historical reasons, <code><a href="#window">Window</a></code> objects must also
7397: have a writable, configurable, non-enumerable property named
7398: <dfn id="htmldocument"><code>HTMLDocument</code></dfn> whose value is the
7399: <code><a href="dom.html#document">Document</a></code> interface object.</p>
7400:
7401: </div>
7402:
7403:
7404: <!--ADD-TOPIC:Security-->
7405: <div class="impl">
7406:
7407: <h4 id="security-window"><span class="secno">5.2.1 </span>Security</h4>
7408:
7409: <p id="security-2">User agents must throw a
7410: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception whenever any properties of a
7411: <code><a href="#window">Window</a></code> object are accessed by scripts whose
7412: <a href="#effective-script-origin">effective script origin</a> is not the same as the
7413: <code><a href="#window">Window</a></code> object's <code><a href="dom.html#document">Document</a></code>'s <a href="#effective-script-origin">effective
7414: script origin</a>, with the following exceptions:</p>
7415:
7416: <ul><li>The <code title="dom-location"><a href="#dom-location">location</a></code> attribute
7417:
7418: </li><li>The <code title="dom-window-postMessage">postMessage()</code> method
7419:
7420: </li><li>The <code title="dom-frames"><a href="#dom-frames">frames</a></code> attribute
7421:
7422: </li><li>The <a href="#dynamic-nested-browsing-context-properties">dynamic nested browsing context properties</a>
7423:
7424: </li></ul><p>When a script whose <a href="#effective-script-origin">effective script origin</a> is not
7425: the same as the <code><a href="#window">Window</a></code> object's <code><a href="dom.html#document">Document</a></code>'s
7426: <a href="#effective-script-origin">effective script origin</a> attempts to access that
7427: <code><a href="#window">Window</a></code> object's methods or attributes, the user agent
7428: must act as if any changes to the <code><a href="#window">Window</a></code> object's
7429: properties, getters, setters, etc, were not present.</p>
7430:
7431: <p>For members that return objects (including function objects),
7432: each distinct <a href="#effective-script-origin">effective script origin</a> that is not the
7433: same as the <code><a href="#window">Window</a></code> object's <code><a href="dom.html#document">Document</a></code>'s
7434: <a href="#effective-script-origin">effective script origin</a> must be provided with a
7435: separate set of objects. These objects must have the prototype chain
7436: appropriate for the script for which the objects are created (not
7437: those that would be appropriate for scripts whose <a href="#script's-global-object">script's
7438: global object</a> is the <code><a href="#window">Window</a></code> object in
7439: question).</p>
7440:
7441: <div class="example">
7442:
7443: <p>For instance, if two frames containing <code><a href="dom.html#document">Document</a></code>s
7444: from different <a href="#origin-0" title="origin">origins</a> access the same
7445: <code><a href="#window">Window</a></code> object's <code title="dom-window-postMessage">postMessage()</code> method, they
7446: will get distinct objects that are not equal.</p>
7447:
7448: </div>
7449:
7450: </div>
7451: <!--REMOVE-TOPIC:Security-->
7452:
7453:
7454:
7455: <h4 id="apis-for-creating-and-navigating-browsing-contexts-by-name"><span class="secno">5.2.2 </span>APIs for creating and navigating browsing contexts by name</h4>
7456:
7457: <dl class="domintro"><dt><var title="">window</var> = <var title="">window</var> . <code title="dom-open"><a href="#dom-open">open</a></code>( [ <var title="">url</var> [, <var title="">target</var> [, <var title="">features</var> [, <var title="">replace</var> ] ] ] ] )</dt>
7458:
7459: <dd>
7460:
7461: <p>Opens a window to show <var title="">url</var> (defaults to
7462: <code><a href="urls.html#about:blank">about:blank</a></code>), and returns it. The <var title="">target</var> argument gives the name of the new
7463: window. If a window exists with that name already, it is
7464: reused. The <var title="">replace</var> attribute, if true, means
7465: that whatever page is currently open in that window will be
7466: removed from the window's session history. The <var title="">features</var> argument is ignored.</p>
7467:
7468: </dd>
7469:
7470: <dt><var title="">window</var> . <code title="dom-name"><a href="#dom-name">name</a></code> [ = <var title="">value</var> ]</dt>
7471:
7472: <dd>
7473:
7474: <p>Returns the name of the window.</p>
7475:
7476: <p>Can be set, to change the name.</p>
7477:
7478: </dd>
7479:
7480: <dt><var title="">window</var> . <code title="dom-window-close"><a href="#dom-window-close">close</a></code>()</dt>
7481:
7482: <dd>
7483:
7484: <p>Closes the window.</p>
7485:
7486: </dd>
7487:
7488: <dt><var title="">window</var> . <code title="dom-window-stop"><a href="#dom-window-stop">stop</a></code>()</dt>
7489:
7490: <dd>
7491:
7492: <p>Cancels the document load.</p>
7493:
7494: </dd>
7495:
7496: </dl><div class="impl">
7497:
7498: <!-- This whole section should be rewritten to use algorithmic style -->
7499:
7500: <p>The <dfn id="dom-open" title="dom-open"><code>open()</code></dfn> method on
7501: <code><a href="#window">Window</a></code> objects provides a mechanism for <a href="#navigate" title="navigate">navigating</a> an existing <a href="#browsing-context">browsing
7502: context</a> or opening and navigating an <a href="#auxiliary-browsing-context">auxiliary browsing
7503: context</a>.</p>
7504:
7505: <p>The method has four arguments, though they are all optional.</p>
7506:
7507: <p>The first argument, <var title="">url</var>, must be a
7508: <a href="urls.html#valid-non-empty-url">valid non-empty URL</a> for a page to load in the browsing
7509: context. If no arguments are provided, or if the first argument is
7510: the empty string, then the <var title="">url</var> argument defaults
7511: to "<code><a href="urls.html#about:blank">about:blank</a></code>". The argument must be <a href="urls.html#resolve-a-url" title="resolve a url">resolved</a> to an <a href="urls.html#absolute-url">absolute
7512: URL</a> (or an error), relative to the <a href="#entry-script">entry
7513: script</a>'s <a href="#script's-base-url" title="script's base URL">base URL</a>,
7514: when the method is invoked.</p>
7515:
7516: <p>The second argument, <var title="">target</var>, specifies the
7517: <a href="#browsing-context-name" title="browsing context name">name</a> of the browsing
7518: context that is to be navigated. It must be a <a href="#valid-browsing-context-name-or-keyword">valid browsing
7519: context name or keyword</a>. If fewer than two arguments are
7520: provided, then the <var title="">target</var> argument defaults to the
7521: value "<code>_blank</code>".</p>
7522:
7523: <p>The third argument, <var title="">features</var>, has no defined
7524: effect and is mentioned for historical reasons only. User agents may
7525: interpret this argument as instructions to set the size and position
7526: of the browsing context, but are encouraged to instead ignore the
7527: argument entirely.</p>
7528:
7529: <p>The fourth argument, <var title="">replace</var>, specifies
7530: whether or not the new page will <a href="#replacement-enabled" title="replacement
7531: enabled">replace</a> the page currently loaded in the browsing
7532: context, when <var title="">target</var> identifies an existing
7533: browsing context (as opposed to leaving the current page in the
7534: browsing context's <a href="#session-history">session history</a>). When three or
7535: fewer arguments are provided, <var title="">replace</var> defaults
7536: to false.</p>
7537:
7538: <p>When the method is invoked, the user agent must first select a
7539: <a href="#browsing-context">browsing context</a> to navigate by applying <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the
7540: rules for choosing a browsing context given a browsing context
7541: name</a> using the <var title="">target</var> argument as the
7542: name and the <a href="#browsing-context">browsing context</a> of the script as the
7543: context in which the algorithm is executed, unless the user has
7544: indicated a preference, in which case the browsing context to
7545: navigate may instead be the one indicated by the user.</p>
7546:
7547: <p class="example">For example, suppose there is a user agent that
7548: supports control-clicking a link to open it in a new tab. If a user
7549: clicks in that user agent on an element whose <code title="handler-onclick"><a href="#handler-onclick">onclick</a></code> handler uses the <code title="dom-open"><a href="#dom-open">window.open()</a></code> API to open a page in an
7550: iframe, but, while doing so, holds the control key down, the user
7551: agent could override the selection of the target browsing context to
7552: instead target a new tab.</p>
7553:
7554: <p>If the method is not <a href="#allowed-to-show-a-pop-up">allowed to show a pop-up</a> and
7555: applying <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a browsing context given a
7556: browsing context name</a> using the <var title="">target</var>
7557: argument, would result in there not being a chosen browsing context,
7558: then throw an <code><a href="infrastructure.html#invalidaccesserror">InvalidAccessError</a></code> exception and abort
7559: these steps.</p>
7560:
7561: <p>Otherwise, if <var title="">url</var> is not
7562: "<code><a href="urls.html#about:blank">about:blank</a></code>", the user agent must
7563: <a href="#navigate">navigate</a><!--DONAV window.open()--> the selected
7564: <a href="#browsing-context">browsing context</a> to the <a href="urls.html#absolute-url">absolute URL</a>
7565: obtained from <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> <var title="">url</var> earlier. If the <var title="">replace</var> is
7566: true or if the <a href="#browsing-context">browsing context</a> was just created as
7567: part of <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a browsing context given a
7568: browsing context name</a>, then <a href="#replacement-enabled" title="replacement
7569: enabled">replacement must be enabled</a>. The navigation must be
7570: done with the <a href="#script's-browsing-context" title="script's browsing context">browsing
7571: context</a> of the <a href="#entry-script">entry script</a> as the <a href="#source-browsing-context">source
7572: browsing context</a>. If the <a href="urls.html#resolve-a-url">resolve a URL</a> algorithm
7573: failed, then the user agent may either instead <a href="#navigate">navigate</a>
7574: to an inline error page, using the same replacement behavior and
7575: source browsing context behavior as described earlier in this
7576: paragraph; or treat the <var title="">url</var> as
7577: "<code><a href="urls.html#about:blank">about:blank</a></code>", acting as described in the next
7578: paragraph.</p>
7579:
7580: <p>If <var title="">url</var> <em>is</em>
7581: "<code><a href="urls.html#about:blank">about:blank</a></code>", the user agent must instead <a href="#queue-a-task">queue
7582: a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-load">load</code> at the selected <a href="#browsing-context">browsing
7583: context</a>'s <code><a href="#window">Window</a></code> object, but with its <code title="dom-event-target"><a href="infrastructure.html#dom-event-target">target</a></code> set to the selected
7584: <a href="#browsing-context">browsing context</a>'s <code><a href="#window">Window</a></code> object's
7585: <code><a href="dom.html#document">Document</a></code> object (and the <code title="dom-event-currentTarget">currentTarget</code> set to the
7586: <code><a href="#window">Window</a></code> object).</p>
7587:
7588: <p>The method must return the <code><a href="#windowproxy">WindowProxy</a></code> object of the
7589: <a href="#browsing-context">browsing context</a> that was navigated, or null if no
7590: browsing context was navigated.</p>
7591:
7592: <hr><p>The <dfn id="dom-name" title="dom-name"><code>name</code></dfn> attribute of
7593: the <code><a href="#window">Window</a></code> object must, on getting, return the current
7594: <a href="#browsing-context-name" title="browsing context name">name</a> of the
7595: <a href="#browsing-context">browsing context</a>, and, on setting, set the <a href="#browsing-context-name" title="browsing context name">name</a> of the <a href="#browsing-context">browsing
7596: context</a> to the new value.</p>
7597:
7598: <p class="note">The name <a href="#resetBCName">gets reset</a> when
7599: the browsing context is navigated to another domain.</p>
7600:
7601: <hr><p>The <dfn id="dom-window-close" title="dom-window-close"><code>close()</code></dfn>
7602: method on <code><a href="#window">Window</a></code> objects should, if the corresponding
7603: <a href="#browsing-context">browsing context</a> <var title="">A</var> is
7604: <a href="#script-closable">script-closable</a> and the <a href="#script's-browsing-context" title="script's
7605: browsing context">browsing context</a> of the <a href="#concept-script" title="concept-script">script</a> that invokes the method is
7606: <a href="#allowed-to-navigate">allowed to navigate</a> the <a href="#browsing-context">browsing context</a>
7607: <var title="">A</var>, close the <a href="#browsing-context">browsing context</a> <var title="">A</var> (and may <a href="#a-browsing-context-is-discarded" title="a browsing context is
7608: discarded">discard</a> it too).</p>
7609:
7610: <p>A <a href="#browsing-context">browsing context</a> is <dfn id="script-closable">script-closable</dfn> if
7611: it is an <a href="#auxiliary-browsing-context">auxiliary browsing context</a> that was created by
7612: a script (as opposed to by an action of the user), or if it is a
7613: <a href="#browsing-context">browsing context</a> whose <a href="#session-history">session history</a>
7614: contains only one <code><a href="dom.html#document">Document</a></code>.</p>
7615:
7616: <p>The <dfn id="dom-window-stop" title="dom-window-stop"><code>stop()</code></dfn> method
7617: on <code><a href="#window">Window</a></code> objects should, if there is an existing
7618: attempt to <a href="#navigate">navigate</a> the <a href="#browsing-context">browsing context</a>
7619: and that attempt is not currently running the <a href="#unload-a-document">unload a
7620: document</a> algorithm, cancel that <a href="#navigate" title="navigate">navigation</a>; then, it must <a href="#abort-a-document" title="abort
7621: a document">abort</a> the <a href="#active-document">active document</a> of the
7622: <a href="#browsing-context">browsing context</a> of the <code><a href="#window">Window</a></code> object on
7623: which it was invoked.</p>
7624:
7625: </div>
7626:
7627:
7628: <h4 id="accessing-other-browsing-contexts"><span class="secno">5.2.3 </span>Accessing other browsing contexts</h4>
7629:
7630: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-length"><a href="#dom-length">length</a></code></dt>
7631:
7632: <dd>
7633:
7634: <p>Returns the number of <a href="#child-browsing-context" title="child browsing
7635: context">child browsing contexts</a>.</p>
7636:
7637: </dd>
7638:
7639: <dt><var title="">window</var>[<var title="">index</var>]</dt>
7640:
7641: <dd>
7642:
7643: <p>Returns the indicated <a href="#child-browsing-context">child browsing context</a>.</p>
7644:
7645: </dd>
7646:
7647: </dl><div class="impl">
7648:
7649: <p>The <dfn id="dom-length" title="dom-length"><code>length</code></dfn> IDL
7650: attribute on the <code><a href="#window">Window</a></code> interface must return the
7651: number of <a href="#child-browsing-context" title="child browsing context">child browsing
7652: contexts</a> that are <a href="#browsing-context-nested-through" title="browsing context nested
7653: through">nested through</a> elements that are <a href="infrastructure.html#in-a-document" title="in a
7654: document">in the <code>Document</code></a> that is the
7655: <a href="#active-document">active document</a> of that <code><a href="#window">Window</a></code> object, if
7656: that <code><a href="#window">Window</a></code>'s <a href="#browsing-context">browsing context</a> shares the
7657: same <a href="#event-loop">event loop</a> as the <a href="#script's-browsing-context">script's browsing
7658: context</a> of the <a href="#entry-script">entry script</a> accessing the IDL
7659: attribute; otherwise, it must return zero.</p>
7660:
7661: <!-- in other words, frames are only accessible to same-thread processes -->
7662:
7663: <p>The <a href="infrastructure.html#supported-property-indices">supported property indices</a> on the
7664: <code><a href="#window">Window</a></code> object at any instant are the numbers in the
7665: range 0 .. <span title=""><var title="">n</var>-1</span>, where <var title="">n</var> is the number returned by the <code title="dom-length"><a href="#dom-length">length</a></code> IDL attribute. If <var title="">n</var> is zero then there are no <a href="infrastructure.html#supported-property-indices">supported property
7666: indices</a>.</p>
7667:
7668: <p>To <dfn id="dom-window-item" title="dom-window-item">determine the value of an indexed
7669: property</dfn> <var title="">index</var> of a <code><a href="#window">Window</a></code>
7670: object, the user agent must return the <code><a href="#windowproxy">WindowProxy</a></code>
7671: object of the <var title="">index</var>th <a href="#child-browsing-context">child browsing
7672: context</a> of the <code><a href="dom.html#document">Document</a></code> that is nested through
7673: an element that is <a href="infrastructure.html#in-a-document" title="in a document">in the
7674: <code>Document</code></a>, sorted in the <a href="infrastructure.html#tree-order">tree order</a>
7675: of the elements nesting those <a href="#browsing-context" title="browsing
7676: context">browsing contexts</a>.</p>
7677:
7678: <p>These properties are the <dfn id="dynamic-nested-browsing-context-properties">dynamic nested browsing context
7679: properties</dfn>.</p>
7680:
7681: </div>
7682:
7683:
7684:
7685: <h4 id="named-access-on-the-window-object"><span class="secno">5.2.4 </span>Named access on the <code><a href="#window">Window</a></code> object</h4>
7686:
7687: <dl class="domintro"><dt><var title="">window</var>[<var title="">name</var>]</dt>
7688:
7689: <dd>
7690:
7691: <p>Returns the indicated element or collection of elements.</p>
7692:
7693: </dd>
7694:
7695: </dl><div class="impl">
7696:
7697: <p>The <code><a href="#window">Window</a></code> interface <a href="infrastructure.html#support-named-properties" title="support named
7698: properties">supports named properties</a>. The <a href="infrastructure.html#supported-property-names">supported
7699: property names</a> at any moment consist of:</p>
7700:
7701: <ul><li>the <a href="#browsing-context-name">browsing context name</a> of any <a href="#child-browsing-context">child
7702: browsing context</a> of the <a href="#active-document">active document</a> whose
7703: name is not the empty string,</li>
7704:
7705: <li>the value of the <code title="">name</code> content attribute
7706: for all <code><a href="the-a-element.html#the-a-element">a</a></code>, <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-area-element.html#the-area-element">area</a></code>,
7707: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-form-element.html#the-form-element">form</a></code>, <code><a href="#frameset">frameset</a></code>,
7708: <code><a href="the-img-element.html#the-img-element">img</a></code>, and <code><a href="the-object-element.html#the-object-element">object</a></code> elements in the
7709: <a href="#active-document">active document</a> that have a <code title="">name</code>
7710: content attribute, and</li>
7711:
7712: <li>the value of the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> content
7713: attribute of any <a href="infrastructure.html#html-elements" title="HTML elements">HTML element</a> in
7714: the <a href="#active-document">active document</a> with an <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> content attribute.</li>
7715:
7716: </ul><p>To <a href="infrastructure.html#determine-the-value-of-a-named-property">determine the value of a named property</a> <var title="">name</var> when <dfn id="dom-window-nameditem" title="dom-window-namedItem">the
7717: <code>Window</code> object is indexed for property retrieval</dfn>,
7718: the user agent must return the value obtained using the following
7719: steps:</p>
7720:
7721: <ol><!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1716 --><li>
7722:
7723: <p>Let <var title="">objects</var> be the list of <a href="#dom-window-nameditem-filter" title="dom-window-namedItem-filter">named objects</a> with the
7724: name <var title="">name</var> in the <a href="#active-document">active document</a>.
7725:
7726: </p><p class="note">There will be at least one such object, by
7727: definition.<!-- (If there wasn't, then this algorithm wouldn't
7728: have been invoked by Web IDL.) --></p>
7729:
7730: </li>
7731:
7732: <li>
7733:
7734: <p>If <var title="">objects</var> contains a <a href="#nested-browsing-context">nested browsing
7735: context</a>, then return the <code><a href="#windowproxy">WindowProxy</a></code> object of
7736: the <a href="#nested-browsing-context">nested browsing context</a> corresponding to the
7737: first <a href="#browsing-context-container">browsing context container</a> in <a href="infrastructure.html#tree-order">tree
7738: order</a> whose <a href="#browsing-context">browsing context</a> is in <var title="">objects</var>, and abort these steps.</p>
7739:
7740: </li>
7741:
7742: <li>
7743:
7744: <p>Otherwise, if <var title="">elements</var> has only one
7745: element, return that element and abort these steps.</p>
7746:
7747: </li>
7748:
7749: <li>
7750:
7751: <p>Otherwise return an <code><a href="infrastructure.html#htmlcollection">HTMLCollection</a></code> rooted at the
7752: <code><a href="dom.html#document">Document</a></code> node, whose filter matches only <a href="#dom-window-nameditem-filter" title="dom-window-namedItem-filter">named objects</a> with the
7753: name <var title="">name</var>. (By definition, these will all be
7754: elements.)</p> <!-- the same one each time is returned, because of
7755: the rule under collections -->
7756:
7757: </li>
7758:
7759: </ol><p><dfn id="dom-window-nameditem-filter" title="dom-window-nameditem-filter">Named objects</dfn>
7760: with the name <var title="">name</var>, for the purposes of the
7761: above algorithm, are those that are either:</p>
7762:
7763: <ul><li><a href="#child-browsing-context" title="child browsing context">child browsing
7764: contexts</a> of the <a href="#active-document">active document</a> whose name is
7765: <var title="">name</var>,</li>
7766:
7767: <li><code><a href="the-a-element.html#the-a-element">a</a></code>, <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-area-element.html#the-area-element">area</a></code>,
7768: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-form-element.html#the-form-element">form</a></code>, <code><a href="#frameset">frameset</a></code>,
7769: <code><a href="the-img-element.html#the-img-element">img</a></code>, or <code><a href="the-object-element.html#the-object-element">object</a></code> elements that have a <code title="attr-name">name</code> content attribute whose value is <var title="">name</var>, or</li>
7770:
7771: <li><a href="infrastructure.html#html-elements">HTML elements</a> that have an <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> content attribute whose value is <var title="">name</var>.</li>
7772:
7773: </ul></div>
7774:
7775:
7776: <div class="impl">
7777:
7778: <h4 id="garbage-collection-and-browsing-contexts"><span class="secno">5.2.5 </span>Garbage collection and browsing contexts</h4>
7779:
7780: <p>A <a href="#browsing-context">browsing context</a> has a strong reference to each of
7781: its <code><a href="dom.html#document">Document</a></code>s and its <code><a href="#windowproxy">WindowProxy</a></code> object,
7782: and the user agent itself has a strong reference to its <a href="#top-level-browsing-context" title="top-level browsing context">top-level browsing
7783: contexts</a>.</p>
7784:
7785: <p>A <code><a href="dom.html#document">Document</a></code> has a strong reference to its
7786: <code><a href="#window">Window</a></code> object.</p>
7787:
7788: <p class="note">A <code><a href="#window">Window</a></code> object <a href="common-dom-interfaces.html#implied-strong-reference" title="implied
7789: strong reference">has a strong reference</a> to its
7790: <code><a href="dom.html#document">Document</a></code> object through its <code title="dom-document"><a href="#dom-document-0">document</a></code> attribute. Thus, references
7791: from other scripts to either of those objects will keep both
7792: alive. Similarly, both <code><a href="dom.html#document">Document</a></code> and <code><a href="#window">Window</a></code>
7793: objects have <a href="common-dom-interfaces.html#implied-strong-reference" title="implied strong reference">implied strong
7794: references</a> to the <code><a href="#windowproxy">WindowProxy</a></code> object.</p>
7795:
7796: <p>Each <a href="#concept-script" title="concept-script">script</a> has a strong
7797: reference to its <a href="#script's-browsing-context" title="script's browsing context">browsing
7798: context</a> and its <a href="#script's-document" title="script's
7799: document">document</a>.</p>
7800:
7801: <!-- discard a document -->
7802: <p>When a <a href="#browsing-context">browsing context</a> is to <dfn id="discard-a-document">discard a
7803: <code>Document</code></dfn>, the user agent must run the following
7804: steps:</p>
7805:
7806: <ol><li><p>Set the <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state to
7807: false.</p></li>
7808:
7809: <li><p>Run any <a href="#unloading-document-cleanup-steps">unloading document cleanup steps</a> for
7810: the <code><a href="dom.html#document">Document</a></code> that are defined by this specification
7811: and <a href="infrastructure.html#other-applicable-specifications">other applicable specifications</a>.</p></li>
7812:
7813: <li><p><a href="#abort-a-document" title="abort a document">Abort the
7814: <code>Document</code></a>.</p></li>
7815:
7816: <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a>
7817: associated with the <code><a href="dom.html#document">Document</a></code> in any <a href="#task-source">task
7818: source</a>, without running those tasks.</p></li>
7819:
7820: <li><p><a href="#a-browsing-context-is-discarded" title="a browsing context is discarded">Discard</a>
7821: all the <a href="#child-browsing-context" title="child browsing context">child browsing
7822: contexts</a> of the <code><a href="dom.html#document">Document</a></code>.</p></li>
7823:
7824: <li><p>Lose the strong reference from the <code><a href="dom.html#document">Document</a></code>'s
7825: <a href="#browsing-context">browsing context</a> to the
7826: <code><a href="dom.html#document">Document</a></code>.</p></li>
7827:
7828: </ol><p class="note">Whenever a <code><a href="dom.html#document">Document</a></code> object is <a href="#discard-a-document" title="discard a Document">discarded</a>, it is also removed from
7829: the list of <span>the worker's <code><a href="dom.html#document">Document</a></code>s</span> of each
7830: worker whose list contains that <code><a href="dom.html#document">Document</a></code>.</p>
7831:
7832: <p>When <dfn id="a-browsing-context-is-discarded">a <em><span>browsing context</span></em> is
7833: discarded</dfn>, the strong reference from the user agent itself to
7834: the <a href="#browsing-context">browsing context</a> must be severed, and all the
7835: <code><a href="dom.html#document">Document</a></code> objects for all the entries in the
7836: <a href="#browsing-context">browsing context</a>'s session history must be <a href="#discard-a-document" title="discard a document">discarded</a> as well.</p>
7837:
7838: <p>User agents may <a href="#a-browsing-context-is-discarded" title="a browsing context is
7839: discarded">discard</a> <a href="#top-level-browsing-context" title="top-level browsing
7840: context">top-level browsing contexts</a> at any time (typically,
7841: in response to user requests, e.g. when a user closes a window
7842: containing one or more <a href="#top-level-browsing-context" title="top-level browsing
7843: context">top-level browsing contexts</a>). Other <a href="#browsing-context" title="browsing context">browsing contexts</a> must be discarded
7844: once their <code><a href="#windowproxy">WindowProxy</a></code> object is eligible for garbage
7845: collection.</p>
7846:
7847: </div>
7848:
7849:
7850:
7851: <h4 id="browser-interface-elements"><span class="secno">5.2.6 </span>Browser interface elements</h4>
7852:
7853: <p>To allow Web pages to integrate with Web browsers, certain Web
7854: browser interface elements are exposed in a limited way to scripts
7855: in Web pages.</p>
7856:
7857: <p>Each interface element is represented by a <code><a href="#barprop">BarProp</a></code>
7858: object:</p>
7859:
7860: <pre class="idl">interface <dfn id="barprop">BarProp</dfn> {
7861: attribute boolean <a href="#dom-barprop-visible" title="dom-BarProp-visible">visible</a>;
7862: };</pre>
7863:
7864: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-window-locationbar"><a href="#dom-window-locationbar">locationbar</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7865: <dd>
7866: <p>Returns true if the location bar is visible; otherwise, returns false.</p>
7867: </dd>
7868:
7869: <dt><var title="">window</var> . <code title="dom-window-menubar"><a href="#dom-window-menubar">menubar</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7870: <dd>
7871: <p>Returns true if the menu bar is visible; otherwise, returns false.</p>
7872: </dd>
7873:
7874: <dt><var title="">window</var> . <code title="dom-window-personalbar"><a href="#dom-window-personalbar">personalbar</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7875: <!--<dt><var title="">window</var> . <code title="dom-window-directories">directories</code> . <code title="dom-BarProp-visible">visible</code></dt>-->
7876: <dd>
7877: <p>Returns true if the personal bar is visible; otherwise, returns false.</p>
7878: </dd>
7879:
7880: <dt><var title="">window</var> . <code title="dom-window-scrollbars"><a href="#dom-window-scrollbars">scrollbars</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7881: <dd>
7882: <p>Returns true if the scroll bars are visible; otherwise, returns false.</p>
7883: </dd>
7884:
7885: <dt><var title="">window</var> . <code title="dom-window-statusbar"><a href="#dom-window-statusbar">statusbar</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7886: <dd>
7887: <p>Returns true if the status bar is visible; otherwise, returns false.</p>
7888: </dd>
7889:
7890: <dt><var title="">window</var> . <code title="dom-window-toolbar"><a href="#dom-window-toolbar">toolbar</a></code> . <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code></dt>
7891: <dd>
7892: <p>Returns true if the toolbar is visible; otherwise, returns false.</p>
7893: </dd>
7894:
7895: </dl><div class="impl">
7896:
7897: <p>The <dfn id="dom-barprop-visible" title="dom-BarProp-visible">visible</dfn> attribute, on
7898: getting, must return either true or a value determined by the user
7899: agent to most accurately represent the visibility state of the user
7900: interface element that the object represents, as described below. On
7901: setting, the new value must be discarded.</p>
7902:
7903: <p>The following <code><a href="#barprop">BarProp</a></code> objects exist for each
7904: <code><a href="dom.html#document">Document</a></code> object in a <a href="#browsing-context">browsing
7905: context</a>. Some of the user interface elements represented by
7906: these objects might have no equivalent in some user agents; for
7907: those user agents, except when otherwise specified, the object must
7908: act as if it was present and visible (i.e. its <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code> attribute must return
7909: true).</p>
7910:
7911: <dl><dt><dfn id="the-location-bar-barprop-object">The location bar <code>BarProp</code> object</dfn></dt>
7912:
7913: <dd>Represents the user interface element that contains a control
7914: that displays the <a href="urls.html#url">URL</a> of the <a href="#active-document">active
7915: document</a>, or some similar interface concept.</dd>
7916:
7917: <dt><dfn id="the-menu-bar-barprop-object">The menu bar <code>BarProp</code> object</dfn></dt>
7918:
7919: <dd>Represents the user interface element that contains a list of
7920: commands in menu form, or some similar interface concept.</dd>
7921:
7922: <dt><dfn id="the-personal-bar-barprop-object">The personal bar <code>BarProp</code> object</dfn></dt>
7923:
7924: <dd>Represents the user interface element that contains links to
7925: the user's favorite pages, or some similar interface concept.</dd>
7926:
7927: <dt><dfn id="the-scrollbar-barprop-object">The scrollbar <code>BarProp</code> object</dfn></dt>
7928:
7929: <dd>Represents the user interface element that contains a scrolling
7930: mechanism, or some similar interface concept.</dd>
7931:
7932: <dt><dfn id="the-status-bar-barprop-object">The status bar <code>BarProp</code> object</dfn></dt>
7933:
7934: <dd>Represents a user interface element found immediately below or
7935: after the document, as appropriate for the user's media. If the
7936: user agent has no such user interface element, then the object may
7937: act as if the corresponding user interface element was absent
7938: (i.e. its <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code>
7939: attribute may return false).</dd>
7940:
7941: <dt><dfn id="the-toolbar-barprop-object">The toolbar <code>BarProp</code> object</dfn></dt>
7942:
7943: <dd>Represents the user interface element found immediately above
7944: or before the document, as appropriate for the user's media. If the
7945: user agent has no such user interface element, then the object may
7946: act as if the corresponding user interface element was absent
7947: (i.e. its <code title="dom-BarProp-visible"><a href="#dom-barprop-visible">visible</a></code>
7948: attribute may return false).</dd>
7949:
7950: </dl><p>The <dfn id="dom-window-locationbar" title="dom-window-locationbar"><code>locationbar</code></dfn>
7951: attribute must return <a href="#the-location-bar-barprop-object">the location bar <code>BarProp</code>
7952: object</a>.</p>
7953:
7954: <p>The <dfn id="dom-window-menubar" title="dom-window-menubar"><code>menubar</code></dfn>
7955: attribute must return <a href="#the-menu-bar-barprop-object">the menu bar <code>BarProp</code>
7956: object</a>.</p>
7957:
7958: <p>The <dfn id="dom-window-personalbar" title="dom-window-personalbar"><code>personalbar</code></dfn>
7959: attribute must return <a href="#the-personal-bar-barprop-object">the personal bar <code>BarProp</code>
7960: object</a>.</p>
7961:
7962: <p>The <dfn id="dom-window-scrollbars" title="dom-window-scrollbars"><code>scrollbars</code></dfn>
7963: attribute must return <a href="#the-scrollbar-barprop-object">the scrollbar <code>BarProp</code>
7964: object</a>.</p>
7965:
7966: <p>The <dfn id="dom-window-statusbar" title="dom-window-statusbar"><code>statusbar</code></dfn> attribute
7967: must return <a href="#the-status-bar-barprop-object">the status bar <code>BarProp</code>
7968: object</a>.</p>
7969:
7970: <p>The <dfn id="dom-window-toolbar" title="dom-window-toolbar"><code>toolbar</code></dfn>
7971: attribute must return <a href="#the-toolbar-barprop-object">the toolbar <code>BarProp</code>
7972: object</a>.</p>
7973:
7974: <!--
7975: <p>For legacy reasons, the <dfn
7976: title="dom-window-directories"><code>directories</code></dfn>
7977: attribute must also return <span>the personal bar
7978: <code>BarProp</code> object</span>.</p>
7979: -->
7980:
7981: <hr><p>For historical reasons, the <dfn id="dom-window-status" title="dom-window-status"><code>status</code></dfn> attribute on the
7982: <code><a href="#window">Window</a></code> object must return an empty string on getting,
7983: and do nothing on setting.</p>
7984:
7985: </div>
7986:
7987:
7988: <div class="impl">
7989:
7990: <h4 id="the-windowproxy-object"><span class="secno">5.2.7 </span>The <code><a href="#windowproxy">WindowProxy</a></code> object</h4>
7991:
7992:
7993: <p>As mentioned earlier, each <a href="#browsing-context">browsing context</a> has a
7994: <dfn id="windowproxy"><code>WindowProxy</code></dfn> object. This object is unusual
7995: in that all operations that would be performed on it must be
7996: performed on the <code><a href="#window">Window</a></code> object of the <a href="#browsing-context">browsing
7997: context</a>'s <a href="#active-document">active document</a> instead. It is thus
7998: indistinguishable from that <code><a href="#window">Window</a></code> object in every way
7999: until the <a href="#browsing-context">browsing context</a> is navigated.</p>
8000:
8001: <p>There is no <code><a href="#windowproxy">WindowProxy</a></code> interface object.</p>
8002:
8003: <p class="note">The <code><a href="#windowproxy">WindowProxy</a></code> object allows scripts
8004: to act as if each <a href="#browsing-context">browsing context</a> had a single
8005: <code><a href="#window">Window</a></code> object, while still keeping separate
8006: <code><a href="#window">Window</a></code> objects for each <code><a href="dom.html#document">Document</a></code>.</p>
8007:
8008: <div class="example">
8009:
8010: <p>In the following example, the variable <var title="">x</var> is
8011: set to the <code><a href="#windowproxy">WindowProxy</a></code> object returned by the <code title="dom-window"><a href="#dom-window">window</a></code> accessor on the global object. All
8012: of the expressions following the assignment return true, because in
8013: every respect, the <code><a href="#windowproxy">WindowProxy</a></code> object acts like the
8014: underlying <code><a href="#window">Window</a></code> object.</p>
8015:
8016: <pre>var x = window;
8017: x instanceof Window; // true
8018: x === this; // true</pre>
8019:
8020: </div>
8021:
8022: </div>
8023: <!--TOPIC:HTML-->
8024:
8025:
8026:
8027: <!--TOPIC:Security-->
8028: <h3 id="origin"><span class="secno">5.3 </span>Origin</h3>
8029: <!-- Hallowed are the Ori -->
8030:
8031: <p>The <dfn id="origin-0">origin</dfn> of a resource and the <dfn id="effective-script-origin">effective script
8032: origin</dfn> of a resource are both either opaque identifiers or
8033: tuples consisting of a scheme component, a host component, a port
8034: component, and optionally extra data.</p>
8035:
8036: <p class="note">The extra data could include the certificate of the
8037: site when using encrypted connections, to ensure that if the site's
8038: secure certificate changes, the origin is considered to change as
8039: well.</p>
8040:
8041: <div class="impl">
8042:
8043: <p>An <a href="#origin-0">origin</a> or <a href="#effective-script-origin">effective script origin</a>
8044: can be defined as an <dfn id="concept-origin-alias" title="concept-origin-alias">alias</dfn>
8045: to another <a href="#origin-0">origin</a> or <a href="#effective-script-origin">effective script
8046: origin</a>. The value of the <a href="#origin-0">origin</a> or
8047: <a href="#effective-script-origin">effective script origin</a> is then the value of the
8048: <a href="#origin-0">origin</a> or <a href="#effective-script-origin">effective script origin</a> to which
8049: it is an alias.</p>
8050:
8051: <p>These characteristics are defined as follows:</p>
8052:
8053: <dl><dt>For URLs</dt>
8054:
8055: <dd>
8056:
8057: <p>The <a href="#origin-0">origin</a> and <a href="#effective-script-origin">effective script
8058: origin</a> of the <a href="urls.html#url">URL</a> are the origin defined in
8059: <cite>The Web Origin Concept</cite>. <a href="#refsORIGIN">[ORIGIN]</a></p>
8060:
8061: </dd>
8062:
8063:
8064: <dt>For <code><a href="dom.html#document">Document</a></code> objects</dt>
8065:
8066: <dd>
8067:
8068: <dl class="switch"><dt id="sandboxOrigin">If a <code><a href="dom.html#document">Document</a></code>'s <a href="#active-sandboxing-flag-set">active
8069: sandboxing flag set</a> has its <a href="#sandboxed-origin-browsing-context-flag">sandboxed origin
8070: browsing context flag</a> set</dt>
8071:
8072: <dd>
8073:
8074: <p>The <a href="#origin-0">origin</a> is a globally unique identifier
8075: assigned when the <code><a href="dom.html#document">Document</a></code> is created.</p>
8076:
8077: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8078: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8079: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>.</p>
8080:
8081: </dd>
8082:
8083:
8084: <dt>If a <code><a href="dom.html#document">Document</a></code> was generated from a <a href="#javascript-protocol" title="javascript protocol"><code>javascript:</code>
8085: URL</a></dt>
8086:
8087: <dd>
8088:
8089: <p>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8090: <a href="#origin-0">origin</a> of the script of that <a href="#javascript-protocol" title="javascript protocol"><code>javascript:</code>
8091: URL</a>.</p>
8092:
8093: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8094: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8095: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>.</p>
8096:
8097: </dd>
8098:
8099:
8100: <dt>If a <code><a href="dom.html#document">Document</a></code> was served over the network and
8101: has an address that uses a URL scheme with a server-based naming
8102: authority</dt>
8103:
8104: <dd>
8105:
8106: <p>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8107: <a href="#origin-0">origin</a> of <a href="dom.html#the-document's-address">the <code>Document</code>'s
8108: address</a>.</p>
8109:
8110: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8111: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8112: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>.</p>
8113:
8114: </dd>
8115:
8116:
8117: <dt>If a <code><a href="dom.html#document">Document</a></code> was generated from a <a href="infrastructure.html#data-protocol" title="data protocol"><code title="">data:</code> URL</a> that
8118: was returned as the location of an HTTP redirect (<a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a> in
8119: other protocols)</dt>
8120:
8121: <dd>
8122:
8123: <p>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8124: <a href="#origin-0">origin</a> of the <a href="urls.html#url">URL</a> that redirected to
8125: the <a href="infrastructure.html#data-protocol" title="data protocol"><code title="">data:</code>
8126: URL</a>.</p>
8127:
8128: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8129: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8130: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>.</p>
8131:
8132: </dd>
8133:
8134:
8135: <dt>If a <code><a href="dom.html#document">Document</a></code> was generated from a <a href="infrastructure.html#data-protocol" title="data protocol"><code title="">data:</code> URL</a>
8136: found in another <code><a href="dom.html#document">Document</a></code> or in a script</dt>
8137:
8138: <dd>
8139:
8140: <p>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8141: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> or script that
8142: initiated the <a href="#navigate" title="navigate">navigation</a> to that
8143: <a href="urls.html#url">URL</a>.</p>
8144:
8145: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8146: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8147: <a href="#effective-script-origin">effective script origin</a> of the
8148: <code><a href="dom.html#document">Document</a></code> or script that initiated the <a href="#navigate" title="navigate">navigation</a> to that <a href="urls.html#url">URL</a>.</p>
8149:
8150: </dd>
8151:
8152:
8153: <dt>If a <code><a href="dom.html#document">Document</a></code> has the <a href="dom.html#the-document's-address" title="the
8154: document's address">address</a>
8155: "<code><a href="urls.html#about:blank">about:blank</a></code>"</dt>
8156:
8157: <dd>
8158:
8159: <p>The <a href="#origin-0">origin</a> and <a href="#effective-script-origin">effective script
8160: origin</a> of the <code><a href="dom.html#document">Document</a></code> are <a href="#about-blank-origin">those it was assigned when its
8161: browsing context was created</a>.</p>
8162:
8163: </dd>
8164:
8165:
8166: <dt>If a <code><a href="dom.html#document">Document</a></code> is <a href="the-iframe-element.html#an-iframe-srcdoc-document">an <code>iframe</code> <code title="attr-iframe-srcdoc">srcdoc</code> document</a></dt>
8167:
8168: <dd>
8169:
8170: <p>The <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> is an
8171: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8172: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>'s
8173: <a href="#browsing-context">browsing context</a>'s <a href="#browsing-context-container">browsing context
8174: container</a>'s <code><a href="dom.html#document">Document</a></code>.</p>
8175:
8176: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8177: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8178: <a href="#effective-script-origin">effective script origin</a> of the
8179: <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a>'s
8180: <a href="#browsing-context-container">browsing context container</a>'s
8181: <code><a href="dom.html#document">Document</a></code>.</p>
8182:
8183: </dd>
8184:
8185:
8186: <dt>If a <code><a href="dom.html#document">Document</a></code> was obtained in some other manner
8187: (e.g. a <a href="infrastructure.html#data-protocol" title="data protocol"><code title="">data:</code>
8188: URL</a> typed in by the user, a <code><a href="dom.html#document">Document</a></code> created
8189: using the <code title="dom-DOMImplementation-createDocument"><a href="infrastructure.html#dom-domimplementation-createdocument">createDocument()</a></code>
8190: API, etc)</dt>
8191:
8192: <dd>
8193:
8194: <p>The <a href="#origin-0">origin</a> is a globally unique identifier
8195: assigned when the <code><a href="dom.html#document">Document</a></code> is created.</p>
8196:
8197: <p>The <a href="#effective-script-origin">effective script origin</a> is initially an
8198: <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8199: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code>.</p>
8200:
8201: </dd>
8202:
8203: </dl><p class="note">The <a href="#effective-script-origin">effective script origin</a> of a
8204: <code><a href="dom.html#document">Document</a></code> can be manipulated using the <code title="dom-document-domain"><a href="#dom-document-domain">document.domain</a></code> IDL
8205: attribute.</p>
8206:
8207: </dd>
8208:
8209:
8210: <dt>For images</dt>
8211:
8212: <dd>
8213:
8214: <dl class="switch"><dt>If an image is the image of an <code><a href="the-img-element.html#the-img-element">img</a></code> element and
8215: its image data is <a href="urls.html#cors-cross-origin">CORS-cross-origin</a></dt>
8216:
8217: <dd>The <a href="#origin-0">origin</a> is a globally unique identifier
8218: assigned when the image is created.</dd>
8219:
8220:
8221: <dt>If an image is the image of an <code><a href="the-img-element.html#the-img-element">img</a></code> element and
8222: its image data is <a href="urls.html#cors-same-origin">CORS-same-origin</a></dt>
8223:
8224: <dd>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8225: <a href="#origin-0">origin</a> of the <code><a href="the-img-element.html#the-img-element">img</a></code> element's
8226: <code><a href="dom.html#document">Document</a></code>.</dd>
8227:
8228: <!-- all image loads go through the "potentially CORS-enabled
8229: fetch" algorithm so they're all either CORS-cross-origin or
8230: CORS-same-origin if they succeed at all -->
8231:
8232: </dl><p>Images do not have an <a href="#effective-script-origin">effective script origin</a>.</p>
8233:
8234: </dd>
8235:
8236:
8237: <dt>For <code><a href="the-audio-element.html#the-audio-element">audio</a></code> and <code><a href="the-video-element.html#the-video-element">video</a></code> elements</dt>
8238:
8239: <dd>
8240:
8241: <dl class="switch"><dt>If the <a href="media-elements.html#media-data">media data</a> is
8242: <a href="urls.html#cors-cross-origin">CORS-cross-origin</a></dt>
8243:
8244: <dd>The <a href="#origin-0">origin</a> is a globally unique identifier
8245: assigned when the image is created.</dd>
8246:
8247:
8248: <dt>If the <a href="media-elements.html#media-data">media data</a> is
8249: <a href="urls.html#cors-same-origin">CORS-same-origin</a></dt>
8250:
8251: <dd>The <a href="#origin-0">origin</a> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8252: <a href="#origin-0">origin</a> of the <a href="media-elements.html#media-element">media element</a>'s
8253: <code><a href="dom.html#document">Document</a></code>.</dd>
8254:
8255: </dl><p><a href="media-elements.html#media-element" title="media element">Media elements</a> do not have
8256: an <a href="#effective-script-origin">effective script origin</a>.</p>
8257:
8258: </dd>
8259:
8260:
8261: <dt>For fonts</dt>
8262:
8263: <dd>
8264:
8265: <p>The <a href="#origin-0">origin</a> of a downloadable Web font is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8266: <a href="#origin-0">origin</a> of the <a href="urls.html#absolute-url">absolute URL</a> used to
8267: obtain the font (after any redirects). <a href="#refsCSSFONTS">[CSSFONTS]</a></p> <!-- this means you can
8268: get data from a remote site if you can make it redirect to your
8269: own site in some fashion controlled by the data you want to read
8270: -->
8271:
8272: <p>The <a href="#origin-0">origin</a> of a locally installed system font is
8273: an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8274: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> in which that
8275: font is being used.</p>
8276:
8277: <p>Fonts do not have an <a href="#effective-script-origin">effective script origin</a>.</p>
8278:
8279: </dd>
8280:
8281:
8282: <dt>For scripts</dt>
8283:
8284: <dd>
8285:
8286: <p>The <a href="#origin-0">origin</a> and <a href="#effective-script-origin">effective script
8287: origin</a> of a script are determined from another resource,
8288: called the <i>owner</i>:</p>
8289:
8290: <dl class="switch"><dt>If a script is in a <code><a href="the-script-element.html#the-script-element">script</a></code> element</dt>
8291:
8292: <dd>The owner is the <code><a href="dom.html#document">Document</a></code> to which the
8293: <code><a href="the-script-element.html#the-script-element">script</a></code> element belongs.</dd>
8294:
8295:
8296: <dt>If a script is in an <a href="#event-handler-content-attributes" title="event handler content
8297: attributes">event handler content attribute</a></dt>
8298:
8299: <dd>The owner is the <code><a href="dom.html#document">Document</a></code> to which the
8300: attribute node belongs.</dd>
8301:
8302:
8303: <dt>If a script is a function or other code reference created by
8304: another script</dt>
8305:
8306: <dd>The owner is the script that created it.</dd>
8307:
8308:
8309: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> that was returned as the
8310: location of an HTTP redirect (<a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a> in
8311: other protocols)</dt>
8312:
8313: <dd>The owner is the <a href="urls.html#url">URL</a> that redirected to the
8314: <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a>.</dd>
8315:
8316:
8317: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> in an attribute</dt>
8318:
8319: <dd>The owner is the <code><a href="dom.html#document">Document</a></code> of the element on
8320: which the attribute is found.</dd>
8321:
8322:
8323: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> in a style sheet</dt>
8324:
8325: <dd>The owner is the <a href="urls.html#url">URL</a> of the style sheet.</dd>
8326:
8327:
8328: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> to which a <a href="#browsing-context">browsing
8329: context</a> is being <a href="#navigate" title="navigate">navigated</a>,
8330: the URL having been provided by the user (e.g. by using a
8331: <i>bookmarklet</i>)</dt>
8332:
8333: <dd>The owner is the <code><a href="dom.html#document">Document</a></code> of the <a href="#browsing-context">browsing
8334: context</a>'s <a href="#active-document">active document</a>.</dd>
8335:
8336:
8337: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> to which a <a href="#browsing-context">browsing
8338: context</a> is being <a href="#navigate" title="navigate">navigated</a>,
8339: the URL having been declared in markup</dt>
8340:
8341: <dd>The owner is the <code><a href="dom.html#document">Document</a></code> of the element
8342: (e.g. an <code><a href="the-a-element.html#the-a-element">a</a></code> or <code><a href="the-area-element.html#the-area-element">area</a></code> element) that
8343: declared the URL.</dd>
8344:
8345:
8346: <dt>If a script is a <a href="#javascript-protocol" title="javascript protocol"><code title="">javascript:</code> URL</a> to which a <a href="#browsing-context">browsing
8347: context</a> is being <a href="#navigate" title="navigate">navigated</a>,
8348: the URL having been provided by script</dt>
8349:
8350: <dd>The owner is the script that provided the URL.</dd>
8351:
8352: </dl><p>The <a href="#origin-0">origin</a> of the script is then an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the
8353: <a href="#origin-0">origin</a> of the owner, and the <a href="#effective-script-origin">effective script
8354: origin</a> of the script is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a> to the <a href="#effective-script-origin">effective
8355: script origin</a> of the owner.</p>
8356:
8357: </dd>
8358:
8359: </dl><p>Other specifications can override the above definitions by
8360: themselves specifying the origin of a particular <a href="urls.html#url">URL</a>,
8361: <code><a href="dom.html#document">Document</a></code>, image, <a href="media-elements.html#media-element">media element</a>, font, or
8362: <a href="#concept-script" title="concept-script">script</a>.</p>
8363:
8364: <!-- e.g.:
8365:
8366: <p>The <span>origin</span> of a <code>Document</code> object
8367: returned by the <code>XMLHttpRequest</code> API is an <span
8368: title="concept-origin-alias">alias</span> to the
8369: <span>XMLHttpRequest origin</span> of the
8370: <code>XMLHttpRequest</code> object.</p>
8371:
8372: -->
8373:
8374: <hr><p>The <dfn id="unicode-serialization-of-an-origin">Unicode serialization of an origin</dfn> is the string
8375: obtained by applying the following algorithm to the given
8376: <a href="#origin-0">origin</a>:</p>
8377:
8378: <ol><li><p>If the <a href="#origin-0">origin</a> in question is not a
8379: scheme/host/port tuple, then return the literal string "<code title="">null</code>" and abort these steps.</p></li>
8380:
8381: <li><p>Otherwise, let <var title="">result</var> be the scheme part
8382: of the <a href="#origin-0">origin</a> tuple.</p></li>
8383:
8384: <li><p>Append the string "<code title="">://</code>" to <var title="">result</var>.</p></li>
8385:
8386: <li><p>Apply the IDNA ToUnicode algorithm to each component of the
8387: host part of the <a href="#origin-0">origin</a> tuple, and append the results
8388: — each component, in the same order, separated by "." (U+002E) characters — to <var title="">result</var>. <a href="#refsRFC3490">[RFC3490]</a></p></li>
8389:
8390: <li><p>If the port part of the <a href="#origin-0">origin</a> tuple gives a port
8391: that is different from the default port for the protocol given by
8392: the scheme part of the <a href="#origin-0">origin</a> tuple, then append a
8393: ":" (U+003A) character and the given port, in base ten, to
8394: <var title="">result</var>.</p></li>
8395:
8396: <li><p>Return <var title="">result</var>.</p></li>
8397:
8398: </ol><p>The <dfn id="ascii-serialization-of-an-origin">ASCII serialization of an origin</dfn> is the string
8399: obtained by applying the following algorithm to the given
8400: <a href="#origin-0">origin</a>:</p>
8401:
8402: <ol><li><p>If the <a href="#origin-0">origin</a> in question is not a
8403: scheme/host/port tuple, then return the literal string "<code title="">null</code>" and abort these steps.</p></li>
8404:
8405: <li><p>Otherwise, let <var title="">result</var> be the scheme part
8406: of the <a href="#origin-0">origin</a> tuple.</p></li>
8407:
8408: <li><p>Append the string "<code title="">://</code>" to <var title="">result</var>.</p></li>
8409:
8410: <li>
8411:
8412: <p>Apply the IDNA ToASCII algorithm the host part of the
8413: <a href="#origin-0">origin</a> tuple, with both the AllowUnassigned and
8414: UseSTD3ASCIIRules flags set, and append the results <var title="">result</var>.</p>
8415:
8416: <p>If ToASCII fails to convert one of the components of the
8417: string, e.g. because it is too long or because it contains invalid
8418: characters, then return the empty string and abort these steps. <a href="#refsRFC3490">[RFC3490]</a></p>
8419:
8420: </li>
8421:
8422: <li><p>If the port part of the <a href="#origin-0">origin</a> tuple gives a port
8423: that is different from the default port for the protocol given by
8424: the scheme part of the <a href="#origin-0">origin</a> tuple, then append a
8425: ":" (U+003A) character and the given port, in base ten, to
8426: <var title="">result</var>.</p></li>
8427:
8428: <li><p>Return <var title="">result</var>.</p></li>
8429:
8430: </ol><p>Two <a href="#origin-0" title="origin">origins</a> are said to be the
8431: <dfn id="same-origin">same origin</dfn> if the following algorithm returns true:</p>
8432:
8433: <ol><li><p>Let <var title="">A</var> be the first <a href="#origin-0">origin</a>
8434: being compared, and <var title="">B</var> be the second
8435: <a href="#origin-0">origin</a> being compared.</p></li>
8436:
8437: <li><p>If <var title="">A</var> and <var title="">B</var> are both
8438: opaque identifiers, and their value is equal, then return
8439: true.</p></li>
8440:
8441: <li><p>Otherwise, if either <var title="">A</var> or <var title="">B</var> or both are opaque identifiers, return
8442: false.</p></li>
8443:
8444: <li><p>If <var title="">A</var> and <var title="">B</var> have
8445: scheme components that are not identical, return false.</p></li>
8446:
8447: <li><p>If <var title="">A</var> and <var title="">B</var> have host
8448: components that are not identical, return false.</p></li>
8449:
8450: <li><p>If <var title="">A</var> and <var title="">B</var> have port
8451: components that are not identical, return false.</p></li>
8452:
8453: <li><p>If either <var title="">A</var> or <var title="">B</var>
8454: have additional data, but that data is not identical for both,
8455: return false.</p></li>
8456:
8457: <li><p>Return true.</p></li>
8458:
8459: </ol></div>
8460:
8461:
8462: <h4 id="relaxing-the-same-origin-restriction"><span class="secno">5.3.1 </span>Relaxing the same-origin restriction</h4>
8463:
8464: <dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-domain"><a href="#dom-document-domain">domain</a></code> [ = <var title="">domain</var> ]</dt>
8465:
8466: <dd>
8467:
8468: <p>Returns the current domain used for security checks.</p>
8469:
8470: <p>Can be set to a value that removes subdomains, to change the
8471: <a href="#effective-script-origin">effective script origin</a> to allow pages on other
8472: subdomains of the same domain (if they do the same thing) to
8473: access each other.</p>
8474:
8475: </dd>
8476:
8477: </dl><div class="impl">
8478:
8479: <p>The <dfn id="dom-document-domain" title="dom-document-domain"><code>domain</code></dfn>
8480: attribute on <code><a href="dom.html#document">Document</a></code> objects must be initialized to
8481: <a href="#the-document's-domain">the document's domain</a>, if it has one, and the empty
8482: string otherwise. If the value is an IPv6 address, then the square
8483: brackets from the host portion of the <a href="urls.html#url-host" title="url-host"><host></a> component must be omitted from
8484: the attribute's value.</p>
8485:
8486: <p>On getting, the attribute must return its current value, unless
8487: the <code><a href="dom.html#document">Document</a></code> has no <a href="#browsing-context">browsing context</a>, in
8488: which case it must return the empty string.</p>
8489:
8490: <p>On setting, the user agent must run the following algorithm:</p>
8491:
8492: <ol><li>
8493:
8494: <p>If the <code><a href="dom.html#document">Document</a></code> has no <a href="#browsing-context">browsing
8495: context</a>, throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and
8496: abort these steps.</p>
8497:
8498: </li>
8499:
8500: <li>
8501:
8502: <p>If the new value is an IP address, let <var title="">new
8503: value</var> be the new value. Otherwise, apply the IDNA ToASCII
8504: algorithm to the new value, with both the AllowUnassigned and
8505: UseSTD3ASCIIRules flags set, and let <var title="">new value</var>
8506: be the result of the ToASCII algorithm.</p>
8507:
8508: <p>If ToASCII fails to convert one of the components of the
8509: string, e.g. because it is too long or because it contains invalid
8510: characters, then throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort
8511: these steps. <a href="#refsRFC3490">[RFC3490]</a></p>
8512:
8513: </li>
8514:
8515: <li>
8516:
8517: <p>If <var title="">new value</var> is not exactly equal to the
8518: current value of the <code title="dom-document-domain"><a href="#dom-document-domain">document.domain</a></code> attribute, then
8519: run these substeps:</p>
8520:
8521: <ol><li>
8522:
8523: <p>If the current value is an IP address, throw a
8524: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort these steps.</p>
8525:
8526: </li>
8527:
8528: <li>
8529:
8530: <p>If <var title="">new value</var>, prefixed by a "." (U+002E), does not exactly match the end of the current value,
8531: throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort these
8532: steps.</p>
8533:
8534: <!-- this is the step that prevents us from ever setting
8535: document.domain if the >effective script origin< isn't a
8536: scheme/host/port tuple -->
8537:
8538: </li>
8539:
8540: <li>
8541:
8542: <p>If <var title="">new value</var> matches a suffix in the
8543: Public Suffix List, or, if <var title="">new value</var>,
8544: prefixed by a "." (U+002E), matches the end of a
8545: suffix in the Public Suffix List, then throw a
8546: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort these steps. <a href="#refsPSL">[PSL]</a></p>
8547:
8548: <p>Suffixes must be compared after applying the IDNA ToASCII
8549: algorithm to them, with both the AllowUnassigned and
8550: UseSTD3ASCIIRules flags set, in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
8551: case-insensitive</a> manner. <a href="#refsRFC3490">[RFC3490]</a></p>
8552:
8553: </li>
8554:
8555: </ol></li>
8556:
8557: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
8558:
8559: <li>
8560:
8561: <p>Set the attribute's value to <var title="">new value</var>.</p>
8562:
8563: </li>
8564:
8565: <li>
8566:
8567: <p>If the <a href="#effective-script-origin">effective script origin</a> of the
8568: <code><a href="dom.html#document">Document</a></code> is an <a href="#concept-origin-alias" title="concept-origin-alias">alias</a>, set it to the value of
8569: the <a href="#effective-script-origin">effective script origin</a> (essentially de-aliasing
8570: the <a href="#effective-script-origin">effective script origin</a>).</p>
8571:
8572: </li>
8573:
8574: <li>
8575:
8576: <p>If <var title="">new value</var> is not the empty string, then
8577: run these substeps:</p>
8578:
8579: <ol><li>
8580:
8581: <p>Set the host part of the <a href="#effective-script-origin">effective script origin</a>
8582: tuple of the <code><a href="dom.html#document">Document</a></code> to <var title="">new
8583: value</var>.</p>
8584:
8585: </li>
8586:
8587: <li>
8588:
8589: <p>Set the port part of the <a href="#effective-script-origin">effective script origin</a>
8590: tuple of the <code><a href="dom.html#document">Document</a></code> to "manual override" (a value
8591: that, for the purposes of <a href="#same-origin" title="same origin">comparing
8592: origins</a>, is identical to "manual override" but not
8593: identical to any other value).</p>
8594:
8595: </li>
8596:
8597: </ol></li>
8598:
8599: </ol><p>The <dfn id="the-document's-domain" title="the document's domain">domain</dfn> of a
8600: <code><a href="dom.html#document">Document</a></code> is the host part of the document's
8601: <a href="#origin-0">origin</a>, if the value of that <a href="#origin-0">origin</a> is a
8602: scheme/host/port tuple. If it isn't, then the document does not have
8603: a domain.</p>
8604:
8605: </div>
8606:
8607: <p class="note">The <code title="dom-document-domain"><a href="#dom-document-domain">domain</a></code>
8608: attribute is used to enable pages on different hosts of a domain to
8609: access each others' DOMs.</p>
8610:
8611: <p class="warning">Do not use the <code title="dom-document-domain"><a href="#dom-document-domain">document.domain</a></code> attribute when
8612: using shared hosting. If an untrusted third party is able to host an
8613: HTTP server at the same IP address but on a different port, then the
8614: same-origin protection that normally protects two different sites on
8615: the same host will fail, as the ports are ignored when comparing
8616: origins after the <code title="dom-document-domain"><a href="#dom-document-domain">document.domain</a></code> attribute has
8617: been used.</p>
8618: <!--TOPIC:HTML-->
8619:
8620:
8621:
8622:
8623: <h3 id="sandboxing"><span class="secno">5.4 </span>Sandboxing</h3>
8624:
8625: <p>A <dfn id="sandboxing-flag-set">sandboxing flag set</dfn> is a set of zero or more of the
8626: following flags, which are used to restrict the abilities that
8627: potentially untrusted resources have:</p>
8628:
8629: <dl><dt>The <dfn id="sandboxed-navigation-browsing-context-flag">sandboxed navigation browsing context flag</dfn></dt>
8630:
8631: <dd>
8632:
8633: <p>This flag <a href="#sandboxLinks">prevents content from
8634: navigating browsing contexts other than the sandboxed browsing
8635: context itself</a> (or browsing contexts further nested inside
8636: it), <a href="#auxiliary-browsing-context" title="auxiliary browsing context">auxiliary browsing
8637: contexts</a> (which are protected by the <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed
8638: auxiliary navigation browsing context flag</a> defined next),
8639: and the <a href="#top-level-browsing-context">top-level browsing context</a> (which is
8640: protected by the <a href="#sandboxed-top-level-navigation-browsing-context-flag">sandboxed top-level navigation browsing
8641: context flag</a> defined below).</p>
8642:
8643: <p>If the <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing context
8644: flag</a> is not set, then in certain cases the restrictions
8645: nonetheless allow popups (new <a href="#top-level-browsing-context" title="top-level browsing
8646: context">top-level browsing contexts</a>) to be opened. These
8647: <a href="#browsing-context" title="browsing context">browsing contexts</a> always
8648: have <dfn id="one-permitted-sandboxed-navigator">one permitted sandboxed navigator</dfn>, set when the
8649: browsing context is created, which allows the <a href="#browsing-context">browsing
8650: context</a> that created them to actually navigate them.
8651: (Otherwise, the <a href="#sandboxed-navigation-browsing-context-flag">sandboxed navigation browsing context
8652: flag</a> would prevent them from being navigated even if they
8653: were opened.)</p>
8654:
8655: </dd>
8656:
8657:
8658: <dt>The <dfn id="sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing context flag</dfn></dt>
8659:
8660: <dd>
8661:
8662: <p>This flag <a href="#sandboxWindowOpen">prevents content from
8663: creating new auxiliary browsing contexts</a>, e.g. using the <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code> attribute, the <code title="dom-open"><a href="#dom-open">window.open()</a></code> method, or the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method.</p>
8664:
8665: </dd>
8666:
8667:
8668: <dt>The <dfn id="sandboxed-top-level-navigation-browsing-context-flag">sandboxed top-level navigation browsing context flag</dfn></dt>
8669:
8670: <dd>
8671:
8672: <p>This flag <a href="#sandboxLinks">prevents content from
8673: navigating their <span>top-level browsing context</span></a>.</p>
8674:
8675: <p>When the <code title="attr-iframe-sandbox-allow-top-navigation"><a href="#attr-iframe-sandbox-allow-top-navigation">allow-top-navigation</a></code>
8676: is set, content can navigate its <a href="#top-level-browsing-context">top-level browsing
8677: context</a>, but other <a href="#browsing-context" title="browsing context">browsing
8678: contexts</a> are still protected by the <a href="#sandboxed-navigation-browsing-context-flag">sandboxed
8679: navigation browsing context flag</a> and possibly the
8680: <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing context
8681: flag</a>.</p>
8682:
8683: </dd>
8684:
8685:
8686: <dt>The <dfn id="sandboxed-plugins-browsing-context-flag">sandboxed plugins browsing context flag</dfn></dt>
8687:
8688: <dd>
8689:
8690: <p>This flag prevents content from instantiating <a href="infrastructure.html#plugin" title="plugin">plugins</a>, whether using <a href="the-embed-element.html#sandboxPluginEmbed">the <code>embed</code> element</a>, <a href="the-object-element.html#sandboxPluginObject">the <code>object</code> element</a>,
8691: <a href="#sandboxPluginApplet">the <code>applet</code>
8692: element</a>, or through <a href="#sandboxPluginNavigate">navigation</a> of a <a href="#nested-browsing-context">nested
8693: browsing context</a>, unless those <a href="infrastructure.html#plugin" title="plugin">plugins</a> can be <a href="infrastructure.html#concept-plugin-secure" title="concept-plugin-secure">secured</a>.</p>
8694:
8695: </dd>
8696:
8697:
8698: <dt>The <dfn id="sandboxed-seamless-iframes-flag">sandboxed seamless iframes flag</dfn></dt>
8699:
8700: <dd>
8701:
8702: <p>This flag prevents content from using the <code title="attr-iframe-seamless"><a href="the-iframe-element.html#attr-iframe-seamless">seamless</a></code> attribute on
8703: descendant <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements.</p>
8704:
8705: <p class="note">This prevents a page inserted using the <code title="attr-iframe-sandbox-allow-same-origin"><a href="#attr-iframe-sandbox-allow-same-origin">allow-same-origin</a></code>
8706: keyword from using a CSS-selector-based method of probing the DOM
8707: of other pages on the same site (in particular, pages that contain
8708: user-sensitive information).</p>
8709:
8710: <!-- http://lists.w3.org/Archives/Public/public-web-security/2009Dec/thread.html#msg51 -->
8711:
8712: </dd>
8713:
8714:
8715: <dt>The <dfn id="sandboxed-origin-browsing-context-flag">sandboxed origin browsing context flag</dfn></dt>
8716:
8717: <dd>
8718:
8719: <p>This flag <a href="#sandboxOrigin">forces content into a unique
8720: origin</a>, thus preventing it from accessing other content from
8721: the same <a href="#origin-0">origin</a>.</p>
8722:
8723: <p>This flag also <a href="dom.html#sandboxCookies">prevents script from
8724: reading from or writing to the <code title="dom-document-cookie">document.cookie</code> IDL
8725: attribute</a>, and blocks access to <code title="dom-localStorage">localStorage</code>.
8726: <a href="#refsWEBSTORAGE">[WEBSTORAGE]</a>
8727: </p>
8728:
8729: </dd>
8730:
8731:
8732: <dt>The <dfn id="sandboxed-forms-browsing-context-flag">sandboxed forms browsing context flag</dfn></dt>
8733:
8734: <dd>
8735:
8736: <p>This flag <a href="#sandboxSubmitBlocked">blocks form
8737: submission</a>.</p>
8738:
8739: </dd>
8740:
8741:
8742: <dt>The <dfn id="sandboxed-scripts-browsing-context-flag">sandboxed scripts browsing context flag</dfn></dt>
8743:
8744: <dd>
8745:
8746: <p>This flag <a href="#sandboxScriptBlocked">blocks script
8747: execution</a>.</p>
8748:
8749: </dd>
8750:
8751:
8752: <dt>The <dfn id="sandboxed-automatic-features-browsing-context-flag">sandboxed automatic features browsing context
8753: flag</dfn></dt>
8754:
8755: <dd>
8756:
8757: <p>This flag blocks features that trigger automatically, such as
8758: <a href="media-elements.html#attr-media-autoplay" title="attr-media-autoplay">automatically playing a
8759: video</a> or <a href="attributes-common-to-form-controls.html#attr-fe-autofocus" title="attr-fe-autofocus">automatically
8760: focusing a form control</a>.</p>
8761:
8762: </dd>
8763:
8764: </dl><p>When the user agent is to <dfn id="parse-a-sandboxing-directive">parse a sandboxing
8765: directive</dfn>, given a string <var title="">input</var> and a
8766: <a href="#sandboxing-flag-set">sandboxing flag set</a> <var title="">output</var>, it must
8767: run the following steps:</p>
8768:
8769: <ol><li><p><a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on spaces">Split <var title="">input</var> on spaces</a>, to obtain <var title="">tokens</var>.</p></li>
8770:
8771: <li><p>Let <var title="">output</var> be empty.</p></li>
8772:
8773: <li>
8774:
8775: <p>Add the following flags to <var title="">output</var>:</p>
8776:
8777: <ul><li><p>The <a href="#sandboxed-navigation-browsing-context-flag">sandboxed navigation browsing context flag</a></p></li>
8778:
8779: <li><p>The <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing context
8780: flag</a>, unless <var title="">tokens</var> contains the <dfn id="attr-iframe-sandbox-allow-popups" title="attr-iframe-sandbox-allow-popups"><code>allow-popups</code></dfn>
8781: keyword</p></li>
8782:
8783: <li><p>The <a href="#sandboxed-top-level-navigation-browsing-context-flag">sandboxed top-level navigation browsing context
8784: flag</a>, unless <var title="">tokens</var> contains the <dfn id="attr-iframe-sandbox-allow-top-navigation" title="attr-iframe-sandbox-allow-top-navigation"><code>allow-top-navigation</code></dfn>
8785: keyword</p></li>
8786:
8787: <li><p>The <a href="#sandboxed-plugins-browsing-context-flag">sandboxed plugins browsing context flag</a></p></li>
8788:
8789: <li><p>The <a href="#sandboxed-seamless-iframes-flag">sandboxed seamless iframes flag</a></p></li>
8790:
8791: <li>
8792:
8793: <p>The <a href="#sandboxed-origin-browsing-context-flag">sandboxed origin browsing context flag</a>,
8794: unless the <var title="">tokens</var> contains the <dfn id="attr-iframe-sandbox-allow-same-origin" title="attr-iframe-sandbox-allow-same-origin"><code>allow-same-origin</code></dfn>
8795: keyword</p>
8796:
8797: <div class="note">
8798:
8799: <p>The <code title="attr-iframe-sandbox-allow-same-origin"><a href="#attr-iframe-sandbox-allow-same-origin">allow-same-origin</a></code>
8800: keyword is intended for two cases.</p>
8801:
8802: <p>First, it can be used to allow content from the same site to
8803: be sandboxed to disable scripting, while still allowing access to
8804: the DOM of the sandboxed content.</p>
8805:
8806: <p>Second, it can be used to embed content from a third-party
8807: site, sandboxed to prevent that site from opening popup windows,
8808: etc, without preventing the embedded page from communicating back
8809: to its originating site, using the database APIs to store data,
8810: etc.</p>
8811:
8812: </div>
8813:
8814: </li>
8815:
8816: <li><p>The <a href="#sandboxed-forms-browsing-context-flag">sandboxed forms browsing context flag</a>,
8817: unless <var title="">tokens</var> contains the <dfn id="attr-iframe-sandbox-allow-forms" title="attr-iframe-sandbox-allow-forms"><code>allow-forms</code></dfn>
8818: keyword</p></li>
8819:
8820: <li><p>The <a href="#sandboxed-scripts-browsing-context-flag">sandboxed scripts browsing context flag</a>,
8821: unless <var title="">tokens</var> contains the <dfn id="attr-iframe-sandbox-allow-scripts" title="attr-iframe-sandbox-allow-scripts"><code>allow-scripts</code></dfn>
8822: keyword</p></li>
8823:
8824: <li>
8825:
8826: <p>The <a href="#sandboxed-automatic-features-browsing-context-flag">sandboxed automatic features browsing context
8827: flag</a>, unless <var title="">tokens</var> contains the
8828: <code title="attr-iframe-sandbox-allow-scripts"><a href="#attr-iframe-sandbox-allow-scripts">allow-scripts</a></code>
8829: keyword (defined above)</p>
8830:
8831: <p class="note">This flag is relaxed by the same keyword as
8832: scripts, because when scripts are enabled these features are
8833: trivially possible anyway, and it would be unfortunate to force
8834: authors to use script to do them when sandboxed rather than
8835: allowing them to use the declarative features.</p>
8836:
8837: </li>
8838:
8839: </ul></li>
8840:
8841: </ol><hr><p>Every <a href="#top-level-browsing-context">top-level browsing context</a> has a <dfn id="popup-sandboxing-flag-set">popup
8842: sandboxing flag set</dfn>, which is a <a href="#sandboxing-flag-set">sandboxing flag
8843: set</a>. When a <a href="#browsing-context">browsing context</a> is created, its
8844: <a href="#popup-sandboxing-flag-set">popup sandboxing flag set</a> must be empty. It is
8845: populated by <a href="#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name">the rules for choosing a browsing context given a
8846: browsing context name</a>.</p>
8847:
8848: <p>Every <a href="#nested-browsing-context">nested browsing context</a> has an
8849: <dfn id="iframe-sandboxing-flag-set"><code>iframe</code> sandboxing flag set</dfn>, which is a
8850: <a href="#sandboxing-flag-set">sandboxing flag set</a>. Which flags in a <a href="#nested-browsing-context">nested
8851: browsing context</a>'s <a href="#iframe-sandboxing-flag-set"><code>iframe</code> sandboxing flag
8852: set</a> are set at any particular time is determined by the
8853: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element's <code title="attr-iframe-sandbox"><a href="the-iframe-element.html#attr-iframe-sandbox">sandbox</a></code> attribute.</p>
8854:
8855: <p>Every <code><a href="dom.html#document">Document</a></code> has an <dfn id="active-sandboxing-flag-set">active sandboxing flag
8856: set</dfn>, which is a <a href="#sandboxing-flag-set">sandboxing flag set</a>. When the
8857: <code><a href="dom.html#document">Document</a></code> is created, its <a href="#active-sandboxing-flag-set">active sandboxing flag
8858: set</a> must be empty. It is populated by the <a href="#navigate" title="navigate">navigation algorithm</a>.</p>
8859:
8860:
8861:
8862: <h3 id="history"><span class="secno">5.5 </span>Session history and navigation</h3>
8863:
8864: <h4 id="the-session-history-of-browsing-contexts"><span class="secno">5.5.1 </span>The session history of browsing contexts</h4>
8865:
8866: <p>The sequence of <code><a href="dom.html#document">Document</a></code>s in a <a href="#browsing-context">browsing
8867: context</a> is its <dfn id="session-history">session history</dfn>.</p>
8868:
8869: <p><code><a href="#history-1">History</a></code> objects provide a representation of the
8870: pages in the session history of <a href="#browsing-context" title="browsing
8871: context">browsing contexts</a>. Each <a href="#browsing-context">browsing
8872: context</a>, including <a href="#nested-browsing-context" title="nested browsing
8873: context">nested browsing contexts</a>, has a distinct session
8874: history.</p>
8875:
8876: <p>Each <code><a href="dom.html#document">Document</a></code> object in a <a href="#browsing-context">browsing
8877: context</a>'s <a href="#session-history">session history</a> is associated with a
8878: unique instance of the <code><a href="#history-1">History</a></code> object, although they
8879: all must model the same underlying <a href="#session-history">session history</a>.</p>
8880:
8881: <div class="impl">
8882:
8883: <p>The <dfn id="dom-history" title="dom-history"><code>history</code></dfn> attribute
8884: of the <code><a href="#window">Window</a></code> interface must return the object
8885: implementing the <code><a href="#history-1">History</a></code> interface for that
8886: <code><a href="#window">Window</a></code> object's <code><a href="dom.html#document">Document</a></code>.</p>
8887:
8888: </div>
8889:
8890: <p><code><a href="#history-1">History</a></code> objects represent their <a href="#browsing-context">browsing
8891: context</a>'s session history as a flat list of <a href="#session-history-entry" title="session history entry">session history entries</a>. Each
8892: <dfn id="session-history-entry">session history entry</dfn> consists of a <a href="urls.html#url">URL</a> and
8893: optionally a <a href="#state-object">state object</a><span class="impl">, and may
8894: in addition have a title, a <code><a href="dom.html#document">Document</a></code> object, form data,
8895: a scroll position, and other information associated with
8896: it</span>.</p>
8897:
8898: <div class="impl">
8899:
8900: <p class="note">This does not imply that the user interface need be
8901: linear. See the <a href="#history-notes">notes below</a>.</p>
8902:
8903: </div>
8904:
8905: <p class="note">Titles associated with <a href="#session-history-entry" title="session history
8906: entry">session history entries</a> need not have any relation
8907: with the current <code><a href="the-title-element.html#the-title-element">title</a></code> of the
8908: <code><a href="dom.html#document">Document</a></code>. The title of a <a href="#session-history-entry">session history
8909: entry</a> is intended to explain the state of the document at
8910: that point, so that the user can navigate the document's
8911: history.</p>
8912:
8913: <p>URLs without associated <a href="#state-object" title="state object">state
8914: objects</a> are added to the session history as the user (or
8915: script) navigates from page to page.</p>
8916:
8917: <p>A <dfn id="state-object">state object</dfn> is an object representing a user
8918: interface state.</p>
8919:
8920: <p>Pages can <a href="#dom-history-pushstate" title="dom-history-pushState">add</a> <a href="#state-object" title="state object">state objects</a> between their entry in the
8921: session history and the next ("forward") entry. These are then <a href="#event-popstate" title="event-popstate">returned to the script</a> when the user
8922: (or script) goes back in the history, thus enabling authors to use
8923: the "navigation" metaphor even in one-page applications.</p>
8924:
8925: <div class="note">
8926:
8927: <p><a href="#state-object" title="state object">State objects</a> are intended to
8928: be used for two main purposes: first, storing a preparsed
8929: description of the state in the <a href="urls.html#url">URL</a> so that in the
8930: simple case an author doesn't have to do the parsing (though one
8931: would still need the parsing for handling <a href="urls.html#url" title="URL">URLs</a> passed around by users, so it's only a minor
8932: optimization), and second, so that the author can store state that
8933: one wouldn't store in the URL because it only applies to the current
8934: <code><a href="dom.html#document">Document</a></code> instance and it would have to be reconstructed
8935: if a new <code><a href="dom.html#document">Document</a></code> were opened.</p>
8936:
8937: <p>An example of the latter would be something like keeping track of
8938: the precise coordinate from which a popup <code><a href="the-div-element.html#the-div-element">div</a></code> was made
8939: to animate, so that if the user goes back, it can be made to animate
8940: to the same location. Or alternatively, it could be used to keep a
8941: pointer into a cache of data that would be fetched from the server
8942: based on the information in the <a href="urls.html#url">URL</a>, so that when going
8943: back and forward, the information doesn't have to be fetched
8944: again.</p>
8945:
8946: </div>
8947:
8948: <hr><p>At any point, one of the entries in the session history is the
8949: <dfn id="current-entry">current entry</dfn>. This is the entry representing the
8950: <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing context</a>.
8951: Which entry is the <a href="#current-entry">current entry</a> is changed by the
8952: algorithms defined in this specification, e.g. during <a href="#traverse-the-history" title="traverse the history">session history traversal</a>.</p>
8953:
8954: <p class="note">The <a href="#current-entry">current entry</a> is usually an entry
8955: for the <a href="#dom-location-href" title="dom-location-href">location</a> of the
8956: <code><a href="dom.html#document">Document</a></code>. However, it can also be one of the entries
8957: for <a href="#state-object" title="state object">state objects</a> added to the
8958: history by that document.</p>
8959:
8960: <p><dfn id="an-entry-with-persisted-user-state">An entry with persisted user state</dfn> is one that also
8961: has user-agent defined state. This specification does not specify
8962: what kind of state can be stored.</p>
8963:
8964: <p class="example">For example, some user agents might want to
8965: persist the scroll position, or the values of form controls.</p>
8966:
8967: <p class="note">User agents that persist the value of form controls
8968: are encouraged to also persist their directionality (the value of
8969: the element's <code title="attr-dir"><a href="global-attributes.html#the-dir-attribute">dir</a></code> attribute). This
8970: prevents values from being displayed incorrectly after a history
8971: traversal when the user had originally entered the values with an
8972: explicit, non-default directionality.</p>
8973:
8974: <p>Entries that consist of <a href="#state-object" title="state object">state
8975: objects</a> share the same <code><a href="dom.html#document">Document</a></code> as the entry for
8976: the page that was active when they were added.</p>
8977:
8978: <p>Contiguous entries that differ just by fragment identifier also
8979: share the same <code><a href="dom.html#document">Document</a></code>.</p>
8980:
8981: <p class="note">All entries that share the same
8982: <code><a href="dom.html#document">Document</a></code> (and that are therefore merely different
8983: states of one particular document) are contiguous by definition.</p>
8984:
8985: <p>Each <code><a href="dom.html#document">Document</a></code> in a <a href="#browsing-context">browsing context</a> can
8986: also have a <dfn id="latest-entry">latest entry</dfn>. This is the entry or that
8987: <code><a href="dom.html#document">Document</a></code> that was most the recently traversed to. When
8988: a <code><a href="dom.html#document">Document</a></code> is created, it initially has no <a href="#latest-entry">latest
8989: entry</a>.</p>
8990:
8991: <div class="impl">
8992:
8993: <p>User agents may <a href="#discard-a-document" title="discard a Document">discard</a>
8994: the <code><a href="dom.html#document">Document</a></code> objects of entries other than the
8995: <a href="#current-entry">current entry</a> that are not referenced from any script,
8996: reloading the pages afresh when the user or script navigates back to
8997: such pages. This specification does not specify when user agents
8998: should discard <code><a href="dom.html#document">Document</a></code> objects and when they should
8999: cache them.</p>
9000:
9001: <p>Entries that have had their <code><a href="dom.html#document">Document</a></code> objects
9002: discarded must, for the purposes of the algorithms given below, act
9003: as if they had not. When the user or script navigates back or
9004: forwards to a page which has no in-memory DOM objects, any other
9005: entries that shared the same <code><a href="dom.html#document">Document</a></code> object with it
9006: must share the new object as well.</p>
9007:
9008: </div>
9009:
9010:
9011: <!--TOPIC:DOM APIs-->
9012: <h4 id="the-history-interface"><span class="secno">5.5.2 </span>The <code><a href="#history-1">History</a></code> interface</h4>
9013:
9014: <pre class="idl">interface <dfn id="history-1">History</dfn> {
9015: readonly attribute long <a href="#dom-history-length" title="dom-history-length">length</a>;
9016: readonly attribute any <a href="#dom-history-state" title="dom-history-state">state</a>;
9017: void <a href="#dom-history-go" title="dom-history-go">go</a>(optional long delta);
9018: void <a href="#dom-history-back" title="dom-history-back">back</a>();
9019: void <a href="#dom-history-forward" title="dom-history-forward">forward</a>();
9020: void <a href="#dom-history-pushstate" title="dom-history-pushState">pushState</a>(any data, DOMString title, optional DOMString? url);
9021: void <a href="#dom-history-replacestate" title="dom-history-replaceState">replaceState</a>(any data, DOMString title, optional DOMString? url);
9022: };</pre>
9023:
9024: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-length"><a href="#dom-history-length">length</a></code></dt>
9025:
9026: <dd>
9027:
9028: <p>Returns the number of entries in the <a href="#joint-session-history">joint session history</a>.</p>
9029:
9030: </dd>
9031:
9032: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-state"><a href="#dom-history-state">state</a></code></dt>
9033:
9034: <dd>
9035:
9036: <p>Returns the current <a href="#state-object">state object</a>.</p>
9037:
9038: </dd>
9039:
9040: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-go"><a href="#dom-history-go">go</a></code>( [ <var title="">delta</var> ] )</dt>
9041:
9042: <dd>
9043:
9044: <p>Goes back or forward the specified number of steps in the <a href="#joint-session-history">joint session history</a>.</p>
9045:
9046: <p>A zero delta will reload the current page.</p>
9047:
9048: <p>If the delta is out of range, does nothing.</p>
9049:
9050: </dd>
9051:
9052: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-back"><a href="#dom-history-back">back</a></code>()</dt>
9053:
9054: <dd>
9055:
9056: <p>Goes back one step in the <a href="#joint-session-history">joint session history</a>.</p>
9057:
9058: <p>If there is no previous page, does nothing.</p>
9059:
9060: </dd>
9061:
9062: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-forward"><a href="#dom-history-forward">forward</a></code>()</dt>
9063:
9064: <dd>
9065:
9066: <p>Goes forward one step in the <a href="#joint-session-history">joint session history</a>.</p>
9067:
9068: <p>If there is no next page, does nothing.</p>
9069:
9070: </dd>
9071:
9072: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState</a></code>(<var title="">data</var>, <var title="">title</var> [, <var title="">url</var> ] )</dt>
9073:
9074: <dd>
9075:
9076: <p>Pushes the given data onto the session history, with the given title, and, if provided, the given URL.</p>
9077:
9078: </dd>
9079:
9080: <dt><var title="">window</var> . <code title="dom-history"><a href="#dom-history">history</a></code> . <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState</a></code>(<var title="">data</var>, <var title="">title</var> [, <var title="">url</var> ] )</dt>
9081:
9082: <dd>
9083:
9084: <p>Updates the current entry in the session history to have the given data, title, and, if provided, URL.</p>
9085:
9086: </dd>
9087:
9088: </dl><!--TOPIC:HTML--><p>The <dfn id="joint-session-history">joint session history</dfn> of a <code><a href="#history-1">History</a></code>
9089: object is the union of all the <a href="#session-history" title="session history">session
9090: histories</a> of all <a href="#browsing-context" title="browsing context">browsing
9091: contexts</a> of all the <a href="#fully-active">fully active</a>
9092: <code><a href="dom.html#document">Document</a></code> objects that share the <code><a href="#history-1">History</a></code>
9093: object's <a href="#top-level-browsing-context">top-level browsing context</a>, with all the
9094: entries that are <a href="#current-entry" title="current entry">current entries</a>
9095: in their respective <a href="#session-history" title="session history">session
9096: histories</a> removed except for the <a href="#current-entry-of-the-joint-session-history">current entry of the
9097: joint session history</a>.</p>
9098:
9099: <p>The <dfn id="current-entry-of-the-joint-session-history">current entry of the joint session history</dfn> is the
9100: entry that most recently became a <a href="#current-entry">current entry</a> in its
9101: <a href="#session-history">session history</a>.</p>
9102:
9103: <p>Entries in the <a href="#joint-session-history">joint session history</a> are ordered
9104: chronologically by the time they were added to their respective
9105: <a href="#session-history" title="session history">session histories</a>. (Since all
9106: these <a href="#browsing-context" title="browsing context">browsing contexts</a> by
9107: definition share an <a href="#event-loop">event loop</a>, there is always a
9108: well-defined sequential order in which their <a href="#session-history" title="session
9109: history">session histories</a> had their entries added.) Each
9110: entry has an index; the earliest entry has index 0, and the
9111: subsequent entries are numbered with consecutively increasing
9112: integers (1, 2, 3, etc).</p>
9113:
9114: <!--TOPIC:DOM APIs-->
9115: <div class="impl">
9116:
9117: <p>The <dfn id="dom-history-length" title="dom-history-length"><code>length</code></dfn>
9118: attribute of the <code><a href="#history-1">History</a></code> interface must return the
9119: number of entries in the <a href="#joint-session-history">joint session history</a>.</p>
9120:
9121: <p>The actual entries are not accessible from script.</p>
9122:
9123: <p>The <dfn id="dom-history-state" title="dom-history-state"><code>state</code></dfn>
9124: attribute of the <code><a href="#history-1">History</a></code> interface must return the last
9125: value it was set to by the user agent. Initially, its value must be
9126: null.</p>
9127:
9128: <p>When the <dfn id="dom-history-go" title="dom-history-go"><code>go(<var title="">delta</var>)</code></dfn> method is invoked, if the
9129: argument to the method was omitted or has the value zero, the user
9130: agent must act as if the <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code> method was
9131: called instead. Otherwise, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the
9132: history by a delta</a> whose value is the value of the method's
9133: argument.</p>
9134:
9135: <p>When the <dfn id="dom-history-back" title="dom-history-back"><code>back()</code></dfn>
9136: method is invoked, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the history by
9137: a delta</a> −1.</p>
9138:
9139: <p>When the <dfn id="dom-history-forward" title="dom-history-forward"><code>forward()</code></dfn>method is
9140: invoked, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the history by a
9141: delta</a> +1.</p>
9142: <!--TOPIC:HTML-->
9143:
9144: <p>To <dfn id="traverse-the-history-by-a-delta">traverse the history by a delta</dfn> <var title="">delta</var>, the user agent must <a href="#queue-a-task">queue a task</a>
9145: to run the following steps. The <a href="#task-source">task source</a> for the
9146: queued task is the <a href="#history-traversal-task-source">history traversal task source</a>.</p>
9147:
9148: <ol><li><p>Let <var title="">delta</var> be the argument to the
9149: method.</p></li>
9150:
9151: <li><p>If the index of the <a href="#current-entry-of-the-joint-session-history">current entry of the joint session
9152: history</a> plus <var title="">delta</var> is less than zero or
9153: greater than or equal to the number of items in the <a href="#joint-session-history">joint
9154: session history</a>, then abort these steps.</p>
9155:
9156: </li><li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#unload-a-document">unload a
9157: document</a> algorithm is currently running, abort these
9158: steps.</p></li>
9159:
9160: <li><p>If there is an ongoing attempt to navigate the
9161: <a href="#browsing-context">browsing context</a> that has not yet <a href="#concept-navigate-mature" title="concept-navigate-mature">matured</a> (i.e. it has not
9162: passed the point of making its <code><a href="dom.html#document">Document</a></code> the
9163: <a href="#active-document">active document</a>), then cancel that attempt to navigate
9164: the <a href="#browsing-context">browsing context</a>.</p></li>
9165:
9166: <li><p>Let <var title="">specified entry</var> be the entry in the
9167: <a href="#joint-session-history">joint session history</a> whose index is the sum of <var title="">delta</var> and the index of the <a href="#current-entry-of-the-joint-session-history">current entry of
9168: the joint session history</a>.</p></li>
9169:
9170: <li><p>Let <var title="">specified browsing context</var> be the
9171: <a href="#browsing-context">browsing context</a> of the <var title="">specified
9172: entry</var>.</p></li>
9173:
9174: <li>
9175:
9176: <p>If the <var title="">specified browsing context</var>'s
9177: <a href="#active-document">active document</a> is not the same <code><a href="dom.html#document">Document</a></code>
9178: as the <code><a href="dom.html#document">Document</a></code> of the <var title="">specified
9179: entry</var>, then run these substeps:</p>
9180:
9181: <ol><li><p><a href="#prompt-to-unload-a-document" title="prompt to unload a document">Prompt to
9182: unload</a> the <a href="#active-document">active document</a> of the <var title="">specified browsing context</var>. If the user
9183: <a href="#refused-to-allow-the-document-to-be-unloaded">refused to allow the document to be unloaded</a>, then
9184: abort these steps.</p></li>
9185:
9186: <li><p><a href="#unload-a-document" title="unload a document">Unload</a> the
9187: <a href="#active-document">active document</a> of the <var title="">specified
9188: browsing context</var> with the <var title="">recycle</var>
9189: parameter set to false.</p></li>
9190:
9191: </ol></li>
9192:
9193: <li><p><a href="#traverse-the-history">Traverse the history</a> of the <var title="">specified browsing context</var> to the <var title="">specified entry</var>.</p>
9194:
9195: </li></ol><p>When the user navigates through a <a href="#browsing-context">browsing context</a>,
9196: e.g. using a browser's back and forward buttons, the user agent must
9197: <a href="#traverse-the-history-by-a-delta">traverse the history by a delta</a> equivalent to the
9198: action specified by the user.</p>
9199:
9200: <hr><!--TOPIC:DOM APIs--><p>The <dfn id="dom-history-pushstate" title="dom-history-pushState"><code>pushState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method adds a state object entry to
9201: the history.</p>
9202:
9203: <p>The <dfn id="dom-history-replacestate" title="dom-history-replaceState"><code>replaceState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method updates the state object,
9204: title, and optionally the <a href="urls.html#url">URL</a> of the <a href="#current-entry">current
9205: entry</a> in the history.</p>
9206:
9207: <p>When either of these methods is invoked, the user agent must run
9208: the following steps:</p>
9209:
9210: <ol><li><p>Let <var title="">cloned data</var> be a <a href="common-dom-interfaces.html#structured-clone">structured
9211: clone</a> of the specified <var title="">data</var>. If this
9212: throws an exception, then rethrow that exception and abort these
9213: steps.</p></li>
9214:
9215: <li>
9216:
9217: <p>If a third argument is specified and is not null, run these substeps:</p>
9218:
9219: <ol><li><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the value of the
9220: third argument, relative to the <a href="#entry-script">entry script</a>'s <a href="#script's-base-url" title="script's base URL">base URL</a>.</li>
9221:
9222: <li>If that fails, throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception
9223: and abort these steps.</li>
9224:
9225: <li>Compare the resulting <a href="urls.html#absolute-url">absolute URL</a> to <a href="dom.html#the-document's-address">the
9226: document's address</a>. If any part of these two <a href="urls.html#url" title="URL">URLs</a> differ other than the <a href="urls.html#url-path" title="url-path"><path></a>, <a href="urls.html#url-query" title="url-query"><query></a>, and <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> components, then
9227: throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort these
9228: steps.</li>
9229:
9230: <li>If the <a href="#origin-0">origin</a> of the resulting <a href="urls.html#absolute-url">absolute
9231: URL</a> is not the same as the <a href="#origin-0">origin</a> of the
9232: <a href="#entry-script">entry script</a>'s <a href="#script's-document" title="script's
9233: document">document</a>, and either the <a href="urls.html#url-path" title="url-path"><path></a> or <a href="urls.html#url-query" title="url-query"><query></a> components of the two
9234: <a href="urls.html#url" title="URL">URLs</a> compared in the previous step
9235: differ, throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception and abort
9236: these steps. (This prevents sandboxed content from spoofing other
9237: pages on the same origin.)</li>
9238:
9239: <li><p>Let <var title="">new URL</var> be the resulting
9240: <a href="urls.html#absolute-url">absolute URL</a>.</p></li>
9241:
9242: </ol><p>For the purposes of the comparisons in the above substeps, the
9243: <a href="urls.html#url-path" title="url-path"><path></a> and <a href="urls.html#url-query" title="url-query"><query></a> components can only be the
9244: same if the URLs are both <a href="urls.html#hierarchical-url" title="hierarchical
9245: URL">hierarchical URLs</a>.</p>
9246:
9247: </li>
9248:
9249: <li>
9250:
9251: <p>If a third argument is <em>not</em> specified, or is null, then let <var title="">new URL</var> be the <a href="urls.html#url">URL</a> of the
9252: <a href="#current-entry">current entry</a>.</p>
9253:
9254: </li><li>
9255:
9256: <p>If the method invoked was the <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> method:</p>
9257:
9258: <ol><li>
9259:
9260: <p>Remove all the entries in the <a href="#browsing-context">browsing context</a>'s
9261: <a href="#session-history">session history</a> after the <a href="#current-entry">current
9262: entry</a>. If the <a href="#current-entry">current entry</a> is the last
9263: entry in the session history, then no entries are
9264: removed.</p>
9265:
9266: <p class="note">This <a href="#history-notes">doesn't
9267: necessarily have to affect</a> the user agent's user
9268: interface.</p>
9269:
9270: </li>
9271:
9272: <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> queued
9273: by the <a href="#history-traversal-task-source">history traversal task source</a> that are
9274: associated with any <code><a href="dom.html#document">Document</a></code> objects in the
9275: <a href="#top-level-browsing-context">top-level browsing context</a>'s <a href="#document-family">document
9276: family</a>.</p></li>
9277:
9278: <li><p>If appropriate, update the <a href="#current-entry">current entry</a> to
9279: reflect any state that the user agent wishes to persist. The
9280: entry is then said to be <a href="#an-entry-with-persisted-user-state">an entry with persisted user
9281: state</a>.</p></li>
9282:
9283: <li><p>Add a <a href="#state-object">state object</a> entry to the session
9284: history, after the <a href="#current-entry">current entry</a>, with <var title="">cloned data</var> as the <a href="#state-object">state object</a>, the
9285: given <var title="">title</var> as the title, and <var title="">new URL</var> as the <a href="urls.html#url">URL</a> of the
9286: entry.</p></li>
9287:
9288: <li><p>Update the <a href="#current-entry">current entry</a> to be this newly
9289: added entry.</p></li>
9290:
9291: </ol><p>Otherwise, if the method invoked was the <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code> method:</p>
9292:
9293: <ol><li><p>Update the <a href="#current-entry">current entry</a> in the session
9294: history so that <var title="">cloned data</var> is the entry's
9295: new state object, the given <var title="">title</var> is the new
9296: title, and <var title="">new URL</var> is the entry's new
9297: <a href="urls.html#url">URL</a>.</p></li>
9298:
9299: </ol></li>
9300:
9301: <li><p>If the <a href="#current-entry">current entry</a> in the session history
9302: represents a non-GET request (e.g. it was the result of a POST
9303: submission) then update it to instead represent a GET request
9304: (<a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or
9305: equivalent</a>).</p></li>
9306:
9307: <li>
9308:
9309: <p>Set <a href="dom.html#the-document's-address">the document's address</a> to <var title="">new
9310: URL</var>.</p>
9311:
9312: <p class="note">Since this is neither a <a href="#navigate" title="navigate">navigation</a> of the <a href="#browsing-context">browsing
9313: context</a> nor a <a href="#traverse-the-history" title="traverse the history">history
9314: traversal</a>, it does not cause a <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event to be fired.</p>
9315:
9316: </li>
9317:
9318: <li>
9319:
9320: <p>Set <code title="dom-history-state"><a href="#dom-history-state">history.state</a></code> to a
9321: <a href="common-dom-interfaces.html#structured-clone">structured clone</a> of <var title="">cloned
9322: data</var>.</p> <!-- it's a clone of /cloned data/, not /data/, so
9323: that there's no risk of running scripts again -->
9324:
9325: </li>
9326:
9327: <li>
9328:
9329: <p>Let the <a href="#latest-entry">latest entry</a> of the
9330: <code><a href="dom.html#document">Document</a></code> of the <a href="#current-entry">current entry</a> be the
9331: <a href="#current-entry">current entry</a>.</p>
9332:
9333: </li>
9334:
9335: </ol><p class="note">The <var title="">title</var> is purely
9336: advisory. User agents might use the title in the user interface.</p>
9337:
9338: <p>User agents may limit the number of state objects added to the
9339: session history per page. If a page hits the UA-defined limit, user
9340: agents must remove the entry immediately after the first entry for
9341: that <code><a href="dom.html#document">Document</a></code> object in the session history after
9342: having added the new entry. (Thus the state history acts as a FIFO
9343: buffer for eviction, but as a LIFO buffer for navigation.)</p>
9344:
9345: </div>
9346:
9347: <div class="example">
9348:
9349: <p>Consider a game where the user can navigate along a line, such
9350: that the user is always at some coordinate, and such that the user
9351: can bookmark the page corresponding to a particular coordinate, to
9352: return to it later.</p>
9353:
9354: <p>A static page implementing the x=5 position in such a game could
9355: look like the following:</p>
9356:
9357: <pre><!DOCTYPE HTML>
9358: <!-- this is http://example.com/line?x=5 -->
9359: <title>Line Game - 5</title>
9360: <p>You are at coordinate 5 on the line.</p>
9361: <p>
9362: <a href="?x=6">Advance to 6</a> or
9363: <a href="?x=4">retreat to 4</a>?
9364: </p></pre>
9365:
9366: <p>The problem with such a system is that each time the user
9367: clicks, the whole page has to be reloaded. Here instead is another
9368: way of doing it, using script:</p>
9369:
9370: <pre><!DOCTYPE HTML>
9371: <!-- this starts off as http://example.com/line?x=5 -->
9372: <title>Line Game - 5</title>
9373: <p>You are at coordinate <span id="coord">5</span> on the line.</p>
9374: <p>
9375: <a href="?x=6" onclick="go(1); return false;">Advance to 6</a> or
9376: <a href="?x=4" onclick="go(-1); return false;">retreat to 4</a>?
9377: </p>
9378: <script>
9379: var currentPage = 5; // prefilled by server
9380: function go(d) {
9381: setupPage(currentPage + d);
9382: history.pushState(currentPage, document.title, '?x=' + currentPage);
9383: }
9384: onpopstate = function(event) {
9385: setupPage(event.state);
9386: }
9387: function setupPage(page) {
9388: currentPage = page;
9389: document.title = 'Line Game - ' + currentPage;
9390: document.getElementById('coord').textContent = currentPage;
9391: document.links[0].href = '?x=' + (currentPage+1);
9392: document.links[0].textContent = 'Advance to ' + (currentPage+1);
9393: document.links[1].href = '?x=' + (currentPage-1);
9394: document.links[1].textContent = 'retreat to ' + (currentPage-1);
9395: }
9396: </script></pre>
9397:
9398: <p>In systems without script, this still works like the previous
9399: example. However, users that <em>do</em> have script support can
9400: now navigate much faster, since there is no network access for the
9401: same experience. Furthermore, contrary to the experience the user
9402: would have with just a naïve script-based approach,
9403: bookmarking and navigating the session history still work.</p>
9404:
9405: <p>In the example above, the <var title="">data</var> argument to
9406: the <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> method
9407: is the same information as would be sent to the server, but in a
9408: more convenient form, so that the script doesn't have to parse the
9409: URL each time the user navigates.</p>
9410:
9411: </div>
9412:
9413: <div class="example">
9414:
9415: <p>Applications might not use the same title for a <a href="#session-history-entry">session
9416: history entry</a> as the value of the document's
9417: <code><a href="the-title-element.html#the-title-element">title</a></code> element at that time. For example, here is a
9418: simple page that shows a block in the <code><a href="the-title-element.html#the-title-element">title</a></code> element.
9419: Clearly, when navigating backwards to a previous state the user
9420: does not go back in time, and therefore it would be inappropriate
9421: to put the time in the session history title.</p>
9422:
9423: <pre><!DOCTYPE HTML>
9424: <TITLE>Line</TITLE>
9425: <SCRIPT>
9426: setInterval(function () { document.title = 'Line - ' + new Date(); }, 1000);
9427: var i = 1;
9428: function inc() {
9429: set(i+1);
9430: history.pushState(i, 'Line - ' + i);
9431: }
9432: function set(newI) {
9433: i = newI;
9434: document.forms.F.I.value = newI;
9435: }
9436: </SCRIPT>
9437: <BODY ONPOPSTATE="set(event.state)">
9438: <FORM NAME=F>
9439: State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
9440: </FORM></pre>
9441:
9442: </div>
9443:
9444:
9445:
9446: <h4 id="the-location-interface"><span class="secno">5.5.3 </span>The <code><a href="#location">Location</a></code> interface</h4>
9447:
9448: <p>Each <code><a href="dom.html#document">Document</a></code> object in a <a href="#browsing-context">browsing
9449: context</a>'s session history is associated with a unique
9450: instance of a <code><a href="#location">Location</a></code> object.</p>
9451:
9452: <dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-location"><a href="#dom-document-location">location</a></code> [ = <var title="">value</var> ]</dt>
9453: <dt><var title="">window</var> . <code title="dom-location"><a href="#dom-location">location</a></code> [ = <var title="">value</var> ]</dt>
9454:
9455: <dd>
9456:
9457: <p>Returns a <code><a href="#location">Location</a></code> object with the current page's location.</p>
9458:
9459: <p>Can be set, to navigate to another page.</p>
9460:
9461: </dd>
9462:
9463: </dl><div class="impl">
9464:
9465: <p>The <dfn id="dom-document-location" title="dom-document-location"><code>location</code></dfn> attribute
9466: of the <code><a href="dom.html#document">Document</a></code> interface must return the
9467: <code><a href="#location">Location</a></code> object for that <code><a href="dom.html#document">Document</a></code> object,
9468: if it is in a <a href="#browsing-context">browsing context</a>, and null otherwise.</p>
9469:
9470: <p>The <dfn id="dom-location" title="dom-location"><code>location</code></dfn>
9471: attribute of the <code><a href="#window">Window</a></code> interface must return the
9472: <code><a href="#location">Location</a></code> object for that <code><a href="#window">Window</a></code> object's
9473: <code><a href="dom.html#document">Document</a></code>.</p>
9474:
9475: </div>
9476:
9477: <p><code><a href="#location">Location</a></code> objects provide a representation of <a href="dom.html#the-document's-address" title="the document's address">their document's address</a>, and
9478: allow the <a href="#current-entry">current entry</a> of the <a href="#browsing-context">browsing
9479: context</a>'s session history to be changed, by adding or
9480: replacing entries in the <code title="dom-history"><a href="#dom-history">history</a></code>
9481: object.</p>
9482:
9483: <pre class="idl">interface <dfn id="location">Location</dfn> {
9484: stringifier attribute DOMString <a href="#dom-location-href" title="dom-location-href">href</a>;
9485: void <a href="#dom-location-assign" title="dom-location-assign">assign</a>(DOMString url);
9486: void <a href="#dom-location-replace" title="dom-location-replace">replace</a>(DOMString url);
9487: void <a href="#dom-location-reload" title="dom-location-reload">reload</a>();
9488:
9489: // <a href="urls.html#url-decomposition-idl-attributes">URL decomposition IDL attributes</a> <!-- blame brendan for these "innovative" names -->
9490: attribute DOMString <a href="#dom-location-protocol" title="dom-location-protocol">protocol</a>;
9491: attribute DOMString <a href="#dom-location-host" title="dom-location-host">host</a>;
9492: attribute DOMString <a href="#dom-location-hostname" title="dom-location-hostname">hostname</a>;
9493: attribute DOMString <a href="#dom-location-port" title="dom-location-port">port</a>;
9494: attribute DOMString <a href="#dom-location-pathname" title="dom-location-pathname">pathname</a>;
9495: attribute DOMString <a href="#dom-location-search" title="dom-location-search">search</a>;
9496: attribute DOMString <a href="#dom-location-hash" title="dom-location-hash">hash</a>;
9497: };</pre>
9498:
9499: <dl class="domintro"><dt><var title="">location</var> . <code title="dom-location-href"><a href="#dom-location-href">href</a></code> [ = <var title="">value</var> ]</dt>
9500:
9501: <dd>
9502:
9503: <p>Returns the current page's location.</p>
9504:
9505: <p>Can be set, to navigate to another page.</p>
9506:
9507: </dd>
9508:
9509: <dt><var title="">location</var> . <code title="dom-location-assign"><a href="#dom-location-assign">assign</a></code>(<var title="">url</var>)</dt>
9510:
9511: <dd>
9512:
9513: <p>Navigates to the given page.</p>
9514:
9515: </dd>
9516:
9517: <dt><var title="">location</var> . <code title="dom-location-replace"><a href="#dom-location-replace">replace</a></code>(<var title="">url</var>)</dt>
9518:
9519: <dd>
9520:
9521: <p>Removes the current page from the session history and navigates to the given page.</p>
9522:
9523: </dd>
9524:
9525: <dt><var title="">location</var> . <code title="dom-location-reload"><a href="#dom-location-reload">reload</a></code>()</dt>
9526:
9527: <dd>
9528:
9529: <p>Reloads the current page.</p>
9530:
9531: </dd>
9532:
9533: </dl><div class="impl">
9534:
9535: <p>The <dfn id="dom-location-href" title="dom-location-href"><code>href</code></dfn>
9536: attribute must return <a href="dom.html#the-document's-address" title="the document's address">the
9537: address</a> of the associated <code><a href="dom.html#document">Document</a></code> object, as an
9538: <a href="urls.html#absolute-url">absolute URL</a>.</p>
9539:
9540: <p>On setting, if the <code><a href="#location">Location</a></code> object's associated
9541: <code><a href="dom.html#document">Document</a></code> object has <a href="#completely-loaded">completely loaded</a>,
9542: then the user agent must act as if the <code title="dom-location-assign"><a href="#dom-location-assign">assign()</a></code> method had been called
9543: with the new value as its argument. Otherwise, the user agent must
9544: act as if the <code title="dom-location-replace"><a href="#dom-location-replace">replace()</a></code>
9545: method had been called with the new value as its argument.</p>
9546: <!--DONAV location.href, defined in terms of the paragraphs below-->
9547:
9548: <p>When the <dfn id="dom-location-assign" title="dom-location-assign"><code>assign(<var title="">url</var>)</code></dfn> method is invoked, the UA must
9549: <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the argument, relative to
9550: the <a href="#entry-script">entry script</a>'s <a href="#script's-base-url" title="script's base URL">base
9551: URL</a>, and if that is successful, must
9552: <a href="#navigate">navigate</a><!--DONAV location.href/assign--> the
9553: <a href="#browsing-context">browsing context</a> to the specified <var title="">url</var>. If the <a href="#browsing-context">browsing context</a>'s
9554: <a href="#session-history">session history</a> contains only one
9555: <code><a href="dom.html#document">Document</a></code>, and that was the <code><a href="urls.html#about:blank">about:blank</a></code>
9556: <code><a href="dom.html#document">Document</a></code> created when the <a href="#browsing-context">browsing context</a>
9557: was created, then the navigation must be done with <a href="#replacement-enabled">replacement
9558: enabled</a>.</p> <!-- READ ME WHEN EDITING THIS: IE and Firefox
9559: only seem to treat it that way if the DOM is still a virgin DOM;
9560: Safari doesn't check that. Thus this might need changing if testing
9561: shows the IE/Firefox behaviour is required here. -->
9562:
9563: <p>When the <dfn id="dom-location-replace" title="dom-location-replace"><code>replace(<var title="">url</var>)</code></dfn> method is invoked, the UA must
9564: <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the argument, relative to
9565: the <a href="#entry-script">entry script</a>'s <a href="#script's-base-url" title="script's base URL">base
9566: URL</a>, and if that is successful,
9567: <a href="#navigate">navigate</a><!--DONAV location.href/replace--> the
9568: <a href="#browsing-context">browsing context</a> to the specified <var title="">url</var> with <a href="#replacement-enabled">replacement enabled</a>.</p>
9569:
9570: <p>Navigation for the <code title="dom-location-assign"><a href="#dom-location-assign">assign()</a></code> and <code title="dom-location-replace"><a href="#dom-location-replace">replace()</a></code> methods must be done
9571: with the <a href="#script's-browsing-context" title="script's browsing context">browsing
9572: context</a> of the script that invoked the method as the
9573: <a href="#source-browsing-context">source browsing context</a>.</p>
9574:
9575: <p>If the <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> step of the
9576: <code title="dom-location-assign"><a href="#dom-location-assign">assign()</a></code> and <code title="dom-location-replace"><a href="#dom-location-replace">replace()</a></code> methods is not
9577: successful, then the user agent must instead throw a
9578: <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception.</p>
9579:
9580: <p>When the <dfn id="dom-location-reload" title="dom-location-reload"><code>reload()</code></dfn> method is
9581: invoked, the user agent must run the appropriate steps from the
9582: following list:</p>
9583:
9584: <dl class="switch"><dt>If the currently executing <a href="#concept-task" title="concept-task">task</a> is the dispatch of a <code title="event-resize">resize</code> event in response to the user
9585: resizing the <a href="#browsing-context">browsing context</a></dt>
9586:
9587: <dd><p>Repaint the <a href="#browsing-context">browsing context</a> and abort these
9588: steps.</p></dd> <!-- this theoretically would have no effect but in
9589: practice can be useful to work around rendering bugs. -->
9590:
9591: <dt>If the <a href="#browsing-context">browsing context</a>'s <a href="#active-document">active
9592: document</a> is <a href="the-iframe-element.html#an-iframe-srcdoc-document">an <code>iframe</code> <code title="attr-iframe-srcdoc">srcdoc</code> document</a></dt>
9593:
9594: <dd><p><a href="the-iframe-element.html#process-the-iframe-attributes" title="process the iframe attributes">Reprocess the
9595: <code>iframe</code> attributes</a> of the <a href="#browsing-context">browsing
9596: context</a>'s <a href="#browsing-context-container">browsing context container</a>.</p></dd>
9597:
9598: <dt>If the <a href="#browsing-context">browsing context</a>'s <a href="#active-document">active
9599: document</a> has its <a href="dom.html#reload-override-flag">reload override
9600: flag</a> set</dt>
9601:
9602: <dd><p>Perform <a href="dom.html#an-overridden-reload">an overridden reload</a>.</p></dd>
9603:
9604: <dt>Otherwise</dt>
9605:
9606: <dd><p><a href="#navigate">Navigate</a><!--DONAV location.reload()--> the
9607: <a href="#browsing-context">browsing context</a> to <a href="dom.html#the-document's-address">the document's
9608: address</a> with <a href="#replacement-enabled">replacement enabled</a>. The
9609: <a href="#source-browsing-context">source browsing context</a> must be the <a href="#browsing-context">browsing
9610: context</a> being navigated.</p></dd> <!-- it appears that
9611: document.reload() always uses GET and does not, e.g., re-POST. -->
9612:
9613: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/141 -->
9614:
9615: </dl><p>When a user requests that the current page of a <a href="#browsing-context">browsing
9616: context</a> be reloaded through a user interface element, the
9617: user agent should <a href="#navigate">navigate</a><!--DONAV user reload--> the
9618: <a href="#browsing-context">browsing context</a> to the same resource as
9619: <code><a href="dom.html#document">Document</a></code>, with <a href="#replacement-enabled">replacement enabled</a>. In the
9620: case of non-idempotent methods (e.g. HTTP POST), the user agent
9621: should prompt the user to confirm the operation first, since
9622: otherwise transactions (e.g. purchases or database modifications)
9623: could be repeated. User agents may allow the user to explicitly
9624: override any caches when reloading. If <a href="#browsing-context">browsing
9625: context</a>'s <a href="#active-document">active document</a>'s <a href="dom.html#reload-override-flag">reload
9626: override flag</a> is set, then the user agent may instead perform
9627: <a href="dom.html#an-overridden-reload">an overridden reload</a> rather than the navigation
9628: described in this paragraph.</p>
9629:
9630: </div>
9631:
9632: <p>The <code><a href="#location">Location</a></code> interface also has the complement of
9633: <a href="urls.html#url-decomposition-idl-attributes">URL decomposition IDL attributes</a>, <dfn id="dom-location-protocol" title="dom-location-protocol"><code>protocol</code></dfn>, <dfn id="dom-location-host" title="dom-location-host"><code>host</code></dfn>, <dfn id="dom-location-port" title="dom-location-port"><code>port</code></dfn>, <dfn id="dom-location-hostname" title="dom-location-hostname"><code>hostname</code></dfn>, <dfn id="dom-location-pathname" title="dom-location-pathname"><code>pathname</code></dfn>, <dfn id="dom-location-search" title="dom-location-search"><code>search</code></dfn>, and <dfn id="dom-location-hash" title="dom-location-hash"><code>hash</code></dfn>. <span class="impl">These must follow the rules given for <a href="urls.html#url-decomposition-idl-attributes">URL
9634: decomposition IDL attributes</a>, with the <a href="urls.html#concept-uda-input" title="concept-uda-input">input</a> being <a href="dom.html#the-document's-address" title="the
9635: document's address">the address</a> of the associated
9636: <code><a href="dom.html#document">Document</a></code> object, as an <a href="urls.html#absolute-url">absolute URL</a> (same
9637: as the <code title="dom-location-href"><a href="#dom-location-href">href</a></code> attribute), and
9638: the <a href="urls.html#concept-uda-setter" title="concept-uda-setter">common setter action</a>
9639: being the same as setting the <code title="dom-location-href"><a href="#dom-location-href">href</a></code> attribute to the new output
9640: value.</span></p> <!--TOPIC:HTML-->
9641:
9642:
9643: <!--ADD-TOPIC:Security-->
9644: <div class="impl">
9645:
9646: <h5 id="security-location"><span class="secno">5.5.3.1 </span>Security</h5>
9647:
9648: <p id="security-3">User agents must throw a
9649: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception whenever any of the members of a
9650: <code><a href="#location">Location</a></code> object are accessed by scripts whose
9651: <a href="#effective-script-origin">effective script origin</a> is not the <a href="#same-origin" title="same
9652: origin">same</a> as the <code><a href="#location">Location</a></code> object's associated
9653: <code><a href="dom.html#document">Document</a></code>'s <a href="#effective-script-origin">effective script origin</a>, with
9654: the following exceptions:</p>
9655:
9656: <ul><li>The <code title="dom-location-href"><a href="#dom-location-href">href</a></code> setter, if the
9657: script is running in a <a href="#browsing-context">browsing context</a> that is
9658: <a href="#allowed-to-navigate">allowed to navigate</a> the browsing context with which
9659: the <code><a href="#location">Location</a></code> object is associated
9660:
9661: </li><li>The <code title="dom-location-replace"><a href="#dom-location-replace">replace()</a></code> method,
9662: if the script is running in a <a href="#browsing-context">browsing context</a> that is
9663: <a href="#allowed-to-navigate">allowed to navigate</a> the browsing context with which
9664: the <code><a href="#location">Location</a></code> object is associated
9665:
9666: </li></ul></div>
9667: <!--REMOVE-TOPIC:Security-->
9668:
9669:
9670: <div class="impl">
9671:
9672: <h4 id="history-notes"><span class="secno">5.5.4 </span>Implementation notes for session history</h4>
9673: <!-- don't change the ID without updating multiple internal links -->
9674:
9675: <p><i>This section is non-normative.</i></p>
9676: <p>The <code><a href="#history-1">History</a></code> interface is not meant to place
9677: restrictions on how implementations represent the session history to
9678: the user.</p>
9679:
9680: <p>For example, session history could be implemented in a tree-like
9681: manner, with each page having multiple "forward" pages. This
9682: specification doesn't define how the linear list of pages in the
9683: <code title="dom-history"><a href="#dom-history">history</a></code> object are derived from the
9684: actual session history as seen from the user's perspective.</p>
9685:
9686: <p>Similarly, a page containing two <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>s has a <code title="dom-history"><a href="#dom-history">history</a></code> object distinct from the
9687: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>s' <code title="dom-history"><a href="#dom-history">history</a></code>
9688: objects, despite the fact that typical Web browsers present the user
9689: with just one "Back" button, with a session history that interleaves
9690: the navigation of the two inner frames and the outer page.</p>
9691:
9692: <!--ADD-TOPIC:Security-->
9693: <p><strong>Security</strong>: It is suggested that to avoid letting
9694: a page "hijack" the history navigation facilities of a UA by abusing
9695: <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code>, the UA
9696: provide the user with a way to jump back to the previous page
9697: (rather than just going back to the previous state). For example,
9698: the back button could have a drop down showing just the pages in the
9699: session history, and not showing any of the states. Similarly, an
9700: aural browser could have two "back" commands, one that goes back to
9701: the previous state, and one that jumps straight back to the previous
9702: page.</p>
9703:
9704: <p>In addition, a user agent could ignore calls to <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> that are invoked on
9705: a timer, or from event listeners that are not triggered in response
9706: to a clear user action, or that are invoked in rapid succession.</p>
9707: <!--REMOVE-TOPIC:Security-->
9708:
9709: </div>
9710:
9711:
9712: <h3 id="browsing-the-web"><span class="secno">5.6 </span>Browsing the Web</h3>
9713:
9714: <div class="impl">
9715:
9716: <h4 id="navigating-across-documents"><span class="secno">5.6.1 </span>Navigating across documents</h4>
9717:
9718: <p>Certain actions cause the <a href="#browsing-context">browsing context</a> to
9719: <i><a href="#navigate">navigate</a></i> to a new resource. Navigation always involves
9720: <dfn id="source-browsing-context">source browsing context</dfn>, which is the browsing context
9721: which was responsible for starting the navigation.</p>
9722:
9723: <p class="example">For example, <a href="#following-hyperlinks-0" title="following
9724: hyperlinks">following a hyperlink</a>, <a href="#concept-form-submit" title="concept-form-submit">form submission</a>, and the <code title="dom-open"><a href="#dom-open">window.open()</a></code> and <code title="dom-location-assign"><a href="#dom-location-assign">location.assign()</a></code> methods can all
9725: cause a browsing context to navigate.</p>
9726:
9727: <p>A user agent may provide various ways for the user to explicitly
9728: cause a browsing context to navigate, in addition to those defined
9729: in this specification.</p>
9730:
9731: <!-- NAVIGATE <dfn>navigate</dfn> -->
9732: <!-- For places that _call_ this, as opposed to just referring to
9733: it, search for "DONAV" -->
9734: <p>When a browsing context is <dfn id="navigate" title="navigate">navigated</dfn>
9735: to a new resource, the user agent must run the following steps:</p>
9736:
9737: <ol><li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
9738:
9739: <li id="sandboxLinks">
9740:
9741: <p>If the <a href="#source-browsing-context">source browsing context</a> is not the same as
9742: the <a href="#browsing-context">browsing context</a> being navigated, and the
9743: <a href="#source-browsing-context">source browsing context</a> is not one of the <a href="#ancestor-browsing-context" title="ancestor browsing context">ancestor browsing
9744: contexts</a> of the <a href="#browsing-context">browsing context</a> being
9745: navigated, and the <a href="#browsing-context">browsing context</a> being navigated
9746: is not a <a href="#top-level-browsing-context">top-level browsing context</a>, and the
9747: <a href="#source-browsing-context">source browsing context</a>'s <a href="#active-document">active
9748: document</a>'s <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has its
9749: <a href="#sandboxed-navigation-browsing-context-flag">sandboxed navigation browsing context flag</a> set, then
9750: abort these steps.</p>
9751:
9752: <p>Otherwise, if the <a href="#browsing-context">browsing context</a> being navigated
9753: is a <a href="#top-level-browsing-context">top-level browsing context</a>, and is one of the
9754: <a href="#ancestor-browsing-context" title="ancestor browsing context">ancestor browsing
9755: contexts</a> of the <a href="#source-browsing-context">source browsing context</a>, and
9756: the <a href="#source-browsing-context">source browsing context</a>'s <code><a href="dom.html#document">Document</a></code>'s
9757: <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has its <a href="#sandboxed-top-level-navigation-browsing-context-flag">sandboxed
9758: top-level navigation browsing context flag</a> set, then abort
9759: these steps.</p>
9760:
9761: <p>Otherwise, if the <a href="#browsing-context">browsing context</a> being navigated
9762: is a <a href="#top-level-browsing-context">top-level browsing context</a>, and is not one of
9763: the <a href="#ancestor-browsing-context" title="ancestor browsing context">ancestor browsing
9764: contexts</a> of the <a href="#source-browsing-context">source browsing context</a>, and
9765: the <a href="#source-browsing-context">source browsing context</a>'s <code><a href="dom.html#document">Document</a></code>'s
9766: <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has its <a href="#sandboxed-navigation-browsing-context-flag">sandboxed
9767: navigation browsing context flag</a> set, and the <a href="#source-browsing-context">source
9768: browsing context</a> is not the <a href="#one-permitted-sandboxed-navigator">one permitted sandboxed
9769: navigator</a> of the <a href="#browsing-context">browsing context</a> being
9770: navigated, then abort these steps.</p> <!-- we do not check the
9771: /sandboxed auxiliary navigation browsing context flag/ here,
9772: that's only for actually opening the new top-level browsing
9773: context. -->
9774:
9775: <p>In all of these cases, the user agent may additionally offer to
9776: open the new resource in a new <a href="#top-level-browsing-context">top-level browsing
9777: context</a> or in the <a href="#top-level-browsing-context">top-level browsing context</a>
9778: of the <a href="#source-browsing-context">source browsing context</a>, at the user's option,
9779: in which case the user agent must <a href="#navigate">navigate</a><!--DONAV
9780: sandbox manual load--> that designated <a href="#top-level-browsing-context">top-level browsing
9781: context</a> to the new resource as if the user had requested it
9782: independently.</p>
9783:
9784: <p class="note">Doing so, however, can be dangerous, as it means
9785: that the user is overriding the author's explicit request to
9786: sandbox the content.</p>
9787:
9788: </li>
9789:
9790: <li id="seamlessLinks"><p>If the <a href="#source-browsing-context">source browsing
9791: context</a> is the same as the <a href="#browsing-context">browsing context</a>
9792: being navigated, and this browsing context has its <a href="the-iframe-element.html#seamless-browsing-context-flag">seamless
9793: browsing context flag</a> set, and the <a href="#browsing-context">browsing
9794: context</a> being navigated was not chosen using an
9795: <dfn id="explicit-self-navigation-override">explicit self-navigation override</dfn>, then find the
9796: nearest <a href="#ancestor-browsing-context">ancestor browsing context</a> that does not have
9797: its <a href="the-iframe-element.html#seamless-browsing-context-flag">seamless browsing context flag</a> set, and continue
9798: these steps as if <em>that</em> <a href="#browsing-context">browsing context</a> was
9799: the one that was going to be <a href="#navigate" title="navigate">navigated</a> instead.</p></li>
9800:
9801: <li><p>If there is a preexisting attempt to navigate the
9802: <a href="#browsing-context">browsing context</a>, and the <a href="#source-browsing-context">source browsing
9803: context</a> is the same as the <a href="#browsing-context">browsing context</a>
9804: being navigated, and that attempt is currently
9805: running the <a href="#unload-a-document">unload a document</a> algorithm, and the
9806: <a href="#origin-0">origin</a> of the <a href="urls.html#url">URL</a> of the resource being
9807: loaded in that navigation is not the <a href="#same-origin">same origin</a> as
9808: the <a href="#origin-0">origin</a> of the <a href="urls.html#url">URL</a> of the resource
9809: being loaded in <em>this</em> navigation, then abort these steps
9810: without affecting the preexisting attempt to navigate the
9811: <a href="#browsing-context">browsing context</a>.</p></li>
9812: <!-- http://www.hixie.ch/tests/adhoc/html/navigation/unload/ -->
9813:
9814: <li><p>If a <a href="#concept-task" title="concept-task">task</a> queued by the
9815: <a href="#traverse-the-history-by-a-delta">traverse the history by a delta</a> algorithm is running
9816: the <a href="#unload-a-document">unload a document</a> algorithm for the <a href="#active-document">active
9817: document</a> of the <a href="#browsing-context">browsing context</a> being
9818: navigated, then abort these steps without affecting the
9819: <a href="#unload-a-document">unload a document</a> algorithm or the aforementioned
9820: history traversal task.</p></li> <!-- this stops pages from
9821: hijacking the back/forward button -->
9822:
9823: <li id="navigate-fragid-step"><p><i>Fragment identifiers</i>: If
9824: the <a href="urls.html#absolute-url">absolute URL</a> of the new resource is the same as
9825: the <a href="dom.html#the-document's-address" title="the document's address">address</a> of the
9826: <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing context</a>
9827: being navigated, ignoring any <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> components of those
9828: <a href="urls.html#url" title="URL">URLs</a>, and the new resource is to be
9829: fetched using HTTP GET <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or
9830: equivalent</a>, and the <a href="urls.html#absolute-url">absolute URL</a> of the new
9831: resource has a <a href="urls.html#url-fragment" title="url-fragment"><fragment></a>
9832: component (even if it is empty), then <a href="#scroll-to-fragid" title="navigate-fragid">navigate to that fragment identifier</a>
9833: and abort these steps.</p></li>
9834:
9835: <li><p>Cancel any preexisting attempt to navigate the
9836: <a href="#browsing-context">browsing context</a>, including canceling any instances of
9837: the <a href="urls.html#fetch">fetch</a> algorithm started by those attempts. If one
9838: of those attempts has already <a href="#create-a-document-object" title="create a document
9839: object">created a new <code>Document</code> object</a>, <a href="#abort-a-document" title="abort a document">abort</a> that <code><a href="dom.html#document">Document</a></code>
9840: also. (Previous navigation attempts whose <a href="urls.html#fetch">fetch</a>
9841: requests have <em>finished</em> are unaffected, however.)</p></li>
9842:
9843: <li><p>If the new resource is to be handled using a mechanism that
9844: does not affect the browsing context, e.g. ignoring the navigation
9845: request altogether because the specified scheme is not one of the
9846: supported protocols, then abort these steps and proceed with that
9847: mechanism instead.</p></li>
9848:
9849: <li><p><a href="#prompt-to-unload-a-document" title="prompt to unload a document">Prompt to
9850: unload</a> the <code><a href="dom.html#document">Document</a></code> object. If the user
9851: <a href="#refused-to-allow-the-document-to-be-unloaded">refused to allow the document to be unloaded</a>, then
9852: abort these steps.</p></li>
9853:
9854: <li><p><a href="#abort-a-document" title="abort a document">Abort</a> the
9855: <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing
9856: context</a>.</p></li>
9857:
9858: <li>
9859:
9860: <p>If the new resource is to be handled by displaying some sort of
9861: inline content, e.g. an error message because the specified scheme
9862: is not one of the supported protocols, or an inline prompt to
9863: allow the user to select <a href="#dom-navigator-registerprotocolhandler" title="dom-navigator-registerProtocolHandler">a registered
9864: handler</a> for the given scheme, then <a href="#read-ua-inline" title="navigate-ua-inline">display the inline content</a> and
9865: abort these steps.</p>
9866:
9867: <p class="note">In the case of a registered handler being used,
9868: the algorithm will be reinvoked with a new URL to handle the
9869: request.</p>
9870:
9871: </li>
9872:
9873: <li>
9874:
9875: <p>If the resource has already been obtained (e.g. because it is
9876: being used to populate an <code><a href="the-object-element.html#the-object-element">object</a></code> element's new
9877: <a href="#child-browsing-context">child browsing context</a>), then skip this step.</p>
9878:
9879: <p>Otherwise:</p>
9880:
9881: <p>If the new resource is to be fetched using HTTP GET <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or equivalent</a>, and
9882: there are <a href="#relevant-application-cache" title="relevant application cache">relevant
9883: application caches</a> that are identified by a URL with the
9884: <a href="#same-origin">same origin</a> as the URL in question, and that have
9885: this URL as one of their entries, excluding entries marked as
9886: <a href="#concept-appcache-foreign" title="concept-appcache-foreign">foreign</a>, and whose
9887: <a href="#concept-appcache-mode" title="concept-appcache-mode">mode</a> is <a href="#concept-appcache-mode-fast" title="concept-appcache-mode-fast">fast</a>, and the user agent
9888: is not in a mode where it will avoid using <a href="#application-cache" title="application cache">application caches</a> then get the
9889: resource from the <a href="#concept-appcache-selection" title="concept-appcache-selection">most
9890: appropriate application cache</a> of those that match.</p>
9891:
9892: <p class="example">For example, imagine an HTML page with an
9893: associated application cache displaying an image and a form, where
9894: the image is also used by several other application caches. If the
9895: user right-clicks on the image and chooses "View Image", then the
9896: user agent could decide to show the image from any of those
9897: caches, but it is likely that the most useful cache for the user
9898: would be the one that was used for the aforementioned HTML
9899: page. On the other hand, if the user submits the form, and the
9900: form does a POST submission, then the user agent will not use an
9901: application cache at all; the submission will be made to the
9902: network.</p>
9903:
1.191 sruby 9904: <p>Otherwise, <a href="urls.html#fetch">fetch</a><!--FETCH--> the new resource,
9905: with the <i>manual redirect flag</i> set.</p>
1.190 sruby 9906:
9907: <p>If the resource is being fetched using a method other than one
9908: <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">equivalent to</a>
9909: HTTP's GET<!-- or HEAD (but that can't happen) -->, or, if the
9910: <a href="#navigate" title="navigate">navigation algorithm</a> was invoked as
9911: a result of the <a href="#concept-form-submit" title="concept-form-submit">form submission
9912: algorithm</a>, then the <a href="urls.html#fetch" title="fetch">fetching
9913: algorithm</a> must be invoked from the <a href="#origin-0">origin</a> of
9914: the <a href="#active-document">active document</a> of the <a href="#source-browsing-context">source browsing
9915: context</a>, if any.</p> <!-- potentially http-origin privacy
9916: sensitive -->
9917:
9918: <p>If the <a href="#browsing-context">browsing context</a> being navigated is a
9919: <a href="#child-browsing-context">child browsing context</a> for an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> or
9920: <code><a href="the-object-element.html#the-object-element">object</a></code> element, then the <a href="urls.html#fetch" title="fetch">fetching
9921: algorithm</a> must be invoked from the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> or
9922: <code><a href="the-object-element.html#the-object-element">object</a></code> element's <a href="#browsing-context-scope-origin">browsing context scope
9923: origin</a>, if it has one.</p> <!-- potentially http-origin
9924: privacy sensitive -->
9925:
9926: <p>The <a href="urls.html#fetch">fetch</a> algorithm must <a href="#delay-the-load-event">delay the load
9927: event</a> of the <a href="#browsing-context">browsing context</a>.</p> <!-- this
9928: is what makes <iframe> elements delay the load event of their
9929: parent browsing context when their child browsing context is in
9930: between this step and the step that starts the parser. -->
9931:
9932: </li>
9933:
9934: <li>
9935:
9936: <!-- ******************** ASYNC BOUNDARY ******************** -->
9937:
9938: <p>At this point, unless this step has already been reached once
9939: before in the execution of this instance of the algorithm, the
9940: user agents must return to whatever algorithm invoked the
9941: navigation steps and must continue these steps asynchronously.</p>
9942:
9943: </li>
9944:
9945: <li>
9946:
9947: <p>If fetching the resource results in a redirect, and either the
9948: <a href="urls.html#url">URL</a> of the target of the redirect has the <a href="#same-origin">same
9949: origin</a> as the original resource, or the resource is being
9950: obtained using the POST method or a safe method (in HTTP terms),
9951: return to <a href="#navigate-fragid-step">the step labeled
9952: "fragment identifiers"</a> with the new resource, except that if
9953: the <a href="urls.html#url">URL</a> of the target of the redirect does not have a
9954: fragment identifier and the <a href="urls.html#url">URL</a> of the resource that
9955: led to the redirect does, then the fragment identifier of the
9956: resource that led to the redirect must be propagated to the
9957: <a href="urls.html#url">URL</a> of the target of the redirect.</p>
9958:
9959: <p class="example">So for instance, if the original URL was "<code title="">http://example.com/#!sample</code>" and "<code title="">http://example.com/</code>" is found to redirect to
9960: "<code title="">https://example.com/</code>", the URL of the new
9961: resource will be "<code title="">https://example.com/#!sample</code>".</p>
9962:
9963: <p>Otherwise, if fetching the resource results in a redirect but
9964: the <a href="urls.html#url">URL</a> of the target of the redirect does not have
9965: the <a href="#same-origin">same origin</a> as the original resource and the
9966: resource is being obtained using a method that is neither the POST
9967: method nor a safe method (in HTTP terms), then abort these
9968: steps. The user agent may indicate to the user that the navigation
9969: has been aborted for security reasons.</p>
9970:
9971: </li>
9972:
9973: <li><p>Wait for one or more bytes to be available or for the user
9974: agent to establish that the resource in question is empty. During
9975: this time, the user agent may allow the user to cancel this
9976: navigation attempt or start other navigation attempts.</p></li>
9977:
9978: <li>
9979:
9980: <p>If the resource was not fetched from an <a href="#application-cache">application
9981: cache</a>, and was to be fetched using HTTP GET <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or equivalent</a>, and its
9982: URL <a href="#concept-appcache-matches-fallback" title="concept-appcache-matches-fallback">matches the
9983: fallback namespace</a> of one or more <a href="#relevant-application-cache" title="relevant
9984: application cache">relevant application caches</a>, and the
9985: <a href="#concept-appcache-selection" title="concept-appcache-selection">most appropriate
9986: application cache</a> of those that match does not have an
9987: entry in its <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online
9988: whitelist</a> that has the <a href="#same-origin">same origin</a> as the
9989: resource's URL and that is a <a href="infrastructure.html#prefix-match">prefix match</a> for the
9990: resource's URL, and the user didn't cancel the navigation attempt
9991: during the previous step, and the navigation attempt failed (e.g.
9992: the server returned a 4xx or 5xx status code <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a>, or
9993: there was a DNS error), then:</p> <!-- note that a redirect can
9994: never reach this point as it is handled earlier, meaning that a
9995: captive portal captures URLs in fallback namespaces and you can't
9996: ever get to the fallback file of a resource if you have a captive
9997: portal -->
9998:
9999: <p>Let <var title="">candidate</var> be the <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback resource</a>
10000: specified for the <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a> in
10001: question. If multiple application caches match, the user agent
10002: must use the fallback of the <a href="#concept-appcache-selection" title="concept-appcache-selection">most appropriate application
10003: cache</a> of those that match.</p>
10004:
10005: <p>If <var title="">candidate</var> is not marked as <a href="#concept-appcache-foreign" title="concept-appcache-foreign">foreign</a>, then the user
10006: agent must discard the failed load and instead continue along
10007: these steps using <var title="">candidate</var> as the
10008: resource. <a href="dom.html#the-document's-address">The document's address</a>, if appropriate,
10009: will still be the originally requested URL, not the fallback URL,
10010: but the user agent may indicate to the user that the original page
10011: load failed, that the page used was a fallback resource, and what
10012: the URL of the fallback resource actually is.</p>
10013:
10014: </li>
10015:
10016: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
10017:
10018: <li>
10019:
10020: <p><i>Resource handling</i>: If the resource's out-of-band
10021: metadata (e.g. HTTP headers), not counting any <a href="urls.html#content-type" title="Content-Type">type information</a> (such as the
10022: Content-Type HTTP header), requires some sort of processing that
10023: will not affect the browsing context, then perform that processing
10024: and abort these steps.</p>
10025:
10026: <div class="note">
10027: <p>Such processing might be triggered by, amongst other things, the
10028: following:</p>
10029: <ul class="brief"><li>HTTP status codes (e.g. 204 No Content or 205 Reset Content)</li>
10030: <li>Network errors (e.g. the network interface being unavailable)</li>
10031: <li>Cryptographic protocol failures (e.g. an incorrect TLS certificate)</li>
10032: <!-- Other schemes are handled earlier -->
10033: <!-- Content-Disposition is handled below -->
10034: <!-- Content-Type is handled in subsequent steps -->
10035: <!-- ...and I can't think of any others. -->
10036: </ul></div>
10037:
10038: <!--DOWNLOAD-->
10039:
10040: <!-- theoretically, HTTP 205 processing would occur here,
10041: resetting all forms with no other effect. However, it seems nobody
10042: actually wants to use this ability, so requiring it here seems
10043: like unnecessary work. -->
10044:
10045: <p>HTTP 401 responses that do not include a challenge recognized
10046: by the user agent must be processed as if they had no challenge,
10047: e.g. rendering the entity body as if the response had been 200
10048: OK.</p>
10049:
10050: <p>User agents may show the entity body of an HTTP 401 response
10051: even when the response does include a recognized challenge, with the
10052: option to login being included in a non-modal fashion, to enable
10053: the information provided by the server to be used by the user
10054: before authenticating. Similarly, user agents should allow the
10055: user to authenticate (in a non-modal fashion) against
10056: authentication challenges included in other responses such as HTTP
10057: 200 OK responses, effectively allowing resources to present HTTP
10058: login forms without requiring their use.</p>
10059:
10060: </li>
10061:
10062: <li><p>Let <var title="">type</var> be <a href="urls.html#content-type-sniffing-0" title="Content-Type
10063: sniffing">the sniffed type of the resource</a>.</p></li>
10064:
10065: <li><p>If the user agent has been configured to process resources
10066: of the given <var title="">type</var> using some mechanism other
10067: than rendering the content in a <a href="#browsing-context">browsing context</a>, then
10068: skip this step. Otherwise, if the <var title="">type</var> is one
10069: of the following types, jump to the appropriate entry in the
10070: following list, and process the resource as described there:</p>
10071:
10072: <dl class="switch"><!-- an <span>HTML MIME type</span> --><dt>"<code><a href="#text/html">text/html</a></code>"</dt>
10073: <dd>Follow the steps given in the <a href="#read-html" title="navigate-html">HTML document</a> section, and abort
10074: these steps.</dd>
10075:
10076: <!-- an <span>XML MIME type</span> -->
10077: <dt>"<code>application/xml</code>"</dt>
10078: <dt>"<code>text/xml</code>"</dt>
10079: <dt>"<code>image/svg+xml</code>"</dt>
10080: <dt>"<code><a href="#application/xhtml+xml">application/xhtml+xml</a></code>"</dt>
10081: <dt>Any other type ending in "<code title="">+xml</code>" that is not an <a href="#explicitly-supported-xml-type">explicitly supported XML type</a></dt> <!-- no need to say that the _subtype_ ends in "+xml" so long as the "sniffed type" algorithm continues to drop parameters -->
10082: <dd>Follow the steps given in the <a href="#read-xml" title="navigate-xml">XML
10083: document</a> section. If that section determines that the
10084: content is <em>not</em> to be displayed as a generic XML
10085: document, then proceed to the next step in this overall set of
10086: steps. Otherwise, abort these steps.</dd>
10087:
10088: <dt>"<code>text/plain</code>"</dt>
10089: <dd>Follow the steps given in the <a href="#read-text" title="navigate-text">plain text file</a> section, and abort
10090: these steps.</dd>
10091:
10092: <dt>"<code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code>"</dt>
10093: <dd>Follow the steps given in the <a href="#read-multipart-x-mixed-replace" title="navigate-multipart-x-mixed-replace">multipart/x-mixed-replace</a>
10094: section, and abort these steps.</dd>
10095:
10096: <dt>A supported image, video, or audio type</dt>
10097: <dd>Follow the steps given in the <a href="#read-media" title="navigate-media">media</a> section, and abort these
10098: steps.</dd>
10099:
10100: <dt>A type that will use an external application to render the
10101: content in the <a href="#browsing-context">browsing context</a></dt>
10102: <dd>Follow the steps given in the <a href="#read-plugin" title="navigate-plugin">plugin</a> section, and abort these
10103: steps.</dd>
10104:
10105: </dl><p>An <dfn id="explicitly-supported-xml-type">explicitly supported XML type</dfn> is one for which
10106: the user agent is configured to use an external application to
10107: render the content (either a <a href="infrastructure.html#plugin">plugin</a> rendering
10108: directly in the <a href="#browsing-context">browsing context</a>, or a separate
10109: application), or one for which the user agent has dedicated
10110: processing rules (e.g. a Web browser with a built-in Atom feed
10111: viewer would be said to explicitly support the
10112: <code>application/atom+xml</code> MIME type), or one for which the
10113: user agent has a dedicated handler (e.g. one registered using
10114: <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code>).</p>
10115:
10116: <p><dfn id="set-the-document's-address" title="set the document's address">Setting the document's
10117: address</dfn>: If there is no <dfn id="override-url">override URL</dfn>, then any
10118: <code><a href="dom.html#document">Document</a></code> created by these steps must have its <a href="dom.html#the-document's-address" title="the document's address">address</a> set to the
10119: <a href="urls.html#url">URL</a> that was originally to be <a href="urls.html#fetch" title="fetch">fetched</a>, ignoring any other data that was
10120: used to obtain the resource (e.g. the entity body in the case of a
10121: POST submission is not part of <a href="dom.html#the-document's-address">the document's
10122: address</a>, nor is the URL of the fallback resource in the
10123: case of the original load having failed and that URL having been
10124: found to match a <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
10125: namespace</a>). However, if there <em>is</em> an <a href="#override-url">override
10126: URL</a>, then any <code><a href="dom.html#document">Document</a></code> created by these steps
10127: must have its <a href="dom.html#the-document's-address" title="the document's address">address</a>
10128: set to that <a href="urls.html#url">URL</a> instead.</p>
10129:
10130: <p class="note">An <a href="#override-url" title="override URL">override URL</a>
10131: is set when <a href="#concept-js-deref" title="concept-js-deref">dereferencing a
10132: <code>javascript:</code> URL</a>.</p>
10133:
10134: <p><dfn id="create-a-document-object" title="create a Document object">Creating a new
10135: <code>Document</code> object</dfn>: when a <code><a href="dom.html#document">Document</a></code>
10136: is created as part of the above steps, the user agent must
10137: additionally run the following algorithm as part of creating the
10138: new object:</p>
10139:
10140: <ol><li><p>Create a new <code><a href="#window">Window</a></code> object, and associate it
10141: with the <code><a href="dom.html#document">Document</a></code>, with one exception: if the
10142: <a href="#browsing-context">browsing context</a>'s only entry in its <a href="#session-history">session
10143: history</a> is the <code><a href="urls.html#about:blank">about:blank</a></code>
10144: <code><a href="dom.html#document">Document</a></code> that was added when the <a href="#browsing-context">browsing
10145: context</a> was created, and navigation is occurring with
10146: <a href="#replacement-enabled">replacement enabled</a>, and that <code><a href="dom.html#document">Document</a></code>
10147: has the <a href="#same-origin">same origin</a> as the new
10148: <code><a href="dom.html#document">Document</a></code>, then use the <code><a href="#window">Window</a></code> object of
10149: that <code><a href="dom.html#document">Document</a></code> instead, and change the <code title="dom-document"><a href="#dom-document-0">document</a></code> attribute of the
10150: <code><a href="#window">Window</a></code> object to point to the new
10151: <code><a href="dom.html#document">Document</a></code>.</p>
10152:
10153: </li><li>
10154:
10155: <p>Populate <code><a href="dom.html#document">Document</a></code>'s <a href="#active-sandboxing-flag-set">active sandboxing flag
10156: set</a> with the union of the flags that are present in the
10157: following <a href="#sandboxing-flag-set" title="sandboxing flag set">sandboxing flag
10158: sets</a> at the time the <code><a href="dom.html#document">Document</a></code> object is
10159: created:</p>
10160:
10161: <ul><li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
10162: context</a> is a <a href="#top-level-browsing-context">top-level browsing context</a>,
10163: then: the flags set on the <a href="#browsing-context">browsing context</a>'s
10164: <a href="#popup-sandboxing-flag-set">popup sandboxing flag set</a>.</p></li>
10165:
10166: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
10167: context</a> is a <a href="#nested-browsing-context">nested browsing context</a>, then:
10168: the flags set on the <a href="#browsing-context">browsing context</a>'s
10169: <a href="#iframe-sandboxing-flag-set"><code>iframe</code> sandboxing flag set</a>.</p></li>
10170:
10171: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
10172: context</a> is a <a href="#nested-browsing-context">nested browsing context</a>, then:
10173: the flags set on the <a href="#browsing-context">browsing context</a>'s <a href="#parent-browsing-context">parent
10174: browsing context</a>'s <a href="#active-document">active document</a>'s
10175: <a href="#active-sandboxing-flag-set">active sandboxing flag set</a>.</p></li>
10176:
10177: <li><p>The flags set on the resource's <a href="#forced-sandboxing-flag-set">forced sandboxing
10178: flag set</a>.</p></li>
10179:
10180: </ul><p>Each resource obtained by this <a href="#navigate" title="navigate">navigation algorithm</a> has a <dfn id="forced-sandboxing-flag-set">forced
10181: sandboxing flag set</dfn>, which is a <a href="#sandboxing-flag-set">sandboxing flag
10182: set</a>. A resource by default has no flags set in its
10183: <a href="#forced-sandboxing-flag-set">forced sandboxing flag set</a>, but other
10184: specifications can define that certain flags are set.</p>
10185:
10186: <p class="note">In particular, the <a href="#forced-sandboxing-flag-set">forced sandboxing flag
10187: set</a> is used by the Content Security Policy specification.
10188: <a href="#refsCSP">[CSP]</a></p>
10189:
10190: </li>
10191:
10192: </ol></li>
10193:
10194: <li id="navigate-non-Document">
10195:
10196: <p><i>Non-document content</i>: If, given <var title="">type</var>, the new resource is to be handled by
10197: displaying some sort of inline content, e.g. a native rendering of
10198: the content, an error message because the specified type is not
10199: supported, or an inline prompt to allow the user to select <a href="#dom-navigator-registercontenthandler" title="dom-navigator-registerContentHandler">a registered
10200: handler</a> for the given type, then <a href="#read-ua-inline" title="navigate-ua-inline">display the inline content</a> and
10201: abort these steps.</p>
10202:
10203: <p class="note">In the case of a registered handler being used,
10204: the algorithm will be reinvoked with a new URL to handle the
10205: request.</p>
10206:
10207: </li>
10208:
10209: <li><p>Otherwise, the document's <var title="">type</var> is such
10210: that the resource will not affect the browsing context, e.g.
10211: because the resource is to be handed to an external application or
1.191 sruby 10212: because it is an unknown type that will be processed <a href="#as-a-download">as a
10213: download</a>. Process the resource appropriately.</p>
1.190 sruby 10214:
10215: </li></ol><hr><p>Some of the sections below, to which the above algorithm defers
10216: in certain cases, require the user agent to <dfn id="update-the-session-history-with-the-new-page">update the session
10217: history with the new page</dfn>. When a user agent is required to do
10218: this, it must <a href="#queue-a-task">queue a task</a> (associated with the
10219: <code><a href="dom.html#document">Document</a></code> object of the <a href="#current-entry">current entry</a>, not
10220: the new one) to run the following steps:</p>
10221:
10222: <ol><li>
10223:
10224: <p><a href="#unload-a-document" title="unload a document">Unload</a> the
10225: <code><a href="dom.html#document">Document</a></code> object of the <a href="#current-entry">current entry</a>,
10226: with the <var title="">recycle</var> parameter set to false.</p>
10227:
10228: <p>If this instance of the <a href="#navigate" title="navigate">navigation</a> algorithm is canceled while
10229: this step is running the <a href="#unload-a-document">unload a document</a> algorithm,
10230: then the <a href="#unload-a-document">unload a document</a> algorithm must be allowed
10231: to run to completion, but this instance of the <a href="#navigate" title="navigate">navigation</a> algorithm must not run beyond
10232: this step. (In particular, for instance, the cancelation of this
10233: algorithm does not abort any event dispatch or script execution
10234: occurring as part of unloading the document or its
10235: descendants.)</p>
10236:
10237: </li>
10238:
10239: <li>
10240:
10241: <dl><dt>If the navigation was initiated for <dfn id="entry-update">entry update</dfn> of
10242: an entry</dt>
10243:
10244: <dd>
10245:
10246: <ol><li><p>Replace the <code><a href="dom.html#document">Document</a></code> of the entry being
10247: updated, and any other entries that referenced the same
10248: document as that entry, with the new
10249: <code><a href="dom.html#document">Document</a></code>.</p></li>
10250:
10251: <li><p><a href="#traverse-the-history">Traverse the history</a> to the new
10252: entry.</p></li>
10253:
10254: </ol><p class="note">This can only happen if the entry being updated
10255: is no the <a href="#current-entry">current entry</a>, and can never happen with
10256: <a href="#replacement-enabled">replacement enabled</a>. (It happens when the user
10257: tried to traverse to a session history entry that no longer had
10258: a <code><a href="dom.html#document">Document</a></code> object.)</p>
10259:
10260: </dd>
10261:
10262:
10263: <dt>Otherwise</dt>
10264:
10265: <dd>
10266:
10267: <ol><li>
10268:
10269: <p>Remove all the entries in the <a href="#browsing-context">browsing
10270: context</a>'s <a href="#session-history">session history</a> after the
10271: <a href="#current-entry">current entry</a>. If the <a href="#current-entry">current entry</a>
10272: is the last entry in the session history, then no entries are
10273: removed.</p>
10274:
10275: <p class="note">This <a href="#history-notes">doesn't
10276: necessarily have to affect</a> the user agent's user
10277: interface.</p>
10278:
10279: </li>
10280:
10281: <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a>
10282: queued by the <a href="#history-traversal-task-source">history traversal task source</a> that
10283: are associated with any <code><a href="dom.html#document">Document</a></code> objects in the
10284: <a href="#top-level-browsing-context">top-level browsing context</a>'s <a href="#document-family">document
10285: family</a>.</p></li> <!-- so the network is racing
10286: history.back(), in the case of setting location.href="" and
10287: then calling history.back() -->
10288:
10289: <li><p>Append a new entry at the end of the <code><a href="#history-1">History</a></code>
10290: object representing the new resource and its
10291: <code><a href="dom.html#document">Document</a></code> object and related state.</p></li>
10292:
10293: <li><p><a href="#traverse-the-history">Traverse the history</a> to the new entry. If
10294: the navigation was initiated with <a href="#replacement-enabled">replacement
10295: enabled</a>, then the traversal must itself be initiated
10296: with <a href="#replacement-enabled">replacement enabled</a>.</p>
10297:
10298: </li>
10299:
10300: </ol></dd>
10301:
10302: </dl></li>
10303:
10304: <li><p>The <a href="#navigate" title="navigate">navigation algorithm</a> has
10305: now <dfn id="concept-navigate-mature" title="concept-navigate-mature">matured</dfn>.</p></li>
10306:
10307: <li><p><i>Fragment identifier loop</i>: <a href="#spin-the-event-loop">Spin the event
10308: loop</a> for a user-agent-defined amount of time, as desired by
10309: the user agent implementor. (This is intended to allow the user
10310: agent to optimize the user experience in the face of performance
10311: concerns.)</p></li>
10312:
10313: <li><p>If the <code><a href="dom.html#document">Document</a></code> object has no parser, or its
10314: parser has <a href="#stop-parsing" title="stop parsing">stopped parsing</a>, or
10315: the user agent has reason to believe the user is no longer
10316: interested in scrolling to the fragment identifier, then abort
10317: these steps.</p></li>
10318:
10319: <li><p><a href="#scroll-to-the-fragment-identifier">Scroll to the fragment identifier</a> given in
10320: <a href="dom.html#the-document's-address">the document's address</a>. If this fails to find <a href="#the-indicated-part-of-the-document" title="the indicated part of the document">an indicated part of the
10321: document</a>, then return to the <i>fragment identifier loop</i>
10322: step.</p></li>
10323:
10324: </ol><p>The <a href="#task-source">task source</a> for this <a href="#concept-task" title="concept-task">task</a> is the <a href="#networking-task-source">networking task
10325: source</a>.</p>
10326:
10327:
10328: <h4 id="read-html"><span class="secno">5.6.2 </span><dfn title="navigate-html">Page load processing model for HTML files</dfn></h4>
10329:
10330: <p>When an HTML document is to be loaded in a <a href="#browsing-context">browsing
10331: context</a>, the user agent must <a href="#queue-a-task">queue a task</a> to
10332: <a href="#create-a-document-object">create a <code>Document</code> object</a>, mark it as being
10333: an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, set its <a href="infrastructure.html#concept-document-content-type" title="concept-document-content-type">content type</a> to "<code title="">text/html</code>", create an <a href="#html-parser">HTML parser</a>, and
10334: associate it with the document. Each <a href="#concept-task" title="concept-task">task</a> that the <a href="#networking-task-source">networking task
10335: source</a> places on the <a href="#task-queue">task queue</a> while the <a href="urls.html#fetch" title="fetch">fetching algorithm</a> runs must then fill the
10336: parser's <a href="#the-input-byte-stream">input byte stream</a> with the fetched bytes and
10337: cause the <a href="#html-parser">HTML parser</a> to perform the appropriate
10338: processing of the input stream.</p>
10339:
10340: <p class="note">The <a href="#the-input-byte-stream">input byte stream</a> converts bytes
10341: into characters for use in the <a href="#tokenization" title="tokenization">tokenizer</a>. This process relies, in part,
10342: on character encoding information found in the real <a href="urls.html#content-type" title="Content-Type">Content-Type metadata</a> of the resource;
10343: the "sniffed type" is not used for this purpose.</p>
10344:
10345: <!-- next two paragraphs are nearly identical to the navigate-text
10346: section, keep them in sync -->
10347:
10348: <p>When no more bytes are available, the user agent must <a href="#queue-a-task">queue
10349: a task</a> for the parser to process the implied EOF character,
10350: which eventually causes a <code title="event-load">load</code> event
10351: to be fired.</p>
10352:
10353: <p>After creating the <code><a href="dom.html#document">Document</a></code> object, but before any
10354: script execution, certainly before the parser <a href="#stop-parsing" title="stop
10355: parsing">stops</a>, the user agent must <a href="#update-the-session-history-with-the-new-page">update the session
10356: history with the new page</a>.</p>
10357:
10358: <p class="note"><a href="#concept-appcache-init" title="concept-appcache-init">Application
10359: cache selection</a> happens <a href="#parser-appcache">in the
10360: HTML parser</a>.</p>
10361:
10362: <p>The <a href="#task-source">task source</a> for the two tasks mentioned in this
10363: section must be the <a href="#networking-task-source">networking task source</a>.</p>
10364:
10365:
10366:
10367: <h4 id="read-xml"><span class="secno">5.6.3 </span><dfn title="navigate-xml">Page load processing model for XML files</dfn></h4>
10368:
10369: <p>When faced with displaying an XML file inline, user agents must
10370: first <a href="#create-a-document-object">create a <code>Document</code> object</a>, following
10371: the requirements of the XML and Namespaces in XML recommendations,
10372: RFC 3023, DOM Core, and other relevant specifications. <a href="#refsXML">[XML]</a> <a href="#refsXMLNS">[XMLNS]</a> <a href="#refsRFC3023">[RFC3023]</a> <a href="#refsDOMCORE">[DOMCORE]</a></p>
10373:
10374: <p>The actual HTTP headers and other metadata, not the headers as
10375: mutated or implied by the algorithms given in this specification,
10376: are the ones that must be used when determining the character
10377: encoding according to the rules given in the above
10378: specifications. Once the character encoding is established, the
10379: <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> must be set to that
10380: character encoding.</p>
10381:
10382: <p>If the root element, as parsed according to the XML
10383: specifications cited above, is found to be an <code><a href="the-html-element.html#the-html-element">html</a></code>
10384: element with an attribute <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> whose value is not the
10385: empty string, then, as soon as the element is <a href="infrastructure.html#insert-an-element-into-a-document" title="insert an
10386: element into a document">inserted into the document</a>, the user
10387: agent must <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the value of
10388: that attribute relative to that element, and if that is successful,
10389: must run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache
10390: selection algorithm</a> with the resulting <a href="urls.html#absolute-url">absolute
10391: URL</a> with any <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> component removed as
10392: the manifest URL, and passing in the newly-created
10393: <code><a href="dom.html#document">Document</a></code>. Otherwise, if the attribute is absent, its
10394: value is the empty string, or resolving its value fails, then as
10395: soon as the root element is <a href="infrastructure.html#insert-an-element-into-a-document" title="insert an element into a
10396: document">inserted into the document</a>, the user agent must run
10397: the <a href="#concept-appcache-init" title="concept-appcache-init">application cache selection
10398: algorithm</a> with no manifest, and passing in the
10399: <code><a href="dom.html#document">Document</a></code>.</p>
10400:
10401: <p class="note">Because the processing of the <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute happens
10402: only once the root element is parsed, any URLs referenced by
10403: processing instructions before the root element (such as <code title=""><?xml-stylesheet?></code> and <code title=""><?xbl?></code> PIs) will be fetched from the network and
10404: cannot be cached.</p><!-- v2: fix this somehow -->
10405:
10406: <p>User agents may examine the namespace of the root
10407: <code><a href="infrastructure.html#element">Element</a></code> node of this <code><a href="dom.html#document">Document</a></code> object to
10408: perform namespace-based dispatch to alternative processing tools,
10409: e.g. determining that the content is actually a syndication feed and
10410: passing it to a feed handler. If such processing is to take place,
10411: abort the steps in this section, and jump to <a href="#navigate-non-Document">the next step</a> (labeled
10412: "non-document content") in the <a href="#navigate">navigate</a> steps
10413: above.</p>
10414:
10415: <p>Otherwise, then, with the newly created <code><a href="dom.html#document">Document</a></code>,
10416: the user agents must <a href="#update-the-session-history-with-the-new-page">update the session history with the new
10417: page</a>. User agents may do this before the complete document
10418: has been parsed (thus achieving <i>incremental rendering</i>), and
10419: must do this before any scripts are to be executed. If the <code><a href="dom.html#document">Document</a></code>
10420: contains any element in the <a href="namespaces.html#html-namespace-0">HTML namespace</a>, the <a href="namespaces.html#svg-namespace">SVG namespace</a>,
10421: or in the <a href="namespaces.html#mathml-namespace">MathML namespace</a> then the user agent must render the
10422: <code><a href="dom.html#document">Document</a></code> according to <a href="#rendering">the rendering section</a>.
10423: If not, then a native representation of the Document, e.g. a tree view of the corresponding
10424: source, may be produced. In that case, abort the steps in this section, and jump to <a href="#navigate-non-Document">the next step</a> in the <a href="#navigate">navigate</a> steps
10425: above.</p>
10426:
10427: <p>Error messages from the parse process (e.g. XML namespace
10428: well-formedness errors) may be reported inline by mutating the
10429: <code><a href="dom.html#document">Document</a></code>.</p>
10430:
10431:
10432: <h4 id="read-text"><span class="secno">5.6.4 </span><dfn title="navigate-text">Page load processing model for text files</dfn></h4>
10433:
10434: <p>When a plain text document is to be loaded in a <a href="#browsing-context">browsing
10435: context</a>, the user agent must <a href="#queue-a-task">queue a task</a> to
10436: <a href="#create-a-document-object">create a <code>Document</code> object</a>, mark it as being
10437: an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, set its <a href="infrastructure.html#concept-document-content-type" title="concept-document-content-type">content type</a> to "<code title="">text/plain</code>", create an <a href="#html-parser">HTML parser</a>,
10438: associate it with the document, act as if the tokenizer had emitted
10439: a start tag token with the tag name "pre" followed by a single
10440: "LF" (U+000A) character<!-- to get eaten, so that a leading
10441: LF in the text/plain stream doesn't get eaten itself-->, and switch
10442: the <a href="#html-parser">HTML parser</a>'s tokenizer to the <a href="#plaintext-state">PLAINTEXT
10443: state</a>. Each <a href="#concept-task" title="concept-task">task</a> that the
10444: <a href="#networking-task-source">networking task source</a> places on the <a href="#task-queue">task
10445: queue</a> while the <a href="urls.html#fetch" title="fetch">fetching algorithm</a>
10446: runs must then fill the parser's <a href="#the-input-byte-stream">input byte stream</a> with
10447: the fetched bytes and cause the <a href="#html-parser">HTML parser</a> to perform
10448: the appropriate processing of the input stream.</p>
10449:
10450: <p>The rules for how to convert the bytes of the plain text document
10451: into actual characters, and the rules for actually rendering the
10452: text to the user, are defined in RFC 2046, RFC 3676, and subsequent
10453: versions thereof. <a href="#refsRFC2046">[RFC2046]</a> <a href="#refsRFC3676">[RFC3676]</a></p>
10454:
10455: <p>The <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> must be set to the
10456: character encoding used to decode the document.</p>
10457:
10458: <p>Upon creation of the <code><a href="dom.html#document">Document</a></code> object, the user agent
10459: must run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache
10460: selection algorithm</a> with no manifest, and passing in the
10461: newly-created <code><a href="dom.html#document">Document</a></code>.</p>
10462:
10463: <!-- next two paragraphs are nearly identical to the navigate-html
10464: section and similar to the "navigate-ua-inline" section, and the
10465: next three are similar to the navigate-media and navigate-plugin
10466: sections; keep them all in sync -->
10467:
10468: <p>When no more bytes are available, the user agent must <a href="#queue-a-task">queue
10469: a task</a> for the parser to process the implied EOF character,
10470: which eventually causes a <code title="event-load">load</code> event
10471: to be fired.</p>
10472:
10473: <p>After creating the <code><a href="dom.html#document">Document</a></code> object, but potentially
10474: before the page has finished parsing, the user agent must
10475: <a href="#update-the-session-history-with-the-new-page">update the session history with the new page</a>.</p>
10476:
10477: <p>User agents may add content to the <code><a href="the-head-element.html#the-head-element">head</a></code> element of
10478: the <code><a href="dom.html#document">Document</a></code>, e.g. linking to a style sheet or an XBL
10479: binding, providing script, giving the document a <code><a href="the-title-element.html#the-title-element">title</a></code>,
10480: etc.</p>
10481:
10482: <p class="note">In particular, if the user agent supports the <code title="">Format=Flowed</code> feature of RFC 3676 then the user
10483: agent would need to apply extra styling to cause the text to wrap
10484: correctly and to handle the quoting feature. This could be performed
10485: using, e.g., an XBL binding or a CSS extension.</p>
10486:
10487: <p>The <a href="#task-source">task source</a> for the two tasks mentioned in this
10488: section must be the <a href="#networking-task-source">networking task source</a>.</p>
10489:
10490:
10491: <h4 id="read-multipart-x-mixed-replace"><span class="secno">5.6.5 </span><dfn title="navigate-multipart-x-mixed-replace">Page load processing model for <code>multipart/x-mixed-replace</code> resources</dfn></h4>
10492:
10493: <p>When a resource with the type
10494: <code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code> is to be loaded in a
10495: <a href="#browsing-context">browsing context</a>, the user agent must parse the
10496: resource using the rules for multipart types. <a href="#refsRFC2046">[RFC2046]</a></p>
10497:
10498: <p>For each body part obtained from the resource, the user agent
10499: must run a new instance of the <a href="#navigate">navigate</a> algorithm,
10500: starting from the <i>resource handling</i> step, using the new body
10501: part as the resource being navigated, with <a href="#replacement-enabled">replacement
10502: enabled</a> if a previous body part from the same resource
10503: resulted in a <code><a href="dom.html#document">Document</a></code> object being <a href="#create-a-document-object" title="create
10504: a document object">created</a>, and otherwise using the same
10505: setup as the <a href="#navigate">navigate</a> attempt that caused this section
10506: to be invoked in the first place.</p>
10507:
10508: <p>For the purposes of algorithms processing these body parts as if
10509: they were complete stand-alone resources, the user agent must act as
10510: if there were no more bytes for those resources whenever the
10511: boundary following the body part is reached.</p>
10512:
10513: <p class="note">Thus, <code title="event-load">load</code> events
10514: (and for that matter <code title="event-unload">unload</code>
10515: events) do fire for each body part loaded.</p>
10516:
10517:
10518: <h4 id="read-media"><span class="secno">5.6.6 </span><dfn title="navigate-media">Page load processing model for media</dfn></h4>
10519:
10520: <p>When an image, video, or audio resource is to be loaded in a
10521: <a href="#browsing-context">browsing context</a>, the user agent should <a href="#create-a-document-object">create a
10522: <code>Document</code> object</a>, mark it as being an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, set its <a href="infrastructure.html#concept-document-content-type" title="concept-document-content-type">content type</a> to the sniffed
10523: MIME type of the resource (<var title="">type</var> in the
10524: <a href="#navigate">navigate</a> algorithm), append an <code><a href="the-html-element.html#the-html-element">html</a></code>
10525: element to the <code><a href="dom.html#document">Document</a></code>, append a <code><a href="the-head-element.html#the-head-element">head</a></code>
10526: element and a <code><a href="the-body-element.html#the-body-element">body</a></code> element to the <code><a href="the-html-element.html#the-html-element">html</a></code>
10527: element, append an element <var title="">host element</var> for the
10528: media, as described below, to the <code><a href="the-body-element.html#the-body-element">body</a></code> element, and set
10529: the appropriate attribute of the element <var title="">host
10530: element</var>, as described below, to the address of the image,
10531: video, or audio resource.</p>
10532:
10533: <p>The element <var title="">host element</var> to create for the
10534: media is the element given in the table below in the second cell of
10535: the row whose first cell describes the media. The appropriate
10536: attribute to set is the one given by the third cell in that same
10537: row.</p>
10538:
10539: <table><thead><tr><th> Type of media
10540: </th><th> Element for the media
10541: </th><th> Appropriate attribute
10542: </th></tr><tr><td> Image
10543: </td><td> <code><a href="the-img-element.html#the-img-element">img</a></code>
10544: </td><td> <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code>
10545: </td></tr><tr><td> Video
10546: </td><td> <code><a href="the-video-element.html#the-video-element">video</a></code>
10547: </td><td> <code title="attr-media-src"><a href="media-elements.html#attr-media-src">src</a></code>
10548: </td></tr><tr><td> Audio
10549: </td><td> <code><a href="the-audio-element.html#the-audio-element">audio</a></code>
10550: </td><td> <code title="attr-media-src"><a href="media-elements.html#attr-media-src">src</a></code>
10551: </td></tr></thead></table><!-- next three paragraphs are similar to the navigate-text section,
10552: keep them in sync --><p>Then, the user agent must act as if it had <a href="#stop-parsing" title="stop
10553: parsing">stopped parsing</a>.</p>
10554:
10555: <p>Upon creation of the <code><a href="dom.html#document">Document</a></code> object, the user agent
10556: must run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache
10557: selection algorithm</a> with no manifest, and passing in the
10558: newly-created <code><a href="dom.html#document">Document</a></code>.</p>
10559:
10560: <p>After creating the <code><a href="dom.html#document">Document</a></code> object, but potentially
10561: before the page has finished fully loading, the user agent must
10562: <a href="#update-the-session-history-with-the-new-page">update the session history with the new page</a>.</p>
10563:
10564: <p>User agents may add content to the <code><a href="the-head-element.html#the-head-element">head</a></code> element of
10565: the <code><a href="dom.html#document">Document</a></code>, or attributes to the element <var title="">host element</var>, e.g. to link to a style sheet or an XBL
10566: binding, to provide a script, to give the document a
10567: <code><a href="the-title-element.html#the-title-element">title</a></code>, to make the media <a href="media-elements.html#attr-media-autoplay" title="attr-media-autoplay">autoplay</a>, etc.</p>
10568:
10569:
10570: <h4 id="read-plugin"><span class="secno">5.6.7 </span><dfn title="navigate-plugin">Page load processing model for content that uses plugins</dfn></h4>
10571:
10572: <p>When a resource that requires an external resource to be rendered
10573: is to be loaded in a <a href="#browsing-context">browsing context</a>, the user agent
10574: should <a href="#create-a-document-object">create a <code>Document</code> object</a>, mark it
10575: as being an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, set
10576: its <a href="infrastructure.html#concept-document-content-type" title="concept-document-content-type">content type</a> to
10577: the sniffed MIME type of the resource (<var title="">type</var> in
10578: the <a href="#navigate">navigate</a> algorithm), append an <code><a href="the-html-element.html#the-html-element">html</a></code>
10579: element to the <code><a href="dom.html#document">Document</a></code>, append a <code><a href="the-head-element.html#the-head-element">head</a></code>
10580: element and a <code><a href="the-body-element.html#the-body-element">body</a></code> element to the <code><a href="the-html-element.html#the-html-element">html</a></code>
10581: element, append an <code><a href="the-embed-element.html#the-embed-element">embed</a></code> to the <code><a href="the-body-element.html#the-body-element">body</a></code>
10582: element, and set the <code title="attr-embed-src"><a href="the-embed-element.html#attr-embed-src">src</a></code>
10583: attribute of the <code><a href="the-embed-element.html#the-embed-element">embed</a></code> element to the address of the
10584: resource.</p>
10585:
10586: <!-- next three paragraphs are similar to the navigate-text section,
10587: keep them in sync -->
10588:
10589: <p>Then, the user agent must act as if it had <a href="#stop-parsing" title="stop
10590: parsing">stopped parsing</a>.</p>
10591:
10592: <p>Upon creation of the <code><a href="dom.html#document">Document</a></code> object, the user agent
10593: must run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache
10594: selection algorithm</a> with no manifest, and passing in the
10595: newly-created <code><a href="dom.html#document">Document</a></code>.</p>
10596:
10597: <p>After creating the <code><a href="dom.html#document">Document</a></code> object, but potentially
10598: before the page has finished fully loading, the user agent must
10599: <a href="#update-the-session-history-with-the-new-page">update the session history with the new page</a>.</p>
10600:
10601: <p>User agents may add content to the <code><a href="the-head-element.html#the-head-element">head</a></code> element of
10602: the <code><a href="dom.html#document">Document</a></code>, or attributes to the <code><a href="the-embed-element.html#the-embed-element">embed</a></code>
10603: element, e.g. to link to a style sheet or an XBL binding, or to give
10604: the document a <code><a href="the-title-element.html#the-title-element">title</a></code>.</p>
10605:
10606: <p class="note" id="sandboxPluginNavigate">If the
10607: <code><a href="dom.html#document">Document</a></code>'s <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has
10608: its <a href="#sandboxed-plugins-browsing-context-flag">sandboxed plugins browsing context flag</a> set, the
10609: synthesized <code><a href="the-embed-element.html#the-embed-element">embed</a></code> element will <a href="the-embed-element.html#sandboxPluginEmbed">fail to render the content</a> if the
10610: relevant <a href="infrastructure.html#plugin">plugin</a> cannot be <a href="infrastructure.html#concept-plugin-secure" title="concept-plugin-secure">secured</a>.</p>
10611:
10612:
10613: <h4 id="read-ua-inline"><span class="secno">5.6.8 </span><dfn title="navigate-ua-inline">Page load processing model for inline content that doesn't have a DOM</dfn></h4>
10614:
10615: <p>When the user agent is to display a user agent page inline in a
10616: <a href="#browsing-context">browsing context</a>, the user agent should <a href="#create-a-document-object">create a
10617: <code>Document</code> object</a>, mark it as being an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>, set its <a href="infrastructure.html#concept-document-content-type" title="concept-document-content-type">content type</a> to "<code title="">text/html</code>", and then either associate that
10618: <code><a href="dom.html#document">Document</a></code> with a custom rendering that is not rendered
10619: using the normal <code><a href="dom.html#document">Document</a></code> rendering rules, or mutate
10620: that <code><a href="dom.html#document">Document</a></code> until it represents the content the user
10621: agent wants to render.</p>
10622:
10623: <!-- next two paragraphs are similar to the navigate-text section,
10624: keep them in sync -->
10625:
10626: <p>Once the page has been set up, the user agent must act as if it
10627: had <a href="#stop-parsing" title="stop parsing">stopped parsing</a>.</p>
10628:
10629: <p>Upon creation of the <code><a href="dom.html#document">Document</a></code> object, the user agent
10630: must run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache
10631: selection algorithm</a> with no manifest, passing in the
10632: newly-created <code><a href="dom.html#document">Document</a></code>.</p>
10633:
10634: <p>After creating the <code><a href="dom.html#document">Document</a></code> object, but potentially
10635: before the page has been completely set up, the user agent must
10636: <a href="#update-the-session-history-with-the-new-page">update the session history with the new page</a>.</p>
10637:
10638:
10639:
10640: <h4 id="scroll-to-fragid"><span class="secno">5.6.9 </span><dfn title="navigate-fragid">Navigating to a fragment identifier</dfn></h4>
10641:
10642: <p>When a user agent is supposed to navigate to a fragment
10643: identifier, then the user agent must <a href="#queue-a-task">queue a task</a> to
10644: run the following steps:</p>
10645:
10646: <ol><li>
10647:
10648: <p>Remove all the entries in the <a href="#browsing-context">browsing context</a>'s
10649: <a href="#session-history">session history</a> after the <a href="#current-entry">current
10650: entry</a>. If the <a href="#current-entry">current entry</a> is the last entry
10651: in the session history, then no entries are removed.</p>
10652:
10653: <p class="note">This <a href="#history-notes">doesn't necessarily
10654: have to affect</a> the user agent's user interface.</p>
10655:
10656: </li>
10657:
10658: <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> queued by
10659: the <a href="#history-traversal-task-source">history traversal task source</a> that are associated
10660: with any <code><a href="dom.html#document">Document</a></code> objects in the <a href="#top-level-browsing-context">top-level
10661: browsing context</a>'s <a href="#document-family">document family</a>.</p></li>
10662:
10663: <li><p>Append a new entry at the end of the <code><a href="#history-1">History</a></code>
10664: object representing the new resource and its <code><a href="dom.html#document">Document</a></code>
10665: object and related state. Its <a href="urls.html#url">URL</a> must be set to the
10666: address to which the user agent was <a href="#navigate" title="navigate">navigating</a>. The title must be left
10667: unset.</p></li>
10668:
10669: <li><p><a href="#traverse-the-history">Traverse the history</a> to the new entry. This
10670: will <a href="#scroll-to-the-fragment-identifier">scroll to the fragment identifier</a> given in what
10671: is now <a href="dom.html#the-document's-address">the document's address</a>.</p></li>
10672:
10673: </ol><p class="note">If the scrolling fails because the relevant <a href="infrastructure.html#concept-id" title="concept-id">ID</a> has not yet been parsed, then the
10674: original <a href="#navigate" title="navigate">navigation</a> algorithm will
10675: take care of the scrolling instead, as the last few steps of its
10676: <a href="#update-the-session-history-with-the-new-page">update the session history with the new page</a>
10677: algorithm.</p>
10678:
10679: <hr><p>When the user agent is required to <dfn id="scroll-to-the-fragment-identifier">scroll to the fragment
10680: identifier</dfn>, it must either change the scrolling position of
10681: the document using the <a href="infrastructure.html#scroll-an-element-into-view">scroll an element into view</a>
10682: algorithm defined in the CSSOM View specification, with the <var title="">align to top flag</var> set, or perform some other action,
10683: such that <a href="#the-indicated-part-of-the-document">the indicated part of the document</a> is brought
10684: to the user's attention. If there is no indicated part, or if the
10685: indicated part is not <a href="#being-rendered">being rendered</a>, then the user
10686: agent must not scroll anywhere. <a href="#refsCSSOMVIEW">[CSSOMVIEW]</a></p>
10687:
10688: <p><dfn id="the-indicated-part-of-the-document">The indicated part of the document</dfn> is the one that the
10689: fragment identifier, if any, identifies. The semantics of the
10690: fragment identifier in terms of mapping it to a specific DOM Node is
10691: defined by the specification that defines the <a href="infrastructure.html#mime-type">MIME type</a>
10692: used by the <code><a href="dom.html#document">Document</a></code> (for example, the processing of
10693: fragment identifiers for <a href="infrastructure.html#xml-mime-type" title="XML MIME type">XML MIME
10694: types</a> is the responsibility of RFC3023). <a href="#refsRFC3023">[RFC3023]</a></p>
10695:
10696: <p>For HTML documents (and <a href="infrastructure.html#html-mime-type" title="HTML MIME type">HTML MIME
10697: types</a>), the following processing model must be followed to
10698: determine what <a href="#the-indicated-part-of-the-document">the indicated part of the document</a>
10699: is.</p>
10700:
10701: <ol><li><p><a href="urls.html#parse-a-url" title="parse a url">Parse</a> the <a href="urls.html#url">URL</a>,
10702: and let <var title="">fragid</var> be the <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> component of the
10703: URL.</p></li><!-- parsing can't fail, since we checked earlier on
10704: when navigating -->
10705:
10706: <li><p>If <var title="">fragid</var> is the empty string, then
10707: <a href="#the-indicated-part-of-the-document">the indicated part of the document</a> is the top of the
10708: document; stop the algorithm here.</p></li>
10709:
10710: <li><p>Let <var title="">decoded fragid</var> be the result of
10711: expanding any sequences of percent-encoded octets in <var title="">fragid</var> that are valid UTF-8 sequences into Unicode
10712: characters as defined by UTF-8. If any percent-encoded octets in
10713: that string are not valid UTF-8 sequences (e.g. they expand to
10714: surrogate code points), then skip this step and the next one.</p>
10715:
10716: </li><li><p>If this step was not skipped and there is an element in the
10717: DOM that has an <a href="infrastructure.html#concept-id" title="concept-id">ID</a> exactly equal to
10718: <var title="">decoded fragid</var>, then the first such element in
10719: tree order is <a href="#the-indicated-part-of-the-document">the indicated part of the document</a>; stop
10720: the algorithm here.</p></li>
10721:
10722: <li><p>If there is an <code><a href="the-a-element.html#the-a-element">a</a></code> element in the DOM that has a
10723: <code title="attr-a-name"><a href="#attr-a-name">name</a></code> attribute whose value is
10724: exactly equal to <var title="">fragid</var> (<em>not</em> <var title="">decoded fragid</var>), then the first such element in tree
10725: order is <a href="#the-indicated-part-of-the-document">the indicated part of the document</a>; stop the
10726: algorithm here.</p></li>
10727:
10728: <li><p>If <var title="">fragid</var> is an <a href="infrastructure.html#ascii-case-insensitive">ASCII
10729: case-insensitive</a> match for the string <code title="">top</code>, then <a href="#the-indicated-part-of-the-document">the indicated part of the
10730: document</a> is the top of the document; stop the algorithm
10731: here.</p></li>
10732:
10733: <li><p>Otherwise, there is no <a href="#the-indicated-part-of-the-document" title="the indicated part of
10734: the document">indicated part of the document</a>.</p></li>
10735:
10736: </ol><p>For the purposes of the interaction of HTML with Selectors' <code title="selector-target">:target</code> pseudo-class, the
10737: <dfn id="target-element"><i>target element</i></dfn> is <a href="#the-indicated-part-of-the-document">the indicated part of the
10738: document</a>, if that is an element; otherwise there is no
10739: <i><a href="#target-element">target element</a></i>. <a href="#refsSELECTORS">[SELECTORS]</a></p>
10740:
10741: <p>The <a href="#task-source">task source</a> for the task mentioned in this
10742: section must be the <a href="#dom-manipulation-task-source">DOM manipulation task source</a>.</p>
10743:
10744: </div>
10745:
10746:
10747:
10748: <h4 id="history-traversal"><span class="secno">5.6.10 </span>History traversal</h4> <!-- session history -->
10749:
10750: <div class="impl">
10751:
10752: <p>When a user agent is required to <dfn id="traverse-the-history">traverse the history</dfn>
10753: to a <var title="">specified entry</var>, optionally with
10754: <a href="#replacement-enabled">replacement enabled</a>, the user agent must act as
10755: follows.</p>
10756:
10757: <p class="note">This algorithm is not just invoked when <a href="#traverse-the-history-by-a-delta" title="traverse the history by a delta">explicitly going back or
10758: forwards in the session history</a> — it is also invoked in
10759: other situations, for example when <a href="#navigate" title="navigate">navigating
10760: a browsing context</a>, as part of <a href="#update-the-session-history-with-the-new-page" title="update the
10761: session history with the new page">updating the session history with
10762: the new page</a>.</p>
10763:
10764: <ol><li><p>If there is no longer a <code><a href="dom.html#document">Document</a></code> object for the
10765: entry in question, <a href="#navigate">navigate</a><!--DONAV history traversal
10766: after eviction--> the browsing context to the location for that
10767: entry to perform an <a href="#entry-update">entry update</a> of that entry, and
10768: abort these steps. The "<a href="#navigate">navigate</a>" algorithm reinvokes
10769: this "traverse" algorithm to complete the traversal, at which point
10770: there <em>is</em> a <code><a href="dom.html#document">Document</a></code> object and so this step
10771: gets skipped. The navigation must be done using the same
10772: <a href="#source-browsing-context">source browsing context</a> as was used the first time
10773: this entry was created. (This can never happen with
10774: <a href="#replacement-enabled">replacement enabled</a>.)</p></li>
10775:
10776: <li><p>If the <a href="#current-entry">current entry</a>'s title was not set by the
10777: <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> or <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code> methods,
10778: then set its title to the value returned by the <code title="dom-document-title"><a href="dom.html#document.title">document.title</a></code> IDL
10779: attribute.</p></li>
10780:
10781: <li><p>If appropriate, update the <a href="#current-entry">current entry</a> in the
10782: <a href="#browsing-context">browsing context</a>'s <code><a href="dom.html#document">Document</a></code> object's
10783: <code><a href="#history-1">History</a></code> object to reflect any state that the user
10784: agent wishes to persist. The entry is then said to be <a href="#an-entry-with-persisted-user-state">an
10785: entry with persisted user state</a>.</p></li>
10786:
10787: <li><p>If the <var title="">specified entry</var> has a different
10788: <code><a href="dom.html#document">Document</a></code> object than the <a href="#current-entry">current entry</a>
10789: then the following substeps:</p>
10790:
10791: <ol><li>
10792:
10793: <p>If the browsing context is a <a href="#top-level-browsing-context">top-level browsing
10794: context</a>, but not an <a href="#auxiliary-browsing-context">auxiliary browsing
10795: context</a>, and the <a href="#origin-0">origin</a> of the
10796: <code><a href="dom.html#document">Document</a></code> of the <var title="">specified entry</var>
10797: is not the <a href="#same-origin" title="same origin">same</a> as the
10798: <a href="#origin-0">origin</a> of the <code><a href="dom.html#document">Document</a></code> of the
10799: <a href="#current-entry">current entry</a>, then run the following
10800: sub-sub-steps:</p>
10801:
10802: <ol><li><p>The current <a href="#browsing-context-name">browsing context name</a> must be
10803: stored with all the entries in the history that are associated
10804: with <code><a href="dom.html#document">Document</a></code> objects with the <a href="#same-origin">same
10805: origin</a> as the <a href="#active-document">active document</a> <em>and</em>
10806: that are contiguous with the <a href="#current-entry">current entry</a>.</p></li>
10807:
10808: <li id="resetBCName"><p>The browsing context's <a href="#browsing-context-name">browsing
10809: context name</a> must be unset.</p></li>
10810:
10811: </ol></li>
10812:
10813: <li id="appcache-history-2"><p>Make the <var title="">specified
10814: entry</var>'s <code><a href="dom.html#document">Document</a></code> object the <a href="#active-document">active
10815: document</a> of the <a href="#browsing-context">browsing context</a>.</p></li>
10816:
10817: <li>
10818:
10819: <p>If the <var title="">specified entry</var> has a
10820: <a href="#browsing-context-name">browsing context name</a> stored with it, then run the
10821: following sub-sub-steps:</p>
10822:
10823: <ol><li><p>Set the browsing context's <a href="#browsing-context-name">browsing context
10824: name</a> to the name stored with the specified
10825: entry.</p></li>
10826:
10827: <li><p>Clear any <a href="#browsing-context-name" title="browsing context name">browsing
10828: context names</a> stored with all entries in the history
10829: that are associated with <code><a href="dom.html#document">Document</a></code> objects with the
10830: <a href="#same-origin">same origin</a> as the new <a href="#active-document">active
10831: document</a> and that are contiguous with the specified
10832: entry.</p></li>
10833:
10834: </ol></li>
10835:
10836: <li id="history-autocomplete"><p>If the <var title="">specified
10837: entry</var>'s <code><a href="dom.html#document">Document</a></code> has any <code><a href="the-input-element.html#the-input-element">input</a></code>
10838: elements whose <a href="common-input-element-attributes.html#resulting-autocompletion-state">resulting autocompletion state</a> is <i title="">off</i>, invoke the <a href="#concept-form-reset-control" title="concept-form-reset-control">reset algorithm</a> of each
10839: of those elements.</p></li>
10840:
10841: <li>
10842:
10843: <p>If the <a href="dom.html#current-document-readiness">current document readiness</a> of the <var title="">specified entry</var>'s <code><a href="dom.html#document">Document</a></code> is "<code title="">complete</code>", <a href="#queue-a-task">queue a task</a> to run the
10844: following sub-sub-steps:</p>
10845:
10846: <ol><li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page showing</a>
10847: flag is true, then abort this task (i.e. don't fire the event
10848: below).</p></li>
10849:
10850: <li><p>Set the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page
10851: showing</a> flag to true.</p></li>
10852:
10853: <li><p>Fire a <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code>
10854: event at the <code><a href="#window">Window</a></code> object of that
10855: <code><a href="dom.html#document">Document</a></code>, but with its <code title="dom-event-target"><a href="infrastructure.html#dom-event-target">target</a></code> set to the
10856: <code><a href="dom.html#document">Document</a></code> object (and the <code title="dom-event-currentTarget">currentTarget</code> set to the
10857: <code><a href="#window">Window</a></code> object), using the
10858: <code><a href="#pagetransitionevent">PageTransitionEvent</a></code> interface, with the <code title="dom-PageTransitionEvent-persisted"><a href="#dom-pagetransitionevent-persisted">persisted</a></code>
10859: attribute initialized to true. This event must not bubble, must
10860: not be cancelable, and has no default action.</p></li>
10861:
10862: </ol><!-- an interesting thing to test would be to traverse back
10863: during onload, before the first pageshow has fired, and then to
10864: traverse forward again, and see if we get _two_ pageshows. If
10865: so, it indicates that browsers don't have a "page showing" flag
10866: like this and that the history traversal task source has a
10867: higher priority than the DOM manipulation task source. --></li>
10868:
10869: </ol></li>
10870:
10871: <li><p>Set <a href="dom.html#the-document's-address">the document's address</a> to the URL of the
10872: <var title="">specified entry</var>.</p></li>
10873:
10874: <li><p>If the <var title="">specified entry</var> has a URL whose
10875: fragment identifier differs from that of the <a href="#current-entry">current
10876: entry</a>'s when compared in a <a href="infrastructure.html#case-sensitive">case-sensitive</a>
10877: manner, and the two share the same <code><a href="dom.html#document">Document</a></code> object,
10878: then let <var title="">hash changed</var> be true, and let <var title="">old URL</var> be the URL of the <a href="#current-entry">current entry</a>
10879: and <var title="">new URL</var> be the URL of the <var title="">specified entry</var>. Otherwise, let <var title="">hash
10880: changed</var> be false.</p></li>
10881:
10882: <li><p>If the traversal was initiated with <dfn id="replacement-enabled">replacement
10883: enabled</dfn>, remove the entry immediately before the
10884: <var title="">specified entry</var> in the session history.</p>
10885:
10886: </li><li><p>If the <var title="">specified entry</var> is not <a href="#an-entry-with-persisted-user-state">an
10887: entry with persisted user state</a>, but its URL has a fragment
10888: identifier, <a href="#scroll-to-the-fragment-identifier">scroll to the fragment
10889: identifier</a>.</p></li>
10890:
10891: <li>
10892:
10893: <p>If the entry is <a href="#an-entry-with-persisted-user-state">an entry with persisted user
10894: state</a>, the user agent may update aspects of the document
10895: and its rendering, for instance the scroll position or values of
10896: form fields, that it had previously recorded.</p>
10897:
10898: <!-- see similar paragraphs in the textarea and input sections -->
10899: <p class="note">This can even include updating the <code title="attr-dir"><a href="global-attributes.html#the-dir-attribute">dir</a></code> attribute of <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
10900: elements or <code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in either the
10901: <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a> state or the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-search">Search</a> state, if the
10902: persisted state includes the directionality of user input in such
10903: controls.</p>
10904:
10905: </li>
10906:
10907: <li><p>If the entry is a <a href="#state-object">state object</a> entry, let <var title="">state</var> be a <a href="common-dom-interfaces.html#structured-clone">structured clone</a> of that
10908: state object. Otherwise, let <var title="">state</var> be
10909: null.</p></li>
10910:
10911: <li><p>Set <code title="dom-history-state"><a href="#dom-history-state">history.state</a></code> to
10912: <var title="">state</var>.</p></li>
10913:
10914: <li><p>Let <var title="">state changed</var> be true if the
10915: <code><a href="dom.html#document">Document</a></code> of the <var title="">specified entry</var>
10916: has a <a href="#latest-entry">latest entry</a>, and that entry is not the <var title="">specified entry</var>; otherwise let it be false.</p>
10917:
10918: </li><li><p>Let the <a href="#latest-entry">latest entry</a> of the
10919: <code><a href="dom.html#document">Document</a></code> of the <var title="">specified entry</var> be
10920: the <var title="">specified entry</var>.</p></li>
10921:
10922: <li><p>If <var title="">state changed</var> is true, fire a <code title="event-popstate"><a href="#event-popstate">popstate</a></code> event at the
10923: <code><a href="#window">Window</a></code> object of the <code><a href="dom.html#document">Document</a></code>, using the
10924: <code><a href="#popstateevent">PopStateEvent</a></code> interface, with the <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code> attribute initialized
10925: to the value of <var title="">state</var>. This event must bubble
10926: but not be cancelable and has no default action.</p></li>
10927:
10928: <li><p>If <var title="">hash changed</var> is true, then fire a
10929: <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event at the
10930: <a href="#browsing-context">browsing context</a>'s <code><a href="#window">Window</a></code> object, using
10931: the <code><a href="#hashchangeevent">HashChangeEvent</a></code> interface, with the <code title="dom-HashChangeEvent-oldURL"><a href="#dom-hashchangeevent-oldurl">oldURL</a></code> attribute
10932: initialized to <var title="">old URL</var> and the <code title="dom-HashChangeEvent-newURL"><a href="#dom-hashchangeevent-newurl">newURL</a></code> attribute
10933: initialized to <var title="">new URL</var>. This event must bubble
10934: but not be cancelable and has no default action.</p></li>
10935:
10936: <li><p>The <a href="#current-entry">current entry</a> is now the <var title="">specified entry</var>.</p></li>
10937:
10938: </ol><p>The <a href="#task-source">task source</a> for the tasks mentioned above is the
10939: <a href="#dom-manipulation-task-source">DOM manipulation task source</a>.</p>
10940:
10941:
10942: <h5 id="event-definitions-0"><span class="secno">5.6.10.1 </span>Event definitions</h5>
10943:
10944: </div>
10945:
10946: <p>The <dfn id="event-popstate" title="event-popstate"><code>popstate</code></dfn> event
10947: is fired in certain cases when navigating to a <a href="#session-history-entry">session history
10948: entry</a>.</p>
10949:
10950: <pre class="idl">[Constructor(DOMString type, optional <a href="#popstateeventinit">PopStateEventInit</a> eventInitDict)]
10951: interface <dfn id="popstateevent">PopStateEvent</dfn> : <a href="infrastructure.html#event">Event</a> {
10952: readonly attribute any <a href="#dom-popstateevent-state" title="dom-PopStateEvent-state">state</a>;
10953: };
10954:
10955: dictionary <dfn id="popstateeventinit">PopStateEventInit</dfn> : <a href="infrastructure.html#eventinit">EventInit</a> {
10956: any state;
10957: };</pre>
10958:
10959: <dl class="domintro"><dt><var title="">event</var> . <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code></dt>
10960:
10961: <dd>
10962:
10963: <p>Returns a copy of the information that was provided to <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> or <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code>.</p>
10964:
10965: </dd>
10966:
10967: </dl><div class="impl">
10968:
10969: <p>The <dfn id="dom-popstateevent-state" title="dom-PopStateEvent-state"><code>state</code></dfn>
10970: attribute must return the value it was initialized to. When the
10971: object is created, this attribute must be initialized to null. It
10972: represents the context information for the event, or null, if the
10973: state represented is the initial state of the
10974: <code><a href="dom.html#document">Document</a></code>.</p>
10975:
10976: </div>
10977:
10978: <hr><p>The <dfn id="event-hashchange" title="event-hashchange"><code>hashchange</code></dfn>
10979: event is fired when navigating to a <a href="#session-history-entry">session history
10980: entry</a> whose <a href="urls.html#url">URL</a> differs from that of the
10981: previous one only in the fragment identifier.</p>
10982:
10983: <pre class="idl">[Constructor(DOMString type, optional <a href="#hashchangeeventinit">HashChangeEventInit</a> eventInitDict)]
10984: interface <dfn id="hashchangeevent">HashChangeEvent</dfn> : <a href="infrastructure.html#event">Event</a> {
10985: readonly attribute DOMString <a href="#dom-hashchangeevent-oldurl" title="dom-HashChangeEvent-oldURL">oldURL</a>;
10986: readonly attribute DOMString <a href="#dom-hashchangeevent-newurl" title="dom-HashChangeEvent-newURL">newURL</a>;
10987: };
10988:
10989: dictionary <dfn id="hashchangeeventinit">HashChangeEventInit</dfn> : <a href="infrastructure.html#eventinit">EventInit</a> {
10990: DOMString oldURL;
10991: DOMString newURL;
10992: };</pre>
10993:
10994: <dl class="domintro"><dt><var title="">event</var> . <code title="dom-HashChangeEvent-oldURL"><a href="#dom-hashchangeevent-oldurl">oldURL</a></code></dt>
10995:
10996: <dd>
10997:
10998: <p>Returns the <a href="urls.html#url">URL</a> of the <a href="#session-history-entry">session history
10999: entry</a> that was previously current.</p>
11000:
11001: </dd>
11002:
11003:
11004: <dt><var title="">event</var> . <code title="dom-HashChangeEvent-newURL"><a href="#dom-hashchangeevent-newurl">newURL</a></code></dt>
11005:
11006: <dd>
11007:
11008: <p>Returns the <a href="urls.html#url">URL</a> of the <a href="#session-history-entry">session history
11009: entry</a> that is now current.</p>
11010:
11011: </dd>
11012:
11013: </dl><div class="impl">
11014:
11015: <p>The <dfn id="dom-hashchangeevent-oldurl" title="dom-HashChangeEvent-oldURL"><code>oldURL</code></dfn>
11016: attribute must return the value it was initialized to. When the
11017: object is created, this attribute must be initialized to null. It
11018: represents context information for the event, specifically the URL
11019: of the <a href="#session-history-entry">session history entry</a> that was traversed
11020: from.</p>
11021:
11022: <p>The <dfn id="dom-hashchangeevent-newurl" title="dom-HashChangeEvent-newURL"><code>newURL</code></dfn>
11023: attribute must return the value it was initialized to. When the
11024: object is created, this attribute must be initialized to null. It
11025: represents context information for the event, specifically the URL
11026: of the <a href="#session-history-entry">session history entry</a> that was traversed to.</p>
11027:
11028: </div>
11029:
11030: <hr><p>The <dfn id="event-pageshow" title="event-pageshow"><code>pageshow</code></dfn> event
11031: is fired when traversing <em>to</em> a <a href="#session-history-entry">session history
11032: entry</a>. The <dfn id="event-pagehide" title="event-pagehide"><code>pagehide</code></dfn> event is fired
11033: when traversing <em>from</em> a <a href="#session-history-entry">session history entry</a>.
11034: The specification uses the <a href="#page-showing">page showing</a> flag to ensure
11035: that scripts receive these events in a consistent manner (e.g. that
11036: they never receive two <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code>
11037: events in a row without an intervening <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code>, or vice versa).</p>
11038:
11039: <pre class="idl">[Constructor(DOMString type, optional <a href="#pagetransitioneventinit">PageTransitionEventInit</a> eventInitDict)]
11040: interface <dfn id="pagetransitionevent">PageTransitionEvent</dfn> : <a href="infrastructure.html#event">Event</a> {
11041: readonly attribute boolean <a href="#dom-pagetransitionevent-persisted" title="dom-PageTransitionEvent-persisted">persisted</a>;
11042: };
11043:
11044: dictionary <dfn id="pagetransitioneventinit">PageTransitionEventInit</dfn> : <a href="infrastructure.html#eventinit">EventInit</a> {
11045: boolean persisted;
11046: };</pre>
11047:
11048: <dl class="domintro"><dt><var title="">event</var> . <code title="dom-PageTransitionEvent-persisted"><a href="#dom-pagetransitionevent-persisted">persisted</a></code></dt>
11049:
11050: <dd>
11051:
11052: <p>Returns false if the page is newly being loaded (and the <code title="event-load">load</code> event will fire). Otherwise, returns true.</p>
11053:
11054: </dd>
11055:
11056: </dl><div class="impl">
11057:
11058: <p>The <dfn id="dom-pagetransitionevent-persisted" title="dom-PageTransitionEvent-persisted"><code>persisted</code></dfn>
11059: attribute must return the value it was initialized to. When the
11060: object is created, this attribute must be initialized to false. It
11061: represents the context information for the event.</p>
11062:
11063: </div>
11064:
11065:
11066:
11067: <h4 id="unloading-documents"><span class="secno">5.6.11 </span>Unloading documents</h4>
11068:
11069: <div class="impl">
11070:
11071: <p>A <code><a href="dom.html#document">Document</a></code> has a <dfn id="concept-document-salvageable" title="concept-document-salvageable"><var>salvageable</var></dfn>
11072: state, which must initially be true, a <dfn id="fired-unload">fired unload</dfn> flag,
11073: which must initially be false, and a <dfn id="page-showing">page showing</dfn> flag,
11074: which must initially be false.</p>
11075:
11076: <p><a href="#event-loop" title="event loop">Event loops</a> have a
11077: <dfn id="termination-nesting-level">termination nesting level</dfn> counter, which must initially
11078: be zero.</p>
11079:
11080: <p>When a user agent is to <dfn id="prompt-to-unload-a-document">prompt to unload a document</dfn>,
11081: it must run the following steps.</p>
11082:
11083: <ol><li><p>Increase the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination
11084: nesting level</a> by one.</p></li>
11085:
11086: <li><p>Increase the <code><a href="dom.html#document">Document</a></code>'s
11087: <a href="dynamic-markup-insertion.html#ignore-opens-during-unload-counter">ignore-opens-during-unload counter</a> by one.</p></li>
11088:
11089: <li><p>Let <var title="">event</var> be a new
11090: <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code> event object with the name <code title="event-beforeunload">beforeunload</code>, which does not
11091: bubble but is cancelable.</p></li>
11092:
11093: <li><p><i>Dispatch</i>: Dispatch <var title="">event</var> at the
11094: <code><a href="dom.html#document">Document</a></code>'s <code><a href="#window">Window</a></code> object.</p></li>
11095:
11096: <li><p>Decrease the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination
11097: nesting level</a> by one.</p></li>
11098:
11099: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
11100:
11101: <li><p>If any event listeners were triggered by the earlier
11102: <i>dispatch</i> step, then set the <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state to
11103: false.</p></li>
11104:
11105: <li>
11106:
11107: <p>If the <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code>
11108: attribute of the <var title="">event</var> object is not the empty
11109: string, or if the event was canceled, then the user agent should
11110: ask the user to confirm that they wish to unload the document.</p>
11111:
11112: <p>The prompt shown by the user agent may include the string of
11113: the <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code>
11114: attribute, or some leading subset thereof. (A user agent may want
11115: to truncate the string to 1024 characters for display, for
11116: instance.)</p>
11117:
11118: <p>The user agent must <a href="#pause">pause</a> while waiting for the
11119: user's response.</p>
11120:
11121: <p>If the user did not confirm the page navigation, then the user
11122: agent <dfn id="refused-to-allow-the-document-to-be-unloaded">refused to allow the document to be unloaded</dfn>.</p>
11123:
11124: </li>
11125:
11126: <li><p>If this algorithm was invoked by another instance of the
11127: "prompt to unload a document" algorithm (i.e. through the steps
11128: below that invoke this algorithm for all descendant browsing
11129: contexts), then jump to the step labeled <i>end</i>.</p></li>
11130:
11131: <li><p>Let <var title="">descendants</var> be the <a href="#list-of-the-descendant-browsing-contexts">list of the
11132: descendant browsing contexts</a> of the
11133: <code><a href="dom.html#document">Document</a></code>.</p></li>
11134:
11135: <li>
11136:
11137: <p>If <var title="">descendants</var> is not an empty list, then
11138: for each <a href="#browsing-context">browsing context</a> <var title="">b</var> in
11139: <var title="">descendants</var> run the following substeps:</p>
11140:
11141: <ol><li><p><a href="#prompt-to-unload-a-document" title="prompt to unload a document">Prompt to
11142: unload</a> the <a href="#active-document">active document</a> of the
11143: <a href="#browsing-context">browsing context</a> <var title="">b</var>. If the user
11144: <a href="#refused-to-allow-the-document-to-be-unloaded">refused to allow the document to be unloaded</a>, then
11145: the user implicitly also <a href="#refused-to-allow-the-document-to-be-unloaded" title="refused to allow the
11146: document to be unloaded">refused to allow <em>this</em> document
11147: to be unloaded</a>; jump to the step labeled <i>end</i>.</p>
11148:
11149: </li><li><p>If <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state of
11150: the <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing
11151: context</a> <var title="">b</var> is false, then set the <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state of
11152: <em>this</em> document to false also.</p></li>
11153:
11154: </ol></li>
11155:
11156: <li><p><i>End</i>: Decrease the <code><a href="dom.html#document">Document</a></code>'s
11157: <a href="dynamic-markup-insertion.html#ignore-opens-during-unload-counter">ignore-opens-during-unload counter</a> by one.</p></li>
11158:
11159: </ol><p>When a user agent is to <dfn id="unload-a-document">unload a document</dfn>, it must run
11160: the following steps. These steps are passed an argument, <var title="">recycle</var>, which is either true or false, indicating
11161: whether the <code><a href="dom.html#document">Document</a></code> object is going to be
11162: re-used. (This is set by the <code title="dom-document-open"><a href="dynamic-markup-insertion.html#dom-document-open">document.open()</a></code> method.)</p>
11163:
11164: <ol><li><p>Increase the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination
11165: nesting level</a> by one.</p></li>
11166:
11167: <li><p>Increase the <code><a href="dom.html#document">Document</a></code>'s
11168: <a href="dynamic-markup-insertion.html#ignore-opens-during-unload-counter">ignore-opens-during-unload counter</a> by one.</p></li>
11169:
11170: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page showing</a>
11171: flag is false, then jump to the step labled <i>unload event</i>
11172: below (i.e. skip firing the <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code> even and don't rerun the
11173: <a href="#unloading-document-visibility-change-steps">unloading document visibility change steps</a>).</p></li>
11174:
11175: <li><p>Set the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page showing</a>
11176: flag to false.</p></li>
11177:
11178: <li><p>Fire a <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code> event at
11179: the <code><a href="#window">Window</a></code> object of the <code><a href="dom.html#document">Document</a></code>, but
11180: with its <code title="dom-event-target"><a href="infrastructure.html#dom-event-target">target</a></code> set to the
11181: <code><a href="dom.html#document">Document</a></code> object (and the <code title="dom-event-currentTarget">currentTarget</code> set to the
11182: <code><a href="#window">Window</a></code> object), using the
11183: <code><a href="#pagetransitionevent">PageTransitionEvent</a></code> interface, with the <code title="dom-PageTransitionEvent-persisted"><a href="#dom-pagetransitionevent-persisted">persisted</a></code>
11184: attribute initialized to true. This event must not bubble, must not
11185: be cancelable, and has no default action.</p></li>
11186:
11187: <li>
11188:
11189: <p>Run any <dfn id="unloading-document-visibility-change-steps">unloading document visibility change steps</dfn>
11190: for <code><a href="dom.html#document">Document</a></code> that are defined by <a href="infrastructure.html#other-applicable-specifications">other
11191: applicable specifications</a>.</p>
11192:
11193: <p class="note">This is specifically intended for use by the Page
11194: Visibility specification. <a href="#refsPAGEVIS">[PAGEVIS]</a></p>
11195:
11196: </li>
11197:
11198: <li><p><i>Unload event</i>: If the <code><a href="dom.html#document">Document</a></code>'s
11199: <a href="#fired-unload">fired unload</a> flag is false, <a href="#fire-a-simple-event">fire a simple
11200: event</a> named <code title="event-unload">unload</code> at the
11201: <code><a href="dom.html#document">Document</a></code>'s <code><a href="#window">Window</a></code> object.</p></li>
11202:
11203: <li><p>Decrease the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination
11204: nesting level</a> by one.</p></li>
11205:
11206: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
11207:
11208: <li><p>If any event listeners were triggered by the earlier
11209: <i>unload event</i> step, then set the <code><a href="dom.html#document">Document</a></code>
11210: object's <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state to
11211: false and set the <code><a href="dom.html#document">Document</a></code>'s <a href="#fired-unload">fired unload</a>
11212: flag to true.</p></li>
11213:
11214: <li><p>Run any <a href="#unloading-document-cleanup-steps">unloading document cleanup steps</a> for
11215: <code><a href="dom.html#document">Document</a></code> that are defined by this specification and
11216: <a href="infrastructure.html#other-applicable-specifications">other applicable specifications</a>.</p></li>
11217:
11218: <li><p>If this algorithm was invoked by another instance of the
11219: "unload a document" algorithm (i.e. by the steps below that invoke
11220: this algorithm for all descendant browsing contexts), then jump to
11221: the step labeled <i>end</i>.</p></li>
11222:
11223: <li><p>Let <var title="">descendants</var> be the <a href="#list-of-the-descendant-browsing-contexts">list of the
11224: descendant browsing contexts</a> of the
11225: <code><a href="dom.html#document">Document</a></code>.</p></li>
11226:
11227: <li>
11228:
11229: <p>If <var title="">descendants</var> is not an empty list, then
11230: for each <a href="#browsing-context">browsing context</a> <var title="">b</var> in
11231: <var title="">descendants</var> run the following substeps:</p>
11232:
11233: <ol><li><p><a href="#unload-a-document" title="unload a document">Unload</a> the
11234: <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing context</a>
11235: <var title="">b</var> with the <var title="">recycle</var>
11236: parameter set to false.</p></li>
11237:
11238: <li><p>If <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state of
11239: the <a href="#active-document">active document</a> of the <a href="#browsing-context">browsing
11240: context</a> <var title="">b</var> is false, then set the <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state of
11241: <em>this</em> document to false also.</p></li>
11242:
11243: </ol></li>
11244:
11245: <li><p>If <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> and <var title="">recycle</var> are both false, then the
11246: <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a> must <a href="#discard-a-document" title="discard a document">discard the
11247: <code>Document</code></a>.</p></li>
11248:
11249: <li><p><i>End</i>: Decrease the <code><a href="dom.html#document">Document</a></code>'s
11250: <a href="dynamic-markup-insertion.html#ignore-opens-during-unload-counter">ignore-opens-during-unload counter</a> by one.</p></li>
11251:
11252: </ol><p>This specification defines the following <dfn id="unloading-document-cleanup-steps">unloading document
11253: cleanup steps</dfn>. Other specifications can define more.</p>
11254:
11255: <ol><li>
11256:
11257: <p><span>Make disappear</span> any <code>WebSocket</code> objects
11258: that were created by the <code title="dom-WebSocket">WebSocket()</code> constructor whose global
11259: object is the <code><a href="dom.html#document">Document</a></code>'s <code><a href="#window">Window</a></code> object.
11260:
11261: <a href="#refsWEBSOCKET">[WEBSOCKET]</a>
11262:
11263: </p>
11264:
11265: <p>If this affected any <code>WebSocket</code> objects, the set
11266: <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state to
11267: false.</p>
11268:
11269: </li>
11270:
11271: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state is
11272: false, <span title="concept-EventSource-forcibly-close">forcibly
11273: close</span> any <code>EventSource</code> objects that whose
11274: constructor was invoked from the <code><a href="dom.html#document">Document</a></code>'s
11275: <code><a href="#window">Window</a></code> object.</p></li>
11276:
11277: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state is
11278: false, empty the <code><a href="dom.html#document">Document</a></code>'s <code><a href="#window">Window</a></code>'s
11279: <a href="#list-of-active-timers">list of active timers</a>.</p></li>
11280:
11281: </ol><h5 id="event-definition"><span class="secno">5.6.11.1 </span>Event definition</h5>
11282:
11283: </div>
11284:
11285: <pre class="idl">interface <dfn id="beforeunloadevent">BeforeUnloadEvent</dfn> : <a href="infrastructure.html#event">Event</a> {
11286: attribute DOMString <a href="#dom-beforeunloadevent-returnvalue" title="dom-BeforeUnloadEvent-returnValue">returnValue</a>;
11287: };</pre>
11288:
11289: <dl class="domintro"><dt><var title="">event</var> . <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code> [ = <var title="">value</var> ]</dt>
11290:
11291: <dd>
11292:
11293: <p>Returns the current return value of the event (the message to show the user).</p>
11294:
11295: <p>Can be set, to update the message.</p>
11296:
11297: </dd>
11298:
11299: </dl><p class="note">There are no <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code>-specific
11300: initialization methods.</p>
11301:
11302: <div class="impl">
11303:
11304: <p>The <dfn id="dom-beforeunloadevent-returnvalue" title="dom-BeforeUnloadEvent-returnValue"><code>returnValue</code></dfn>
11305: attribute represents the message to show the user. When the event is
11306: created, the attribute must be set to the empty string. On getting,
11307: it must return the last value it was set to. On setting, the
11308: attribute must be set to the new value.</p>
11309:
11310: </div>
11311:
11312:
11313: <div class="impl">
11314:
11315: <h4 id="aborting-a-document-load"><span class="secno">5.6.12 </span>Aborting a document load</h4>
11316:
11317: <p>If a <code><a href="dom.html#document">Document</a></code> is <dfn id="abort-a-document" title="abort a
11318: document">aborted</dfn>, the user agent must run the following
11319: steps:</p>
11320:
11321: <ol><li><p><a href="#abort-a-document" title="abort a document">Abort</a> the <a href="#active-document" title="active document">active documents</a> of every
11322: <a href="#child-browsing-context">child browsing context</a>.</p></li>
11323:
11324: <li><p>Cancel any instances of the <a href="urls.html#fetch" title="fetch">fetch</a>
11325: algorithm in the context of this <code><a href="dom.html#document">Document</a></code>, discarding
11326: any <a href="#concept-task" title="concept-task">tasks</a> <a href="#queue-a-task" title="queue a
11327: task">queued</a> for them, and discarding any further data
11328: received from the network for them.</p></li>
11329:
11330: <li><p>If the <code><a href="dom.html#document">Document</a></code> has an <a href="dom.html#active-parser">active
11331: parser</a>, then <a href="#abort-a-parser" title="abort a parser">abort that
11332: parser</a>.</p></li>
11333:
11334: <li><p>Set the <code><a href="dom.html#document">Document</a></code>'s <var title="concept-document-salvageable"><a href="#concept-document-salvageable">salvageable</a></var> state to
11335: false.</p></li>
11336:
11337: <!-- we could also stop all script, or stop animations -->
11338:
11339: </ol><p>User agents may allow users to explicitly invoke the <a href="#abort-a-document" title="abort a document">abort a document</a> algorithm for a
11340: <code><a href="dom.html#document">Document</a></code>. If the user does so, then, if that
11341: <code><a href="dom.html#document">Document</a></code> is an <a href="#active-document">active document</a>, the user
11342: agent should <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple
11343: event</a> named <code title="event-abort">abort</code> at that
11344: <code><a href="dom.html#document">Document</a></code>'s <code><a href="#window">Window</a></code> object before invoking
11345: the <a href="#abort-a-document" title="abort a document">abort</a> algorithm.</p>
11346:
11347: <!-- I'd love to make this more precise, anyone have any suggestions
11348: on what it should say? -->
11349:
11350: </div>
11351:
11352:
11353: <!--TOPIC:Offline Web Applications-->
11354: <h3 id="offline"><span class="secno">5.7 </span>Offline Web applications</h3>
11355:
11356: <!-- v2 ideas for appcache:
11357:
11358: * A way to limit what gets download when the user agent is
11359: updating the application cache and it turns out the server has
11360: changed EVERY page because every page has a dynamic "site last
11361: modified" date on it.
11362:
11363: http://groups.google.com/group/gears-users/browse_thread/thread/efbd808325df607a/c73adb34f9b63cf7?hl=en&q=whatwg#c73adb34f9b63cf7
11364:
11365:
11366: * Multiuser appcaches.
11367:
11368: If the application code (HTML, JS, CSS) is all the same for two
11369: users, then appcache works for multiple users by just having
11370: the data for the users separate from the logic.
11371:
11372: This is the expected model for most apps. For example, your
11373: typical blog has just one set of CSS for all users.
11374:
11375: For systems where the user affects what HTML, JS, and CSS is
11376: served back, the spec as written pretty much requires that
11377: there be one app per user, and one generic "login" app that
11378: then redirects to one of those other apps - and where each app
11379: has a different base URL, separate manifest, etc.
11380:
11381: An alternative that we could explore in a future version is to
11382: have the manifest include a manifest name, and then have script
11383: that allows you to "activate" a particular manifest name for a
11384: given appcache.
11385:
11386: So each appcache group would be futher subdivided into named
11387: subgroups, and for a given manifest URL with such a group of
11388: subgroups, one subgroup would be the default one at a time. The
11389: inactive ones would just lie dormant, but and the active ones
11390: would act like now, but there'd be a scripted way to change the
11391: default (and maybe query what available variants exist for the
11392: current appcache), so that you could log back in as someone
11393: else by just making the script pick the other user's variant,
11394: and then reloading.
11395:
11396:
11397: * Add and remove specific additional files from the cache (e.g.
11398: precaching new master entries).
11399:
11400: -->
11401:
11402: <h4 id="introduction-4"><span class="secno">5.7.1 </span>Introduction</h4>
11403:
11404: <p><i>This section is non-normative.</i></p>
11405: <p>In order to enable users to continue interacting with Web
11406: applications and documents even when their network connection is
11407: unavailable — for instance, because they are traveling outside
11408: of their ISP's coverage area — authors can provide a manifest
11409: which lists the files that are needed for the Web application to
11410: work offline and which causes the user's browser to keep a copy of
11411: the files for use offline.</p>
11412:
11413: <p>To illustrate this, consider a simple clock applet consisting of
11414: an HTML page "<code title="">clock.html</code>", a CSS style sheet
11415: "<code title="">clock.css</code>", and a JavaScript script "<code title="">clock.js</code>".</p>
11416:
11417: <p>Before adding the manifest, these three files might look like
11418: this:</p>
11419:
11420: <pre>EXAMPLE offline/clock/clock1.html</pre>
11421: <pre>EXAMPLE offline/clock/clock1.css</pre>
11422: <pre>EXAMPLE offline/clock/clock1.js</pre>
11423:
11424: <p>If the user tries to open the "<code title="">clock.html</code>"
11425: page while offline, though, the user agent (unless it happens to
11426: have it still in the local cache) will fail with an error.</p>
11427:
11428: <p>The author can instead provide a manifest of the three files, say
11429: "<code title="">clock.appcache</code>":</p>
11430:
11431: <pre>EXAMPLE offline/clock/clock2.appcache</pre>
11432:
11433: <p>With a small change to the HTML file, the manifest (served as
11434: <code><a href="#text/cache-manifest">text/cache-manifest</a></code>) is linked to the application:</p>
11435:
11436: <pre>EXAMPLE offline/clock/clock2.html</pre>
11437:
11438: <p>Now, if the user goes to the page, the browser will cache the
11439: files and make them available even when the user is offline.</p>
11440:
11441: <p class="note">Authors are encouraged to include the main page in
11442: the manifest also, but in practice the page that referenced the
11443: manifest is automatically cached even if it isn't explicitly
11444: mentioned.</p>
11445:
11446: <p class="note">With the exception of "no-store" directive, HTTP
11447: cache headers and restrictions on caching pages served over TLS
11448: (encrypted, using <code title="">https:</code>) are overridden by
11449: manifests. Thus, pages will not expire from an application cache
11450: before the user agent has updated it, and even applications served
11451: over TLS can be made to work offline.</p>
11452:
11453: <!--(doesn't currently function)
11454: <p><a href="http://www.whatwg.org/demos/offline/clock/clock2.html">View this example online</a>.</p>
11455: -->
11456:
11457:
11458:
11459: <h5 id="appcacheevents"><span class="secno">5.7.1.1 </span>Event summary</h5>
11460:
11461: <p><i>This section is non-normative.</i></p>
11462: <p>When the user visits a page that declares a manifest, the browser
11463: will try to update the cache. It does this by fetching a copy of the
11464: manifest and, if the manifest has changed since the user agent last
11465: saw it, redownloading all the resources it mentions and caching them
11466: anew.</p>
11467:
11468: <p>As this is going on, a number of events get fired on the
11469: <code><a href="#applicationcache">ApplicationCache</a></code> object to keep the script updated as
11470: to the state of the cache update, so that the user can be notified
11471: appropriately. The events are as follows:</p>
11472:
11473: <table><thead><tr><th> Event name
11474: </th><th> Interface
11475: </th><th> Fired when...
11476: </th><th> Next events
11477: </th></tr></thead><tbody><tr><td> <dfn id="event-appcache-checking" title="event-appcache-checking"><code>checking</code></dfn>
11478: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11479: </td><td> The user agent is checking for an update, or attempting to download the manifest for the first time. <strong>This is always the first event in the sequence.</strong>
11480: </td><td> <code title="event-appcache-noupdate"><a href="#event-appcache-noupdate">noupdate</a></code>, <code title="event-appcache-downloading"><a href="#event-appcache-downloading">downloading</a></code>, <code title="event-appcache-obsolete"><a href="#event-appcache-obsolete">obsolete</a></code>, <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code>
11481: </td></tr><tr><td> <dfn id="event-appcache-noupdate" title="event-appcache-noupdate"><code>noupdate</code></dfn>
11482: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11483: </td><td> The manifest hadn't changed.
11484: </td><td> Last event in sequence.
11485: </td></tr><tr><td> <dfn id="event-appcache-downloading" title="event-appcache-downloading"><code>downloading</code></dfn>
11486: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11487: </td><td> The user agent has found an update and is fetching it, or is downloading the resources listed by the manifest for the first time.
11488: </td><td> <code title="event-appcache-progress"><a href="#event-appcache-progress">progress</a></code>, <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code>, <code title="event-appcache-cached"><a href="#event-appcache-cached">cached</a></code>, <code title="event-appcache-updateready"><a href="#event-appcache-updateready">updateready</a></code>
11489: </td></tr><tr><td> <dfn id="event-appcache-progress" title="event-appcache-progress"><code>progress</code></dfn>
11490: </td><td> <code>ProgressEvent</code>
11491: </td><td> The user agent is downloading resources listed by the manifest.
11492: </td><td> <code title="event-appcache-progress"><a href="#event-appcache-progress">progress</a></code>, <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code>, <code title="event-appcache-cached"><a href="#event-appcache-cached">cached</a></code>, <code title="event-appcache-updateready"><a href="#event-appcache-updateready">updateready</a></code>
11493: </td></tr><tr><td> <dfn id="event-appcache-cached" title="event-appcache-cached"><code>cached</code></dfn>
11494: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11495: </td><td> The resources listed in the manifest have been downloaded, and the application is now cached.
11496: </td><td> Last event in sequence.
11497: </td></tr><tr><td> <dfn id="event-appcache-updateready" title="event-appcache-updateready"><code>updateready</code></dfn>
11498: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11499: </td><td> The resources listed in the manifest have been newly redownloaded, and the script can use <code title="dom-appcache-swapCache"><a href="#dom-appcache-swapcache">swapCache()</a></code> to switch to the new cache.
11500: </td><td> Last event in sequence.
11501: </td></tr><tr><td> <dfn id="event-appcache-obsolete" title="event-appcache-obsolete"><code>obsolete</code></dfn>
11502: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
11503: </td><td> The manifest was found to have become a 404 or 410 page, so the application cache is being deleted.
11504: </td><td> Last event in sequence.
11505: </td></tr><tr><td rowspan="4"> <dfn id="event-appcache-error" title="event-appcache-error"><code>error</code></dfn>
11506: </td><td rowspan="4"> <code><a href="infrastructure.html#event">Event</a></code>
11507: </td><td> The manifest was a 404 or 410 page, so the attempt to cache the application has been aborted.
11508: </td><td rowspan="3"> Last event in sequence.
11509: </td></tr><tr><td> The manifest hadn't changed, but the page referencing the manifest failed to download properly.
11510: </td></tr><tr><td> A fatal error occurred while fetching the resources listed in the manifest.
11511: </td></tr><tr><td> The manifest changed while the update was being run.
11512: </td><td> The user agent will try fetching the files again momentarily.
11513: </td></tr></tbody></table><div class="impl">
11514:
11515: <h4 id="appcache"><span class="secno">5.7.2 </span>Application caches</h4> <!--APPCACHE-->
11516:
11517: <p>An <dfn id="application-cache">application cache</dfn> is a set of cached resources
11518: consisting of:</p>
11519:
11520: <ul><li>
11521:
11522: <p>One or more resources (including their out-of-band metadata,
11523: such as HTTP headers, if any), identified by URLs, each falling
11524: into one (or more) of the following categories:</p>
11525:
11526: <dl><dt><dfn id="concept-appcache-master" title="concept-appcache-master">Master entries</dfn>
11527:
11528: </dt><dd><p class="note">These are documents that were added to the
11529: cache because a <a href="#browsing-context">browsing context</a> was <a href="#navigate" title="navigate">navigated</a> to that document and the
11530: document indicated that this was its cache, using the <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute.</p>
11531:
11532:
11533: </dd><dt><dfn id="concept-appcache-manifest" title="concept-appcache-manifest">The manifest</dfn>
11534:
11535: </dt><dd><p class="note">This is the resource corresponding to the URL
11536: that was given in a master entry's <code><a href="the-html-element.html#the-html-element">html</a></code> element's
11537: <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute. The
11538: manifest is fetched and processed during the <a href="#application-cache-download-process">application
11539: cache download process</a>. All the <a href="#concept-appcache-master" title="concept-appcache-master">master entries</a> have the
11540: <a href="#same-origin" title="same origin">same origin</a> as the manifest.</p>
11541:
11542:
11543: </dd><dt><dfn id="concept-appcache-explicit" title="concept-appcache-explicit">Explicit entries</dfn>
11544:
11545: </dt><dd><p class="note">These are the resources that were listed in
11546: the cache's <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> in an <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit
11547: section</a>.</p>
11548:
11549:
11550: </dd><dt><dfn id="concept-appcache-fallback" title="concept-appcache-fallback">Fallback entries</dfn>
11551:
11552: </dt><dd><p class="note">These are the resources that were listed in
11553: the cache's <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> in a <a href="#concept-appcache-manifest-fallback" title="concept-appcache-manifest-fallback">fallback
11554: section</a>.</p>
11555:
11556:
11557: </dd></dl><p><a href="#concept-appcache-explicit" title="concept-appcache-explicit">Explicit entries</a>
11558: and <a href="#concept-appcache-fallback" title="concept-appcache-fallback">Fallback
11559: entries</a> can be marked as <dfn id="concept-appcache-foreign" title="concept-appcache-foreign">foreign</dfn>, which means that
11560: they have a <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code>
11561: attribute but that it doesn't point at this cache's <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a>.</p>
11562:
11563: <p class="note">A URL in the list can be flagged with multiple
11564: different types, and thus an entry can end up being categorized as
11565: multiple entries. For example, an entry can be a manifest entry
11566: and an explicit entry at the same time, if the manifest is listed
11567: within the manifest.</p>
11568:
11569: </li>
11570:
11571: <li>
11572:
11573: <p>Zero or more <dfn id="concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
11574: namespaces</dfn>, each of which is mapped to a <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entry</a>.</p>
11575:
11576: <p class="note">These are URLs used as <a href="#concept-appcache-matches-fallback" title="concept-appcache-matches-fallback">prefix match
11577: patterns</a> for resources that are to be fetched from the
11578: network if possible, or to be replaced by the corresponding <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entry</a> if not.
11579: Each namespace URL has the <a href="#same-origin">same origin</a> as <a href="#concept-appcache-manifest" title="concept-appcache-manifest">the manifest</a>.</p>
11580:
11581: </li>
11582:
11583: <li>
11584:
11585: <p>Zero or more URLs that form the <dfn id="concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist
11586: namespaces</dfn>.</p>
11587:
11588: <p class="note">These are used as prefix match patterns, and
11589: declare URLs for which the user agent will ignore the application
11590: cache, instead fetching them normally (i.e. from the network or
11591: local HTTP cache as appropriate).</p>
11592:
11593: </li>
11594:
11595: <li>
11596:
11597: <p>An <dfn id="concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
11598: wildcard flag</dfn>, which is either <i title="">open</i> or <i title="">blocking</i>.</p>
11599:
11600: <p class="note">The <i title="">open</i> state indicates that any
11601: URL not listed as cached is to be implicitly treated as being in
11602: the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online
11603: whitelist namespaces</a>; the <i title="">blocking</i> state
11604: indicates that URLs not listed explicitly in the manifest are to
11605: be treated as unavailable.</p>
11606:
11607: </li>
11608:
11609: <li>
11610:
11611: <p>A <dfn id="concept-appcache-mode" title="concept-appcache-mode">cache mode flag</dfn>,
11612: which is
11613: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
11614: in the <dfn id="concept-appcache-mode-fast" title="concept-appcache-mode-fast"><i>fast</i></dfn>
11615: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
11616: state.</p>
11617:
11618: </li>
11619:
11620: </ul><p>Each <a href="#application-cache">application cache</a> has a <dfn id="concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</dfn>, which is
11621: either <i>complete</i> or <i>incomplete</i>.</p>
11622:
11623: <hr><p>An <dfn id="application-cache-group">application cache group</dfn> is a group of <a href="#application-cache" title="application cache">application caches</a>, identified by
11624: the <a href="urls.html#absolute-url">absolute URL</a> of a resource <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> which is used to
11625: populate the caches in the group.</p>
11626:
11627: <p>An <a href="#application-cache">application cache</a> is <dfn id="concept-appcache-newer" title="concept-appcache-newer">newer</dfn> than another if it was
11628: created after the other (in other words, <a href="#application-cache" title="application
11629: cache">application caches</a> in an <a href="#application-cache-group">application cache
11630: group</a> have a chronological order).</p>
11631:
11632: <p>Only the newest <a href="#application-cache">application cache</a> in an
11633: <a href="#application-cache-group">application cache group</a> can have its <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> set to
11634: <i>incomplete</i>; the others are always all <i>complete</i>.</p>
11635:
11636: <p>Each <a href="#application-cache-group">application cache group</a> has an <dfn id="concept-appcache-status" title="concept-appcache-status">update status</dfn>, which is one of
11637: the following: <i>idle</i>, <i>checking</i>, <i>downloading</i>.</p>
11638:
11639: <p>A <dfn id="relevant-application-cache">relevant application cache</dfn> is an <a href="#application-cache">application
11640: cache</a> that is the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> in its <a href="#application-cache-group" title="application cache group">group</a> to be
11641: <i>complete</i>.</p>
11642:
11643: <p>Each <a href="#application-cache-group">application cache group</a> has a <dfn id="concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
11644: entries</dfn>. Each entry in this list consists of a resource and a
11645: corresponding <code><a href="dom.html#document">Document</a></code> object. It is used during the
11646: <a href="#application-cache-download-process">application cache download process</a> to ensure that new
11647: master entries are cached even if the <a href="#application-cache-download-process">application cache
11648: download process</a> was already running for their
11649: <a href="#application-cache-group">application cache group</a> when they were loaded.</p>
11650:
11651: <p>An <a href="#application-cache-group">application cache group</a> can be marked as <dfn id="concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</dfn>, meaning that it
11652: must be ignored when looking at what <a href="#application-cache-group" title="application cache
11653: group">application cache groups</a> exist.</p>
11654:
11655: <hr><p>A <dfn id="cache-host">cache host</dfn> is a <code><a href="dom.html#document">Document</a></code> or a
11656: <code>SharedWorkerGlobalScope</code> object. A <a href="#cache-host">cache
11657: host</a> can be associated with an <a href="#application-cache">application
11658: cache</a>.
11659: <a href="#refsWEBWORKERS">[WEBWORKERS]</a>
11660: </p>
11661:
11662: <p>A <code><a href="dom.html#document">Document</a></code> initially is not associated with an
11663: <a href="#application-cache">application cache</a>, but can become associated with one
11664: early during the page load process, when steps <a href="#parser-appcache">in the parser</a> and in the <a href="#navigate" title="navigate">navigation</a> sections cause <a href="#concept-appcache-init" title="concept-appcache-init">cache selection</a> to occur.</p>
11665:
11666: <p>A <code>SharedWorkerGlobalScope</code> can be associated with an
11667: <a href="#application-cache">application cache</a> when it is created.
11668: <a href="#refsWEBWORKERS">[WEBWORKERS]</a>
11669: </p>
11670:
11671: <p>Each <a href="#cache-host">cache host</a> has an associated
11672: <code><a href="#applicationcache">ApplicationCache</a></code> object.</p>
11673:
11674: <hr><p>Multiple <a href="#application-cache" title="application cache">application
11675: caches</a> in different <a href="#application-cache-group" title="application cache
11676: group">application cache groups</a> can contain the same
11677: resource, e.g. if the manifests all reference that resource. If the
11678: user agent is to <dfn id="concept-appcache-selection" title="concept-appcache-selection">select an
11679: application cache</dfn> from a list of <a href="#relevant-application-cache" title="relevant
11680: application cache">relevant application caches</a> that contain a
11681: resource, the user agent must use the application cache that the
11682: user most likely wants to see the resource from, taking into account
11683: the following:</p>
11684:
11685: <ul><li>which application cache was most recently updated,
11686:
11687: </li><li>which application cache was being used to display the
11688: resource from which the user decided to look at the new resource,
11689: and
11690:
11691: </li><li>which application cache the user prefers.
11692:
11693: </li></ul><hr><p>A URL <dfn id="concept-appcache-matches-fallback" title="concept-appcache-matches-fallback">matches a
11694: fallback namespace</dfn> if there exists a <a href="#relevant-application-cache">relevant
11695: application cache</a> whose <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a>'s URL has the
11696: <a href="#same-origin">same origin</a> as the URL in question, and that has a
11697: <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a>
11698: that is a <a href="infrastructure.html#prefix-match">prefix match</a> for the URL being examined. If
11699: multiple fallback namespaces match the same URL, the longest one is
11700: the one that matches. A URL looking for a fallback namespace can
11701: match more than one application cache at a time, but only matches
11702: one namespace in each cache.</p>
11703:
11704: <div class="example">
11705:
11706: <p>If a manifest <code title="">http://example.com/app1/manifest</code> declares that
11707: <code title="">http://example.com/resources/images</code> is a
11708: fallback namespace, and the user navigates to <code title="">HTTP://EXAMPLE.COM:80/resources/images/cat.png</code>,
11709: then the user agent will decide that the application cache
11710: identified by <code title="">http://example.com/app1/manifest</code> contains a
11711: namespace with a match for that URL.</p>
11712:
11713: <!-- "resolve a url" canonicalises the case for the scheme and host
11714: and removes the port if it is the default -->
11715:
11716: </div>
11717:
11718: </div>
11719:
11720:
11721:
11722: <h4 id="manifests"><span class="secno">5.7.3 </span>The cache manifest syntax</h4>
11723:
11724:
11725: <h5 id="some-sample-manifests"><span class="secno">5.7.3.1 </span>Some sample manifests</h5>
11726:
11727: <p><i>This section is non-normative.</i></p>
11728: <div class="example">
11729:
11730: <p>This example manifest requires two images and a style sheet to be
11731: cached and whitelists a CGI script.</p>
11732:
11733: <pre>CACHE MANIFEST
11734: # the above line is required
11735:
11736: # this is a comment
11737: # there can be as many of these anywhere in the file
11738: # they are all ignored
11739: # comments can have spaces before them
11740: # but must be alone on the line
11741:
11742: # blank lines are ignored too
11743:
11744: # these are files that need to be cached they can either be listed
11745: # first, or a "CACHE:" header could be put before them, as is done
11746: # lower down.
11747: images/sound-icon.png
11748: images/background.png
11749: # note that each file has to be put on its own line
11750:
11751: # here is a file for the online whitelist -- it isn't cached, and
11752: # references to this file will bypass the cache, always hitting the
11753: # network (or trying to, if the user is offline).
11754: NETWORK:
11755: comm.cgi
11756:
11757: # here is another set of files to cache, this time just the CSS file.
11758: CACHE:
11759: style/default.css</pre>
11760:
11761: <p>It could equally well be written as follows:</p>
11762:
11763: <pre>CACHE MANIFEST
11764: NETWORK:
11765: comm.cgi
11766: CACHE:
11767: style/default.css
11768: images/sound-icon.png
11769: images/background.png</pre>
11770:
11771: </div>
11772:
11773: <div class="example">
11774:
11775: <p>Offline application cache manifests can use absolute paths or
11776: even absolute URLs:</p>
11777:
11778: <pre>CACHE MANIFEST
11779:
11780: /main/home
11781: /main/app.js
11782: /settings/home
11783: /settings/app.js
11784: http://img.example.com/logo.png
11785: http://img.example.com/check.png
11786: http://img.example.com/cross.png</pre>
11787:
11788: </div>
11789:
11790: <div class="example">
11791:
11792: <p>The following manifest defines a catch-all error page that is
11793: displayed for any page on the site while the user is offline. It
11794: also specifies that the <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
11795: wildcard flag</a> is <i title="">open</i>, meaning that accesses
11796: to resources on other sites will not be blocked. (Resources on the
11797: same site are already not blocked because of the catch-all fallback
11798: namespace.)</p>
11799:
11800: <p>So long as all pages on the site reference this manifest, they
11801: will get cached locally as they are fetched, so that subsequent hits
11802: to the same page will load the page immediately from the
11803: cache. Until the manifest is changed, those pages will not be
11804: fetched from the server again. When the manifest changes, then all
11805: the files will be redownloaded.</p>
11806:
11807: <p>Subresources, such as style sheets, images, etc, would only be
11808: cached using the regular HTTP caching semantics, however.</p>
11809:
11810: <pre>CACHE MANIFEST
11811: FALLBACK:
11812: / /offline.html
11813: NETWORK:
11814: *</pre>
11815:
11816: </div>
11817:
11818:
11819:
11820: <h5 id="writing-cache-manifests"><span class="secno">5.7.3.2 </span>Writing cache manifests</h5>
11821:
11822: <p>Manifests must be served using the
11823: <code><a href="#text/cache-manifest">text/cache-manifest</a></code> <a href="infrastructure.html#mime-type">MIME type</a>. All
11824: resources served using the <code><a href="#text/cache-manifest">text/cache-manifest</a></code>
11825: <a href="infrastructure.html#mime-type">MIME type</a> must follow the syntax of application cache
11826: manifests, as described in this section.</p>
11827:
11828: <p>An application cache manifest is a text file, whose text is
11829: encoded using UTF-8. Data in application cache manifests is
11830: line-based. Newlines must be represented by "LF" (U+000A)
11831: characters, "CR" (U+000D) characters, or "CR" (U+000D) "LF" (U+000A) pairs. <a href="#refsRFC3629">[RFC3629]</a></p>
11832:
11833: <p class="note">This is a <a href="introduction.html#willful-violation">willful violation</a> of RFC
11834: 2046, which requires all <code title="">text/*</code> types to only
11835: allow CRLF line breaks. This requirement, however, is outdated; the
11836: use of CR, LF, and CRLF line breaks is commonly supported and indeed
11837: sometimes CRLF is <em>not</em> supported by text editors. <a href="#refsRFC2046">[RFC2046]</a></p>
11838:
11839: <p>The first line of an application cache manifest must consist of
11840: the string "CACHE", a single U+0020 SPACE character, the string
11841: "MANIFEST", and either a U+0020 SPACE character, a "tab" (U+0009) character, a "LF" (U+000A) character, or a
11842: "CR" (U+000D) character. The first line may optionally
11843: be preceded by a "BOM" (U+FEFF) character. If any
11844: other text is found on the first line, it is ignored.</p>
11845:
11846: <p>Subsequent lines, if any, must all be one of the following:</p>
11847:
11848: <dl><dt>A blank line
11849: </dt><dd>
11850: <p>Blank lines must consist of zero or more U+0020 SPACE and
11851: "tab" (U+0009) characters only.</p>
11852:
11853: </dd><dt>A comment
11854: </dt><dd>
11855: <p>Comment lines must consist of zero or more U+0020 SPACE and
11856: "tab" (U+0009) characters, followed by a single
11857: "#" (U+0023) character, followed by zero or more
11858: characters other than "LF" (U+000A) and "CR" (U+000D) characters.</p>
11859:
11860: <p class="note">Comments must be on a line on their own. If they
11861: were to be included on a line with a URL, the "#" would be
11862: mistaken for part of a fragment identifier.</p>
11863:
11864: </dd><dt>A section header
11865: </dt><dd>
11866:
11867: <p>Section headers change the current section. There are four
11868: possible section headers:
11869:
11870: </p><dl><dt><code>CACHE:</code>
11871: </dt><dd>Switches to the <dfn id="concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit section</dfn>.
11872:
11873: </dd><dt><code>FALLBACK:</code>
11874: </dt><dd>Switches to the <dfn id="concept-appcache-manifest-fallback" title="concept-appcache-manifest-fallback">fallback section</dfn>.
11875:
11876: </dd><dt><code>NETWORK:</code>
11877: </dt><dd>Switches to the <dfn id="concept-appcache-manifest-network" title="concept-appcache-manifest-network">online whitelist section</dfn>.
11878:
11879: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
11880:
11881: </dd></dl><p>Section header lines must consist of zero or more U+0020 SPACE
11882: and "tab" (U+0009) characters, followed by one
11883: of the names above (including the ":)" (U+003A) character
11884: followed by zero or more U+0020 SPACE and "tab" (U+0009) characters.</p>
11885:
11886: <p>Ironically, by default, the current section is the
11887: <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit section</a>.</p>
11888:
11889: </dd><dt>Data for the current section
11890: </dt><dd>
11891: <p>The format that data lines must take depends on the current
11892: section.</p>
11893:
11894: <p>When the current section is the <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit
11895: section</a>, data lines must consist of zero or more U+0020
11896: SPACE and "tab" (U+0009) characters, a
11897: <a href="urls.html#valid-url">valid URL</a> identifying a resource other than the
11898: manifest itself, and then zero or more U+0020 SPACE and "tab" (U+0009) characters.</p>
11899:
11900: <p>When the current section is the <a href="#concept-appcache-manifest-fallback" title="concept-appcache-manifest-fallback">fallback
11901: section</a>, data lines must consist of zero or more U+0020
11902: SPACE and "tab" (U+0009) characters, a
11903: <a href="urls.html#valid-url">valid URL</a> identifying a resource other than the
11904: manifest itself, one or more U+0020 SPACE and "tab" (U+0009) characters, another <a href="urls.html#valid-url">valid URL</a>
11905: identifying a resource other than the manifest itself, and then
11906: zero or more U+0020 SPACE and "tab" (U+0009)
11907: characters.</p>
11908:
11909: <p>When the current section is the <a href="#concept-appcache-manifest-network" title="concept-appcache-manifest-network">online whitelist
11910: section</a>, data lines must consist of zero or more U+0020
11911: SPACE and "tab" (U+0009) characters, either a
11912: single "*" (U+002A) character <!--
11913: concept-appcache-onlinewhitelist-wildcard --> or a <a href="urls.html#valid-url">valid
11914: URL</a> identifying a resource other than the manifest itself,
11915: and then zero or more U+0020 SPACE and "tab" (U+0009) characters.</p>
11916:
11917: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
11918:
11919: <!--
11920: <p class="note">The URLs in data lines can't be empty strings,
11921: since those would be relative URLs to the manifest itself. Such
11922: lines would be confused with blank or invalid lines, anyway.</p>
11923: -->
11924:
11925: </dd></dl><p>Manifests may contain sections more than once. Sections may be
11926: empty.</p>
11927:
11928: <p>URLs that are to be fallback pages associated with <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespaces</a>, and
11929: those namespaces themselves, must be given in <a href="#concept-appcache-manifest-fallback" title="concept-appcache-manifest-fallback">fallback sections</a>,
11930: with the namespace being the first URL of the data line, and the
11931: corresponding fallback page being the second URL. All the other
11932: pages to be cached must be listed in <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit
11933: sections</a>.</p>
11934:
11935: <p><a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">Fallback
11936: namespaces</a> and <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entries</a> must have
11937: the <a href="#same-origin">same origin</a> as the manifest itself.</p>
11938:
11939: <p>A <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
11940: namespace</a> must not be listed more than once.</p>
11941:
11942: <p>Namespaces that the user agent is to put into the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a>
11943: must all be specified in <a href="#concept-appcache-manifest-network" title="concept-appcache-manifest-network">online whitelist
11944: sections</a>. (This is needed for any URL that the page is
11945: intending to use to communicate back to the server.) To specify that
11946: all URLs are automatically whitelisted in this way, a "*" (U+002A) character may be specified as one of the URLs. <!--
11947: concept-appcache-onlinewhitelist-wildcard --></p>
11948:
11949: <p>Authors should not include namespaces in the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a> for
11950: which another namespace in the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a> is
11951: a <a href="infrastructure.html#prefix-match">prefix match</a>.</p>
11952:
11953: <p>Relative URLs must be given relative to the manifest's own
11954: URL. All URLs in the manifest must have the same <a href="urls.html#url-scheme" title="url-scheme"><scheme></a> as the manifest itself
11955: (either explicitly or implicitly, through the use of relative
11956: URLs).</p>
11957:
11958: <p>URLs in manifests must not have fragment identifiers (i.e. the
11959: U+0023 NUMBER SIGN character isn't allowed in URLs in
11960: manifests).</p>
11961:
11962: <p><a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">Fallback
11963: namespaces</a> and namespaces in the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a> are
11964: matched by <a href="infrastructure.html#prefix-match">prefix match</a>.</p>
11965:
11966:
11967: <div class="impl">
11968:
11969: <h5 id="parsing-cache-manifests"><span class="secno">5.7.3.3 </span>Parsing cache manifests</h5>
11970:
11971: <p>When a user agent is to <dfn id="parse-a-manifest">parse a manifest</dfn>, it means
11972: that the user agent must run the following steps:</p>
11973:
11974: <ol><li><p>The user agent must decode the byte stream corresponding
11975: with the manifest to be parsed <a href="infrastructure.html#decoded-as-utf-8,-with-error-handling" title="decoded as UTF-8, with
11976: error handling">as UTF-8, with error handling</a>. <!--All
11977: U+0000 NULL characters must be replaced by U+FFFD REPLACEMENT
11978: CHARACTERs. (this isn't black-box testable since neither U+0000 nor
11979: U+FFFD are valid anywhere in the syntax and thus both will be
11980: treated the same anyway)--></p></li>
11981:
11982: <li><p>Let <var title="">base URL</var> be the <a href="urls.html#absolute-url">absolute
11983: URL</a> representing the manifest.</p></li>
11984:
11985: <li><p>Let <var title="">explicit URLs</var> be an initially empty
11986: list of <a href="urls.html#absolute-url" title="absolute URL">absolute URLs</a> for <a href="#concept-appcache-explicit" title="concept-appcache-explicit">explicit entries</a>.</p></li>
11987:
11988: <li><p>Let <var title="">fallback URLs</var> be an initially empty
11989: mapping of <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
11990: namespaces</a> to <a href="urls.html#absolute-url" title="absolute URL">absolute
11991: URLs</a> for <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback
11992: entries</a>.</p></li>
11993:
11994: <li><p>Let <var title="">online whitelist namespaces</var> be an
11995: initially empty list of <a href="urls.html#absolute-url" title="absolute URL">absolute
11996: URLs</a> for an <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online
11997: whitelist</a>.</p></li>
11998:
11999: <li><p>Let <var title="">online whitelist wildcard flag</var> be <i title="">blocking</i>. <!--
12000: concept-appcache-onlinewhitelist-wildcard --></p></li>
12001:
12002: <li><p>Let <var title="">cache mode flag</var> be <i title="">fast</i>. <!-- concept-appcache-mode-fast --></p></li>
12003:
12004: <li><p>Let <var title="">input</var> be the decoded text of the
12005: manifest's byte stream.</p></li>
12006:
12007: <li><p>Let <var title="">position</var> be a pointer into <var title="">input</var>, initially pointing at the first
12008: character.</p></li>
12009:
12010: <li><p>If <var title="">position</var> is pointing at a "BOM" (U+FEFF) character, then advance <var title="">position</var> to the next character.</p></li>
12011:
12012: <li><p>If the characters starting from <var title="">position</var>
12013: are "CACHE", followed by a U+0020 SPACE character, followed by
12014: "MANIFEST", then advance <var title="">position</var> to the next
12015: character after those. Otherwise, this isn't a cache manifest;
12016: abort this algorithm with a failure while checking for the magic
12017: signature.</p></li>
12018:
12019: <li><p>If the character at <var title="">position</var> is neither
12020: a U+0020 SPACE character, a "tab" (U+0009)
12021: character, "LF" (U+000A) character, nor a "CR" (U+000D) character, then this isn't a cache manifest; abort this
12022: algorithm with a failure while checking for the magic
12023: signature.</p></li>
12024:
12025: <li><p>This is a cache manifest. The algorithm cannot fail beyond
12026: this point (though bogus lines can get ignored).</p></li>
12027:
12028: <li><p><a href="common-microsyntaxes.html#collect-a-sequence-of-characters">Collect a sequence of characters</a> that are
12029: <em>not</em> "LF" (U+000A) or "CR" (U+000D)
12030: characters, and ignore those characters. (Extra text on the first
12031: line, after the signature, is ignored.)</p></li>
12032:
12033: <li><p>Let <var title="">mode</var> be "explicit".</p></li>
12034:
12035: <li><p><i>Start of line</i>: If <var title="">position</var> is
12036: past the end of <var title="">input</var>, then jump to the last
12037: step. Otherwise, <a href="common-microsyntaxes.html#collect-a-sequence-of-characters">collect a sequence of characters</a> that
12038: are "LF" (U+000A), "CR" (U+000D), U+0020
12039: SPACE, or "tab" (U+0009) characters.</p></li>
12040: <!-- strips leading spaces, ignores space-only lines, ignores blank lines -->
12041:
12042: <li><p>Now, <a href="common-microsyntaxes.html#collect-a-sequence-of-characters">collect a sequence of characters</a> that are
12043: <em>not</em> "LF" (U+000A) or "CR" (U+000D)
12044: characters, and let the result be <var title="">line</var>.</p></li>
12045:
12046: <li><p>Drop any trailing U+0020 SPACE and "tab" (U+0009) characters at the end of <var title="">line</var>.</p></li>
12047:
12048: <li><p>If <var title="">line</var> is the empty string, then jump
12049: back to the step labeled "start of line".</p></li>
12050:
12051: <li><p>If the first character in <var title="">line</var> is a
12052: "#" (U+0023) character, then jump back to the step
12053: labeled "start of line".</p></li>
12054:
12055: <li><p>If <var title="">line</var> equals "CACHE:" (the word
12056: "CACHE" followed by a ":)" (U+003A) character, then set <var title="">mode</var> to "explicit" and jump back to the step
12057: labeled "start of line".</p></li>
12058:
12059: <li><p>If <var title="">line</var> equals "FALLBACK:" (the word
12060: "FALLBACK" followed by a ":)" (U+003A) character, then set <var title="">mode</var> to "fallback" and jump back to the step
12061: labeled "start of line".</p></li>
12062:
12063: <li><p>If <var title="">line</var> equals "NETWORK:" (the word
12064: "NETWORK" followed by a ":)" (U+003A) character, then set <var title="">mode</var> to "online whitelist" and jump back to the step
12065: labeled "start of line".</p></li>
12066:
12067: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
12068:
12069: <li><p>If <var title="">line</var> ends with a ":" (U+003A) character, then set <var title="">mode</var> to "unknown" and
12070: jump back to the step labeled "start of line".</p></li>
12071:
12072: <li><p>This is either a data line or it is syntactically
12073: incorrect.</p></li>
12074:
12075: <li><p>Let <var title="">position</var> be a pointer into <var title="">line</var>, initially pointing at the start of the
12076: string.</p></li>
12077:
12078: <li><p>Let <var title="">tokens</var> be a list of strings,
12079: initially empty.</p></li>
12080:
12081: <li>
12082:
12083: <p>While <var title="">position</var> doesn't point past the end
12084: of <var title="">line</var>:</p>
12085:
12086: <ol><li><p>Let <var title="">current token</var> be an empty
12087: string.</p></li>
12088:
12089: <li><p>While <var title="">position</var> doesn't point past the
12090: end of <var title="">line</var> and the character at <var title="">position</var> is neither a U+0020 SPACE nor a "tab" (U+0009) character, add the character at <var title="">position</var> to <var title="">current token</var> and
12091: advance <var title="">position</var> to the next character in
12092: <var title="">input</var>.</p></li>
12093:
12094: <li><p>Add <var title="">current token</var> to the <var title="">tokens</var> list.</p></li>
12095:
12096: <li><p>While <var title="">position</var> doesn't point past the
12097: end of <var title="">line</var> and the character at <var title="">position</var> is either a U+0020 SPACE or a "tab" (U+0009) character, advance <var title="">position</var> to the next character in <var title="">input</var>.</p></li>
12098:
12099: </ol></li>
12100:
12101: <li>
12102:
12103: <p>Process <var title="">tokens</var> as follows:</p>
12104:
12105: <dl class="switch"><dt>If <var title="">mode</var> is "explicit"</dt>
12106:
12107: <dd>
12108:
12109: <p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the first item in
12110: <var title="">tokens</var>, relative to <var title="">base
12111: URL</var>; ignore the rest.</p>
12112:
12113: <p>If this fails, then jump back to the step labeled "start of
12114: line".</p>
12115:
12116: <p>If the resulting <a href="urls.html#absolute-url">absolute URL</a> has a different
12117: <a href="urls.html#url-scheme" title="url-scheme"><scheme></a> component than
12118: the manifest's URL (compared in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
12119: case-insensitive</a> manner), then jump back to the step
12120: labeled "start of line".</p>
12121:
12122: <p>Drop the <a href="urls.html#url-fragment" title="url-fragment"><fragment></a>
12123: component of the resulting <a href="urls.html#absolute-url">absolute URL</a>, if it has
12124: one.</p>
12125:
12126: <p>Add the resulting <a href="urls.html#absolute-url">absolute URL</a> to the <var title="">explicit URLs</var>.</p>
12127:
12128: </dd>
12129:
12130: <dt>If <var title="">mode</var> is "fallback"</dt>
12131:
12132: <dd>
12133:
12134: <p>Let <var title="">part one</var> be the first token in <var title="">tokens</var>, and let <var title="">part two</var> be
12135: the second token in <var title="">tokens</var>.</p>
12136:
12137: <p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> <var title="">part
12138: one</var> and <var title="">part two</var>, relative to <var title="">base URL</var>.</p>
12139:
12140: <p>If either fails, then jump back to the step labeled "start of
12141: line".</p>
12142:
12143: <p>If the <a href="urls.html#absolute-url">absolute URL</a> corresponding to either <var title="">part one</var> or <var title="">part two</var> does not
12144: have the <a href="#same-origin">same origin</a> as the manifest's URL, then
12145: jump back to the step labeled "start of line".</p> <!-- SECURITY
12146: -->
12147:
12148: <p>Drop any <a href="urls.html#url-fragment" title="url-fragment"><fragment></a>
12149: components of the resulting <a href="urls.html#absolute-url" title="absolute URL">absolute
12150: URLs</a>.</p>
12151:
12152: <p>If the <a href="urls.html#absolute-url">absolute URL</a> corresponding to <var title="">part one</var> is already in the <var title="">fallback
12153: URLs</var> mapping as a <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a>,
12154: then jump back to the step labeled "start of line".</p>
12155:
12156: <p>Otherwise, add the <a href="urls.html#absolute-url">absolute URL</a> corresponding to
12157: <var title="">part one</var> to the <var title="">fallback
12158: URLs</var> mapping as a <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a>,
12159: mapped to the <a href="urls.html#absolute-url">absolute URL</a> corresponding to <var title="">part two</var> as the <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entry</a>.</p>
12160:
12161: </dd>
12162:
12163: <dt>If <var title="">mode</var> is "online whitelist"</dt>
12164:
12165: <dd>
12166:
12167: <p>If the first item in <var title="">tokens</var> is a "*" (U+002A) character, then set <var title="">online whitelist
12168: wildcard flag</var> to <i title="">open</i> and jump back to the
12169: step labeled "start of line".</p>
12170:
12171: <p>Otherwise, <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the
12172: first item in <var title="">tokens</var>, relative to <var title="">base URL</var>; ignore the rest.</p>
12173:
12174: <p>If this fails, then jump back to the step labeled "start of
12175: line".</p>
12176:
12177: <p>If the resulting <a href="urls.html#absolute-url">absolute URL</a> has a different
12178: <a href="urls.html#url-scheme" title="url-scheme"><scheme></a> component than
12179: the manifest's URL (compared in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
12180: case-insensitive</a> manner), then jump back to the step
12181: labeled "start of line".</p>
12182:
12183: <p>Drop the <a href="urls.html#url-fragment" title="url-fragment"><fragment></a>
12184: component of the resulting <a href="urls.html#absolute-url">absolute URL</a>, if it has
12185: one.</p>
12186:
12187: <p>Add the resulting <a href="urls.html#absolute-url">absolute URL</a> to the <var title="">online whitelist namespaces</var>.</p>
12188:
12189: </dd>
12190:
12191: <!--FORK--><!--APPCACHE-PREFER-ONLINE-->
12192:
12193: <dt>If <var title="">mode</var> is "unknown"</dt>
12194:
12195: <dd>
12196:
12197: <p>Do nothing. The line is ignored.</p>
12198:
12199: </dd>
12200:
12201: </dl></li>
12202:
12203: <li><p>Jump back to the step labeled "start of line". (That step
12204: jumps to the next, and last, step when the end of the file is
12205: reached.)</p></li>
12206:
12207: <li><p>Return the <var title="">explicit URLs</var> list, the <var title="">fallback URLs</var> mapping, the <var title="">online
12208: whitelist namespaces</var>, the <var title="">online whitelist
12209: wildcard flag</var>, and the <var title="">cache mode
12210: flag</var>.</p></li>
12211:
12212: </ol><div class="note">
12213:
12214: <p>The resource that declares the manifest (with the <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute) will always
12215: get taken from the cache, whether it is listed in the cache or not,
12216: even if it is listed in an <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist
12217: namespace</a>.</p>
12218:
12219: <p>If a resource is listed in the <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit section</a>
12220: or as a <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback
12221: entry</a> in the <a href="#concept-appcache-manifest-fallback" title="concept-appcache-manifest-fallback">fallback section</a>,
12222: the resource will always be taken from the cache, regardless of any
12223: other matching entries in the <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespaces</a> or
12224: <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist
12225: namespaces</a>.</p>
12226:
12227: <p>When a <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
12228: namespace</a> and an <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist
12229: namespace</a> overlap, the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist
12230: namespace</a> has priority.</p>
12231:
12232: <p>The <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
12233: wildcard flag</a> is applied last, only for URLs that match
12234: neither the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online
12235: whitelist namespace</a> nor the <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a> and
12236: that are not listed in the <a href="#concept-appcache-manifest-explicit" title="concept-appcache-manifest-explicit">explicit
12237: section</a>.</p>
12238:
12239: </div>
12240:
12241:
12242: <h4 id="downloading-or-updating-an-application-cache"><span class="secno">5.7.4 </span>Downloading or updating an application cache</h4>
12243:
12244: <p>When the user agent is required (by other parts of this
12245: specification) to start the <dfn id="application-cache-download-process">application cache download
12246: process</dfn> for an <a href="urls.html#absolute-url">absolute URL</a> purported to identify
12247: a <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a>, or for an
12248: <a href="#application-cache-group">application cache group</a>, potentially given a particular
12249: <a href="#cache-host">cache host</a>, and potentially given a <a href="#concept-appcache-master" title="concept-appcache-master">master</a> resource, the user
12250: agent must run the steps below. These steps are always run
12251: asynchronously, in parallel with the <a href="#event-loop">event loop</a> <a href="#concept-task" title="concept-task">tasks</a>.</p>
12252:
12253: <p>Some of these steps have requirements that only apply if the user
12254: agent <dfn id="shows-caching-progress">shows caching progress</dfn>. Support for this is
12255: optional. Caching progress UI could consist of a progress bar or
12256: message panel in the user agent's interface, or an overlay, or
12257: something else. Certain events fired during the <a href="#application-cache-download-process">application
12258: cache download process</a> allow the script to override the display
12259: of such an interface. The goal of this is to allow Web applications
12260: to provide more seamless update mechanisms, hiding from the user the
12261: mechanics of the application cache mechanism. User agents may
12262: display user interfaces independent of this, but are encouraged to
12263: not show prominent update progress notifications for applications
12264: that cancel the relevant events.</p>
12265:
12266: <p class="note">These events are delayed until after the <code title="event-load">load</code> event has fired.</p>
12267:
12268: <p>The <a href="#application-cache-download-process">application cache download process</a> steps are as
12269: follows:
12270:
12271: </p><ol><li><p>Optionally, wait until the permission to start the
12272: <a href="#application-cache-download-process">application cache download process</a> has been obtained
12273: from the user and until the user agent is confident that the
12274: network is available. This could include doing nothing until the
12275: user explicitly opts-in to caching the site, or could involve
12276: prompting the user for permission. The algorithm might never get
12277: past this point. (This step is particularly intended to be used by
12278: user agents running on severely space-constrained devices or in
12279: highly privacy-sensitive environments).</p></li>
12280:
12281: <li>
12282:
12283: <p>Atomically, so as to avoid race conditions, perform the
12284: following substeps:</p>
12285:
12286: <ol><li>
12287:
12288: <p>Pick the appropriate substeps:</p>
12289:
12290: <dl class="switch"><dt>If these steps were invoked with an <a href="urls.html#absolute-url">absolute
12291: URL</a> purported to identify a <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a></dt>
12292:
12293: <dd>
12294:
12295: <p>Let <var title="">manifest URL</var> be that <a href="urls.html#absolute-url">absolute
12296: URL</a>.</p>
12297:
12298: <p>If there is no <a href="#application-cache-group">application cache group</a>
12299: identified by <var title="">manifest URL</var>, then create a
12300: new <a href="#application-cache-group">application cache group</a> identified by <var title="">manifest URL</var>. Initially, it has no <a href="#application-cache" title="application cache">application caches</a>. One will
12301: be created later in this algorithm.</p>
12302:
12303: </dd>
12304:
12305:
12306: <dt>If these steps were invoked with an <a href="#application-cache-group">application cache
12307: group</a></dt>
12308:
12309: <dd>
12310:
12311: <p>Let <var title="">manifest URL</var> be the <a href="urls.html#absolute-url">absolute
12312: URL</a> of the <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> used to
12313: identify the <a href="#application-cache-group">application cache group</a> to be
12314: updated.</p>
12315:
12316: <p>If that <a href="#application-cache-group">application cache group</a> is <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>, then abort
12317: this instance of the <a href="#application-cache-download-process">application cache download
12318: process</a>. This can happen if another instance of this
12319: algorithm found the manifest to be 404 or 410 while this
12320: algorithm was waiting in the first step above.</p>
12321:
12322: </dd>
12323:
12324: </dl></li>
12325:
12326: <li><p>Let <var title="">cache group</var> be the
12327: <a href="#application-cache-group">application cache group</a> identified by <var title="">manifest URL</var>.</p></li>
12328:
12329: <li><p>If these steps were invoked with a <a href="#concept-appcache-master" title="concept-appcache-master">master</a> resource, then add
12330: the resource, along with the resource's <code><a href="dom.html#document">Document</a></code>, to
12331: <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12332: entries</a>.</p></li>
12333:
12334: <li><p>If these steps were invoked with a <a href="#cache-host">cache
12335: host</a>, and the <a href="#concept-appcache-status" title="concept-appcache-status">status</a> of <var title="">cache group</var> is <i>checking</i> or
12336: <i>downloading</i>, then <a href="#queue-a-post-load-task">queue a post-load task</a> to
12337: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-appcache-checking"><a href="#event-appcache-checking">checking</a></code> that is
12338: cancelable at the <code><a href="#applicationcache">ApplicationCache</a></code> singleton of that
12339: <a href="#cache-host">cache host</a>. The default action of this event must
12340: be, if the user agent <a href="#shows-caching-progress">shows caching progress</a>, the
12341: display of some sort of user interface indicating to the user
12342: that the user agent is checking to see if it can download the
12343: application.</p></li>
12344:
12345: <li><p>If these steps were invoked with a <a href="#cache-host">cache
12346: host</a>, and the <a href="#concept-appcache-status" title="concept-appcache-status">status</a> of <var title="">cache group</var> is <i>downloading</i>, then also
12347: <a href="#queue-a-post-load-task">queue a post-load task</a> to <a href="#fire-a-simple-event">fire a simple
12348: event</a> named <code title="event-appcache-downloading"><a href="#event-appcache-downloading">downloading</a></code> that is
12349: cancelable at the <code><a href="#applicationcache">ApplicationCache</a></code> singleton of that
12350: <a href="#cache-host">cache host</a>. The default action of this event must
12351: be, if the user agent <a href="#shows-caching-progress">shows caching progress</a>, the
12352: display of some sort of user interface indicating to the user the
12353: application is being downloaded.</p></li>
12354:
12355: <li><p>If the <a href="#concept-appcache-status" title="concept-appcache-status">status</a>
12356: of the <var title="">cache group</var> is either <i>checking</i>
12357: or <i>downloading</i>, then abort this instance of the
12358: <a href="#application-cache-download-process">application cache download process</a>, as an update is
12359: already in progress.</p></li>
12360:
12361: <li><p>Set the <a href="#concept-appcache-status" title="concept-appcache-status">status</a> of <var title="">cache group</var> to <i>checking</i>.</p>
12362:
12363: </li><li><p>For each <a href="#cache-host">cache host</a> associated with an
12364: <a href="#application-cache">application cache</a> in <var title="">cache
12365: group</var>, <a href="#queue-a-post-load-task">queue a post-load task</a> to <a href="#fire-a-simple-event">fire a
12366: simple event</a> that is cancelable named <code title="event-appcache-checking"><a href="#event-appcache-checking">checking</a></code> at the
12367: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12368: host</a>. The default action of these events must be, if the
12369: user agent <a href="#shows-caching-progress">shows caching progress</a>, the display of
12370: some sort of user interface indicating to the user that the user
12371: agent is checking for the availability of updates.</p></li>
12372:
12373: </ol><p class="note">The remainder of the steps run asynchronously.</p>
12374:
12375: <p>If <var title="">cache group</var> already has an
12376: <a href="#application-cache">application cache</a> in it, then this is an <dfn id="concept-appcache-upgrade" title="concept-appcache-upgrade">upgrade attempt</dfn>. Otherwise,
12377: this is a <dfn id="concept-appcache-cache" title="concept-appcache-cache">cache
12378: attempt</dfn>.</p>
12379:
12380: </li>
12381:
12382: <li><p>If this is a <a href="#concept-appcache-cache" title="concept-appcache-cache">cache
12383: attempt</a>, then this algorithm was invoked with a <a href="#cache-host">cache
12384: host</a>; <a href="#queue-a-post-load-task">queue a post-load task</a> to <a href="#fire-a-simple-event">fire a
12385: simple event</a> named <code title="event-appcache-checking"><a href="#event-appcache-checking">checking</a></code> that is cancelable
12386: at the <code><a href="#applicationcache">ApplicationCache</a></code> singleton of that <a href="#cache-host">cache
12387: host</a>. The default action of this event must be, if the user
12388: agent <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort
12389: of user interface indicating to the user that the user agent is
12390: checking for the availability of updates.</p></li>
12391:
12392: <li>
12393:
1.191 sruby 12394: <p><i>Fetching the manifest</i>: <a href="urls.html#fetch">Fetch</a><!--FETCH-->
12395: the resource from <var title="">manifest URL</var> with the
12396: <i>synchronous flag</i> set, and let <var title="">manifest</var>
12397: be that resource. HTTP caching semantics should be honored for
12398: this request.</p> <!-- http-origin privacy sensitive, though it
12399: doesn't matter, since this can never be cross-origin -->
1.190 sruby 12400:
12401: <p>Parse <var title="">manifest</var> according to the <a href="#parse-a-manifest" title="parse a manifest">rules for parsing manifests</a>,
12402: obtaining a list of <a href="#concept-appcache-explicit" title="concept-appcache-explicit">explicit entries</a>, <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entries</a> and the
12403: <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback
12404: namespaces</a> that map to them, entries for the <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a>,
12405: and values for the <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
12406: wildcard flag</a> and the <a href="#concept-appcache-mode" title="concept-appcache-mode">cache mode flag</a>.</p>
12407:
12408: <p class="note">The <a href="infrastructure.html#mime-type">MIME type</a> of the resource is
12409: ignored — it is assumed to be
12410: <code><a href="#text/cache-manifest">text/cache-manifest</a></code>. In the future, if new manifest
12411: formats are supported, the different types will probably be
12412: distinguished on the basis of the file signatures (for the current
12413: format, that is the "<code title="">CACHE MANIFEST</code>"
12414: string at the top of the file).</p>
12415:
12416: </li>
12417:
12418: <li>
12419:
12420: <p>If <i>fetching the manifest</i> fails due to a 404 or 410
12421: response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or
12422: equivalent</a>, then run these substeps:</p>
12423:
12424: <ol><li><p>Mark <var title="">cache group</var> as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>. This <var title="">cache group</var> no longer exists for any purpose other
12425: than the processing of <code><a href="dom.html#document">Document</a></code> objects already
12426: associated with an <a href="#application-cache">application cache</a> in the <var title="">cache group</var>.</p></li>
12427:
12428: <li><p>Let <var title="">task list</var> be an empty list of
12429: <a href="#concept-task" title="concept-task">tasks</a>.</p>
12430:
12431: </li><li><p>For each <a href="#cache-host">cache host</a> associated with an
12432: <a href="#application-cache">application cache</a> in <var title="">cache
12433: group</var>, create a <a href="#concept-task" title="concept-task">task</a> to
12434: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-appcache-obsolete"><a href="#event-appcache-obsolete">obsolete</a></code> that is
12435: cancelable at the <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the
12436: <a href="#cache-host">cache host</a>, and append it to <var title="">task
12437: list</var>. The default action of these events must be, if the
12438: user agent <a href="#shows-caching-progress">shows caching progress</a>, the display of
12439: some sort of user interface indicating to the user that the
12440: application is no longer available for offline use.</p></li>
12441:
12442: <li><p>For each entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12443: entries</a>, create a <a href="#concept-task" title="concept-task">task</a>
12444: to <a href="#fire-a-simple-event">fire a simple event</a> that is cancelable named
12445: <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code> (not <code title="event-appcache-obsolete"><a href="#event-appcache-obsolete">obsolete</a></code>!) at the
12446: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the
12447: <code><a href="dom.html#document">Document</a></code> for this entry, if there still is one, and
12448: append it to <var title="">task list</var>. The default action of
12449: this event must be, if the user agent <a href="#shows-caching-progress">shows caching
12450: progress</a>, the display of some sort of user interface
12451: indicating to the user that the user agent failed to save the
12452: application for offline use.</p></li>
12453:
12454: <li><p>If <var title="">cache group</var> has an
12455: <a href="#application-cache">application cache</a> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> is
12456: <i>incomplete</i>, then discard that <a href="#application-cache">application
12457: cache</a>.</p>
12458:
12459: </li><li><p>If appropriate, remove any user interface indicating that
12460: an update for this cache is in progress.</p></li>
12461:
12462: <li><p>Let the <a href="#concept-appcache-status" title="concept-appcache-status">status</a> of <var title="">cache group</var> be <i>idle</i>.</p></li>
12463:
12464: <li><p>For each <a href="#concept-task" title="concept-task">task</a> in <var title="">task list</var>, <a href="#queue-a-post-load-task" title="queue a post-load
12465: task">queue that task as a post-load task</a>.</p></li>
12466:
12467: <li><p>Abort the <a href="#application-cache-download-process">application cache download
12468: process</a>.</p></li>
12469:
12470: </ol></li>
12471:
12472: <li>
12473:
12474: <p>Otherwise, if <i>fetching the manifest</i> fails in some other
12475: way (e.g. the server returns another 4xx or 5xx response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a>, or
12476: there is a DNS error, or the connection times out, or the user
12477: cancels the download, or the parser for manifests fails when
12478: checking the magic signature), or if the server returned a
12479: redirect, then run the <a href="#cache-failure-steps">cache failure steps</a>. <a href="#refsHTTP">[HTTP]</a></p>
12480:
12481: </li>
12482:
12483: <li>
12484:
12485: <p>If this is an <a href="#concept-appcache-upgrade" title="concept-appcache-upgrade">upgrade
12486: attempt</a> and the newly downloaded <var title="">manifest</var> is byte-for-byte identical to the manifest
12487: found in the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a>
12488: <a href="#application-cache">application cache</a> in <var title="">cache group</var>,
12489: or the server reported it as "304 Not Modified" <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a>, then
12490: run these substeps:</p>
12491:
12492: <ol><li><p>Let <var title="">cache</var> be the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> <a href="#application-cache">application
12493: cache</a> in <var title="">cache group</var>.</p></li>
12494:
12495: <li><p>Let <var title="">task list</var> be an empty list of
12496: <a href="#concept-task" title="concept-task">tasks</a>.</p>
12497:
12498: </li><li>
12499:
12500: <p>For each entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12501: entries</a>, wait for the resource for this entry to have
12502: either completely downloaded or failed.</p>
12503:
12504: <p>If the download failed (e.g. the server returns a 4xx or 5xx
12505: response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or
12506: equivalent</a>, or there is a DNS error, the connection times
12507: out, or the user cancels the download), or if the resource is
12508: labeled with the "no-store" cache directive, then create a <a href="#concept-task" title="concept-task">task</a> to <a href="#fire-a-simple-event">fire a simple
12509: event</a> that is cancelable named <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code> at the
12510: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the
12511: <code><a href="dom.html#document">Document</a></code> for this entry, if there still is one, and
12512: append it to <var title="">task list</var>. The default action
12513: of this event must be, if the user agent <a href="#shows-caching-progress">shows caching
12514: progress</a>, the display of some sort of user interface
12515: indicating to the user that the user agent failed to save the
12516: application for offline use.</p>
12517:
12518: <p>Otherwise, associate the <code><a href="dom.html#document">Document</a></code> for this entry
12519: with <var title="">cache</var>; store the resource for this
12520: entry in <var title="">cache</var>, if it isn't already there,
12521: and categorize its entry as a <a href="#concept-appcache-master" title="concept-appcache-master">master entry</a>. If the
12522: resource's <a href="urls.html#url">URL</a> has a <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> component, it must
12523: be removed from the entry in <var title="">cache</var>
12524: (application caches never include fragment identifiers).</p>
12525:
12526: </li>
12527:
12528: <li><p>For each <a href="#cache-host">cache host</a> associated with an
12529: <a href="#application-cache">application cache</a> in <var title="">cache
12530: group</var>, create a <a href="#concept-task" title="concept-task">task</a> to
12531: <a href="#fire-a-simple-event">fire a simple event</a> that is cancelable named <code title="event-appcache-noupdate"><a href="#event-appcache-noupdate">noupdate</a></code> at the
12532: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12533: host</a>, and append it to <var title="">task list</var>. The
12534: default action of these events must be, if the user agent
12535: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12536: user interface indicating to the user that the application is up
12537: to date.</p></li>
12538:
12539: <li><p>Empty <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12540: entries</a>.</p></li>
12541:
12542: <li><p>If appropriate, remove any user interface indicating that
12543: an update for this cache is in progress.</p></li>
12544:
12545: <li><p>Let the <a href="#concept-appcache-status" title="concept-appcache-status">status</a> of <var title="">cache group</var> be <i>idle</i>.</p></li>
12546:
12547: <li><p>For each <a href="#concept-task" title="concept-task">task</a> in <var title="">task list</var>, <a href="#queue-a-post-load-task" title="queue a post-load
12548: task">queue that task as a post-load task</a>.</p></li>
12549:
12550: <li><p>Abort the <a href="#application-cache-download-process">application cache download
12551: process</a>.</p></li>
12552:
12553: </ol></li>
12554:
12555: <li><p>Let <var title="">new cache</var> be a newly created
12556: <a href="#application-cache">application cache</a> in <var title="">cache
12557: group</var>. Set its <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> to
12558: <i>incomplete</i>.</p></li>
12559:
12560: <li><p>For each entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12561: entries</a>, associate the <code><a href="dom.html#document">Document</a></code> for this entry
12562: with <var title="">new cache</var>.</p></li>
12563:
12564: <li><p>Set the <a href="#concept-appcache-status" title="concept-appcache-status">status</a>
12565: of <var title="">cache group</var> to <i>downloading</i>.</p></li>
12566:
12567: <li><p>For each <a href="#cache-host">cache host</a> associated with an
12568: <a href="#application-cache">application cache</a> in <var title="">cache group</var>,
12569: <a href="#queue-a-post-load-task">queue a post-load task</a> to <a href="#fire-a-simple-event">fire a simple
12570: event</a> that is cancelable named <code title="event-appcache-downloading"><a href="#event-appcache-downloading">downloading</a></code> at the
12571: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12572: host</a>. The default action of these events must be, if the
12573: user agent <a href="#shows-caching-progress">shows caching progress</a>, the display of some
12574: sort of user interface indicating to the user that a new version is
12575: being downloaded.</p></li>
12576:
12577: <li><p>Let <var title="">file list</var> be an empty list of
12578: URLs with flags.</p></li>
12579:
12580: <li><p>Add all the URLs in the list of <a href="#concept-appcache-explicit" title="concept-appcache-explicit">explicit entries</a> obtained
12581: by parsing <var title="">manifest</var> to <var title="">file
12582: list</var>, each flagged with "explicit entry".</p></li>
12583:
12584: <li><p>Add all the URLs in the list of <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entries</a> obtained
12585: by parsing <var title="">manifest</var> to <var title="">file
12586: list</var>, each flagged with "fallback entry".</p></li>
12587:
12588: <li><p>If this is an <a href="#concept-appcache-upgrade" title="concept-appcache-upgrade">upgrade
12589: attempt</a>, then add all the URLs of <a href="#concept-appcache-master" title="concept-appcache-master">master entries</a> in the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> <a href="#application-cache">application
12590: cache</a> in <var title="">cache group</var> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> is
12591: <i>complete</i> to <var title="">file list</var>, each flagged with
12592: "master entry".</p></li>
12593:
12594: <li><p>If any URL is in <var title="">file list</var> more than
12595: once, then merge the entries into one entry for that URL, that
12596: entry having all the flags that the original entries had.</p></li>
12597:
12598: <li>
12599:
12600: <p>For each URL in <var title="">file list</var>, run the
12601: following steps. These steps may be run in parallel for two or
12602: more of the URLs at a time. If, while running these steps, the
12603: <code><a href="#applicationcache">ApplicationCache</a></code> object's <code title="dom-appcache-abort"><a href="#dom-appcache-abort">abort()</a></code> method <a href="#send-a-signal" title="send
12604: a signal">sends a signal</a> to this instance of the
12605: <a href="#application-cache-download-process">application cache download process</a> algorithm, then
12606: run the <a href="#cache-failure-steps">cache failure steps</a> instead.</p>
12607:
12608: <ol><li>
12609:
12610: <p>If the resource URL being processed was flagged as neither an
12611: "explicit entry" nor or a "fallback entry", then the user agent
12612: may skip this URL.</p>
12613:
12614: <p class="note">This is intended to allow user agents to expire
12615: resources not listed in the manifest from the cache. Generally,
12616: implementors are urged to use an approach that expires
12617: lesser-used resources first.</p>
12618:
12619: </li>
12620:
12621: <li><p>For each <a href="#cache-host">cache host</a> associated with an
12622: <a href="#application-cache">application cache</a> in <var title="">cache
12623: group</var>, <a href="#queue-a-post-load-task">queue a post-load task</a> to fire an event
12624: with the name <code title="event-appcache-progress"><a href="#event-appcache-progress">progress</a></code>, which does not
12625: bubble, which is cancelable, and which uses the
12626: <code>ProgressEvent</code> interface, at the
12627: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12628: host</a>. The <code title="dom-ProgressEvents-lengthComputable">lengthComputable</code>
12629: attribute must be set to true, the <code title="dom-ProgressEvents-total">total</code> attribute must be
12630: set to the number of files in <var title="">file list</var>, and
12631: the <code title="dom-ProgressEvents-loaded">loaded</code>
12632: attribute must be set to the number of files in <var title="">file list</var> that have been either downloaded or
12633: skipped so far. The default action of these events must be, if
12634: the user agent <a href="#shows-caching-progress">shows caching progress</a>, the display
12635: of some sort of user interface indicating to the user that a file
12636: is being downloaded in preparation for updating the application.
12637: <a href="#refsPROGRESS">[PROGRESS]</a></p></li>
12638:
12639: <li>
12640:
1.191 sruby 12641: <p><a href="urls.html#fetch">Fetch</a><!--FETCH--> the resource, from the
12642: <a href="#origin-0">origin</a> of the <a href="urls.html#url">URL</a> <var title="">manifest URL</var>, with the <i>synchronous flag</i>
12643: set and the <i>manual redirect flag</i> set. If this is an <a href="#concept-appcache-upgrade" title="concept-appcache-upgrade">upgrade attempt</a>, then
1.190 sruby 12644: use the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a>
12645: <a href="#application-cache">application cache</a> in <var title="">cache
12646: group</var> as an HTTP cache, and honor HTTP caching semantics
12647: (such as expiration, ETags, and so forth) with respect to that
12648: cache. User agents may also have other caches in place that are
12649: also honored.</p> <!-- not http-origin privacy sensitive -->
12650:
12651: <p class="note">If the resource in question is already being
12652: downloaded for other reasons then the existing download process
12653: can sometimes be used for the purposes of this step, as defined
12654: by the <a href="urls.html#fetch" title="fetch">fetching</a> algorithm.</p>
12655:
12656: <p class="example">An example of a resource that might already
12657: be being downloaded is a large image on a Web page that is being
12658: seen for the first time. The image would get downloaded to
12659: satisfy the <code><a href="the-img-element.html#the-img-element">img</a></code> element on the page, as well as
12660: being listed in the cache manifest. According to the rules for
12661: <a href="urls.html#fetch" title="fetch">fetching</a> that image only need be
12662: downloaded once, and it can be used both for the cache and for
12663: the rendered Web page.</p>
12664:
12665: </li>
12666:
12667: <li>
12668:
12669: <p>If the previous step fails (e.g. the server returns a 4xx or
12670: 5xx response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or
12671: equivalent</a>, or there is a DNS error, or the connection
12672: times out, or the user cancels the download), or if the server
12673: returned a redirect, or if the resource is labeled with the
12674: "no-store" cache directive, then run the first appropriate step
12675: from the following list: <a href="#refsHTTP">[HTTP]</a></p>
12676:
12677: <dl class="switch"><dt>If the URL being processed was flagged as an "explicit
12678: entry" or a "fallback entry"</dt>
12679:
12680: <dd>
12681:
12682: <p>If these steps are being run in parallel for any other URLs
12683: in <var title="">file list</var>, then abort these steps for
12684: those other URLs. Run the <a href="#cache-failure-steps">cache failure
12685: steps</a>.</p>
12686:
12687: <p class="note">Redirects are fatal because they are either
12688: indicative of a network problem (e.g. a captive portal); or
12689: would allow resources to be added to the cache under URLs that
12690: differ from any URL that the networking model will allow
12691: access to, leaving orphan entries; or would allow resources to
12692: be stored under URLs different than their true URLs. All of
12693: these situations are bad.</p>
12694:
12695: </dd>
12696:
12697: <dt>If the error was a 404 or 410 HTTP response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a></dt>
12698:
12699: <dt>If the resource was labeled with the "no-store" cache
12700: directive</dt>
12701:
12702: <dd>
12703:
12704: <p>Skip this resource. It is dropped from the cache.</p>
12705:
12706: </dd>
12707:
12708: <dt>Otherwise</dt>
12709:
12710: <dd>
12711:
12712: <p>Copy the resource and its metadata from the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> <a href="#application-cache">application
12713: cache</a> in <var title="">cache group</var> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a>
12714: is <i>complete</i>, and act as if that was the fetched
12715: resource, ignoring the resource obtained from the network.</p>
12716:
12717: </dd>
12718:
12719: </dl><p>User agents may warn the user of these errors as an aid to
12720: development.</p>
12721:
12722: <p class="note">These rules make errors for resources listed in
12723: the manifest fatal, while making it possible for other resources
12724: to be removed from caches when they are removed from the server,
12725: without errors, and making non-manifest resources survive
12726: server-side errors.</p>
12727:
12728: <p class="note">Except for the "no-store" directive, HTTP
12729: caching rules that would cause a file to be expired or otherwise
12730: not cached are ignored for the purposes of the <a href="#application-cache-download-process">application
12731: cache download process</a>.</p>
12732:
12733: </li>
12734:
12735: <li>
12736:
12737: <p>Otherwise, the fetching succeeded. Store the resource in
12738: the <var title="">new cache</var>.</p>
12739:
12740: <p>If the user agent is not able to store the resource (e.g.
12741: because of quota restrictions), the user agent may prompt the
12742: user or try to resolve the problem in some other manner (e.g.
12743: automatically pruning content in other caches). If the problem
12744: cannot be resolved, the user agent must run the <a href="#cache-failure-steps">cache
12745: failure steps</a>.</p>
12746:
12747: </li>
12748:
12749: <li><p>If the URL being processed was flagged as an "explicit
12750: entry" in <var title="">file list</var>, then categorize the
12751: entry as an <a href="#concept-appcache-explicit" title="concept-appcache-explicit">explicit
12752: entry</a>.</p></li>
12753:
12754: <li><p>If the URL being processed was flagged as a "fallback
12755: entry" in <var title="">file list</var>, then categorize the
12756: entry as a <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback
12757: entry</a>.</p></li>
12758:
12759: <li><p>If the URL being processed was flagged as an "master
12760: entry" in <var title="">file list</var>, then categorize the
12761: entry as a <a href="#concept-appcache-master" title="concept-appcache-master">master
12762: entry</a>.</p></li>
12763:
12764: <li><p>As an optimization, if the resource is an HTML or XML file
12765: whose root element is an <code><a href="the-html-element.html#the-html-element">html</a></code> element with a <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute whose value
12766: doesn't match the manifest URL of the application cache being
12767: processed, then the user agent should mark the entry as being
12768: <a href="#concept-appcache-foreign" title="concept-appcache-foreign">foreign</a>.</p>
12769:
12770: </li></ol></li>
12771:
12772: <li><p>For each <a href="#cache-host">cache host</a> associated with an
12773: <a href="#application-cache">application cache</a> in <var title="">cache group</var>,
12774: <a href="#queue-a-post-load-task">queue a post-load task</a> to fire an event with the name
12775: <code title="event-appcache-progress"><a href="#event-appcache-progress">progress</a></code>, which does
12776: not bubble, which is cancelable, and which uses the
12777: <code>ProgressEvent</code> interface, at the
12778: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12779: host</a>. The <code title="dom-ProgressEvents-lengthComputable">lengthComputable</code>
12780: attribute must be set to true, the <code title="dom-ProgressEvents-total">total</code> and the <code title="dom-ProgressEvents-loaded">loaded</code> attributes must be
12781: set to the number of files in <var title="">file list</var>. The
12782: default action of these events must be, if the user agent
12783: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12784: user interface indicating to the user that all the files have been
12785: downloaded. <a href="#refsPROGRESS">[PROGRESS]</a></p></li>
12786:
12787: <li><p>Store the list of <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespaces</a>,
12788: and the URLs of the <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entries</a> that they
12789: map to, in <var title="">new cache</var>.</p></li>
12790:
12791: <li><p>Store the URLs that form the new <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online whitelist</a> in
12792: <var title="">new cache</var>.</p></li>
12793:
12794: <li><p>Store the value of the new <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
12795: wildcard flag</a> in <var title="">new cache</var>.</p></li>
12796:
12797: <li><p>Store the value of the new <a href="#concept-appcache-mode" title="concept-appcache-mode">cache mode flag</a> in <var title="">new cache</var>.</p></li>
12798:
12799: <li>
12800:
12801: <p>For each entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12802: entries</a>, wait for the resource for this entry to have
12803: either completely downloaded or failed.</p>
12804:
12805: <p>If the download failed (e.g. the server returns a 4xx or 5xx
12806: response <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or
12807: equivalent</a>, or there is a DNS error, the connection times
12808: out, or the user cancels the download), or if the resource is
12809: labeled with the "no-store" cache directive, then run these
12810: substeps:</p>
12811:
12812: <ol><li><p>Unassociate the <code><a href="dom.html#document">Document</a></code> for this entry from
12813: <var title="">new cache</var>.</p></li>
12814:
12815: <li><p><a href="#queue-a-post-load-task">Queue a post-load task</a> to <a href="#fire-a-simple-event">fire a simple
12816: event</a> that is cancelable named <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code> at the
12817: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the
12818: <code><a href="dom.html#document">Document</a></code> for this entry, if there still is one. The
12819: default action of this event must be, if the user agent
12820: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12821: user interface indicating to the user that the user agent failed
12822: to save the application for offline use.</p>
12823:
12824: </li><li>
12825:
12826: <p>If this is a <a href="#concept-appcache-cache" title="concept-appcache-cache">cache
12827: attempt</a> and this entry is the last entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12828: entries</a>, then run these further substeps:</p>
12829:
12830: <ol><li><p>Discard <var title="">cache group</var> and its only
12831: <a href="#application-cache">application cache</a>, <var title="">new
12832: cache</var>.</p>
12833:
12834: </li><li><p>If appropriate, remove any user interface indicating
12835: that an update for this cache is in progress.</p></li>
12836:
12837: <li><p>Abort the <a href="#application-cache-download-process">application cache download
12838: process</a>.</p></li>
12839:
12840: </ol></li>
12841:
12842: <li><p>Otherwise, remove this entry from <var title="">cache
12843: group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list
12844: of pending master entries</a>.</p></li>
12845:
12846: </ol><p>Otherwise, store the resource for this entry in <var title="">new cache</var>, if it isn't already there, and
12847: categorize its entry as a <a href="#concept-appcache-master" title="concept-appcache-master">master entry</a>.</p>
12848:
12849: </li>
12850:
12851: <li>
12852:
1.191 sruby 12853: <p><a href="urls.html#fetch">Fetch</a><!--FETCH--> the resource from <var title="">manifest URL</var> again, with the <i>synchronous
12854: flag</i> set, and let <var title="">second manifest</var> be that
12855: resource. HTTP caching semantics should again be honored for this
12856: request.</p> <!-- http-origin privacy sensitive, though it doesn't
12857: matter, since this can never be cross-origin -->
1.190 sruby 12858:
12859: <p class="note">Since caching can be honored, authors are
12860: encouraged to avoid setting the cache headers on the manifest in
12861: such a way that the user agent would simply not contact the
12862: network for this second request; otherwise, the user agent would
12863: not notice if the cache had changed during the cache update
12864: process.</p>
12865:
12866: </li>
12867:
12868: <li>
12869:
12870: <p>If the previous step failed for any reason, or if the fetching
12871: attempt involved a redirect, or if <var title="">second
12872: manifest</var> and <var title="">manifest</var> are not
12873: byte-for-byte identical, then schedule a rerun of the entire
12874: algorithm with the same parameters after a short delay, and run
12875: the <a href="#cache-failure-steps">cache failure steps</a>.</p>
12876:
12877: </li>
12878:
12879: <li>
12880:
12881: <p>Otherwise, store <var title="">manifest</var> in <var title="">new cache</var>, if it's not there already, and
12882: categorize its entry as <a href="#concept-appcache-manifest" title="concept-appcache-manifest">the manifest</a>.</p>
12883:
12884: </li>
12885:
12886: <li><p>Set the <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> of
12887: <var title="">new cache</var> to <i>complete</i>.</p></li>
12888:
12889: <li><p>Let <var title="">task list</var> be an empty list of <a href="#concept-task" title="concept-task">tasks</a>.</p>
12890:
12891: </li><li>
12892:
12893: <p>If this is a <a href="#concept-appcache-cache" title="concept-appcache-cache">cache
12894: attempt</a>, then for each <a href="#cache-host">cache host</a> associated
12895: with an <a href="#application-cache">application cache</a> in <var title="">cache
12896: group</var>, create a <a href="#concept-task" title="concept-task">task</a> to
12897: <a href="#fire-a-simple-event">fire a simple event</a> that is cancelable named <code title="event-appcache-cached"><a href="#event-appcache-cached">cached</a></code> at the
12898: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12899: host</a>, and append it to <var title="">task list</var>. The
12900: default action of these events must be, if the user agent
12901: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12902: user interface indicating to the user that the application has
12903: been cached and that they can now use it offline.</p>
12904:
12905: <p>Otherwise, it is an <a href="#concept-appcache-upgrade" title="concept-appcache-upgrade">upgrade attempt</a>. For each
12906: <a href="#cache-host">cache host</a> associated with an <a href="#application-cache">application
12907: cache</a> in <var title="">cache group</var>, create a <a href="#concept-task" title="concept-task">task</a> to <a href="#fire-a-simple-event">fire a simple
12908: event</a> that is cancelable named <code title="event-appcache-updateready"><a href="#event-appcache-updateready">updateready</a></code> at the
12909: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12910: host</a>, and append it to <var title="">task list</var>. The
12911: default action of these events must be, if the user agent
12912: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12913: user interface indicating to the user that a new version is
12914: available and that they can activate it by reloading the page.</p>
12915:
12916: </li>
12917:
12918: <li><p>If appropriate, remove any user interface indicating that
12919: an update for this cache is in progress.</p></li>
12920:
12921: <li><p>Set the <a href="#concept-appcache-status" title="concept-appcache-status">update
12922: status</a> of <var title="">cache group</var> to
12923: <i>idle</i>.</p></li>
12924:
12925: <li><p>For each <a href="#concept-task" title="concept-task">task</a> in <var title="">task list</var>, <a href="#queue-a-post-load-task" title="queue a post-load
12926: task">queue that task as a post-load task</a>.</p></li>
12927:
12928: </ol><p>The <dfn id="cache-failure-steps">cache failure steps</dfn> are as follows:</p>
12929:
12930: <ol><li><p>Let <var title="">task list</var> be an empty list of <a href="#concept-task" title="concept-task">tasks</a>.</p>
12931:
12932: </li><li>
12933:
12934: <p>For each entry in <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12935: entries</a>, run the following further substeps. These steps
12936: may be run in parallel for two or more entries at a time.</p>
12937:
12938: <ol><li><p>Wait for the resource for this entry to have either
12939: completely downloaded or failed.</p>
12940:
12941: </li><li><p>Unassociate the <code><a href="dom.html#document">Document</a></code> for this entry from
12942: its <a href="#application-cache">application cache</a>, if it has one.</p></li>
12943:
12944: <li><p>Create a <a href="#concept-task" title="concept-task">task</a> to
12945: <a href="#fire-a-simple-event">fire a simple event</a> that is cancelable named <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code> at the
12946: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the
12947: <code><a href="dom.html#document">Document</a></code> for this entry, if there still is one, and
12948: append it to <var title="">task list</var>. The default action of
12949: these events must be, if the user agent <a href="#shows-caching-progress">shows caching
12950: progress</a>, the display of some sort of user interface
12951: indicating to the user that the user agent failed to save the
12952: application for offline use.</p>
12953:
12954: </li></ol></li>
12955:
12956: <li><p>For each <a href="#cache-host">cache host</a> still associated with an
12957: <a href="#application-cache">application cache</a> in <var title="">cache group</var>,
12958: create a <a href="#concept-task" title="concept-task">task</a> to <a href="#fire-a-simple-event">fire a
12959: simple event</a> that is cancelable named <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code> at the
12960: <code><a href="#applicationcache">ApplicationCache</a></code> singleton of the <a href="#cache-host">cache
12961: host</a>, and append it to <var title="">task list</var>. The
12962: default action of these events must be, if the user agent
12963: <a href="#shows-caching-progress">shows caching progress</a>, the display of some sort of
12964: user interface indicating to the user that the user agent failed to
12965: save the application for offline use.</p></li>
12966:
12967: <li><p>Empty <var title="">cache group</var>'s <a href="#concept-appcache-pending-masters" title="concept-appcache-pending-masters">list of pending master
12968: entries</a>.</p></li>
12969:
12970: <li><p>If <var title="">cache group</var> has an <a href="#application-cache">application
12971: cache</a> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> is
12972: <i>incomplete</i>, then discard that <a href="#application-cache">application
12973: cache</a>.</p>
12974:
12975: </li><li><p>If appropriate, remove any user interface indicating that an
12976: update for this cache is in progress.</p></li>
12977:
12978: <li><p>Let the <a href="#concept-appcache-status" title="concept-appcache-status">status</a>
12979: of <var title="">cache group</var> be <i>idle</i>.</p></li>
12980:
12981: <li><p>If this was a <a href="#concept-appcache-cache" title="concept-appcache-cache">cache
12982: attempt</a>, discard <var title="">cache group</var>
12983: altogether.</p>
12984:
12985: </li><li><p>For each <a href="#concept-task" title="concept-task">task</a> in <var title="">task list</var>, <a href="#queue-a-post-load-task" title="queue a post-load
12986: task">queue that task as a post-load task</a>.</p></li>
12987:
12988: <li><p>Abort the <a href="#application-cache-download-process">application cache download
12989: process</a>.</p></li>
12990:
12991: </ol><p>Attempts to <a href="urls.html#fetch">fetch</a> resources as part of the
12992: <a href="#application-cache-download-process">application cache download process</a> may be done with
12993: cache-defeating semantics, to avoid problems with stale or
12994: inconsistent intermediary caches.</p>
12995:
12996: <hr><p>User agents may invoke the <a href="#application-cache-download-process">application cache download
12997: process</a>, in the background, for any <a href="#application-cache-group">application cache
12998: group</a>, at any time (with no <a href="#cache-host">cache host</a>). This
12999: allows user agents to keep caches primed and to update caches even
13000: before the user visits a site.</p>
13001:
13002: <hr><p>Each <code><a href="dom.html#document">Document</a></code> has a list of <dfn id="pending-application-cache-download-process-tasks">pending application
13003: cache download process tasks</dfn> that is used to delay events
13004: fired by the algorithm above until the document's <code title="event-load">load</code> event has fired. When the
13005: <code><a href="dom.html#document">Document</a></code> is created, the list must be empty.</p>
13006:
13007: <p>When the steps above say to <dfn id="queue-a-post-load-task">queue a post-load task</dfn>
13008: <var title="">task</var>, where <var title="">task</var> is a <a href="#concept-task" title="concept-task">task</a> that dispatches an event on a
13009: target <code><a href="#applicationcache">ApplicationCache</a></code> object <var title="">target</var>, the user agent must run the appropriate steps
13010: from the following list:</p>
13011:
13012: <dl><dt>If <var title="">target</var>'s <code><a href="dom.html#document">Document</a></code> is
13013: <a href="#ready-for-post-load-tasks">ready for post-load tasks</a></dt>
13014:
13015: <dd><p><a href="#queue-a-task" title="queue a task">Queue</a> the task <var title="">task</var>.</p></dd>
13016:
13017: <dt>Otherwise</dt>
13018:
13019: <dd><p>Add <var title="">task</var> to <var title="">target</var>'s
13020: <code><a href="dom.html#document">Document</a></code>'s list of <a href="#pending-application-cache-download-process-tasks">pending application cache
13021: download process tasks</a>.</p></dd>
13022:
13023: </dl><p>The <a href="#task-source">task source</a> for these <a href="#concept-task" title="concept-task">tasks</a> is the <a href="#networking-task-source">networking task
13024: source</a>.</p>
13025:
13026:
13027:
13028:
13029: <h4 id="the-application-cache-selection-algorithm"><span class="secno">5.7.5 </span>The application cache selection algorithm</h4>
13030:
13031: <p>When the <dfn id="concept-appcache-init" title="concept-appcache-init">application cache
13032: selection algorithm</dfn> algorithm is invoked with a
13033: <code><a href="dom.html#document">Document</a></code> <var title="">document</var> and optionally a
13034: manifest <a href="urls.html#url">URL</a> <var title="">manifest URL</var>, the user
13035: agent must run the first applicable set of steps from the following
13036: list:</p>
13037:
13038: <dl class="switch"><dt>If there is a <var title="">manifest URL</var>, and <var title="">document</var> was loaded from an <a href="#application-cache">application
13039: cache</a>, and the URL of the <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> of that cache's
13040: <a href="#application-cache-group">application cache group</a> is <em>not</em> the same as
13041: <var title="">manifest URL</var></dt>
13042:
13043: <dd>
13044:
13045: <p>Mark the entry for the resource from which <var title="">document</var> was taken in the <a href="#application-cache">application
13046: cache</a> from which it was loaded as <a href="#concept-appcache-foreign" title="concept-appcache-foreign">foreign</a>.</p>
13047:
13048: <p>Restart the current navigation from the top of the <a href="#navigate" title="navigate">navigation algorithm</a>, undoing any changes
13049: that were made as part of the initial load (changes can be avoided
13050: by ensuring that the step to <a href="#update-the-session-history-with-the-new-page">update the session history with
13051: the new page</a> is only ever completed <em>after</em> this
13052: <a href="#concept-appcache-init" title="concept-appcache-init">application cache selection
13053: algorithm</a> is run, though this is not required).</p>
13054:
13055: <p class="note">The navigation will not result in the same
13056: resource being loaded, because "foreign" entries are never picked
13057: during navigation.</p>
13058:
13059: <p>User agents may notify the user of the inconsistency between
13060: the cache manifest and the document's own metadata, to aid in
13061: application development.</p>
13062:
13063: </dd>
13064:
13065:
13066: <dt>If <var title="">document</var> was loaded from an
13067: <a href="#application-cache">application cache</a>, and that <a href="#application-cache">application
13068: cache</a> still exists (it is not now <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>)<!--[redundant],
13069: and either there is no <var title="">manifest URL</var>, or the URL
13070: of the <span title="concept-appcache-manifest">manifest</span> of
13071: the cache's <span>application cache group</span> is the same as
13072: <var title="">manifest URL</var>--></dt>
13073:
13074: <dd>
13075:
13076: <p>Associate <var title="">document</var> with the
13077: <a href="#application-cache">application cache</a> from which it was loaded. Invoke,
13078: in the background, the <a href="#application-cache-download-process">application cache download
13079: process</a> for that <a href="#application-cache">application cache</a>'s
13080: <a href="#application-cache-group">application cache group</a>, with <var title="">document</var> as the <a href="#cache-host">cache host</a>.</p>
13081:
13082: </dd>
13083:
13084:
13085: <dt>If <var title="">document</var> <!--[redundant] was not loaded
13086: from an <span>application cache</span>, but it--> was loaded using
13087: HTTP GET <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or
13088: equivalent</a>, and, there is a <var title="">manifest
13089: URL</var>, and <var title="">manifest URL</var> has the <a href="#same-origin">same
13090: origin</a> as <var title="">document</var></dt>
13091:
13092: <dd>
13093:
13094: <p>Invoke, in the background, the <a href="#application-cache-download-process">application cache download
13095: process</a> for <var title="">manifest URL</var>, with <var title="">document</var> as the <a href="#cache-host">cache host</a> and with
13096: the resource from which <var title="">document</var> was parsed as
13097: the <a href="#concept-appcache-master" title="concept-appcache-master">master</a>
13098: resource.</p>
13099:
13100: <p>If there are <a href="#relevant-application-cache" title="relevant application cache">relevant
13101: application caches</a> that are identified by a URL with the
13102: <a href="#same-origin">same origin</a> as the URL of <var title="">document</var>, and that have this URL as one of their
13103: entries, excluding entries marked as <a href="#concept-appcache-foreign" title="concept-appcache-foreign">foreign</a>, then the user
13104: agent should use the <a href="#concept-appcache-selection" title="concept-appcache-selection">most
13105: appropriate application cache</a> of those that match as an
13106: HTTP cache for any subresource loads. User agents may also have
13107: other caches in place that are also honored.</p>
13108:
13109: </dd>
13110:
13111:
13112: <dt>Otherwise</dt> <!-- not from cache and either no <var
13113: title="">manifest URL</var>, or non-GET, or wrong-origin manifest -->
13114:
13115: <dd>
13116:
13117: <p>The <code><a href="dom.html#document">Document</a></code> is not associated with any
13118: <a href="#application-cache">application cache</a>.</p>
13119:
13120: <p>If there was a <var title="">manifest URL</var>, the user agent
13121: may report to the user that it was ignored, to aid in application
13122: development.</p>
13123:
13124: </dd>
13125:
13126: </dl><h4 id="changesToNetworkingModel"><span class="secno">5.7.6 </span>Changes to the networking model</h4>
13127:
13128: <p>When a <a href="#cache-host">cache host</a> is associated with an
13129: <a href="#application-cache">application cache</a> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> is
13130: <i>complete</i>, any and all loads for resources related to that
13131: <a href="#cache-host">cache host</a> other than those for <a href="#child-browsing-context" title="child
13132: browsing context">child browsing contexts</a> must go through the
13133: following steps instead of immediately invoking the mechanisms
13134: appropriate to that resource's scheme:</p>
13135:
1.191 sruby 13136: <ol><!--FETCH--><li><p>If the resource is not to be fetched using the HTTP GET
1.190 sruby 13137: mechanism <a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or
13138: equivalent</a>, or if its <a href="urls.html#url">URL</a> has a different <a href="urls.html#url-scheme" title="url-scheme"><scheme></a> component than the
13139: <a href="#application-cache">application cache</a>'s <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a>, then
13140: <a href="urls.html#fetch">fetch</a> the resource normally and abort these
13141: steps.</p></li>
13142:
13143: <li><p>If the resource's URL is <a href="#concept-appcache-master" title="concept-appcache-master">a master entry</a>, <a href="#concept-appcache-manifest" title="concept-appcache-manifest">the manifest</a>, <a href="#concept-appcache-explicit" title="concept-appcache-explicit">an explicit entry</a>, or
13144: <a href="#concept-appcache-fallback" title="concept-appcache-fallback">a fallback entry</a> in
13145: the <a href="#application-cache">application cache</a>, then get the resource from the
13146: cache (instead of fetching it), and abort these steps.</p></li>
13147:
13148: <li><p>If there is an entry in the <a href="#application-cache">application cache</a>'s
13149: <a href="#concept-appcache-onlinewhitelist" title="concept-appcache-onlinewhitelist">online
13150: whitelist</a> that has the <a href="#same-origin">same origin</a> as the
13151: resource's URL and that is a <a href="infrastructure.html#prefix-match">prefix match</a> for the
13152: resource's URL, then <a href="urls.html#fetch">fetch</a> the resource normally and
13153: abort these steps.</p></li>
13154:
13155: <li>
13156:
13157: <p>If the resource's URL has the <a href="#same-origin">same origin</a> as the
13158: manifest's URL, and there is a <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a>
13159: <var title="">f</var> in the <a href="#application-cache">application cache</a> that
13160: is a <a href="infrastructure.html#prefix-match">prefix match</a> for the resource's URL, then:</p>
13161:
13162: <p><a href="urls.html#fetch">Fetch</a> the resource normally. If this results in a
13163: redirect to a resource with another <a href="#origin-0">origin</a>
13164: (indicative of a captive portal), or a 4xx or 5xx status code
13165: <a href="urls.html#concept-http-equivalent-codes" title="concept-http-equivalent-codes">or equivalent</a>,
13166: or if there were network errors (but not if the user canceled the
13167: download), then instead get, from the cache, the resource of the
13168: <a href="#concept-appcache-fallback" title="concept-appcache-fallback">fallback entry</a>
13169: corresponding to the <a href="#concept-appcache-fallback-ns" title="concept-appcache-fallback-ns">fallback namespace</a>
13170: <var title="">f</var>. Abort these steps.</p>
13171:
13172: </li>
13173:
13174: <li><p>If the <a href="#application-cache">application cache</a>'s <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online whitelist
13175: wildcard flag</a> is <i title="">open</i>, then
13176: <a href="urls.html#fetch">fetch</a> the resource normally and abort these
13177: steps.</p></li>
13178:
13179: <li><p>Fail the resource load as if there had been a generic
13180: network error.</p></li>
13181:
13182: </ol><p class="note">The above algorithm ensures that so long as the
13183: <a href="#concept-appcache-onlinewhitelist-wildcard" title="concept-appcache-onlinewhitelist-wildcard">online
13184: whitelist wildcard flag</a> is <i title="">blocking</i>,
13185: resources that are not present in the <a href="#concept-appcache-manifest" title="concept-appcache-manifest">manifest</a> will always fail
13186: to load (at least, after the <a href="#application-cache">application cache</a> has been
13187: primed the first time), making the testing of offline applications
13188: simpler.</p>
13189:
13190: </div>
13191:
13192:
13193: <div class="impl">
13194:
13195: <h4 id="expiring-application-caches"><span class="secno">5.7.7 </span>Expiring application caches</h4>
13196:
13197: <p>As a general rule, user agents should not expire application
13198: caches, except on request from the user, or after having been left
13199: unused for an extended period of time.</p>
13200:
13201: <p>Application caches and cookies have similar implications with
13202: respect to privacy (e.g. if the site can identify the user when
13203: providing the cache, it can store data in the cache that can be used
13204: for cookie resurrection). Implementors are therefore encouraged to
13205: expose application caches in a manner related to HTTP cookies,
13206: allowing caches to be expunged together with cookies and other
13207: origin-specific data.</p>
13208:
13209: <p class="example">For example, a user agent could have a "delete
13210: site-specific data" feature that clears all cookies, application
13211: caches, local storage, databases, etc, from an origin all at
13212: once.</p>
13213:
13214: </div>
13215:
13216:
13217: <div class="impl">
13218:
13219: <h4 id="disk-space"><span class="secno">5.7.8 </span>Disk space</h4>
13220:
13221: <p>User agents should consider applying constraints on disk usage of
13222: <a href="#application-cache" title="application cache">application caches</a>, and care
13223: should be taken to ensure that the restrictions cannot be easily
13224: worked around using subdomains.</p>
13225:
13226: <p>User agents should allow users to see how much space each domain
13227: is using, and may offer the user the ability to delete specific
13228: <a href="#application-cache" title="application cache">application caches</a>.</p>
13229:
13230: <p class="note">How quotas are presented to the user is not defined
13231: by this specification. User agents are encouraged to provide
13232: features such as allowing a user to indicate that certain sites are
13233: trusted to use more than the default quota, e.g. by asynchronously
13234: presenting a user interface while a cache is being updated, or by
13235: having an explicit whitelist in the user agent's configuration
13236: interface.</p>
13237:
13238: </div>
13239:
13240:
13241:
13242: <h4 id="application-cache-api"><span class="secno">5.7.9 </span>Application cache API</h4>
13243:
13244: <pre class="idl">interface <dfn id="applicationcache">ApplicationCache</dfn> : <a href="infrastructure.html#eventtarget">EventTarget</a> {
13245:
13246: // <a href="#concept-appcache-status" title="concept-appcache-status">update status</a>
13247: const unsigned short <a href="#dom-appcache-uncached" title="dom-appcache-UNCACHED">UNCACHED</a> = 0;
13248: const unsigned short <a href="#dom-appcache-idle" title="dom-appcache-IDLE">IDLE</a> = 1;
13249: const unsigned short <a href="#dom-appcache-checking" title="dom-appcache-CHECKING">CHECKING</a> = 2;
13250: const unsigned short <a href="#dom-appcache-downloading" title="dom-appcache-DOWNLOADING">DOWNLOADING</a> = 3;
13251: const unsigned short <a href="#dom-appcache-updateready" title="dom-appcache-UPDATEREADY">UPDATEREADY</a> = 4;
13252: const unsigned short <a href="#dom-appcache-obsolete" title="dom-appcache-OBSOLETE">OBSOLETE</a> = 5;
13253: readonly attribute unsigned short <a href="#dom-appcache-status" title="dom-appcache-status">status</a>;
13254:
13255: // updates
13256: void <a href="#dom-appcache-update" title="dom-appcache-update">update</a>();
13257: void <a href="#dom-appcache-abort" title="dom-appcache-abort">abort</a>();
13258: void <a href="#dom-appcache-swapcache" title="dom-appcache-swapCache">swapCache</a>();
13259:
13260: // events
13261: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onchecking" title="handler-appcache-onchecking">onchecking</a>;
13262: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onerror" title="handler-appcache-onerror">onerror</a>;
13263: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onnoupdate" title="handler-appcache-onnoupdate">onnoupdate</a>;
13264: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-ondownloading" title="handler-appcache-ondownloading">ondownloading</a>;
13265: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onprogress" title="handler-appcache-onprogress">onprogress</a>;
13266: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onupdateready" title="handler-appcache-onupdateready">onupdateready</a>;
13267: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-oncached" title="handler-appcache-oncached">oncached</a>;
13268: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-appcache-onobsolete" title="handler-appcache-onobsolete">onobsolete</a>;
13269: };</pre>
13270:
13271: <dl class="domintro"><dt><var title="">cache</var> = <var title="">window</var> . <code title="dom-applicationCache"><a href="#dom-applicationcache">applicationCache</a></code></dt>
13272: <dd>
13273:
13274: <p>(In a window.) Returns the <code><a href="#applicationcache">ApplicationCache</a></code> object that applies to the <a href="#active-document">active document</a> of that <code><a href="#window">Window</a></code>.</p>
13275:
13276: </dd>
13277:
13278: <dt><var title="">cache</var> = <var title="">self</var> . <code title="dom-applicationCache"><a href="#dom-applicationcache">applicationCache</a></code></dt>
13279: <dd>
13280:
13281: <p>(In a shared worker.) Returns the <code><a href="#applicationcache">ApplicationCache</a></code> object that applies to the current shared worker.
13282: <a href="#refsWEBWORKERS">[WEBWORKERS]</a>
13283: </p>
13284:
13285: </dd>
13286:
13287: <dt><var title="">cache</var> . <code title="dom-appcache-status"><a href="#dom-appcache-status">status</a></code></dt>
13288: <dd>
13289:
13290: <p>Returns the current status of the application cache, as given by the constants defined below.</p>
13291:
13292: </dd>
13293:
13294: <dt><var title="">cache</var> . <code title="dom-appcache-update"><a href="#dom-appcache-update">update</a></code>()</dt>
13295: <dd>
13296:
13297: <p>Invokes the <a href="#application-cache-download-process">application cache download process</a>.</p>
13298:
13299: <p>Throws an <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception if there is no application cache to update.</p>
13300:
13301: <p>Calling this method is not usually necessary, as user agents
13302: will generally take care of updating <a href="#application-cache" title="application
13303: cache">application caches</a> automatically.</p>
13304:
13305: <p>The method can be useful in situations such as long-lived
13306: applications. For example, a Web mail application might stay open
13307: in a browser tab for weeks at a time. Such an application could
13308: want to test for updates each day.</p>
13309:
13310: </dd>
13311:
13312: <dt><var title="">cache</var> . <code title="dom-appcache-abort"><a href="#dom-appcache-abort">abort</a></code>()</dt>
13313: <dd>
13314:
13315: <p>Cancels the <a href="#application-cache-download-process">application cache download process</a>.</p>
13316:
13317: <p>This method is intended to be used by Web application showing
13318: their own caching progress UI, in case the user wants to stop the
13319: update (e.g. because bandwidth is limited).</p>
13320:
13321: </dd>
13322:
13323: <dt><var title="">cache</var> . <code title="dom-appcache-swapCache"><a href="#dom-appcache-swapcache">swapCache</a></code>()</dt>
13324: <dd>
13325:
13326: <p>Switches to the most recent application cache, if there is a
13327: newer one. If there isn't, throws an
13328: <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception.</p>
13329:
13330: <p>This does not cause previously-loaded resources to be reloaded;
13331: for example, images do not suddenly get reloaded and style sheets
13332: and scripts do not get reparsed or reevaluated. The only change is
13333: that subsequent requests for cached resources will obtain the
13334: newer copies.</p>
13335:
13336: <p>The <code title="event-appcache-updateready"><a href="#event-appcache-updateready">updateready</a></code>
13337: event will fire before this method can be called. Once it fires,
13338: the Web application can, at its leisure, call this method to
13339: switch the underlying cache to the one with the more recent
13340: updates. To make proper use of this, applications have to be able
13341: to bring the new features into play; for example, reloading
13342: scripts to enable new features.</p>
13343:
13344: <p>An easier alternative to <code title="dom-appcache-swapCache"><a href="#dom-appcache-swapcache">swapCache()</a></code> is just to
13345: reload the entire page at a time suitable for the user, using
13346: <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code>.</p>
13347:
13348: </dd>
13349:
13350: </dl><div class="impl">
13351:
13352: <p>There is a one-to-one mapping from <a href="#cache-host" title="cache host">cache
13353: hosts</a> to <code><a href="#applicationcache">ApplicationCache</a></code> objects. The <dfn id="dom-applicationcache" title="dom-applicationCache"><code>applicationCache</code></dfn>
13354: attribute on <code><a href="#window">Window</a></code> objects must return the
13355: <code><a href="#applicationcache">ApplicationCache</a></code> object associated with the
13356: <code><a href="#window">Window</a></code> object's <a href="#active-document">active document</a>. The <dfn id="dom-sharedworkerglobalscope-applicationcache" title="dom-SharedWorkerGlobalScope-applicationCache"><code>applicationCache</code></dfn>
13357: attribute on <code>SharedWorkerGlobalScope</code> objects must
13358: return the <code><a href="#applicationcache">ApplicationCache</a></code> object associated with the
13359: worker.
13360: <a href="#refsWEBWORKERS">[WEBWORKERS]</a>
13361: </p>
13362:
13363: <p class="note">A <code><a href="#window">Window</a></code> or
13364: <code>SharedWorkerGlobalScope</code> object has an associated
13365: <code><a href="#applicationcache">ApplicationCache</a></code> object even if that <a href="#cache-host">cache
13366: host</a> has no actual <a href="#application-cache">application cache</a>.</p>
13367:
13368: <hr><p>The <dfn id="dom-appcache-status" title="dom-appcache-status"><code>status</code></dfn>
13369: attribute, on getting, must return the current state of the
13370: <a href="#application-cache">application cache</a> that the
13371: <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache host</a> is
13372: associated with, if any. This must be the appropriate value from the
13373: following list:</p>
13374:
13375: </div>
13376:
13377: <dl><dt><dfn id="dom-appcache-uncached" title="dom-appcache-UNCACHED"><code>UNCACHED</code></dfn>
13378: (numeric value 0)</dt>
13379:
13380: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13381: host</a> is not associated with an <a href="#application-cache">application
13382: cache</a> at this time.</p></dd>
13383:
13384: <dt><dfn id="dom-appcache-idle" title="dom-appcache-IDLE"><code>IDLE</code></dfn>
13385: (numeric value 1)</dt>
13386:
13387: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13388: host</a> is associated with an <a href="#application-cache">application cache</a>
13389: whose <a href="#application-cache-group">application cache group</a>'s <a href="#concept-appcache-status" title="concept-appcache-status">update status</a> is
13390: <i>idle</i>, and that <a href="#application-cache">application cache</a> is the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> cache in its
13391: <a href="#application-cache-group">application cache group</a>, and the <a href="#application-cache-group">application
13392: cache group</a> is not marked as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>.</p></dd>
13393:
13394: <dt><dfn id="dom-appcache-checking" title="dom-appcache-CHECKING"><code>CHECKING</code></dfn>
13395: (numeric value 2)</dt>
13396:
13397: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13398: host</a> is associated with an <a href="#application-cache">application cache</a>
13399: whose <a href="#application-cache-group">application cache group</a>'s <a href="#concept-appcache-status" title="concept-appcache-status">update status</a> is
13400: <i>checking</i>.</p></dd>
13401:
13402: <dt><dfn id="dom-appcache-downloading" title="dom-appcache-DOWNLOADING"><code>DOWNLOADING</code></dfn>
13403: (numeric value 3)</dt>
13404:
13405: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13406: host</a> is associated with an <a href="#application-cache">application cache</a>
13407: whose <a href="#application-cache-group">application cache group</a>'s <a href="#concept-appcache-status" title="concept-appcache-status">update status</a> is
13408: <i>downloading</i>.</p></dd>
13409:
13410: <dt><dfn id="dom-appcache-updateready" title="dom-appcache-UPDATEREADY"><code>UPDATEREADY</code></dfn>
13411: (numeric value 4)</dt>
13412:
13413: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13414: host</a> is associated with an <a href="#application-cache">application cache</a>
13415: whose <a href="#application-cache-group">application cache group</a>'s <a href="#concept-appcache-status" title="concept-appcache-status">update status</a> is
13416: <i>idle</i>, and whose <a href="#application-cache-group">application cache group</a> is not
13417: marked as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>,
13418: but that <a href="#application-cache">application cache</a> is <em>not</em> the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> cache in its
13419: group.</p></dd>
13420:
13421: <dt><dfn id="dom-appcache-obsolete" title="dom-appcache-OBSOLETE"><code>OBSOLETE</code></dfn>
13422: (numeric value 5)</dt>
13423:
13424: <dd><p>The <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache
13425: host</a> is associated with an <a href="#application-cache">application cache</a>
13426: whose <a href="#application-cache-group">application cache group</a> is marked as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>.</p></dd>
13427:
13428: </dl><div class="impl">
13429:
13430: <hr><p>If the <dfn id="dom-appcache-update" title="dom-appcache-update"><code>update()</code></dfn> method is
13431: invoked, the user agent must invoke the <a href="#application-cache-download-process">application cache
13432: download process</a>, in the background, for the
13433: <a href="#application-cache-group">application cache group</a> of the <a href="#application-cache">application
13434: cache</a> with which the <code><a href="#applicationcache">ApplicationCache</a></code> object's
13435: <a href="#cache-host">cache host</a> is associated, but without giving that
13436: <a href="#cache-host">cache host</a> to the algorithm. If there is no such
13437: <a href="#application-cache">application cache</a>, or if its <a href="#application-cache-group">application cache
13438: group</a> is marked as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>, then the method
13439: must throw an <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception instead.</p>
13440:
13441: <p>If the <dfn id="dom-appcache-abort" title="dom-appcache-abort"><code>abort()</code></dfn>
13442: method is invoked, the user agent must <dfn id="send-a-signal">send a signal</dfn> to
13443: the current <a href="#application-cache-download-process">application cache download process</a> for the
13444: <a href="#application-cache-group">application cache group</a> of the <a href="#application-cache">application
13445: cache</a> with which the <code><a href="#applicationcache">ApplicationCache</a></code> object's
13446: <a href="#cache-host">cache host</a> is associated, if any. If there is no such
13447: <a href="#application-cache">application cache</a>, or it does not have a current
13448: <a href="#application-cache-download-process">application cache download process</a>, then do
13449: nothing.</p>
13450:
13451: <p>If the <dfn id="dom-appcache-swapcache" title="dom-appcache-swapCache"><code>swapCache()</code></dfn> method
13452: is invoked, the user agent must run the following steps:
13453:
13454: </p><ol><li><p>Check that <code><a href="#applicationcache">ApplicationCache</a></code> object's
13455: <a href="#cache-host">cache host</a> is associated with an <a href="#application-cache">application
13456: cache</a>. If it is not, then throw an
13457: <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception and abort these
13458: steps.</p></li>
13459:
13460: <li><p>Let <var title="">cache</var> be the <a href="#application-cache">application
13461: cache</a> with which the <code><a href="#applicationcache">ApplicationCache</a></code> object's
13462: <a href="#cache-host">cache host</a> is associated. (By definition, this is the
13463: same as the one that was found in the previous step.)</p></li>
13464:
13465: <li><p>If <var title="">cache</var>'s <a href="#application-cache-group">application cache
13466: group</a> is marked as <a href="#concept-appcache-obsolete" title="concept-appcache-obsolete">obsolete</a>, then unassociate
13467: the <code><a href="#applicationcache">ApplicationCache</a></code> object's <a href="#cache-host">cache host</a>
13468: from <var title="">cache</var> and abort these steps. (Resources
13469: will now load from the network instead of the cache.)</p></li>
13470:
13471: <li><p>Check that there is an application cache in the same
13472: <a href="#application-cache-group">application cache group</a> as <var title="">cache</var>
13473: whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness
13474: flag</a> is <i>complete</i> and that is <a href="#concept-appcache-newer" title="concept-appcache-newer">newer</a> than <var title="">cache</var>. If there is not, then throw an
13475: <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception and abort these
13476: steps.</p></li>
13477:
13478: <li><p>Let <var title="">new cache</var> be the <a href="#concept-appcache-newer" title="concept-appcache-newer">newest</a> <a href="#application-cache">application
13479: cache</a> in the same <a href="#application-cache-group">application cache group</a> as
13480: <var title="">cache</var> whose <a href="#concept-appcache-completeness" title="concept-appcache-completeness">completeness flag</a> is
13481: <i>complete</i>.</p></li>
13482:
13483: <li><p>Unassociate the <code><a href="#applicationcache">ApplicationCache</a></code> object's
13484: <a href="#cache-host">cache host</a> from <var title="">cache</var> and instead
13485: associate it with <var title="">new cache</var>.</p></li>
13486:
13487: </ol><p>The following are the <a href="#event-handlers">event handlers</a> (and their
13488: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
13489: event types</a>) that must be supported, as IDL attributes, by
13490: all objects implementing the <code><a href="#applicationcache">ApplicationCache</a></code>
13491: interface:</p>
13492:
13493: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
13494: </th></tr></thead><tbody><tr><td><dfn id="handler-appcache-onchecking" title="handler-appcache-onchecking"><code>onchecking</code></dfn> </td><td> <code title="event-appcache-checking"><a href="#event-appcache-checking">checking</a></code>
13495: </td></tr><tr><td><dfn id="handler-appcache-onerror" title="handler-appcache-onerror"><code>onerror</code></dfn> </td><td> <code title="event-appcache-error"><a href="#event-appcache-error">error</a></code>
13496: </td></tr><tr><td><dfn id="handler-appcache-onnoupdate" title="handler-appcache-onnoupdate"><code>onnoupdate</code></dfn> </td><td> <code title="event-appcache-noupdate"><a href="#event-appcache-noupdate">noupdate</a></code>
13497: </td></tr><tr><td><dfn id="handler-appcache-ondownloading" title="handler-appcache-ondownloading"><code>ondownloading</code></dfn> </td><td> <code title="event-appcache-downloading"><a href="#event-appcache-downloading">downloading</a></code>
13498: </td></tr><tr><td><dfn id="handler-appcache-onprogress" title="handler-appcache-onprogress"><code>onprogress</code></dfn> </td><td> <code title="event-appcache-progress"><a href="#event-appcache-progress">progress</a></code>
13499: </td></tr><tr><td><dfn id="handler-appcache-onupdateready" title="handler-appcache-onupdateready"><code>onupdateready</code></dfn> </td><td> <code title="event-appcache-updateready"><a href="#event-appcache-updateready">updateready</a></code>
13500: </td></tr><tr><td><dfn id="handler-appcache-oncached" title="handler-appcache-oncached"><code>oncached</code></dfn> </td><td> <code title="event-appcache-cached"><a href="#event-appcache-cached">cached</a></code>
13501: </td></tr><tr><td><dfn id="handler-appcache-onobsolete" title="handler-appcache-onobsolete"><code>onobsolete</code></dfn> </td><td> <code title="event-appcache-obsolete"><a href="#event-appcache-obsolete">obsolete</a></code>
13502: </td></tr></tbody></table></div>
13503:
13504:
13505: <h4 id="browser-state"><span class="secno">5.7.10 </span>Browser state</h4>
13506:
13507: <pre class="idl">[NoInterfaceObject]
13508: interface <dfn id="navigatoronline">NavigatorOnLine</dfn> {
13509: readonly attribute boolean <a href="#dom-navigator-online" title="dom-navigator-onLine">onLine</a>;
13510: };</pre>
13511:
13512: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-onLine"><a href="#dom-navigator-online">onLine</a></code></dt>
13513:
13514: <dd>
13515:
13516: <p>Returns false if the user agent is definitely offline
13517: (disconnected from the network). Returns true if the user agent
13518: might be online.</p>
13519:
13520: <p>The events <code title="event-online"><a href="#event-online">online</a></code> and <code title="event-offline"><a href="#event-offline">offline</a></code> are fired when the value of
13521: this attribute changes.</p>
13522:
13523: </dd>
13524:
13525: </dl><div class="impl">
13526:
13527: <p>The <dfn id="dom-navigator-online" title="dom-navigator-onLine"><code>navigator.onLine</code></dfn>
13528: attribute must return false if the user agent will not contact the
13529: network when the user follows links or when a script requests a
13530: remote page (or knows that such an attempt would fail), and must
13531: return true otherwise.</p>
13532:
13533: <p>When the value that would be returned by the <code title="dom-navigator-onLine"><a href="#dom-navigator-online">navigator.onLine</a></code> attribute of a
13534: <code><a href="#window">Window</a></code> or <code>WorkerGlobalScope</code> changes from
13535: true to false, the user agent must <a href="#queue-a-task">queue a task</a> to
13536: <a href="#fire-a-simple-event">fire a simple event</a> named <dfn id="event-offline" title="event-offline"><code>offline</code></dfn> at the
13537: <code><a href="#window">Window</a></code> or <code>WorkerGlobalScope</code> object.</p>
13538:
13539: <p>On the other hand, when the value that would be returned by the
13540: <code title="dom-navigator-onLine"><a href="#dom-navigator-online">navigator.onLine</a></code> attribute
13541: of a <code><a href="#window">Window</a></code> or <code>WorkerGlobalScope</code> changes
13542: from false to true, the user agent must <a href="#queue-a-task">queue a task</a> to
13543: <a href="#fire-a-simple-event">fire a simple event</a> named <dfn id="event-online" title="event-online"><code>online</code></dfn> at the
13544: <code><a href="#window">Window</a></code> or <code>WorkerGlobalScope</code> object.</p>
13545:
13546: <p>The <a href="#task-source">task source</a> for these <a href="#concept-task" title="concept-task">tasks</a> is the <a href="#networking-task-source">networking task
13547: source</a>.</p>
13548:
13549: </div>
13550:
13551: <p class="note">This attribute is inherently unreliable. A computer
13552: can be connected to a network without having Internet access.</p>
13553:
13554: <div class="example">
13555:
13556: <p>In this example, an indicator is updated as the browser goes
13557: online and offline.</p>
13558:
13559: <pre><!DOCTYPE HTML>
13560: <html>
13561: <head>
13562: <title>Online status</title>
13563: <script>
13564: function updateIndicator() {
13565: document.getElementById('indicator').textContent = navigator.onLine ? 'online' : 'offline';
13566: }
13567: </script>
13568: </head>
13569: <body onload="updateIndicator()" ononline="updateIndicator()" onoffline="updateIndicator()">
13570: <p>The network is: <span id="indicator">(state unknown)</span>
13571: </body>
13572: </html></pre>
13573:
13574: </div>
13575:
13576: <!--TOPIC:HTML-->
13577:
13578: <h2 id="webappapis"><span class="secno">6 </span>Web application APIs</h2>
13579:
13580: <h3 id="scripting"><span class="secno">6.1 </span>Scripting</h3>
13581:
13582: <h4 id="introduction-5"><span class="secno">6.1.1 </span>Introduction</h4>
13583:
13584: <p>Various mechanisms can cause author-provided executable code to
13585: run in the context of a document. These mechanisms include, but are
13586: probably not limited to:</p>
13587:
13588: <ul><li>Processing of <code><a href="the-script-element.html#the-script-element">script</a></code> elements.</li>
13589:
13590: <li>Processing of inline <code title="javascript
13591: protocol"><a href="#javascript-protocol">javascript:</a></code> URLs (e.g. the <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute of <code><a href="the-img-element.html#the-img-element">img</a></code>
13592: elements, or an <code title="">@import</code> rule in a CSS
13593: <code><a href="the-style-element.html#the-style-element">style</a></code> element block).</li>
13594:
13595: <li>Event handlers, whether registered through the DOM using <code title="">addEventListener()</code>, by explicit <a href="#event-handler-content-attributes">event handler
13596: content attributes</a>, by <a href="#event-handler-idl-attributes">event handler IDL
13597: attributes</a>, or otherwise.</li>
13598:
13599: <li>Processing of technologies like XBL or SVG that have their own
13600: scripting features.</li>
13601:
13602: </ul><div class="impl">
13603:
13604: <h4 id="enabling-and-disabling-scripting"><span class="secno">6.1.2 </span>Enabling and disabling scripting</h4>
13605:
13606: <p><dfn id="concept-bc-script" title="concept-bc-script">Scripting is enabled</dfn> in a
13607: <em><a href="#browsing-context"><span>browsing context</span></a></em> when all of the
13608: following conditions are true:</p>
13609:
13610: <ul><li>The user agent supports scripting.</li>
13611:
13612: <li>The user has not disabled scripting for this <a href="#browsing-context">browsing
13613: context</a> at this time. (User agents may provide users with
13614: the option to disable scripting globally, or in a finer-grained
13615: manner, e.g. on a per-origin basis.)
13616: <!--INSERT FINGERPRINT-->
13617: </li>
13618:
13619: <li id="sandboxScriptBlocked">The <a href="#browsing-context">browsing context</a>'s
13620: <a href="#active-document">active document</a>'s <a href="#active-sandboxing-flag-set">active sandboxing flag
13621: set</a> does not have its <a href="#sandboxed-scripts-browsing-context-flag">sandboxed scripts browsing
13622: context flag</a> set.</li>
13623:
13624: </ul><p><dfn id="concept-bc-noscript" title="concept-bc-noscript">Scripting is disabled</dfn> in a
13625: <a href="#browsing-context">browsing context</a> when any of the above conditions are
13626: false (i.e. when scripting is not <a href="#concept-bc-script" title="concept-bc-script">enabled</a>).</p>
13627:
13628: <hr><p><dfn id="concept-n-script" title="concept-n-script">Scripting is enabled</dfn> for a
13629: <em><a href="infrastructure.html#node">node</a></em> if the <code><a href="dom.html#document">Document</a></code> object of the node (the
13630: node itself, if it is itself a <code><a href="dom.html#document">Document</a></code> object) has an
13631: associated <a href="#browsing-context">browsing context</a>, and <a href="#concept-bc-script" title="concept-bc-script">scripting is enabled</a> in that
13632: <a href="#browsing-context">browsing context</a>.</p>
13633:
13634: <p><dfn id="concept-n-noscript" title="concept-n-noscript">Scripting is disabled</dfn> for a
13635: node if there is no such <a href="#browsing-context">browsing context</a>, or if <a href="#concept-bc-noscript" title="concept-bc-noscript">scripting is disabled</a> in that
13636: <a href="#browsing-context">browsing context</a>.</p>
13637:
13638: </div>
13639:
13640:
13641: <div class="impl">
13642:
13643: <!-- SCRIPT EXEC (marks areas related to creation of scripts) -->
1.191 sruby 13644: <h4 id="processing-model-2"><span class="secno">6.1.3 </span>Processing model</h4>
1.190 sruby 13645:
13646: <h5 id="definitions-0"><span class="secno">6.1.3.1 </span>Definitions</h5>
13647:
13648: <p>This specification describes three kinds of <a href="infrastructure.html#javascript-global-environment" title="JavaScript global environment">JavaScript global
13649: environments</a>: the <dfn id="document-environment">document environment</dfn>, the
13650: <dfn id="dedicated-worker-environment">dedicated worker environment</dfn>, and the <dfn id="shared-worker-environment">shared worker
13651: environment</dfn>. The <a href="#dedicated-worker-environment">dedicated worker environment</a> and
13652: the <a href="#shared-worker-environment">shared worker environment</a> are both types of <dfn id="worker-environment" title="worker environment">worker environments</dfn>.</p>
13653:
13654: <p>Except where otherwise specified, a <a href="infrastructure.html#javascript-global-environment">JavaScript global
13655: environment</a> is a <a href="#document-environment">document environment</a>.</p> <!--
13656: note that we never actually say where one of these is created... -->
13657:
13658: <hr><p>A <dfn id="concept-script" title="concept-script">script</dfn> has:</p>
13659:
13660: <dl><dt>A <dfn id="script-execution-environment">script execution environment</dfn></dt>
13661:
13662: <dd>
13663:
13664: <p>The characteristics of the script execution environment depend
13665: on the language, and are not defined by this specification.</p>
13666:
13667: <p class="example">In JavaScript, the script execution environment
13668: consists of the interpreter, the stack of <i>execution
13669: contexts</i>, the <i>global code</i> and <i>function code</i> and
13670: the <code>Function</code> objects resulting, and so forth.</p>
13671:
13672: </dd>
13673:
13674: <dt>A <dfn id="list-of-code-entry-points">list of code entry-points</dfn></dt>
13675:
13676: <dd>
13677:
13678: <p>Each code entry-point represents a block of executable code
13679: that the script exposes to other scripts and to the user
13680: agent.</p>
13681:
13682: <p class="example">Each <code>Function</code> object in a
13683: JavaScript <a href="#script-execution-environment">script execution environment</a> has a
13684: corresponding code entry-point, for instance.</p>
13685:
13686: <p>The main program code of the script, if any, is the
13687: <dfn id="initial-code-entry-point"><i>initial code entry-point</i></dfn>. Typically, the code
13688: corresponding to this entry-point is executed immediately after
13689: the script is parsed.</p>
13690:
13691: <p class="example">In JavaScript, this corresponds to the
13692: execution context of the global code.</p>
13693:
13694: </dd>
13695:
13696: <dt>A relationship with the <dfn id="script's-global-object">script's global object</dfn></dt>
13697:
13698: <dd>
13699:
13700: <p>An object that provides the APIs that the code can use.</p>
13701:
13702: <p class="example">This is typically a <code><a href="#window">Window</a></code>
13703: object. In JavaScript, this corresponds to the <i>global
13704: object</i>.</p>
13705:
13706: <p class="note">When a <a href="#script's-global-object">script's global object</a> is an
13707: empty object, it can't do anything that interacts with the
13708: environment.</p>
13709:
13710: <p>If the <a href="#script's-global-object">script's global object</a> is a
13711: <code><a href="#window">Window</a></code> object, then in JavaScript, the ThisBinding of
13712: the global execution context for this script must be the
13713: <code><a href="#window">Window</a></code> object's <code><a href="#windowproxy">WindowProxy</a></code> object,
13714: rather than the global object. <a href="#refsECMA262">[ECMA262]</a></p>
13715:
13716: <p class="note">This is a <a href="introduction.html#willful-violation">willful violation</a> of the
13717: JavaScript specification current at the time of writing
13718: (ECMAScript edition 5, as defined in section 10.4.1.1 Initial
13719: Global Execution Context, step 3). The JavaScript specification
13720: requires that the <code title="">this</code> keyword in the global
13721: scope return the global object, but this is not compatible with
13722: the security design prevalent in implementations as specified
13723: herein. <a href="#refsECMA262">[ECMA262]</a></p>
13724:
13725: </dd>
13726:
13727: <dt>A relationship with the <dfn id="script's-browsing-context">script's browsing context</dfn></dt>
13728:
13729: <dd>
13730:
13731: <p>A <a href="#browsing-context">browsing context</a> that is assigned responsibility
13732: for actions taken by the script.</p>
13733:
13734: <p class="example">When a script creates and <a href="#navigate" title="navigate">navigates</a> a new <a href="#top-level-browsing-context">top-level browsing
13735: context</a>, the <code title="dom-opener"><a href="#dom-opener">opener</a></code>
13736: attribute of the new <a href="#browsing-context">browsing context</a>'s
13737: <code><a href="#window">Window</a></code> object will be set to the <a href="#script's-browsing-context">script's
13738: browsing context</a>'s <code><a href="#windowproxy">WindowProxy</a></code> object.</p>
13739:
13740: </dd>
13741:
13742: <dt>A relationship with the <dfn id="script's-document">script's document</dfn></dt>
13743:
13744: <dd>
13745:
13746: <p>A <code><a href="dom.html#document">Document</a></code> that is assigned responsibility for
13747: actions taken by the script.</p>
13748:
1.191 sruby 13749: <p class="example">For example, the <a href="dom.html#the-document's-address" title="the document's
13750: address">address</a> of the <a href="#script's-document">script's document</a> is
13751: used to set the <a href="dom.html#the-document's-address" title="the document's
13752: address">address</a> of any <code><a href="dom.html#document">Document</a></code> elements
13753: created using <code title="dom-DOMImplementation-createDocument"><a href="infrastructure.html#dom-domimplementation-createdocument">createDocument()</a></code>.</p>
13754:
13755: </dd>
13756:
13757: <dt>The <dfn id="script's-referrer-source">script's referrer source</dfn></dt>
13758:
13759: <dd>
13760:
13761: <p>Either a <code><a href="dom.html#document">Document</a></code> (specifically, the
13762: <a href="#script's-document">script's document</a>), or a <a href="urls.html#url">URL</a>, which is
13763: used by some APIs to determine what value to use for the <code title="http-referer">Referer</code> (sic) header in calls to the
13764: <a href="urls.html#fetch" title="fetch">fetching</a> algorithm.</p>
1.190 sruby 13765:
13766: </dd>
13767:
13768: <dt>A <dfn id="script's-url-character-encoding" title="script's URL character encoding">URL character encoding</dfn></dt>
13769:
13770: <dd>
13771:
13772: <p>A character encoding, set when the script is created, used to
13773: encode URLs. <span id="sce-not-copy" title="">If the character
13774: encoding is set from another source, e.g. a <a href="infrastructure.html#document's-character-encoding">document's
13775: character encoding</a>, then the <a href="#script's-url-character-encoding">script's URL character
13776: encoding</a> must follow the source, so that if the source's
13777: changes, so does the script's.</span></p>
13778:
13779: </dd>
13780:
13781: <dt>A <dfn id="script's-base-url" title="script's base URL">base URL</dfn></dt>
13782:
13783: <dd>
13784:
13785: <p>A <a href="urls.html#url">URL</a>, set when the script is created, used to
13786: resolve relative URLs. <span id="sbu-not-copy" title="">If the
13787: base URL is set from another source, e.g. a <a href="urls.html#document-base-url">document base
13788: URL</a>, then the <a href="#script's-base-url">script's base URL</a> must follow
13789: the source, so that if the source's changes, so does the
13790: script's.</span></p>
13791:
13792: </dd>
13793:
13794: </dl></div>
13795:
13796:
13797: <div class="impl">
13798:
13799: <h5 id="calling-scripts"><span class="secno">6.1.3.2 </span>Calling scripts</h5>
13800:
13801: <p>When a user agent is to <dfn id="jump-to-a-code-entry-point">jump to a code entry-point</dfn> for
13802: a <a href="#concept-script" title="concept-script">script</a>, for example to invoke
13803: an event listener defined in that <a href="#concept-script" title="concept-script">script</a>, the user agent must run the
13804: following steps:</p>
13805:
13806: <ol><li><p>If the <a href="#script's-global-object">script's global object</a> is a
13807: <code><a href="#window">Window</a></code> object whose <code><a href="dom.html#document">Document</a></code> object is
13808: not <a href="#fully-active">fully active</a>, then abort these steps without doing
13809: anything. The callback is not run.</p>
13810:
13811: </li><li><p>Set the <a href="#entry-script">entry script</a> to be the <a href="#concept-script" title="concept-script">script</a> being invoked.</p></li>
13812:
13813: <li><p>Make the <a href="#script-execution-environment" title="script execution environment">script
13814: execution environment</a> for the <a href="#concept-script" title="concept-script">script</a> execute the code for the given
13815: code entry-point.</p></li>
13816:
13817: <li><p>Set the <a href="#entry-script">entry script</a> back to whatever it was
13818: when this algorithm started.</p></li>
13819:
13820: <li><p><a href="#perform-a-microtask-checkpoint">Perform a microtask checkpoint</a>.</p></li>
13821:
13822: </ol><p>This algorithm is not invoked by one script calling another.</p>
13823:
13824: </div>
13825:
13826:
13827: <div class="impl">
13828:
13829: <h5 id="creating-scripts"><span class="secno">6.1.3.3 </span>Creating scripts</h5>
13830:
13831: <p>When the specification says that a <a href="#concept-script" title="concept-script">script</a> is to be <dfn id="create-a-script" title="create a
13832: script">created</dfn>, given some script source, a script source
13833: URL, its scripting language, a global object, a browsing context, a
1.191 sruby 13834: document, a referrer source, a URL character encoding, and a base
13835: URL, the user agent must run the following steps:</p>
1.190 sruby 13836:
13837: <ol><li><p>If <a href="#concept-bc-noscript" title="concept-bc-noscript">scripting is
13838: disabled</a> for <a href="#browsing-context">browsing context</a> passed to this
13839: algorithm, then abort these steps, as if the script did nothing but
13840: return void.</p>
13841:
13842: </li><li><p>Set up a <a href="#script-execution-environment">script execution environment</a> as
13843: appropriate for the scripting language.</p></li>
13844:
13845: <li><p>Parse/compile/initialize the source of the script using the
13846: <a href="#script-execution-environment">script execution environment</a>, as appropriate for the
13847: scripting language, and thus obtain the <a href="#list-of-code-entry-points">list of code
13848: entry-points</a> for the script. If the semantics of the
13849: scripting language and the given source code are such that there is
13850: executable code to be immediately run, then the <i><a href="#initial-code-entry-point">initial code
13851: entry-point</a></i> is the entry-point for that code.</p></li>
13852:
13853: <li><p>Set up the <a href="#script's-global-object">script's global object</a>, the
13854: <a href="#script's-browsing-context">script's browsing context</a>, the <a href="#script's-document">script's
1.191 sruby 13855: document</a>, the <a href="#script's-referrer-source">script's referrer source</a>, the
13856: <a href="#script's-url-character-encoding">script's URL character encoding</a>, and the
13857: <a href="#script's-base-url">script's base URL</a> from the settings passed to this
13858: algorithm.</p></li>
1.190 sruby 13859:
13860: <li>
13861:
13862: <p>If all the steps above succeeded (in particular, if the script
13863: was compiled successfully), <a href="#jump-to-a-code-entry-point" title="jump to a code
13864: entry-point">Jump</a> to the <a href="#concept-script" title="concept-script">script</a>'s <i><a href="#initial-code-entry-point">initial code
13865: entry-point</a></i>.</p>
13866:
13867: <p>Otherwise, <a href="#report-the-error">report the error</a> at the script source
13868: URL, with the problematic position (line number and column
13869: number), in the script's <a href="#origin-0">origin</a>, using the <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code> <a href="#event-handlers" title="event
13870: handlers">event handler</a> of the <a href="#script's-global-object">script's global
13871: object</a>. If the error is still <i title="concept-error-nothandled"><a href="#concept-error-nothandled">not handled</a></i> after this, then
13872: the error may be reported to the user.</p>
13873:
13874: </li>
13875:
13876: </ol><hr><p>When the user agent is to <dfn id="create-an-impotent-script">create an impotent script</dfn>,
13877: given some script source and URL, its scripting language, and a
13878: browsing context, the user agent must <a href="#create-a-script">create a script</a>,
13879: using the given script source, URL, and scripting language, using a
13880: new empty object as the global object, and using the given browsing
1.191 sruby 13881: context as the browsing context. The referrer source, URL character
13882: encoding, and base URL for the resulting <a href="#concept-script" title="concept-script">script</a> are not important as no APIs
13883: are exposed to the script.</p>
1.190 sruby 13884:
13885: <hr><p>When the specification says that a <a href="#concept-script" title="concept-script">script</a> is to be <dfn id="create-a-script-from-a-node" title="create a
13886: script from a node">created from a node</dfn> <var title="">node</var>, given some script source, its URL, and its
13887: scripting language, the user agent must <a href="#create-a-script">create a
13888: script</a>, using the given script source, URL, and scripting
13889: language, and using <a href="#the-script-settings-determined-from-the-node">the script settings determined from the
13890: node</a> <var title="">node</var>.</p>
13891:
13892: <p><dfn id="the-script-settings-determined-from-the-node">The script settings determined from the node</dfn> <var title="">node</var> are computed as follows:</p>
13893:
13894: <ol><li><p>Let <var title="">document</var> be the
13895: <code><a href="dom.html#document">Document</a></code> of <var title="">node</var> (or <var title="">node</var> itself if it is a
13896: <code><a href="dom.html#document">Document</a></code>).</p></li>
13897:
1.191 sruby 13898: <li><p>The global object is the <code><a href="#window">Window</a></code> object of <var title="">document</var>.</p></li>
13899:
1.190 sruby 13900: <li><p>The browsing context is the <a href="#browsing-context">browsing context</a> of
13901: <var title="">document</var>.</p>
13902:
1.191 sruby 13903: </li><li><p>The document is <var title="">document</var>.</p>
1.190 sruby 13904:
1.191 sruby 13905: </li><li><p>The referrer source is <var title="">document</var>.</p>
13906:
13907: </li><li><p>The URL character encoding is the <a href="infrastructure.html#document's-character-encoding" title="document's
1.190 sruby 13908: character encoding">character encoding</a> of <var title="">document</var>. (<a href="#sce-not-copy">This is a
13909: reference, not a copy</a>.)</p></li>
13910:
13911: <li><p>The base URL is the <a href="urls.html#document-base-url" title="document base URL">base
13912: URL</a> of <var title="">document</var>. (<a href="#sbu-not-copy">This is a reference, not a copy</a>.)</p></li>
13913:
13914: </ol></div>
13915:
13916:
13917: <div class="impl">
13918:
13919: <h5 id="killing-scripts"><span class="secno">6.1.3.4 </span>Killing scripts</h5>
13920:
13921: <p>User agents may impose resource limitations on scripts, for
13922: example CPU quotas, memory limits, total execution time limits, or
13923: bandwidth limitations. When a script exceeds a limit, the user agent
13924: may either throw a <code><a href="infrastructure.html#quotaexceedederror">QuotaExceededError</a></code> exception, abort
13925: the script without an exception, prompt the user, or throttle script
13926: execution.</p>
13927:
13928: <div class="example">
13929:
13930: <p>For example, the following script never terminates. A user agent
13931: could, after waiting for a few seconds, prompt the user to either
13932: terminate the script or let it continue.</p>
13933:
13934: <pre><script>
13935: while (true) { /* loop */ }
13936: </script></pre>
13937:
13938: </div>
13939:
13940: <p>User agents are encouraged to allow users to disable scripting
13941: whenever the user is prompted either by a script (e.g. using the
13942: <code title="dom-alert"><a href="#dom-alert">window.alert()</a></code> API) or because of a
13943: script's actions (e.g. because it has exceeded a time limit).</p>
13944:
13945: <p>If scripting is disabled while a script is executing, the script
13946: should be terminated immediately.</p>
13947:
13948: <p>User agents may allow users to specifically disable scripts just
13949: for the purposes of closing a <a href="#browsing-context">browsing context</a>.</p>
13950:
13951: <p class="example">For example, the prompt mentioned in the example
13952: above could also offer the user with a mechanism to just close the
13953: page entirely, without running any <code title="event-unload">unload</code> event handlers.</p>
13954:
13955: </div>
13956:
13957:
13958: <div class="impl">
13959:
13960: <h5 id="runtime-script-errors"><span class="secno">6.1.3.5 </span>Runtime script errors</h5>
13961:
13962: <p>When the user agent is required to <dfn id="report-the-error" title="report the
13963: error">report an error</dfn> at a particular <a href="urls.html#url">URL</a> <var title="">location</var> with a particular position <var title="">line</var>:<var title="">col</var> in a particular origin <var title="">origin</var>, using the <a href="#event-handlers" title="event handlers">event
13964: handler</a> <var title="">onerror</var>, it must run these steps,
13965: after which the error is either <dfn id="concept-error-handled" title="concept-error-handled"><i>handled</i></dfn> or <dfn id="concept-error-nothandled" title="concept-error-nothandled"><i>not handled</i></dfn>:</p>
13966:
13967: <dl class="switch"><dt>If the value of <var title="">onerror</var> is an
13968: <code><a href="#onerroreventhandler">OnErrorEventHandler</a></code></dt>
13969:
13970: <dd>
13971:
13972: <ol><li><p>Let <var title="">message</var> be a user-agent-defined
13973: string describing the error in a helpful manner.</p></li>
13974:
13975: <li><p>If the <var title="">location</var> <a href="urls.html#url">URL</a> does
13976: not have a <a href="#same-origin" title="same origin">same</a>
13977: <a href="#origin-0">origin</a> as the <var title="">origin</var>, then set
13978: <var title="">message</var> to "<code title="">Script
13979: error.</code>", set <var title="">location</var> to the empty
13980: string, and set <var title="">line</var> and <var title="">col</var> to 0.</p></li>
13981:
13982: <li>
13983:
13984: <p>The callback must be invoked with four arguments: <var title="">message</var>, <var title="">location</var>, <var title="">line</var>, and <var title="">col</var>.</p>
13985:
13986: <p>If the callback returns true, then the error is <i title="concept-error-handled"><a href="#concept-error-handled">handled</a></i>. Otherwise, the error
13987: is <i title="concept-error-nothandled"><a href="#concept-error-nothandled">not handled</a></i>.</p>
13988:
13989: <p>Any uncaught exceptions thrown or errors caused by this
13990: function may be reported to the user immediately after the error
13991: that the function was called for; the <a href="#report-the-error" title="report the
13992: error">report an error</a> algorithm must not be used to handle
13993: exceptions thrown or errors caused by this function.</p>
13994:
13995: </li>
13996:
13997: </ol></dd>
13998:
13999: <dt>Otherwise</dt>
14000:
14001: <dd>
14002:
14003: <p>The error is <i title="concept-error-nothandled"><a href="#concept-error-nothandled">not handled</a></i>.</p>
14004:
14005: </dd>
14006:
14007: </dl><h6 id="runtime-script-errors-in-documents"><span class="secno">6.1.3.5.1 </span>Runtime script errors in documents</h6>
14008:
14009: <p>Whenever an uncaught runtime script error occurs in one of the
14010: scripts associated with a <code><a href="dom.html#document">Document</a></code>, the user agent must
14011: <a href="#report-the-error">report the error</a> at the URL of the resource containing
14012: the script (as established when the <a href="#concept-script" title="concept-script">script</a> was <a href="#create-a-script" title="create a
14013: script">created</a>), with the problematic position (line number
14014: and column number) in that resource, in the script's
14015: <a href="#origin-0">origin</a>, using the <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code> <a href="#event-handlers" title="event
14016: handlers">event handler</a> of the <a href="#script's-global-object">script's global
14017: object</a>. If the error is still <i title="concept-error-nothandled"><a href="#concept-error-nothandled">not handled</a></i> after this, then
14018: the error may be reported to the user.</p>
14019:
14020: <p>The resource containing the script will typically be the file
14021: from which the <code><a href="dom.html#document">Document</a></code> was parsed, e.g. for inline
14022: <code><a href="the-script-element.html#the-script-element">script</a></code> elements or <a href="#event-handler-content-attributes">event handler content
14023: attributes</a>; or the JavaScript file that the script was in,
14024: for external scripts. Even for dynamically-generated scripts, user
14025: agents are strongly encouraged to attempt to keep track of the
14026: original source of a script. For example, if an external script uses
14027: the <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> API to
14028: insert an inline <code><a href="the-script-element.html#the-script-element">script</a></code> element during parsing, the URL
14029: of the resource containing the script would ideally be reported as
14030: being the external script, and the line number might ideally be
14031: reported as the line with the <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> call or where the
14032: string passed to that call was first constructed. Naturally,
14033: implementing this can be somewhat non-trivial.</p>
14034:
14035: <p>User agents are similarly encouraged to keep careful track of the
14036: original line numbers, even in the face of <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> calls mutating
14037: the document as it is parsed, or <a href="#event-handler-content-attributes">event handler content
14038: attributes</a> spanning multiple lines.</p>
14039:
14040: </div>
14041:
14042:
14043: <div class="impl">
14044:
14045: <h4 id="event-loops"><span class="secno">6.1.4 </span>Event loops</h4>
14046:
14047: <h5 id="definitions-1"><span class="secno">6.1.4.1 </span>Definitions</h5>
14048:
14049: <p>To coordinate events, user interaction, scripts, rendering,
14050: networking, and so forth, user agents must use <dfn id="event-loop" title="event
14051: loop">event loops</dfn> as described in this section.</p>
14052:
14053: <p>There must be at least one <a href="#event-loop">event loop</a> per user
14054: agent, and at most one <a href="#event-loop">event loop</a> per <a href="#unit-of-related-similar-origin-browsing-contexts">unit of
14055: related similar-origin browsing contexts</a>.</p>
14056:
14057: <p class="note">When there is more than one <a href="#event-loop">event loop</a>
14058: for a <a href="#unit-of-related-browsing-contexts">unit of related browsing contexts</a>, complications
14059: arise when a <a href="#browsing-context">browsing context</a> in that group is <a href="#navigate" title="navigate">navigated</a> such that it switches from one
14060: <a href="#unit-of-related-similar-origin-browsing-contexts">unit of related similar-origin browsing contexts</a> to
14061: another. This specification does not currently describe how to
14062: handle these complications.</p>
14063:
14064: <p>An <a href="#event-loop">event loop</a> always has at least one <a href="#browsing-context">browsing
14065: context</a>. If an <a href="#event-loop">event loop</a>'s <a href="#browsing-context" title="browsing context">browsing contexts</a> all go away, then
14066: the <a href="#event-loop">event loop</a> goes away as well. A <a href="#browsing-context">browsing
14067: context</a> always has an <a href="#event-loop">event loop</a> coordinating
14068: its activities.</p>
14069:
14070: <p class="note">Other specifications can define new kinds of event
14071: loops that aren't associated with browsing contexts; in particular,
14072: the Web Workers specification does so.</p>
14073:
14074: <p>An <a href="#event-loop">event loop</a> has one or more <dfn id="task-queue" title="task
14075: queue">task queues</dfn>. A <a href="#task-queue">task queue</a> is an ordered
14076: list of <dfn id="concept-task" title="concept-task">tasks</dfn>, which can be:</p>
14077:
14078: <dl><dt>Events</dt>
14079:
14080: <dd>
14081:
14082: <p>Asynchronously dispatching an <code><a href="infrastructure.html#event">Event</a></code> object at a
14083: particular <code><a href="infrastructure.html#eventtarget">EventTarget</a></code> object is a task.</p>
14084:
14085: <p class="note">Not all events are dispatched using the <a href="#task-queue">task
14086: queue</a>, many are dispatched synchronously during other
14087: tasks.</p>
14088:
14089: </dd>
14090:
14091:
14092: <dt>Parsing</dt>
14093:
14094: <dd><p>The <a href="#html-parser">HTML parser</a> tokenizing one or more bytes,
14095: and then processing any resulting tokens, is typically a
14096: task.</p></dd>
14097:
14098:
14099: <dt>Callbacks</dt>
14100:
14101: <dd><p>Calling a callback asynchronously is a task.</p></dd>
14102:
14103:
14104: <dt>Using a resource</dt>
14105:
14106: <dd><p>When an algorithm <a href="urls.html#fetch" title="fetch">fetches</a> a
14107: resource, if the fetching occurs asynchronously then the processing
14108: of the resource once some or all of the resource is available is a
14109: task.</p></dd>
14110:
14111:
14112: <dt>Reacting to DOM manipulation</dt>
14113:
14114: <dd><p>Some elements have tasks that trigger in response to DOM
14115: manipulation, e.g. when that element is <a href="infrastructure.html#insert-an-element-into-a-document" title="insert an
14116: element into a document">inserted into the document</a>.</p>
14117:
14118: </dd></dl><p>When a user agent is to <dfn id="queue-a-task">queue a task</dfn>, it must add the
14119: given task to one of the <a href="#task-queue" title="task queue">task queues</a>
14120: of the relevant <a href="#event-loop">event loop</a>. All the tasks from one
14121: particular <dfn id="task-source">task source</dfn> (e.g. the callbacks generated by
14122: timers, the events fired for mouse movements, the tasks queued for
14123: the parser) must always be added to the same <a href="#task-queue">task
14124: queue</a>, but tasks from different <a href="#task-source" title="task
14125: source">task sources</a> may be placed in different <a href="#task-queue" title="task queue">task queues</a>.</p>
14126:
14127: <p class="example">For example, a user agent could have one
14128: <a href="#task-queue">task queue</a> for mouse and key events (the <a href="#user-interaction-task-source">user
14129: interaction task source</a>), and another for everything
14130: else. The user agent could then give keyboard and mouse events
14131: preference over other tasks three quarters of the time, keeping the
14132: interface responsive but not starving other task queues, and never
14133: processing events from any one <a href="#task-source">task source</a> out of
14134: order.</p>
14135:
14136: <p>Each <a href="#concept-task" title="concept-task">task</a> that is <a href="#queue-a-task" title="queue a task">queued</a> onto a <a href="#task-queue">task queue</a> of
14137: an <a href="#event-loop">event loop</a> defined by this specification is
14138: associated with a <code><a href="dom.html#document">Document</a></code>; if the task was queued in
14139: the context of an element, then it is the element's
14140: <code><a href="dom.html#document">Document</a></code>; if the task was queued in the context of a
14141: <a href="#browsing-context">browsing context</a>, then it is the <a href="#browsing-context">browsing
14142: context</a>'s <a href="#active-document">active document</a> at the time the task
14143: was queued; if the task was queued by or for a <a href="#concept-script" title="concept-script">script</a> then the document is the
14144: <a href="#script's-document">script's document</a>.</p>
14145:
14146: <p>A user agent may have one <dfn id="storage-mutex">storage mutex</dfn>. This mutex is
14147: used to control access to shared state like cookies. At any one
14148: point, the <a href="#storage-mutex">storage mutex</a> is either free, or owned by a
14149: particular <a href="#event-loop">event loop</a> or instance of the <a href="urls.html#fetch" title="fetch">fetching</a> algorithm.</p>
14150:
14151: <p>If a user agent does not implement a <a href="#storage-mutex">storage mutex</a>,
14152: it is exempt from implementing the requirements that require it to
14153: acquire or release it.</p>
14154:
14155: <p class="note">User agent implementors have to make a choice
14156: between two evils. On the one hand, not implementing the storage
14157: mutex means that there is a risk of data corruption: a site could,
14158: for instance, try to read a cookie, increment its value, then write
14159: it back out, using the new value of the cookie as a unique
14160: identifier for the session; if the site does this twice in two
14161: different browser windows at the same time, it might end up using
14162: the same "unique" identifier for both sessions, with potentially
14163: disastrous effects. On the other hand, implementing the storage
14164: mutex has potentially serious performance implications: whenever a
14165: site uses Web Storage or cookies, all other sites that try to use
14166: Web Storage or cookies are blocked until the first site finishes.</p>
14167:
14168: <p>Whenever a <a href="#concept-script" title="concept-script">script</a> calls into
14169: a <a href="infrastructure.html#plugin">plugin</a>, and whenever a <a href="infrastructure.html#plugin">plugin</a> calls into
14170: a <a href="#concept-script" title="concept-script">script</a>, the user agent must
14171: release the <a href="#storage-mutex">storage mutex</a>.</p>
14172:
14173:
1.191 sruby 14174: <h5 id="processing-model-3"><span class="secno">6.1.4.2 </span>Processing model</h5>
1.190 sruby 14175:
14176: <p>An <a href="#event-loop">event loop</a> must continually run through the
14177: following steps for as long as it exists:</p>
14178:
14179: <ol><li><p>Run the oldest <a href="#concept-task" title="concept-task">task</a> on one
14180: of the <a href="#event-loop">event loop</a>'s <a href="#task-queue" title="task queue">task
14181: queues</a>, ignoring tasks whose associated
14182: <code><a href="dom.html#document">Document</a></code>s are not <a href="#fully-active">fully active</a>. The user
14183: agent may pick any <a href="#task-queue">task queue</a>.</p></li>
14184:
14185: <!-- warning! if you renumber these steps, make sure to update the
14186: "spin the event loop" algorithm below! -->
14187:
14188: <li><p>If the <a href="#storage-mutex">storage mutex</a> is now owned by the
14189: <a href="#event-loop">event loop</a>, release it so that it is once again
14190: free.</p></li>
14191:
14192: <li><p>Remove that task from its <a href="#task-queue">task queue</a>.</p></li>
14193:
14194: <li><p><a href="#perform-a-microtask-checkpoint">Perform a microtask checkpoint</a>.</p></li>
14195:
14196: <li><p><a href="#provide-a-stable-state">Provide a stable state</a>.</p></li>
14197:
14198: <li><p>If necessary, update the rendering or user interface of any
14199: <code><a href="dom.html#document">Document</a></code> or <a href="#browsing-context">browsing context</a> to reflect
14200: the current state.</p></li>
14201:
14202: <li><p>Return to the first step of the <a href="#event-loop">event
14203: loop</a>.</p></li>
14204:
14205: </ol><hr><p>When a user agent is to <dfn id="perform-a-microtask-checkpoint">perform a microtask
14206: checkpoint</dfn>, if the <a href="#running-mutation-observers">running mutation observers</a>
14207: flag is false, then the user agent must run the following steps:</p>
14208:
14209: <ol><li><p>Let the <a href="#running-mutation-observers">running mutation observers</a> flag be
14210: true.</p></li>
14211:
14212: <li>
14213:
14214: <p><a href="infrastructure.html#concept-mo-invoke" title="concept-mo-invoke">Invoke
14215: <code>MutationObserver</code> objects</a> for the <a href="#unit-of-related-similar-origin-browsing-contexts">unit
14216: of related similar-origin browsing contexts</a> to which the
14217: <a href="#script's-browsing-context">script's browsing context</a> belongs.</p>
14218:
14219: <p class="note">This will typically fire scripted callbacks, which
14220: calls the <a href="#jump-to-a-code-entry-point">jump to a code entry-point</a> algorithm, which
14221: calls this <a href="#perform-a-microtask-checkpoint">perform a microtask checkpoint</a> algorithm
14222: again, which is why we use the <a href="#running-mutation-observers">running mutation
14223: observers</a> flag to avoid reentrancy.</p>
14224:
14225: </li>
14226:
14227: <li><p>Let the <a href="#running-mutation-observers">running mutation observers</a> flag be
14228: false.</p></li>
14229:
14230: </ol><hr><p>When the user agent is to <dfn id="provide-a-stable-state">provide a stable state</dfn>, if
14231: any asynchronously-running algorithms are <dfn id="await-a-stable-state" title="await a stable
14232: state">awaiting a stable state</dfn>, then the user agent must run
14233: their <dfn id="synchronous-section">synchronous section</dfn> and then resume running their
14234: asynchronous algorithm (if appropriate).</p>
14235:
14236: <p class="note">A <a href="#synchronous-section">synchronous section</a> never mutates
14237: the DOM, runs any script, or has any other side-effects.</p>
14238:
14239: <p class="note">Steps in <a href="#synchronous-section" title="synchronous
14240: section">synchronous sections</a> are marked with ⌛.</p>
14241:
14242: <hr><p>When an algorithm says to <dfn id="spin-the-event-loop">spin the event loop</dfn> until
14243: a condition <var title="">goal</var> is met, the user agent must run
14244: the following steps:</p>
14245:
14246: <ol><li><p>Let <var title="">task source</var> be the <a href="#task-source">task
14247: source</a> of the currently running <a href="#concept-task" title="concept-task">task</a>.</p></li>
14248:
14249: <li>
14250:
14251: <p>Stop the currently running <a href="#concept-task" title="concept-task">task</a>, allowing the <a href="#event-loop">event
14252: loop</a> to resume, but continue these steps
14253: asynchronously.</p>
14254:
14255: <p class="note">This causes the <a href="#event-loop">event loop</a> to move on
14256: to the second step of its processing model (defined above).</p>
14257:
14258: </li>
14259:
14260: <li><p>Wait until the condition <var title="">goal</var> is
14261: met.</p></li>
14262:
14263: <li><p><a href="#queue-a-task">Queue a task</a> to continue running these steps,
14264: using the <a href="#task-source">task source</a> <var title="">task
14265: source</var>. Wait until this task runs before continuing these
14266: steps.</p></li>
14267:
14268: <li><p>Return to the caller.</p></li>
14269:
14270: </ol><hr><p>Some of the algorithms in this specification, for historical
14271: reasons, require the user agent to <dfn id="pause">pause</dfn> while running a
14272: <a href="#concept-task" title="concept-task">task</a> until a condition <var title="">goal</var> is met. This means running the following
14273: steps:</p>
14274:
14275: <ol><li><p>If any asynchronously-running algorithms are <a href="#await-a-stable-state" title="await a stable state">awaiting a stable state</a>, then
14276: run their <a href="#synchronous-section">synchronous section</a> and then resume running
14277: their asynchronous algorithm. (See the <a href="#event-loop">event loop</a>
14278: processing model definition above for details.)</p>
14279:
14280: </li><li><p>If necessary, update the rendering or user interface of any
14281: <code><a href="dom.html#document">Document</a></code> or <a href="#browsing-context">browsing context</a> to reflect
14282: the current state.</p></li>
14283:
14284: <li><p>Wait until the condition <var title="">goal</var> is met.
14285: While a user agent has a paused <a href="#concept-task" title="concept-task">task</a>, the corresponding <a href="#event-loop">event
14286: loop</a> must not run further <a href="#concept-task" title="concept-task">tasks</a>, and any script in the currently
14287: running <a href="#concept-task" title="concept-task">task</a> must block. User
14288: agents should remain responsive to user input while paused,
14289: however, albeit in a reduced capacity since the <a href="#event-loop">event
14290: loop</a> will not be doing anything.</p></li>
14291:
14292: </ol><hr><p>When a user agent is to <dfn id="obtain-the-storage-mutex">obtain the storage mutex</dfn> as
14293: part of running a <a href="#concept-task" title="concept-task">task</a>, it must
14294: run through the following steps:</p>
14295:
14296: <ol><li><p>If the <a href="#storage-mutex">storage mutex</a> is already owned by this
14297: <a href="#concept-task" title="concept-task">task</a>'s <a href="#event-loop">event loop</a>,
14298: then abort these steps.</p></li>
14299:
14300: <li><p>Otherwise, <a href="#pause">pause</a> until the <a href="#storage-mutex">storage
14301: mutex</a> can be taken by the <a href="#event-loop">event loop</a>.</p></li>
14302:
14303: <li><p>Take ownership of the <a href="#storage-mutex">storage mutex</a>.</p></li>
14304:
14305: </ol></div>
14306:
14307:
14308: <div class="impl">
14309:
14310: <h5 id="generic-task-sources"><span class="secno">6.1.4.3 </span>Generic task sources</h5>
14311:
14312: <p>The following <a href="#task-source" title="task source">task sources</a> are
14313: used by a number of mostly unrelated features in this and other
14314: specifications.</p>
14315:
14316: <dl><dt>The <dfn id="dom-manipulation-task-source">DOM manipulation task source</dfn></dt>
14317:
14318: <dd>
14319:
14320: <p>This <a href="#task-source">task source</a> is used for features that react
14321: to DOM manipulations, such as things that happen asynchronously
14322: when an element is <a href="infrastructure.html#insert-an-element-into-a-document" title="insert an element into a
14323: document">inserted into the document</a>.</p>
14324:
14325: </dd>
14326:
14327: <dt>The <dfn id="user-interaction-task-source">user interaction task source</dfn></dt>
14328:
14329: <dd>
14330:
14331: <p>This <a href="#task-source">task source</a> is used for features that react
14332: to user interaction, for example keyboard or mouse input.</p>
14333:
14334: <p>Asynchronous events sent in response to user input (e.g. <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> events) must be fired using
14335: <a href="#concept-task" title="concept-task">tasks</a> <a href="#queue-a-task" title="queue a
14336: task">queued</a> with the <a href="#user-interaction-task-source">user interaction task
14337: source</a>. <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
14338:
14339: </dd>
14340:
14341: <dt>The <dfn id="networking-task-source">networking task source</dfn></dt>
14342:
14343: <dd>
14344:
14345: <p>This <a href="#task-source">task source</a> is used for features that trigger
14346: in response to network activity.</p>
14347:
14348: <!-- XHR should use this -->
14349:
14350: </dd>
14351:
14352: <dt>The <dfn id="history-traversal-task-source">history traversal task source</dfn></dt>
14353:
14354: <dd>
14355:
14356: <p>This <a href="#task-source">task source</a> is used to queue calls to <code title="dom-history-back"><a href="#dom-history-back">history.back()</a></code> and similar
14357: APIs.</p>
14358:
14359: </dd>
14360:
14361: </dl></div>
14362:
14363:
14364:
14365: <div class="impl">
14366:
14367: <!-- SCRIPT EXEC -->
14368: <h4 id="javascript-protocol"><span class="secno">6.1.5 </span><dfn title="javascript protocol">The <code title="">javascript:</code> URL scheme</dfn></h4>
14369:
14370: <p>When a <a href="urls.html#url">URL</a> using the <code title="">javascript:</code> scheme is <dfn id="concept-js-deref" title="concept-js-deref">dereferenced</dfn>, the user agent must run
14371: the following steps:</p>
14372:
14373: <ol><li><p>Let the script source be the string obtained using the
14374: content retrieval operation defined for <code title="">javascript:</code> URLs. <a href="#refsJSURL">[JSURL]</a></p></li>
14375:
14376: <li>
14377:
14378: <p>Use the appropriate step from the following list:</p>
14379:
14380: <dl><dt>If a <a href="#browsing-context">browsing context</a> is being <a href="#navigate" title="navigate">navigated</a> to a <code>javascript:</code>
14381: URL, and the <a href="#source-browsing-context">source browsing context</a> for that
14382: navigation, if any, has <a href="#concept-bc-noscript" title="concept-bc-noscript">scripting disabled</a></dt>
14383:
14384: <dd>
14385:
14386: <p>Let <var title="">result</var> be void.</p>
14387:
14388: </dd>
14389:
14390: <dt>If a <a href="#browsing-context">browsing context</a> is being <a href="#navigate" title="navigate">navigated</a> to a <code>javascript:</code>
14391: URL, and the <a href="#active-document">active document</a> of that browsing
14392: context has the <a href="#same-origin">same origin</a> as the script given by
14393: that URL</dt>
14394:
14395: <dd>
14396:
14397: <!-- http://www.hixie.ch/tests/adhoc/html/navigation/javascript-url/ -->
14398:
14399: <p>Let <var title="">address</var> be the <a href="dom.html#the-document's-address" title="the
14400: document's address">address</a> of the <a href="#active-document">active
14401: document</a> of the <a href="#browsing-context">browsing context</a> being
14402: navigated.</p>
14403:
14404: <p>If <var title="">address</var> is <code><a href="urls.html#about:blank">about:blank</a></code>,
14405: and the <a href="#browsing-context">browsing context</a> being navigated has a
14406: <a href="#creator-browsing-context">creator browsing context</a>, then let <var title="">address</var> be the <a href="dom.html#the-document's-address" title="the document's
14407: address">address</a> of the <a href="#creator-document">creator
14408: <code>Document</code></a> instead.</p>
14409:
14410: <p><a href="#create-a-script-from-a-node" title="create a script from a node">Create a
14411: script</a> from the <code><a href="dom.html#document">Document</a></code> node of the
14412: <a href="#active-document">active document</a>, using the aforementioned script
14413: source, the <a href="urls.html#url">URL</a> of the resource where the
14414: <code>javascript:</code> URL, was found, and assuming the
14415: scripting language is JavaScript.</p>
14416:
14417: <p>Let <var title="">result</var> be the return value of the
14418: <i><a href="#initial-code-entry-point">initial code entry-point</a></i> of this <a href="#concept-script" title="concept-script">script</a>. If an exception was
14419: thrown, let <var title="">result</var> be void instead. (The
14420: result will be void also if <a href="#concept-bc-noscript" title="concept-bc-noscript">scripting is disabled</a>.)</p>
14421:
14422: <p>When it comes time to <a href="#set-the-document's-address">set the document's address</a>
14423: in the <a href="#navigate" title="navigate">navigation algorithm</a>, use
14424: <var title="">address</var> as the <a href="#override-url">override
14425: URL</a>.</p>
14426:
14427: </dd>
14428:
14429: <!--(turns out only Firefox does this, and only for <img src=""> and a
14430: few others, so it's commented out for now pending someone having
14431: a convincing use case)
14432:
14433: <dt>If the <code>Document</code> object of the element,
14434: attribute, or style sheet from which the <code>javascript:</code>
14435: URL was reached has an associated <span>browsing
14436: context</span></dt>
14437:
14438: <dd>
14439:
14440: <p><span>Create an impotent script</span> using the
14441: aforementioned script source, with the scripting language set to
14442: JavaScript, and with the <code>Document</code>'s object's
14443: <span>browsing context</span> as the browsing context.</p>
14444:
14445: <p>Let <var title="">result</var> be the return value of the
14446: <i>initial code entry-point</i> of this <span
14447: title="concept-script">script</span>. If an exception was
14448: thrown, let <var title="">result</var> be void instead. (The
14449: result will be void also if <span
14450: title="concept-bc-noscript">scripting is disabled</span>.)</p>
14451:
14452: </dd>
14453: -->
14454:
14455: <dt>Otherwise</dt>
14456:
14457: <dd>
14458:
14459: <p>Let <var title="">result</var> be void.</p>
14460:
14461: </dd>
14462:
14463: </dl></li>
14464:
14465: <li>
14466:
14467: <p>If the result of executing the script is void (there is no
14468: return value), then the URL must be treated in a manner equivalent
14469: to an HTTP resource with an HTTP 204 No Content response.</p>
14470:
14471: <p>Otherwise, the URL must be treated in a manner equivalent to an
14472: HTTP resource with a 200 OK response whose <a href="urls.html#content-type" title="Content-Type">Content-Type metadata</a> is
14473: <code><a href="#text/html">text/html</a></code> and whose response body is the return value
14474: converted to a string value.</p>
14475:
14476: <p class="note">Certain contexts, in particular <code><a href="the-img-element.html#the-img-element">img</a></code>
14477: elements, ignore the <a href="urls.html#content-type" title="Content-Type">Content-Type
14478: metadata</a>.</p>
14479:
14480: </li>
14481:
14482: </ol><div class="example">
14483:
14484: <p>So for example a <code title="">javascript:</code> URL for a
14485: <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute of an
14486: <code><a href="the-img-element.html#the-img-element">img</a></code> element would be evaluated in the context of an
14487: empty object as soon as the attribute is set; it would then be
14488: sniffed to determine the image type and decoded as an image.</p>
14489:
14490: <p>A <code title="">javascript:</code> URL in an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute of an <code><a href="the-a-element.html#the-a-element">a</a></code>
14491: element would only be evaluated when the link was <a href="#following-hyperlinks-0" title="following hyperlinks">followed</a>.</p>
14492:
14493: <p>The <code title="attr-iframe-src"><a href="the-iframe-element.html#attr-iframe-src">src</a></code> attribute of an
14494: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element would be evaluated in the context of
14495: the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>'s own <a href="#browsing-context">browsing context</a>; once
14496: evaluated, its return value (if it was not void) would replace that
14497: <a href="#browsing-context">browsing context</a>'s document, thus changing the
14498: variables visible in that <a href="#browsing-context">browsing context</a>.</p>
14499:
14500: </div>
14501:
14502: </div>
14503:
14504:
14505:
14506: <h4 id="events"><span class="secno">6.1.6 </span>Events</h4>
14507:
14508: <div class="impl">
14509:
14510: <h5 id="event-handler-attributes"><span class="secno">6.1.6.1 </span>Event handlers</h5>
14511:
14512: </div>
14513:
14514: <!--test: <a href="http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A...%3Cscript%3E%0Aw(a%3Ddocument.implementation.createDocument(null%2C%20null%2C%20null))%3B%0Aw(a.appendChild(a.createElementNS('https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttp%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'html')))%3B%0Aw(b%3Da.firstChild.appendChild(a.createElementNS('https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttp%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'body')))%3B%0Aw(b.test%20%3D%20w)%3B%0Aw(b.setAttribute('onclick'%2C%20'test(%22fire%3A%20%22%20%2B%20event)'))%3B%0Aw(b.onclick)%3B%0Aw(e%3Da.createEvent('Event'))%3B%0Aw(e.initEvent('click'%2C%20false%2C%20false))%3B%0Aw(b.dispatchEvent(e))%3B%0A%3C%2Fscript%3E">test</a>-->
14515:
14516: <p>Many objects can have <dfn id="event-handlers">event handlers</dfn> specified. These
14517: act as non-capture event listeners for the object on which they are
14518: specified. <a href="#refsDOMCORE">[DOMCORE]</a></p>
14519:
14520: <p>An <a href="#event-handlers" title="event handlers">event handler</a> can either
14521: have the value null or be set to a callback object. This is defined
14522: using the <code><a href="#eventhandler">EventHandler</a></code> callback interface type. <span class="impl">Initially, event handlers must be set to
14523: null.</span></p>
14524:
14525: <p>Event handlers are exposed in one of two ways.</p>
14526:
14527: <p>The first way, common to all event handlers, is as an <a href="#event-handler-idl-attributes" title="event handler IDL attributes">event handler IDL
14528: attribute</a>.</p>
14529:
14530: <p>The second way is as an <a href="#event-handler-content-attributes" title="event handler content
14531: attributes">event handler content attribute</a>. Event handlers
14532: on <a href="infrastructure.html#html-elements">HTML elements</a> and some of the event handlers on
14533: <code><a href="#window">Window</a></code> objects are exposed in this way.</p>
14534:
14535: <div class="impl">
14536:
14537: <hr><p><dfn id="event-handler-idl-attributes">Event handler IDL attributes</dfn>, on setting, must set the
14538: corresponding event handler to their new value, and on
14539: getting, must return whatever the current value of the corresponding
14540: event handler is (possibly null).</p>
14541:
14542: <p>If an <a href="#event-handler-idl-attributes" title="event handler IDL attributes">event handler
14543: IDL attribute</a> exposes an <a href="#event-handlers" title="event handlers">event
14544: handler</a> of an object that doesn't exist, it must always
14545: return null on getting and must do nothing on setting.</p>
14546:
14547: <p class="note">This can happen in particular for <a href="#event-handler-idl-attributes" title="event
14548: handler IDL attributes">event handler IDL attribute</a> on
14549: <code><a href="the-body-element.html#the-body-element">body</a></code> elements that do not have corresponding
14550: <code><a href="#window">Window</a></code> objects.</p>
14551:
14552: <p class="note">Certain event handler IDL attributes have additional
14553: requirements, in particular the <code title="handler-MessagePort-onmessage">onmessage</code> attribute of
14554: <code>MessagePort</code> objects.</p>
14555:
14556: <p>On getting, <a href="#event-handler-idl-attributes">event handler IDL attributes</a> must return
14557: the value of their corresponding event handlers, except when the
14558: value is an <a href="#concept-handler-error" title="concept-handler-error">internal error
14559: value</a>, in which case the user agent must set the corresponding
14560: event handler to null, and then throw an exception corresponding to
14561: the error condition.</p>
14562:
14563: <hr></div>
14564:
14565: <p><dfn id="event-handler-content-attributes">Event handler content attributes</dfn>, when specified, must
14566: contain valid JavaScript code which, when parsed, would match the
14567: <code title="">FunctionBody</code> production after automatic
14568: semicolon insertion. <a href="#refsECMA262">[ECMA262]</a></p>
14569:
14570: <div class="impl">
14571:
14572: <!-- SCRIPT EXEC -->
14573: <p>When an <a href="#event-handler-content-attributes" title="event handler content attributes">event
14574: handler content attribute</a> is set, if the element is owned by
14575: a <code><a href="dom.html#document">Document</a></code> that is in a <a href="#browsing-context">browsing context</a>,
14576: and <a href="#concept-bc-script" title="concept-bc-script">scripting is enabled</a> for
14577: that <a href="#browsing-context">browsing context</a>, the user agent must run the
14578: following steps to create a <a href="#concept-script" title="concept-script">script</a> after setting the content
14579: attribute to its new value:</p>
14580:
14581: <ol><li><p>Set the corresponding <a href="#event-handlers" title="event handlers">event
14582: handler</a> to null.</p></li>
14583:
14584: <li><p>Set up a <a href="#script-execution-environment">script execution environment</a> for
14585: JavaScript.</p></li>
14586:
14587: <li><p>Let <var title="">body</var> be the <a href="#event-handler-content-attributes" title="event
14588: handler content attributes">event handler content
14589: attribute</a>'s new value.</p></li>
14590:
14591: <li>
14592:
14593: <p>If <var title="">body</var> is not parsable as
14594: <i>FunctionBody</i> or if parsing detects an <i>early error</i>
14595: then <a href="#set-the-event-handler-content-attribute-to-an-error">set the event handler content attribute to an
14596: error</a> as defined below, and abort these steps.</p>
14597:
14598: <p class="note"><i>FunctionBody</i> is defined in ECMAScript
14599: edition 5 section 13 Function Definition. <i>Early error</i> is
14600: defined in ECMAScript edition 5 section 16 Errors. <a href="#refsECMA262">[ECMA262]</a></p>
14601:
14602: </li>
14603:
14604: <li>
14605:
14606: <p>If <var title="">body</var> begins with a Directive Prologue
14607: that contains a Use Strict Directive then let <var title="">strict</var> be true, otherwise let <var title="">strict</var> be false.</p> <!-- we can't defer to 10.1.1
14608: since we're not using a Function constructor but doing it
14609: ourselves. -->
14610:
14611: <p class="note">The terms "Directive Prologue" and "Use Strict
14612: Directive" are defined in ECMAScript edition 5 section 14.1
14613: Directive Prologues and the Use Strict Directive. <a href="#refsECMA262">[ECMA262]</a></p>
14614:
14615: </li>
14616:
14617: <!--
14618: currently this is unnecessary: http://www.w3.org/Bugs/Public/show_bug.cgi?id=11977#c4
14619: <li>
14620:
14621: <p>If <var title="">strict</var> is true, and anything in <var
14622: title="">body</var> is a <code>SyntaxError</code> according to the
14623: Strict Mode Restrictions, then <span>set the event handler content
14624: attribute to an error</span> as defined below, and abort these
14625: steps.</p>
14626:
14627: <p class="note">The Strict Mode Restrictions are those listed in
14628: ECMAScript edition 5 section 13.1 Strict Mode Restrictions. <a
14629: href="#refsECMA262">[ECMA262]</a></p>
14630:
14631: </li>
14632: -->
14633:
14634: <li>
14635:
14636: <p>Using the script execution environment created above, create a
14637: function object (as defined in ECMAScript edition 5 section 13.2
14638: Creating Function Objects), with:</p>
14639:
14640: <dl><dt>Parameter list <var title="">FormalParameterList</var></dt>
14641:
14642: <dd>
14643:
14644: <dl class="switch"><dt>If the attribute is the <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code> attribute of the
14645: <code><a href="#window">Window</a></code> object</dt>
14646:
14647: <dd>Let the function have four arguments, named <code title="">event</code>, <code title="">source</code>, <code title="">lineno</code>, and <code title="">column</code>.</dd>
14648: <!-- /column/ is new as of 2012; see https://www.w3.org/Bugs/Public/show_bug.cgi?id=13319 -->
14649:
14650: <dt>Otherwise</dt>
14651:
14652: <dd>Let the function have a single argument called <code title="">event</code>.</dd>
14653:
14654: </dl></dd>
14655:
14656: <dt>Function body <var title="">FunctionBody</var></dt>
14657:
14658: <dd>The result of parsing <var title="">body</var> above.</dd>
14659:
14660: <dt>Lexical Environment <var title="">Scope</var></dt>
14661:
14662: <dd>
14663:
14664: <ol><li>Let <var title="">Scope</var> be the result of
14665: NewObjectEnvironment(the element's <code><a href="dom.html#document">Document</a></code>, the
14666: <var title="">global environment</var>).</li>
14667:
14668: <li>If the element has a <a href="association-of-controls-and-forms.html#form-owner">form owner</a>, let <var title="">Scope</var> be the result of NewObjectEnvironment(the
14669: element's <a href="association-of-controls-and-forms.html#form-owner">form owner</a>, <var title="">Scope</var>).</li>
14670:
14671: <li>Let <var title="">Scope</var> be the result of
14672: NewObjectEnvironment(the element's object, <var title="">Scope</var>).</li>
14673:
14674: </ol><p class="note">NewObjectEnvironment() is defined in ECMAScript
14675: edition 5 section 10.2.2.3 NewObjectEnvironment (O, E). <a href="#refsECMA262">[ECMA262]</a></p>
14676:
14677: </dd>
14678:
14679: <dt>Boolean flag <var title="">Strict</var></dt>
14680:
14681: <dd>The value of <var title="">strict</var>.</dd>
14682:
14683: </dl><p>Let this new function be the only entry in the script's
14684: <a href="#list-of-code-entry-points">list of code entry-points</a>.</p>
14685:
14686: </li>
14687:
14688: <li><p>Set up the <a href="#script's-global-object">script's global object</a>, the
14689: <a href="#script's-browsing-context">script's browsing context</a>, the <a href="#script's-document">script's
1.191 sruby 14690: document</a>, the <a href="#script's-referrer-source">script's referrer source</a>, the
14691: <a href="#script's-url-character-encoding">script's URL character encoding</a>, and the
14692: <a href="#script's-base-url">script's base URL</a> from <a href="#the-script-settings-determined-from-the-node">the script settings
14693: determined from the node</a> on which the attribute is being
14694: set.</p></li>
1.190 sruby 14695:
14696: <li><p>Set the corresponding <a href="#event-handlers" title="event handlers">event
14697: handler</a> to the aforementioned function.</p></li>
14698:
14699: </ol><p>When a user agent is required, by the steps above, to <dfn id="set-the-event-handler-content-attribute-to-an-error">set
14700: the event handler content attribute to an error</dfn>, the user
14701: agent must set the corresponding <a href="#event-handlers" title="event handlers">event
14702: handler</a> to an <dfn id="concept-handler-error" title="concept-handler-error">internal
14703: error value</dfn> representing the error condition, keeping track of
14704: the <a href="urls.html#url">URL</a> of the resource where the <a href="#event-handler-content-attributes" title="event
14705: handler content attributes">event handler content attribute</a>
14706: was set, and the relevant line number inside that resource where the
14707: error occurred.</p>
14708:
14709: <p>When an event handler content attribute is removed, the user
14710: agent must set the corresponding <a href="#event-handlers" title="event handlers">event
14711: handler</a> to null.</p>
14712: <!--
14713: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/245 onload
14714: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/247 onclick
14715: see http://www.w3.org/Bugs/Public/show_bug.cgi?id=7626#c5 for reasoning
14716: -->
14717:
14718: </div>
14719:
14720: <p class="note">When an <a href="#event-handler-content-attributes" title="event handler content
14721: attributes">event handler content attribute</a> is set on an
14722: element owned by a <code><a href="dom.html#document">Document</a></code> that is not in a
14723: <a href="#browsing-context">browsing context</a>, the corresponding event handler is
14724: not changed.</p>
14725:
14726: <!-- v2: we should probably support HTML4's Content-Script-Type header here. -->
14727:
14728: <div class="impl">
14729:
14730: <hr><p>When an <a href="#event-handlers" title="event handlers">event handler</a> <var title="">H</var> of an element or object <var title="">T</var>
14731: implementing the <code><a href="infrastructure.html#eventtarget">EventTarget</a></code> interface is first set to
14732: a non-null value, the user agent must append an <a href="infrastructure.html#concept-event-listener" title="concept-event-listener">event listener</a> to the list of
14733: <a href="infrastructure.html#concept-event-listener" title="concept-event-listener">event listeners</a>
14734: associated with <var title="">T</var> with <i>type</i> set to the
14735: <dfn id="event-handler-event-type">event handler event type</dfn> corresponding to <var title="">H</var>, <i>capture</i> set to false, and <i>listener</i>
14736: set to <a href="#the-event-handler-processing-algorithm">the event handler processing algorithm</a> defined
14737: below. <a href="#refsDOMCORE">[DOMCORE]</a></p>
14738:
14739: <p class="note">The <i>listener</i> is emphatically <em>not</em> the
14740: <a href="#event-handlers" title="event handlers">event handler</a> itself. Every
14741: event handler ends up registering the same <i>listener</i>, the
14742: algorithm defined below, which takes care of invoking the right
14743: callback, and processing the callback's return value.</p>
14744:
14745: <p class="note">This only happens the first time the <a href="#event-handlers" title="event handlers">event handler</a>'s value is set. Since
14746: listeners are called in the order they were registered, the order of
14747: event listeners for a particular event type will always be first the
14748: event listeners registered with <code title="dom-EventTarget-addEventListener">addEventListener()</code>
14749: before the first time the <a href="#event-handlers" title="event handlers">event
14750: handler</a> was set to a non-null value, then the callback to
14751: which it is currently set, if any, and finally the event listeners
14752: registered with <code title="dom-EventTarget-addEventListener">addEventListener()</code>
14753: <em>after</em> the first time the <a href="#event-handlers" title="event handlers">event
14754: handler</a> was set to a non-null value.</p>
14755:
14756: </div>
14757:
14758: <div class="example">
14759:
14760: <p>This example demonstrates the order in which event listeners are
14761: invoked. If the button in this example is clicked by the user, the
14762: page will show four alerts, with the text "ONE", "TWO", "THREE",
14763: and "FOUR" respectively.</p>
14764:
14765: <pre><button id="test">Start Demo</button>
14766: <script>
14767: var button = document.getElementById('test');
14768: button.addEventListener('click', function () { alert('ONE') }, false);
14769: button.setAttribute('onclick', "alert('NOT CALLED')"); // event handler listener is registered here
14770: button.addEventListener('click', function () { alert('THREE') }, false);
14771: button.onclick = function () { alert('TWO'); };
14772: button.addEventListener('click', function () { alert('FOUR') }, false);
14773: </script></pre>
14774:
14775: </div>
14776:
14777: <div class="impl">
14778:
14779: <p class="note">The interfaces implemented by the event object do
14780: not influence whether an <a href="#event-handlers" title="event handlers">event
14781: handler</a> is triggered or not.</p>
14782:
14783: <p><dfn id="the-event-handler-processing-algorithm">The event handler processing algorithm</dfn> for an
14784: <a href="#event-handlers" title="event handlers">event handler</a> <var title="">H</var> and an <code><a href="infrastructure.html#event">Event</a></code> object <var title="">E</var> is as follows:</p>
14785:
14786: <ol><li><p>If <var title="">H</var>'s value is null, then abort these
14787: steps.</p></li>
14788:
14789: <li><p>If <var title="">H</var>'s value is an <a href="#concept-handler-error" title="concept-handler-error">internal error value</a>, then set
14790: the <a href="#event-handlers" title="event handlers">event handler</a> to null and
14791: then <a href="#report-the-error">report the error</a> at the appropriate URL and with
14792: the appropriate position (line number and column number), as
14793: established when the error was detected, in the <a href="#origin-0">origin</a>
14794: of the <code><a href="dom.html#document">Document</a></code> of the node of the <a href="#event-handler-content-attributes" title="event
14795: handler content attributes">event handler content attribute</a>,
14796: using the <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code> <a href="#event-handlers" title="event handlers">event handler</a> of the
14797: <code><a href="#window">Window</a></code> object of that <code><a href="dom.html#document">Document</a></code>, and abort
14798: these steps.</p></li>
14799:
14800: <li><p>Let <var title="">callback</var> be <var title="">H</var>'s
14801: value, the callback that the <a href="#event-handlers" title="event handlers">event
14802: handler</a> was last set to.</p></li>
14803:
14804: <li><p>Invoke <var title="">callback</var> with one
14805: argument, the value of which is the <code><a href="infrastructure.html#event">Event</a></code> object <var title="">E</var>, with the <i title="dfn-callback-this-value">callback this value</i> set to
14806: <var title="">E</var>'s <code title="dom-Event-currentTarget">currentTarget</code>. Let the
14807: return value be <var title="">return value</var>. <a href="#refsWEBIDL">[WEBIDL]</a></p></li>
14808:
14809: <li>
14810:
14811: <p>Process <var title="">return value</var> as follows:</p>
14812:
14813: <dl class="switch"><dt>If the event type is <code class="event-mouseover">mouseover</code></dt>
14814:
14815: <dd><p>If <var title="">return value</var> is a boolean with the
14816: value true, then cancel the event.</p></dd>
14817:
14818: <dt>If the <code><a href="infrastructure.html#event">Event</a></code> object <var title="">E</var> is a
14819: <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code> object</dt>
14820:
14821: <dd><p>If <var title="">return value</var> is a string, and the
14822: <code><a href="infrastructure.html#event">Event</a></code> object <var title="">E</var>'s <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code>
14823: attribute's value is the empty string, then set the <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code>
14824: attribute's value to <var title="">return value</var>.</p></dd>
14825:
14826: <dt>Otherwise</dt>
14827:
14828: <dd><p>If <var title="">return value</var> is a boolean with the
14829: value false, then cancel the event.</p></dd>
14830:
14831: <!-- IE actually uncancels the event if the function returns true -->
14832:
14833: </dl></li>
14834:
14835: </ol></div>
14836:
14837: <hr><p>The <code><a href="#eventhandler">EventHandler</a></code> interface represents a callback
14838: used for event handlers. It is represented in Web IDL as
14839: follows:</p>
14840:
14841: <pre class="idl">[TreatNonCallableAsNull]
14842: callback <dfn id="eventhandlernonnull">EventHandlerNonNull</dfn> = any (<a href="infrastructure.html#event">Event</a> event);
14843: typedef <a href="#eventhandlernonnull">EventHandlerNonNull</a>? <dfn id="eventhandler">EventHandler</dfn>;</pre>
14844:
14845: <p class="note">In JavaScript, any <code>Function</code> object
14846: implements this interface.</p>
14847:
14848: <div class="example">
14849:
14850: <p>For example, the following document fragment:</p>
14851:
14852: <pre><body onload="alert(this)" onclick="alert(this)"></pre>
14853:
14854: <p>...leads to an alert saying "<code title="">[object Window]</code>" when the document is loaded,
14855: and an alert saying "<code title="">[object HTMLBodyElement]</code>" whenever the user
14856: clicks something in the page.</p>
14857:
14858: </div>
14859:
14860: <p class="note">The return value of the function affects whether the
14861: event is canceled or not: <span class="impl">as described
14862: above,</span> if the return value is false, the event is canceled
14863: (except for <code class="event-mouseover">mouseover</code> events,
14864: where the return value has to be true to cancel the event). With
14865: <code title="event-beforeunload">beforeunload</code> events, the
14866: value is instead used to determine the message to show the user.</p>
14867:
14868: <p>For historical reasons, the <code title="handler-onerror"><a href="#handler-onerror">onerror</a></code> handler has different
14869: arguments:</p>
14870:
14871: <pre class="idl">[TreatNonCallableAsNull]
14872: callback <dfn id="onerroreventhandlernonnull">OnErrorEventHandlerNonNull</dfn> = any ((<a href="infrastructure.html#event">Event</a> or DOMString) event, DOMString source, unsigned long lineno, unsigned long column);
14873: typedef <a href="#onerroreventhandlernonnull">OnErrorEventHandlerNonNull</a>? <dfn id="onerroreventhandler">OnErrorEventHandler</dfn>;</pre>
14874:
14875: <!-- onreadystatechange is also defined specially, using [LenientThis]; see IDL -->
14876:
14877:
14878: <h5 id="event-handlers-on-elements,-document-objects,-and-window-objects"><span class="secno">6.1.6.2 </span>Event handlers on elements, <code><a href="dom.html#document">Document</a></code> objects, and <code><a href="#window">Window</a></code> objects</h5>
14879:
14880: <p>The following are the <a href="#event-handlers">event handlers</a> (and their
14881: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
14882: event types</a>) <span class="impl">that must be</span> supported
14883: by all <a href="infrastructure.html#html-elements">HTML elements</a>, as both content attributes and
14884: IDL attributes, and on <code><a href="dom.html#document">Document</a></code> and <code><a href="#window">Window</a></code>
14885: objects, as IDL attributes.</p>
14886:
14887: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
14888: </th></tr></thead><tbody><tr><td><dfn id="handler-onabort" title="handler-onabort"><code>onabort</code></dfn> </td><td> <code title="event-abort">abort</code>
14889: </td></tr><tr><td><dfn id="handler-oncancel" title="handler-oncancel"><code>oncancel</code></dfn> </td><td> <code title="event-media-cancel">cancel</code>
14890: </td></tr><tr><td><dfn id="handler-oncanplay" title="handler-oncanplay"><code>oncanplay</code></dfn> </td><td> <code title="event-media-canplay"><a href="media-elements.html#event-media-canplay">canplay</a></code>
14891: </td></tr><tr><td><dfn id="handler-oncanplaythrough" title="handler-oncanplaythrough"><code>oncanplaythrough</code></dfn> </td><td> <code title="event-media-canplaythrough"><a href="media-elements.html#event-media-canplaythrough">canplaythrough</a></code>
14892: </td></tr><tr><td><dfn id="handler-onchange" title="handler-onchange"><code>onchange</code></dfn> </td><td> <code title="event-change">change</code> <!-- widely used -->
14893: </td></tr><tr><td><dfn id="handler-onclick" title="handler-onclick"><code>onclick</code></dfn> </td><td> <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> <!-- widely used -->
14894: </td></tr><tr><td><dfn id="handler-onclose" title="handler-onclose"><code>onclose</code></dfn> </td><td> <code title="event-close">close</code> <!-- new for <dialog> -->
14895: </td></tr><tr><td><dfn id="handler-oncontextmenu" title="handler-oncontextmenu"><code>oncontextmenu</code></dfn> </td><td> <code title="event-contextmenu">contextmenu</code> <!-- widely used -->
14896: </td></tr><tr><td><dfn id="handler-oncuechange" title="handler-oncuechange"><code>oncuechange</code></dfn> </td><td> <code title="event-cuechange">cuechange</code>
14897: </td></tr><tr><td><dfn id="handler-ondblclick" title="handler-ondblclick"><code>ondblclick</code></dfn> </td><td> <code title="event-dblclick">dblclick</code> <!-- widely used -->
14898: </td></tr><tr><td><dfn id="handler-ondrag" title="handler-ondrag"><code>ondrag</code></dfn> </td><td> <code title="event-drag"><a href="#event-drag">drag</a></code>
14899: </td></tr><tr><td><dfn id="handler-ondragend" title="handler-ondragend"><code>ondragend</code></dfn> </td><td> <code title="event-dragend"><a href="#event-dragend">dragend</a></code>
14900: </td></tr><tr><td><dfn id="handler-ondragenter" title="handler-ondragenter"><code>ondragenter</code></dfn> </td><td> <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code>
14901: </td></tr><tr><td><dfn id="handler-ondragleave" title="handler-ondragleave"><code>ondragleave</code></dfn> </td><td> <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code>
14902: </td></tr><tr><td><dfn id="handler-ondragover" title="handler-ondragover"><code>ondragover</code></dfn> </td><td> <code title="event-dragover"><a href="#event-dragover">dragover</a></code>
14903: </td></tr><tr><td><dfn id="handler-ondragstart" title="handler-ondragstart"><code>ondragstart</code></dfn> </td><td> <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> <!-- widely used -->
14904: </td></tr><tr><td><dfn id="handler-ondrop" title="handler-ondrop"><code>ondrop</code></dfn> </td><td> <code title="event-drop"><a href="#event-drop">drop</a></code>
14905: </td></tr><tr><td><dfn id="handler-ondurationchange" title="handler-ondurationchange"><code>ondurationchange</code></dfn> </td><td> <code title="event-media-durationchange"><a href="media-elements.html#event-media-durationchange">durationchange</a></code>
14906: </td></tr><tr><td><dfn id="handler-onemptied" title="handler-onemptied"><code>onemptied</code></dfn> </td><td> <code title="event-media-emptied"><a href="media-elements.html#event-media-emptied">emptied</a></code>
14907: </td></tr><tr><td><dfn id="handler-onended" title="handler-onended"><code>onended</code></dfn> </td><td> <code title="event-media-ended"><a href="media-elements.html#event-media-ended">ended</a></code>
14908: </td></tr><tr><td><dfn id="handler-oninput" title="handler-oninput"><code>oninput</code></dfn> </td><td> <code title="event-input">input</code>
14909: </td></tr><tr><td><dfn id="handler-oninvalid" title="handler-oninvalid"><code>oninvalid</code></dfn> </td><td> <code title="event-invalid">invalid</code>
14910: </td></tr><tr><td><dfn id="handler-onkeydown" title="handler-onkeydown"><code>onkeydown</code></dfn> </td><td> <code title="event-keydown">keydown</code> <!-- widely used -->
14911: </td></tr><tr><td><dfn id="handler-onkeypress" title="handler-onkeypress"><code>onkeypress</code></dfn> </td><td> <code title="event-keypress">keypress</code> <!-- widely used -->
14912: </td></tr><tr><td><dfn id="handler-onkeyup" title="handler-onkeyup"><code>onkeyup</code></dfn> </td><td> <code title="event-keyup">keyup</code> <!-- widely used -->
14913: </td></tr><tr><td><dfn id="handler-onloadeddata" title="handler-onloadeddata"><code>onloadeddata</code></dfn> </td><td> <code title="event-media-loadeddata"><a href="media-elements.html#event-media-loadeddata">loadeddata</a></code>
14914: </td></tr><tr><td><dfn id="handler-onloadedmetadata" title="handler-onloadedmetadata"><code>onloadedmetadata</code></dfn> </td><td> <code title="event-media-loadedmetadata"><a href="media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code>
14915: </td></tr><tr><td><dfn id="handler-onloadstart" title="handler-onloadstart"><code>onloadstart</code></dfn> </td><td> <code title="event-media-loadstart"><a href="media-elements.html#event-media-loadstart">loadstart</a></code>
14916: </td></tr><tr><td><dfn id="handler-onmousedown" title="handler-onmousedown"><code>onmousedown</code></dfn> </td><td> <code title="event-mousedown">mousedown</code> <!-- widely used -->
14917: </td></tr><tr><td><dfn id="handler-onmousemove" title="handler-onmousemove"><code>onmousemove</code></dfn> </td><td> <code title="event-mousemove">mousemove</code> <!-- widely used -->
14918: </td></tr><tr><td><dfn id="handler-onmouseout" title="handler-onmouseout"><code>onmouseout</code></dfn> </td><td> <code title="event-mouseout">mouseout</code> <!-- widely used -->
14919: </td></tr><tr><td><dfn id="handler-onmouseover" title="handler-onmouseover"><code>onmouseover</code></dfn> </td><td> <code title="event-mouseover">mouseover</code> <!-- widely used -->
14920: </td></tr><tr><td><dfn id="handler-onmouseup" title="handler-onmouseup"><code>onmouseup</code></dfn> </td><td> <code title="event-mouseup">mouseup</code> <!-- widely used -->
14921: </td></tr><tr><td><dfn id="handler-onmousewheel" title="handler-onmousewheel"><code>onmousewheel</code></dfn> </td><td> <code title="event-mousewheel">mousewheel</code> <!-- widely used -->
14922: </td></tr><tr><td><dfn id="handler-onpause" title="handler-onpause"><code>onpause</code></dfn> </td><td> <code title="event-media-pause"><a href="media-elements.html#event-media-pause">pause</a></code>
14923: </td></tr><tr><td><dfn id="handler-onplay" title="handler-onplay"><code>onplay</code></dfn> </td><td> <code title="event-media-play"><a href="media-elements.html#event-media-play">play</a></code>
14924: </td></tr><tr><td><dfn id="handler-onplaying" title="handler-onplaying"><code>onplaying</code></dfn> </td><td> <code title="event-media-playing"><a href="media-elements.html#event-media-playing">playing</a></code>
14925: </td></tr><tr><td><dfn id="handler-onprogress" title="handler-onprogress"><code>onprogress</code></dfn> </td><td> <code title="event-media-progress"><a href="media-elements.html#event-media-progress">progress</a></code>
14926: </td></tr><tr><td><dfn id="handler-onratechange" title="handler-onratechange"><code>onratechange</code></dfn> </td><td> <code title="event-media-ratechange"><a href="media-elements.html#event-media-ratechange">ratechange</a></code>
14927: </td></tr><tr><td><dfn id="handler-onreset" title="handler-onreset"><code>onreset</code></dfn> </td><td> <code title="event-reset">reset</code>
14928: </td></tr><tr><td><dfn id="handler-onseeked" title="handler-onseeked"><code>onseeked</code></dfn> </td><td> <code title="event-media-seeked"><a href="media-elements.html#event-media-seeked">seeked</a></code>
14929: </td></tr><tr><td><dfn id="handler-onseeking" title="handler-onseeking"><code>onseeking</code></dfn> </td><td> <code title="event-media-seeking"><a href="media-elements.html#event-media-seeking">seeking</a></code>
14930: </td></tr><tr><td><dfn id="handler-onselect" title="handler-onselect"><code>onselect</code></dfn> </td><td> <code title="event-select">select</code> <!-- widely used --> <!-- [CSSOM] -->
14931: </td></tr><tr><td><dfn id="handler-onshow" title="handler-onshow"><code>onshow</code></dfn> </td><td> <code title="event-show">show</code>
14932: </td></tr><tr><td><dfn id="handler-onstalled" title="handler-onstalled"><code>onstalled</code></dfn> </td><td> <code title="event-media-stalled"><a href="media-elements.html#event-media-stalled">stalled</a></code>
14933: </td></tr><tr><td><dfn id="handler-onsubmit" title="handler-onsubmit"><code>onsubmit</code></dfn> </td><td> <code title="event-submit">submit</code> <!-- widely used -->
14934: </td></tr><tr><td><dfn id="handler-onsuspend" title="handler-onsuspend"><code>onsuspend</code></dfn> </td><td> <code title="event-media-suspend"><a href="media-elements.html#event-media-suspend">suspend</a></code>
14935: </td></tr><tr><td><dfn id="handler-ontimeupdate" title="handler-ontimeupdate"><code>ontimeupdate</code></dfn> </td><td> <code title="event-media-timeupdate"><a href="media-elements.html#event-media-timeupdate">timeupdate</a></code>
14936: </td></tr><tr><td><dfn id="handler-onvolumechange" title="handler-onvolumechange"><code>onvolumechange</code></dfn> </td><td> <code title="event-media-volumechange"><a href="media-elements.html#event-media-volumechange">volumechange</a></code>
14937: </td></tr><tr><td><dfn id="handler-onwaiting" title="handler-onwaiting"><code>onwaiting</code></dfn> </td><td> <code title="event-media-waiting"><a href="media-elements.html#event-media-waiting">waiting</a></code>
14938:
14939: <!-- not supported, use dnd: -->
14940: <!--<tr><td><dfn title="handler-onbeforecopy"><code>onbeforecopy</code></dfn> <td> <code title="event-beforecopy">beforecopy</code>--> <!-- widely used -->
14941: <!--<tr><td><dfn title="handler-oncopy"><code>oncopy</code></dfn> <td> <code title="event-copy">copy</code>--> <!-- widely used -->
14942: <!--<tr><td><dfn title="handler-onpaste"><code>onpaste</code></dfn> <td> <code title="event-paste">paste</code>--> <!-- widely used -->
14943: <!-- not supported yet (v2?): -->
14944: <!--<tr><td><dfn title="handler-onselectstart"><code>onselectstart</code></dfn> <td> <code title="event-selectstart">selectstart</code>--> <!-- widely used -->
14945: </td></tr></tbody></table><hr><p>The following are the <a href="#event-handlers">event handlers</a> (and their
14946: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
14947: event types</a>) <span class="impl">that must be</span> supported
14948: by all <a href="infrastructure.html#html-elements">HTML elements</a> other than <code><a href="the-body-element.html#the-body-element">body</a></code> and
14949: <code><a href="#frameset">frameset</a></code>, as both content attributes and IDL
14950: attributes, and on <code><a href="dom.html#document">Document</a></code> objects, as IDL
14951: attributes:</p>
14952:
14953: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
14954: </th></tr></thead><tbody><tr><td><dfn id="handler-onblur" title="handler-onblur"><code>onblur</code></dfn> </td><td> <code title="event-blur">blur</code> <!-- widely used -->
14955: </td></tr><tr><td><dfn id="handler-onerror" title="handler-onerror"><code>onerror</code></dfn> </td><td> <code title="event-error">error</code>
14956: </td></tr><tr><td><dfn id="handler-onfocus" title="handler-onfocus"><code>onfocus</code></dfn> </td><td> <code title="event-focus">focus</code> <!-- widely used -->
14957: </td></tr><tr><td><dfn id="handler-onload" title="handler-onload"><code>onload</code></dfn> </td><td> <code title="event-load">load</code>
14958: </td></tr><tr><td><dfn id="handler-onscroll" title="handler-onscroll"><code>onscroll</code></dfn> </td><td> <code title="event-scroll">scroll</code>
14959: </td></tr></tbody></table><hr><p>The following are the <a href="#event-handlers">event handlers</a> (and their
14960: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
14961: event types</a>) <span class="impl">that must be</span> supported
14962: by <code><a href="#window">Window</a></code> objects, as IDL attributes on the
14963: <code><a href="#window">Window</a></code> object, and with corresponding content
14964: attributes and IDL attributes exposed on the <code><a href="the-body-element.html#the-body-element">body</a></code> and
14965: <code><a href="#frameset">frameset</a></code> elements:</p>
14966:
14967: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
14968: </th></tr></thead><tbody><tr><td><dfn id="handler-window-onafterprint" title="handler-window-onafterprint"><code>onafterprint</code></dfn> </td><td> <code title="event-afterprint">afterprint</code>
14969: </td></tr><tr><td><dfn id="handler-window-onbeforeprint" title="handler-window-onbeforeprint"><code>onbeforeprint</code></dfn> </td><td> <code title="event-beforeprint">beforeprint</code>
14970: </td></tr><tr><td><dfn id="handler-window-onbeforeunload" title="handler-window-onbeforeunload"><code>onbeforeunload</code></dfn> </td><td> <code title="event-beforeunload">beforeunload</code>
14971: </td></tr><tr><td><dfn id="handler-window-onblur" title="handler-window-onblur"><code>onblur</code></dfn> </td><td> <code title="event-blur">blur</code>
14972: </td></tr><tr><td><dfn id="handler-window-onerror" title="handler-window-onerror"><code>onerror</code></dfn> </td><td> <code title="event-error">error</code>
14973: </td></tr><tr><td><dfn id="handler-window-onfocus" title="handler-window-onfocus"><code>onfocus</code></dfn> </td><td> <code title="event-focus">focus</code>
14974: </td></tr><tr><td><dfn id="handler-window-onhashchange" title="handler-window-onhashchange"><code>onhashchange</code></dfn> </td><td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> <!-- new -->
14975: </td></tr><tr><td><dfn id="handler-window-onload" title="handler-window-onload"><code>onload</code></dfn> </td><td> <code title="event-load">load</code> <!-- widely used -->
14976: </td></tr><tr><td><dfn id="handler-window-onmessage" title="handler-window-onmessage"><code>onmessage</code></dfn> </td><td> <code title="event-message">message</code> <!-- new for postMessage -->
14977: </td></tr><tr><td><dfn id="handler-window-onoffline" title="handler-window-onoffline"><code>onoffline</code></dfn> </td><td> <code title="event-offline"><a href="#event-offline">offline</a></code> <!-- new -->
14978: </td></tr><tr><td><dfn id="handler-window-ononline" title="handler-window-ononline"><code>ononline</code></dfn> </td><td> <code title="event-online"><a href="#event-online">online</a></code> <!-- new -->
14979: </td></tr><tr><td><dfn id="handler-window-onpagehide" title="handler-window-onpagehide"><code>onpagehide</code></dfn> </td><td> <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code> <!-- new -->
14980: </td></tr><tr><td><dfn id="handler-window-onpageshow" title="handler-window-onpageshow"><code>onpageshow</code></dfn> </td><td> <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code> <!-- new -->
14981: </td></tr><tr><td><dfn id="handler-window-onpopstate" title="handler-window-onpopstate"><code>onpopstate</code></dfn> </td><td> <code title="event-popstate"><a href="#event-popstate">popstate</a></code> <!-- new -->
14982: </td></tr><tr><td><dfn id="handler-window-onresize" title="handler-window-onresize"><code>onresize</code></dfn> </td><td> <code title="event-resize">resize</code> <!-- widely used --> <!-- [CSSOM] -->
14983: </td></tr><tr><td><dfn id="handler-window-onscroll" title="handler-window-onscroll"><code>onscroll</code></dfn> </td><td> <code title="event-scroll">scroll</code>
14984: </td></tr><tr><td><dfn id="handler-window-onstorage" title="handler-window-onstorage"><code>onstorage</code></dfn> </td><td> <code title="event-storage">storage</code> <!-- new -->
14985: </td></tr><tr><td><dfn id="handler-window-onunload" title="handler-window-onunload"><code>onunload</code></dfn> </td><td> <code title="event-unload">unload</code> <!-- widely used -->
14986: </td></tr></tbody></table><p class="note">The <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code>
14987: handler is also used for <a href="#runtime-script-errors">reporting script errors</a>.</p>
14988:
14989: <hr><!-- this guy is only on Document and not on HTMLElement because
14990: otherwise HTMLScriptElement would have it and that causes
14991: compatibility issues since IE fires readystatechange events on
14992: <script>, not load events, and we can't fire both, and some sites
14993: try to decide which to look for based on the presence of
14994: script.onreadystatechange on HTMLScriptElement.
14995: http://www.w3.org/Bugs/Public/show_bug.cgi?id=13965
14996: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033136.html
14997: --><p>The following are the <a href="#event-handlers">event handlers</a> (and their
14998: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
14999: event types</a>) <span class="impl">that must be</span> supported
15000: on <code><a href="dom.html#document">Document</a></code> objects as IDL attributes:</p>
15001:
15002: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
15003: </th></tr></thead><tbody><tr><td><dfn id="handler-onreadystatechange" title="handler-onreadystatechange"><code>onreadystatechange</code></dfn> </td><td> <code title="event-readystatechange"><a href="dom.html#event-readystatechange">readystatechange</a></code>
15004: </td></tr></tbody></table><div class="impl">
15005:
15006: <h5 id="event-firing"><span class="secno">6.1.6.3 </span>Event firing</h5>
15007:
15008: <p>Certain operations and methods are defined as firing events on
15009: elements. For example, the <code title="dom-click"><a href="#dom-click">click()</a></code>
15010: method on the <code><a href="elements.html#htmlelement">HTMLElement</a></code> interface is defined as
15011: firing a <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event on the
15012: element. <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
15013:
15014: <p><dfn id="fire-a-simple-event" title="fire a simple event">Firing a simple event named <var title="">e</var></dfn> means that an event with the name <var title="">e</var>, which does not bubble (except where otherwise
15015: stated) and is not cancelable (except where otherwise stated), and
15016: which uses the <code><a href="infrastructure.html#event">Event</a></code> interface, must be created and
15017: dispatched at the given target.</p>
15018:
15019: <p><dfn id="fire-a-synthetic-mouse-event" title="fire a synthetic mouse event">Firing a synthetic
15020: mouse event named <var title="">e</var></dfn> means that an event
15021: with the name <var title="">e</var>, which does not bubble (except
15022: where otherwise stated) and is not cancelable (except where
15023: otherwise stated), and which uses the <code><a href="infrastructure.html#mouseevent-10">MouseEvent</a></code>
15024: interface, must be created and dispatched at the given target. The
15025: event object must have its <code title="">screenX</code>, <code title="">screenY</code>, <code title="">clientX</code>, <code title="">clientY</code>, and <code title="">button</code> attributes
15026: initialized to 0, its <code title="">ctrlKey</code>, <code title="">shiftKey</code>, <code title="">altKey</code>, and <code title="">metaKey</code> attributes initialized according to the
15027: current state of the key input device, if any (false for any keys
15028: that are not available), its <code title="">detail</code> attribute
15029: initialized to 1, and its <code title="">relatedTarget</code>
15030: attribute initialized to null. The <code title="">getModifierState()</code> method on the object must return
15031: values appropriately describing the state of the key input device at
15032: the time the event is created.</p>
15033:
15034: <p><dfn id="fire-a-click-event" title="fire a click event">Firing a <code title="event-click">click</code> event</dfn> means <a href="#fire-a-synthetic-mouse-event" title="fire
15035: a synthetic mouse event">firing a synthetic mouse event named <code title="event-click">click</code></a>, which bubbles and is
15036: cancelable.</p>
15037:
15038: <p>The default action of these events is to do nothing except where
15039: otherwise stated.</p>
15040:
15041: </div>
15042:
15043:
15044: <div class="impl">
15045:
15046: <h5 id="events-and-the-window-object"><span class="secno">6.1.6.4 </span>Events and the <code><a href="#window">Window</a></code> object</h5>
15047:
15048: <p>When an event is dispatched at a DOM node in a
15049: <code><a href="dom.html#document">Document</a></code> in a <a href="#browsing-context">browsing context</a>, if the
15050: event is not a <code title="event-load">load</code> event, the user
15051: agent must act as if, for the purposes of <a href="infrastructure.html#concept-event-dispatch" title="concept-event-dispatch">event dispatching</a>, the
15052: <code><a href="#window">Window</a></code> object is the parent of the
15053: <code><a href="dom.html#document">Document</a></code> object. <a href="#refsDOMCORE">[DOMCORE]</a></p>
15054:
15055: </div>
15056:
15057:
15058: <h3 id="atob"><span class="secno">6.2 </span>Base64 utility methods</h3>
15059:
15060: <p>The <code title="dom-windowbase64-atob"><a href="#dom-windowbase64-atob">atob()</a></code> and <code title="dom-windowbase64-btoa"><a href="#dom-windowbase64-btoa">btoa()</a></code> methods allow authors to
15061: transform content to and from the base64 encoding.</p>
15062:
15063: <!-- v2: actual binary support -->
15064:
15065: <pre class="idl">[NoInterfaceObject]
15066: interface <dfn id="windowbase64">WindowBase64</dfn> {
15067: DOMString <a href="#dom-windowbase64-btoa" title="dom-windowbase64-btoa">btoa</a>(DOMString btoa);
15068: DOMString <a href="#dom-windowbase64-atob" title="dom-windowbase64-atob">atob</a>(DOMString atob);
15069: };
15070: <a href="#window">Window</a> implements <a href="#windowbase64">WindowBase64</a>;</pre>
15071:
15072: <p class="note">In these APIs, for mnemonic purposes, the "b" can be
15073: considered to stand for "binary", and the "a" for "ASCII". In
15074: practice, though, for primarily historical reasons, both the input
15075: and output of these functions are Unicode strings.</p>
15076:
15077: <dl class="domintro"><dt><var title="">result</var> = <var title="">window</var> . <code title="dom-windowbase64-btoa"><a href="#dom-windowbase64-btoa">btoa</a></code>( <var title="">data</var> )</dt>
15078:
15079: <dd>
15080:
15081: <p>Takes the input data, in the form of a Unicode string
15082: containing only characters in the range U+0000 to U+00FF, each
15083: representing a binary byte with values 0x00 to 0xFF respectively,
15084: and converts it to its base64 representation, which it returns.</p>
15085:
15086: <p>Throws an <code><a href="infrastructure.html#invalidcharactererror">InvalidCharacterError</a></code> exception if the
15087: input string contains any out-of-range characters.</p>
15088:
15089: </dd>
15090:
15091: <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-windowbase64-atob"><a href="#dom-windowbase64-atob">atob</a></code>( <var title="">data</var> )</dt>
15092:
15093: <dd>
15094:
15095: <p>Takes the input data, in the form of a Unicode string
15096: containing base64-encoded binary data, decodes it, and returns a
15097: string consisting of characters in the range U+0000 to U+00FF,
15098: each representing a binary byte with values 0x00 to 0xFF
15099: respectively, corresponding to that binary data.</p>
15100:
15101: <p>Throws an <code><a href="infrastructure.html#invalidcharactererror">InvalidCharacterError</a></code> exception if the
15102: input string is not valid base64 data.</p>
15103:
15104: </dd>
15105:
15106: </dl><div class="impl">
15107:
15108: <p class="note">The <code><a href="#windowbase64">WindowBase64</a></code> interface adds to the
15109: <code><a href="#window">Window</a></code> interface and the <code>WorkerUtils</code>
15110: interface (part of Web Workers).</p>
15111:
15112: <p>The <dfn id="dom-windowbase64-btoa" title="dom-windowbase64-btoa"><code>btoa()</code></dfn>
15113: method must throw an <code><a href="infrastructure.html#invalidcharactererror">InvalidCharacterError</a></code> exception if
15114: the method's first argument contains any character whose code point
15115: is greater than U+00FF. Otherwise, the user agent must convert that
15116: argument to a sequence of octets whose <var title="">n</var>th octet
15117: is the eight-bit representation of the code point of the <var title="">n</var>th character of the argument, and then must apply
15118: the base64 algorithm to that sequence of octets, and return the
15119: result. <a href="#refsRFC4648">[RFC4648]</a><!--base64--></p>
15120: <!-- Aryeh says: This seems to be what all browsers do as of January
15121: 2011 (except IE, which doesn't support these functions at all). -->
15122:
15123:
15124: <p>The <dfn id="dom-windowbase64-atob" title="dom-windowbase64-atob"><code>atob()</code></dfn>
15125: method must run the following steps to parse the string passed in
15126: the method's first argument:</p>
15127:
15128: <ol><!-- Aryeh says: Copies Firefox behavior as of January 2011
15129: (4.0b8). WebKit is somewhat laxer, and Opera throws no exceptions
15130: at all. gsnedders reports Opera's behavior causes site-compat
15131: problems, and I figure most sites depend on Firefox if on anything,
15132: so go with that. --><!-- Since updated to drop whitespace, based on the arguments here:
15133: http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-May/031613.html
15134: --><li><p>Let <var title="">input</var> be the string being
15135: parsed.</p></li>
15136:
15137: <li><p>Let <var title="">position</var> be a pointer into <var title="">input</var>, initially pointing at the start of the
15138: string.</p></li>
15139:
15140: <li><p>Remove all <a href="common-microsyntaxes.html#space-character" title="space character">space
15141: characters</a> from <var title="">input</var>.</p></li>
15142:
15143: <li><p>If the length of <var title="">input</var> divides by 4
15144: leaving no remainder, then: if <var title="">input</var> ends with
15145: one or two "=" (U+003D) characters, remove them from <var title="">input</var>.</p></li>
15146:
15147: <li><p>If the length of <var title="">input</var> divides by 4
15148: leaving a remainder of 1, throw an
15149: <code><a href="infrastructure.html#invalidcharactererror">InvalidCharacterError</a></code> exception and abort these
15150: steps.</p>
15151:
15152: </li><li>
15153:
15154: <p>If <var title="">input</var> contains a character that is not
15155: in the following list of characters and character ranges, throw an
15156: <code><a href="infrastructure.html#invalidcharactererror">InvalidCharacterError</a></code> exception and abort these
15157: steps:</p>
15158:
15159: <ul class="brief"><li>"+" (U+002B)
15160: </li><li>"/" (U+002F)
15161: </li><li><a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>
15162: </li><li><a href="common-microsyntaxes.html#uppercase-ascii-letters">uppercase ASCII letters</a>
15163: </li><li><a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>
15164: </li></ul></li>
15165:
15166: <li><p>Let <var title="">output</var> be a string, initially
15167: empty.</p></li>
15168:
15169: <li><p>Let <var title="">buffer</var> be a buffer that can have
15170: bits appended to it, initially empty.</p></li>
15171:
15172: <li>
15173:
15174: <p>While <var title="">position</var> does not point past the end
15175: of <var title="">input</var>, run these substeps:</p>
15176:
15177: <ol><li>
15178:
15179: <p>Find the character pointed to by <var title="">position</var>
15180: in the first column of the following table. Let <var title="">n</var> be the number given in the second cell of the
15181: same row.</p>
15182:
15183: <div id="base64-table">
15184: <table><thead><tr><th>Character
15185: </th><th>Number
15186: </th></tr></thead><tbody><tr><td>A</td><td>0
15187: </td></tr><tr><td>B</td><td>1
15188: </td></tr><tr><td>C</td><td>2
15189: </td></tr><tr><td>D</td><td>3
15190: </td></tr><tr><td>E</td><td>4
15191: </td></tr><tr><td>F</td><td>5
15192: </td></tr><tr><td>G</td><td>6
15193: </td></tr><tr><td>H</td><td>7
15194: </td></tr><tr><td>I</td><td>8
15195: </td></tr><tr><td>J</td><td>9
15196: </td></tr><tr><td>K</td><td>10
15197: </td></tr><tr><td>L</td><td>11
15198: </td></tr><tr><td>M</td><td>12
15199: </td></tr><tr><td>N</td><td>13
15200: </td></tr><tr><td>O</td><td>14
15201: </td></tr><tr><td>P</td><td>15
15202: </td></tr><tr><td>Q</td><td>16
15203: </td></tr><tr><td>R</td><td>17
15204: </td></tr><tr><td>S</td><td>18
15205: </td></tr><tr><td>T</td><td>19
15206: </td></tr><tr><td>U</td><td>20
15207: </td></tr><tr><td>V</td><td>21
15208: </td></tr><tr><td>W</td><td>22
15209: </td></tr><tr><td>X</td><td>23
15210: </td></tr><tr><td>Y</td><td>24
15211: </td></tr><tr><td>Z</td><td>25
15212: </td></tr><tr><td>a</td><td>26
15213: </td></tr><tr><td>b</td><td>27
15214: </td></tr><tr><td>c</td><td>28
15215: </td></tr><tr><td>d</td><td>29
15216: </td></tr><tr><td>e</td><td>30
15217: </td></tr><tr><td>f</td><td>31
15218: </td></tr><tr><td>g</td><td>32
15219: </td></tr><tr><td>h</td><td>33
15220: </td></tr><tr><td>i</td><td>34
15221: </td></tr><tr><td>j</td><td>35
15222: </td></tr><tr><td>k</td><td>36
15223: </td></tr><tr><td>l</td><td>37
15224: </td></tr><tr><td>m</td><td>38
15225: </td></tr><tr><td>n</td><td>39
15226: </td></tr><tr><td>o</td><td>40
15227: </td></tr><tr><td>p</td><td>41
15228: </td></tr><tr><td>q</td><td>42
15229: </td></tr><tr><td>r</td><td>43
15230: </td></tr><tr><td>s</td><td>44
15231: </td></tr><tr><td>t</td><td>45
15232: </td></tr><tr><td>u</td><td>46
15233: </td></tr><tr><td>v</td><td>47
15234: </td></tr><tr><td>w</td><td>48
15235: </td></tr><tr><td>x</td><td>49
15236: </td></tr><tr><td>y</td><td>50
15237: </td></tr><tr><td>z</td><td>51
15238: </td></tr><tr><td>0</td><td>52
15239: </td></tr><tr><td>1</td><td>53
15240: </td></tr><tr><td>2</td><td>54
15241: </td></tr><tr><td>3</td><td>55
15242: </td></tr><tr><td>4</td><td>56
15243: </td></tr><tr><td>5</td><td>57
15244: </td></tr><tr><td>6</td><td>58
15245: </td></tr><tr><td>7</td><td>59
15246: </td></tr><tr><td>8</td><td>60
15247: </td></tr><tr><td>9</td><td>61
15248: </td></tr><tr><td>+</td><td>62
15249: </td></tr><tr><td>/</td><td>63
15250: </td></tr></tbody></table></div>
15251:
15252: </li>
15253:
15254: <li><p>Append to <var title="">buffer</var> the six bits
15255: corresponding to <var title="">number</var>, most significant bit
15256: first.</p></li>
15257:
15258: <li><p>If <var title="">buffer</var> has accumulated 24 bits,
15259: interpret them as three 8-bit big-endian numbers. Append the
15260: three characters with code points equal to those numbers to <var title="">output</var>, in the same order, and then empty <var title="">buffer</var>.</p></li>
15261:
15262: <li><p>Advance <var title="">position</var> by one
15263: character.</p></li>
15264:
15265: </ol></li>
15266:
15267: <li>
15268:
15269: <p>If <var title="">buffer</var> is not empty, it contains either
15270: 12 or 18 bits. If it contains 12 bits, discard the last four and
15271: interpret the remaining eight as an 8-bit big-endian number. If it
15272: contains 18 bits, discard the last two and interpret the remaining
15273: 16 as two 8-bit big-endian numbers. Append the one or two
15274: characters with code points equal to those one or two numbers to
15275: <var title="">output</var>, in the same order.</p>
15276:
15277: <p class="note">The discarded bits mean that, for instance, <code title="">atob("YQ")</code> and <code title="">atob("YR")</code>
15278: both return "<code title="">a</code>".</p>
15279:
15280: </li>
15281:
15282: <li><p>Return <var title="">output</var>.</p></li>
15283:
15284: </ol><!-- Note: this function is defined explicitly here because RFC4648
15285: does not specify how to handle erroneous input, and no preexisting
15286: browser implementation simply throws an exception on all erroneous
15287: input. --></div>
15288:
15289: <p class="note">Some base64 encoders add newlines or other
15290: whitespace to their output. The <code title="dom-windowbase64-atob"><a href="#dom-windowbase64-atob">atob()</a></code> method throws an
15291: exception if its input contains characters other than those
15292: described by the regular expression bracket expression <code title="">[+/=0-9A-Za-z]</code>, so other characters need to be
15293: removed before <code title="dom-windowbase64-atob"><a href="#dom-windowbase64-atob">atob()</a></code> is
15294: used for decoding.</p>
15295:
15296:
15297:
15298: <h3 id="timers"><span class="secno">6.3 </span>Timers</h3>
15299:
15300: <p>The <code title="dom-windowtimers-setTimeout"><a href="#dom-windowtimers-settimeout">setTimeout()</a></code>
15301: and <code title="dom-windowtimers-setInterval"><a href="#dom-windowtimers-setinterval">setInterval()</a></code>
15302: methods allow authors to schedule timer-based callbacks.</p>
15303:
15304: <pre class="idl">[NoInterfaceObject]
15305: interface <dfn id="windowtimers">WindowTimers</dfn> {
15306: long <a href="#dom-windowtimers-settimeout" title="dom-windowtimers-setTimeout">setTimeout</a>(<span>Function</span> handler, optional long timeout, any... arguments);
15307: long <a href="#dom-windowtimers-settimeout" title="dom-windowtimers-setTimeout">setTimeout</a>(DOMString handler, optional long timeout, any... arguments);
15308: void <a href="#dom-windowtimers-cleartimeout" title="dom-windowtimers-clearTimeout">clearTimeout</a>(long handle);
15309: long <a href="#dom-windowtimers-setinterval" title="dom-windowtimers-setInterval">setInterval</a>(<span>Function</span> handler, optional long timeout, any... arguments);
15310: long <a href="#dom-windowtimers-setinterval" title="dom-windowtimers-setInterval">setInterval</a>(DOMString handler, optional long timeout, any... arguments);
15311: void <a href="#dom-windowtimers-clearinterval" title="dom-windowtimers-clearInterval">clearInterval</a>(long handle);
15312: };
15313: <a href="#window">Window</a> implements <a href="#windowtimers">WindowTimers</a>;</pre>
15314:
15315: <!-- Demonstrating the need for wrapping of the timeout argument value treated as long rather than clamping or treating as double:
15316: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1228
15317: Demonstrating the need for the timeout argument to be signed rather than unsigned:
15318: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1229
15319: -->
15320:
15321: <dl class="domintro"><dt><var title="">handle</var> = <var title="">window</var> . <code title="dom-windowtimers-setTimeout"><a href="#dom-windowtimers-settimeout">setTimeout</a></code>( <var title="">handler</var> [, <var title="">timeout</var> [, <var title="">arguments</var>... ] ] )</dt>
15322:
15323: <dd>
15324:
15325: <p>Schedules a timeout to run <var title="">handler</var> after
15326: <var title="">timeout</var> milliseconds. Any <var title="">arguments</var> are passed straight through to the <var title="">handler</var>.</p>
15327:
15328: </dd>
15329:
15330: <dt><var title="">handle</var> = <var title="">window</var> . <code title="dom-windowtimers-setTimeout"><a href="#dom-windowtimers-settimeout">setTimeout</a></code>( <var title="">code</var> [, <var title="">timeout</var> ] )</dt>
15331:
15332: <dd>
15333:
15334: <p>Schedules a timeout to compile and run <var title="">code</var>
15335: after <var title="">timeout</var> milliseconds.</p>
15336:
15337: </dd>
15338:
15339: <dt><var title="">window</var> . <code title="dom-windowtimers-clearTimeout"><a href="#dom-windowtimers-cleartimeout">clearTimeout</a></code>( <var title="">handle</var> )</dt>
15340:
15341: <dd>
15342:
15343: <p>Cancels the timeout set with <code title="dom-windowtimers-setTimeout"><a href="#dom-windowtimers-settimeout">setTimeout()</a></code> identified by <var title="">handle</var>.</p>
15344:
15345: </dd>
15346:
15347: <dt><var title="">handle</var> = <var title="">window</var> . <code title="dom-windowtimers-setInterval"><a href="#dom-windowtimers-setinterval">setInterval</a></code>( <var title="">handler</var> [, <var title="">timeout</var> [, <var title="">arguments</var>... ] ] )</dt>
15348:
15349: <dd>
15350:
15351: <p>Schedules a timeout to run <var title="">handler</var> every
15352: <var title="">timeout</var> milliseconds. Any <var title="">arguments</var> are passed straight through to the <var title="">handler</var>.</p>
15353:
15354: </dd>
15355:
15356: <dt><var title="">handle</var> = <var title="">window</var> . <code title="dom-windowtimers-setInterval"><a href="#dom-windowtimers-setinterval">setInterval</a></code>( <var title="">code</var> [, <var title="">timeout</var> ] )</dt>
15357:
15358: <dd>
15359:
15360: <p>Schedules a timeout to compile and run <var title="">code</var>
15361: every <var title="">timeout</var> milliseconds.</p>
15362:
15363: </dd>
15364:
15365: <dt><var title="">window</var> . <code title="dom-windowtimers-clearInterval"><a href="#dom-windowtimers-clearinterval">clearInterval</a></code>( <var title="">handle</var> )</dt>
15366:
15367: <dd>
15368:
15369: <p>Cancels the timeout set with <code title="dom-windowtimers-setInterval"><a href="#dom-windowtimers-setinterval">setInterval()</a></code> identified by <var title="">handle</var>.</p>
15370:
15371: </dd>
15372:
15373: </dl><p class="note">This API does not guarantee that timers will run
15374: exactly on schedule. Delays due to CPU load, other tasks, etc, are
15375: to be expected.</p>
15376:
15377: <div class="impl">
15378:
15379: <p class="note">The <code><a href="#windowtimers">WindowTimers</a></code> interface adds to the
15380: <code><a href="#window">Window</a></code> interface and the <code>WorkerUtils</code>
15381: interface (part of Web Workers).
15382: <a href="#refsWEBWORKERS">[WEBWORKERS]</a>
15383: </p>
15384:
15385: <p>Each object that implements the <code><a href="#windowtimers">WindowTimers</a></code>
15386: interface has a <dfn id="list-of-active-timers">list of active timers</dfn>. Each entry in this
15387: lists is identified by a number, which must be unique within the
15388: list for the lifetime of the object that implements the
15389: <code><a href="#windowtimers">WindowTimers</a></code> interface.</p>
15390:
15391: <hr><p>The <dfn id="dom-windowtimers-settimeout" title="dom-windowtimers-setTimeout"><code>setTimeout()</code></dfn>
15392: method must run the following steps:
15393:
15394: </p><ol><li><p>Let <var title="">handle</var> be a user-agent-defined
15395: integer that is greater than zero that will identify the timeout to
15396: be set by this call in the <a href="#list-of-active-timers">list of active
15397: timers</a>.</p></li>
15398:
15399: <li><p>Add an entry to the <a href="#list-of-active-timers">list of active timers</a> for
15400: <var title="">handle</var>.</p></li>
15401:
15402: <li><p><a href="#get-the-timed-task">Get the timed task</a> <var title="">handle</var>
15403: in the <a href="#list-of-active-timers">list of active timers</a>, and let <var title="">task</var> be the result. This algorithm uses the first
15404: argument to the method (<var title="">handler</var>) and, if there
15405: are any, the third and subsequent arguments to the method (<var title="">arguments</var>), to establish precisely what <var title="">task</var> does.</p></li>
15406:
15407: <li><p>Let <var title="">timeout</var> be the second argument to
15408: the method, or zero if the argument was omitted.</p></li>
15409:
15410: <li><p>If the currently running <a href="#concept-task" title="concept-task">task</a> is a task that was created by the
15411: <code title="dom-windowtimers-setTimeout"><a href="#dom-windowtimers-settimeout">setTimeout()</a></code>
15412: method, and <var title="">timeout</var> is less than 4, then
15413: increase <var title="">timeout</var> to 4.</p></li>
15414:
15415: <li><p>Return <var title="">handle</var>, and then continue running
15416: this algorithm asynchronously.</p></li>
15417:
15418: <li>
15419:
15420: <p>If the <a href="#method-context">method context</a> is a <code><a href="#window">Window</a></code>
15421: object, wait until the <code><a href="dom.html#document">Document</a></code> associated with the
15422: <a href="#method-context">method context</a> has been <a href="#fully-active">fully active</a> for
15423: a further <var title="">timeout</var> milliseconds (not
15424: necessarily consecutively).</p>
15425:
15426: <p>Otherwise, if the <a href="#method-context">method context</a> is a
15427: <code>WorkerUtils</code> object, wait until <var title="">timeout</var> milliseconds have passed with the worker
15428: not suspended (not necessarily consecutively).</p>
15429:
15430: <p>Otherwise, act as described in the specification that defines
15431: that the <code><a href="#windowtimers">WindowTimers</a></code> interface is implemented by
15432: some other object.</p>
15433:
15434: </li>
15435:
15436: <li>
15437:
15438: <p>Wait until any invocations of this algorithm that had the same
15439: <a href="#method-context">method context</a>, that started before this one, and
15440: whose <var title="">timeout</var> is equal to or less than this
15441: one's, have completed.</p>
15442:
15443: <p class="note">Argument conversion as defined by Web IDL (for
15444: example, invoking <code title="">toString()</code> methods on
15445: objects passed as the first argument) happens in the algorithms
15446: defined in Web IDL, before this algorithm is invoked.</p>
15447:
15448: <div class="example">
15449:
15450: <p>So for example, the following rather silly code will result in
15451: the log containing "<code title="">ONE TWO </code>":</p>
15452:
15453: <pre>var log = '';
15454: function logger(s) { log += s + ' '; }
15455:
15456: setTimeout({ toString: function () {
15457: setTimeout("logger('ONE')", 100);
15458: return "logger('TWO')";
15459: } }, 100);</pre>
15460:
15461: </div>
15462:
15463: </li>
15464:
15465: <li>
15466:
15467: <p>Optionally, wait a further user-agent defined length of
15468: time.</p>
15469:
15470: <p class="note">This is intended to allow user agents to pad
15471: timeouts as needed to optimise the power usage of the device. For
15472: example, some processors have a low-power mode where the
15473: granularity of timers is reduced; on such platforms, user agents
15474: can slow timers down to fit this schedule instead of requiring the
15475: processor to use the more accurate mode with its associated higher
15476: power usage.</p>
15477:
15478: </li>
15479:
15480: <li>
15481:
15482: <p><a href="#queue-a-task" title="queue a task">Queue</a> the <a href="#concept-task" title="concept-task">task</a> <var title="">task</var>.</p>
15483:
15484: <p class="note">Once the task has been processed, it is safe to
15485: remove the entry for <var title="">handle</var> from the
15486: <a href="#list-of-active-timers">list of active timers</a> (there is no way for the
15487: entry's existence to be detected past this point, so it does not
15488: technically matter one way or the other).</p>
15489:
15490: </li>
15491:
15492: </ol><hr><p>The <dfn id="dom-windowtimers-setinterval" title="dom-windowtimers-setInterval"><code>setInterval()</code></dfn>
15493: method must run the following steps:
15494:
15495: </p><ol><li><p>Let <var title="">handle</var> be a user-agent-defined
15496: integer that is greater than zero that will identify the timeout to
15497: be set by this call in the <a href="#list-of-active-timers">list of active
15498: timers</a>.</p></li>
15499:
15500: <li><p>Add an entry to the <a href="#list-of-active-timers">list of active timers</a> for
15501: <var title="">handle</var>.</p></li>
15502:
15503: <li><p><a href="#get-the-timed-task">Get the timed task</a> <var title="">handle</var>
15504: in the <a href="#list-of-active-timers">list of active timers</a>, and let <var title="">task</var> be the result. This algorithm uses the first
15505: argument to the method (<var title="">handler</var>) and, if there
15506: are any, the third and subsequent arguments to the method (<var title="">arguments</var>), to establish precisely what <var title="">task</var> does.</p></li>
15507:
15508: <li><p>Let <var title="">timeout</var> be the second argument to
15509: the method, or zero if the argument was omitted.</p></li>
15510:
15511: <li><p>If <var title="">timeout</var> is less than 4, then
15512: increase <var title="">timeout</var> to 4.</p></li> <!-- (but see
15513: note below about IE) -->
15514:
15515: <li><p>Return <var title="">handle</var>, and then continue running
15516: this algorithm asynchronously.</p></li>
15517:
15518: <!-- Note: IE doesn't actually run intervals with duration zero, it
15519: aborts roughly here in the algorithm for them. -->
15520:
15521: <li>
15522:
15523: <p><i title="">Wait</i>: If the <a href="#method-context">method context</a> is a
15524: <code><a href="#window">Window</a></code> object, wait until the <code><a href="dom.html#document">Document</a></code>
15525: associated with the <a href="#method-context">method context</a> has been <a href="#fully-active">fully
15526: active</a> for a further <var title="">interval</var>
15527: milliseconds (not necessarily consecutively).</p>
15528:
15529: <p>Otherwise, if the <a href="#method-context">method context</a> is a
15530: <code>WorkerUtils</code> object, wait until <var title="">interval</var> milliseconds have passed with the worker
15531: not suspended (not necessarily consecutively).</p>
15532:
15533: <p>Otherwise, act as described in the specification that defines
15534: that the <code><a href="#windowtimers">WindowTimers</a></code> interface is implemented by
15535: some other object.</p>
15536:
15537: </li>
15538:
15539: <li>
15540:
15541: <p>Optionally, wait a further user-agent defined length of
15542: time.</p>
15543:
15544: <p class="note">This is intended to allow user agents to pad
15545: timeouts as needed to optimise the power usage of the device. For
15546: example, some processors have a low-power mode where the
15547: granularity of timers is reduced; on such platforms, user agents
15548: can slow timers down to fit this schedule instead of requiring the
15549: processor to use the more accurate mode with its associated higher
15550: power usage.</p>
15551:
15552: </li>
15553:
15554: <li><p><a href="#queue-a-task" title="queue a task">Queue</a> the <var title="">task</var> <a href="#concept-task" title="concept-task">task</a>.</p></li>
15555:
15556: <li><p>Return to the step labeled <i>wait</i>.</p></li>
15557:
15558: </ol><hr><p>The <dfn id="dom-windowtimers-cleartimeout" title="dom-windowtimers-clearTimeout"><code>clearTimeout()</code></dfn>
15559: and <dfn id="dom-windowtimers-clearinterval" title="dom-windowtimers-clearInterval"><code>clearInterval()</code></dfn>
15560: methods must clear the entry identified as <var title="">handle</var> from the <a href="#list-of-active-timers">list of active timers</a> of
15561: the <code><a href="#windowtimers">WindowTimers</a></code> object on which the method was
15562: invoked, where <var title="">handle</var> is the argument passed to
15563: the method, if any. (If <var title="">handle</var> does not identify
15564: an entry in the <a href="#list-of-active-timers">list of active timers</a> of the
15565: <code><a href="#windowtimers">WindowTimers</a></code> object on which the method was invoked,
15566: the method does nothing.)</p>
15567:
15568: <hr><p>The <dfn id="method-context">method context</dfn>, when referenced by the algorithms
15569: in this section, is the object on which the method for which the
15570: algorithm is running is implemented (a <code><a href="#window">Window</a></code> or
15571: <code>WorkerUtils</code> object).</p>
15572:
15573: <p>When the above methods are invoked and try to <dfn id="get-the-timed-task">get the timed
15574: task</dfn> <var title="">handle</var> in list <var title="">list</var>,
15575: they must run the following steps:</p>
15576:
15577: <ol><li>
15578:
15579: <p>If the first argument to the invoked method is a
15580: <code>Function</code>, then return a <a href="#concept-task" title="concept-task">task</a> that checks if the entry for <var title="">handle</var> in <var title="">list</var> has been
15581: cleared, and if it has not, calls the <code>Function</code> with
15582: as its arguments the third and subsequent arguments to the invoked
15583: method (if any) and with an undefined <var title="">thisArg</var>,
15584: and abort these steps. <a href="#refsECMA262">[ECMA262]</a></p>
15585:
15586: <p class="note">Setting <var title="">thisArg</var> to undefined
15587: means that the function code will be executed with the <code title="">this</code> keyword bound to the <code><a href="#windowproxy">WindowProxy</a></code>
15588: or the <code>WorkerGlobalScope</code> object, as if the code was
15589: running in the global scope.</p>
15590:
15591: <p>Otherwise, continue with the remaining steps.</p>
15592:
15593: </li>
15594:
15595: <li><p>Let <var title="">script source</var> be the first argument
15596: to the method.</p></li>
15597:
15598: <li><p>Let <var title="">script language</var> be
15599: JavaScript.</p></li>
15600:
15601: <li>
15602:
15603: <p>If the <a href="#method-context">method context</a> is a <code><a href="#window">Window</a></code>
15604: object, let <var title="">global object</var> be the <a href="#method-context">method
15605: context</a>, let <var title="">browsing context</var> be the
15606: <a href="#browsing-context">browsing context</a> with which <var title="">global
1.191 sruby 15607: object</var> is associated, let <var title="">document</var> and
15608: <var title="">referrer source</var> be the <code><a href="dom.html#document">Document</a></code>
15609: associated with <var title="">global object</var>, let <var title="">character encoding</var> be the <a href="infrastructure.html#document's-character-encoding" title="document's
15610: character encoding">character encoding</a> of the
15611: <code><a href="dom.html#document">Document</a></code> associated with <var title="">global
15612: object</var> (<a href="#sce-not-copy">this is a reference, not a
15613: copy</a>), and let <var title="">base URL</var> be the <a href="urls.html#document-base-url" title="document base URL">base URL</a> of the
15614: <code><a href="dom.html#document">Document</a></code> associated with <var title="">global
15615: object</var> (<a href="#sbu-not-copy">this is a reference, not a
15616: copy</a>).</p>
1.190 sruby 15617:
15618: <p>Otherwise, if the <a href="#method-context">method context</a> is a
15619: <code>WorkerUtils</code> object, let <var title="">global
1.191 sruby 15620: object</var>, <var title="">browsing context</var>, <var title="">document</var>, <var title="">referrer source</var>, <var title="">character encoding</var>, and <var title="">base
15621: URL</var> be the <a href="#script's-global-object">script's global object</a>,
15622: <a href="#script's-browsing-context">script's browsing context</a>, <a href="#script's-document">script's
15623: document</a>, <a href="#script's-referrer-source">script's referrer source</a>,
15624: <a href="#script's-url-character-encoding">script's URL character encoding</a>, and <a href="#script's-base-url">script's
15625: base URL</a> (respectively) of the <a href="#concept-script" title="concept-script">script</a> that the <span>run a
15626: worker</span> algorithm created when it created the <a href="#method-context">method
15627: context</a>.</p>
1.190 sruby 15628:
15629: <p>Otherwise, act as described in the specification that defines
15630: that the <code><a href="#windowtimers">WindowTimers</a></code> interface is implemented by
15631: some other object.</p>
15632:
15633: </li>
15634:
15635: <li><p>Return a <a href="#concept-task" title="concept-task">task</a> that checks
15636: if the entry for <var title="">handle</var> in <var title="">list</var> has been cleared, and if it has not, <a href="#create-a-script" title="create a script">creates a script</a> using <var title="">script source</var> as the script source, the
15637: <a href="urls.html#url">URL</a> where <var title="">script source</var> can be
15638: found, <var title="">scripting language</var> as the scripting
15639: language, <var title="">global object</var> as the global object,
1.191 sruby 15640: <var title="">browsing context</var> as the browsing context, <var title="">document</var> as the document, <var title="">referrer
15641: source</var> as the referrer source, <var title="">character
1.190 sruby 15642: encoding</var> as the URL character encoding, and <var title="">base URL</var> as the base URL.</p></li>
15643:
15644: </ol><hr><p>The <a href="#task-source">task source</a> for these <a href="#concept-task" title="concept-task">tasks</a> is the <dfn id="timer-task-source">timer task
15645: source</dfn>.</p>
15646:
15647: </div>
15648:
15649:
15650:
15651: <h3 id="user-prompts"><span class="secno">6.4 </span>User prompts</h3>
15652:
15653: <!--
15654: v2 ideas:
15655: * in-window modal dialogs
15656: - escape/enter handling
15657: - dragging the window out of the tab
15658: * in-window non-modal palettes
15659: - with a solution for the mobile space
15660: -->
15661:
15662: <h4 id="simple-dialogs"><span class="secno">6.4.1 </span>Simple dialogs</h4>
15663:
15664: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-alert"><a href="#dom-alert">alert</a></code>(<var title="">message</var>)</dt>
15665: <dd>
15666:
15667: <p>Displays a modal alert with the given message, and waits for the user to dismiss it.</p>
15668:
15669: <p>A call to the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
15670: method is implied when this method is invoked.</p>
15671:
15672: </dd>
15673:
15674: <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-confirm"><a href="#dom-confirm">confirm</a></code>(<var title="">message</var>)</dt>
15675: <dd>
15676:
15677: <p>Displays a modal OK/Cancel prompt with the given message, waits
15678: for the user to dismiss it, and returns true if the user clicks OK
15679: and false if the user clicks Cancel.</p>
15680:
15681: <p>A call to the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
15682: method is implied when this method is invoked.</p>
15683:
15684: </dd>
15685:
15686: <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-prompt"><a href="#dom-prompt">prompt</a></code>(<var title="">message</var> [, <var title="">default</var>] )</dt>
15687: <dd>
15688:
15689: <p>Displays a modal text field prompt with the given message,
15690: waits for the user to dismiss it, and returns the value that the
15691: user entered. If the user cancels the prompt, then returns null
15692: instead. If the second argument is present, then the given value
15693: is used as a default.</p>
15694:
15695: <p>A call to the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
15696: method is implied when this method is invoked.</p>
15697:
15698: </dd>
15699:
15700: </dl><div class="impl">
15701:
15702: <p>The <dfn id="dom-alert" title="dom-alert"><code>alert(<var title="">message</var>)</code></dfn> method, when invoked, must run
15703: the following steps:</p>
15704:
15705: <ol><li><p>If the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination nesting
15706: level</a> is non-zero, optionally abort these steps.</p></li>
15707:
15708: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
15709:
15710: <li><p>Show the given <var title="">message</var> to the
15711: user.</p></li>
15712:
15713: <li><p>Optionally, <a href="#pause">pause</a> while waiting for for the
15714: user to acknowledge the message.</p></li>
15715:
15716: </ol><p>The <dfn id="dom-confirm" title="dom-confirm"><code>confirm(<var title="">message</var>)</code></dfn> method, when invoked, must run
15717: the following steps:</p>
15718:
15719: <ol><li><p>If the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination nesting
15720: level</a> is non-zero, optionally abort these steps, returning
15721: false.</p></li>
15722:
15723: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
15724:
15725: <li><p>Show the given <var title="">message</var> to the user, and
15726: ask the user to respond with a positive or negative
15727: response.</p></li>
15728:
15729: <li><p><a href="#pause">Pause</a> until the user responds either positively
15730: or negatively.</p></li>
15731:
15732: <li><p>If the user responded positively, return true; otherwise,
15733: the user responded negatively: return false.</p></li>
15734:
15735: </ol><p>The <dfn id="dom-prompt" title="dom-prompt"><code>prompt(<var title="">message</var>, <var title="">default</var>)</code></dfn>
15736: method, when invoked, must run the following steps:</p>
15737:
15738: <ol><li><p>If the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination nesting
15739: level</a> is non-zero, optionally abort these steps, returning
15740: null.</p></li>
15741:
15742: <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</p></li>
15743:
15744: <li><p>Show the given <var title="">message</var> to the user, and
15745: ask the user to either respond with a string value or abort. The
15746: second argument is optional. If the second argument (<var title="">default</var>) is present, then the response must be
15747: defaulted to the value given by <var title="">default</var>.</p></li>
15748:
15749: <li><p><a href="#pause">Pause</a> while waiting for the user's
15750: response.</p></li>
15751:
15752: <li><p>If the user aborts, then return null; otherwise, return the
15753: string that the user responded with.</p></li>
15754:
15755: </ol></div>
15756:
15757:
15758: <h4 id="printing"><span class="secno">6.4.2 </span>Printing</h4>
15759:
15760: <!--TOPIC:DOM APIs-->
15761: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-print"><a href="#dom-print">print</a></code>()</dt>
15762:
15763: <dd>
15764:
15765: <p>Prompts the user to print the page.</p>
15766:
15767: <p>A call to the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
15768: method is implied when this method is invoked.</p>
15769:
15770: </dd>
15771:
15772: </dl><div class="impl">
15773:
15774: <p>When the <dfn id="dom-print" title="dom-print"><code>print()</code></dfn> method
15775: is invoked, if the <code><a href="dom.html#document">Document</a></code> is <a href="#ready-for-post-load-tasks">ready for
15776: post-load tasks</a>, then the user agent must synchronously run
15777: the <a href="#printing-steps">printing steps</a>. Otherwise, the user agent must only
15778: set the <dfn id="print-when-loaded">print when loaded</dfn> flag on the
15779: <code><a href="dom.html#document">Document</a></code>.</p>
15780: <!--TOPIC:HTML-->
15781:
15782: <p>User agents should also run the <a href="#printing-steps">printing steps</a>
15783: whenever the user asks for the opportunity to <a href="#obtain-a-physical-form">obtain a
15784: physical form</a> (e.g. printed copy), or the representation of a
15785: physical form (e.g. PDF copy), of a document.</p>
15786:
15787: <p>The <dfn id="printing-steps">printing steps</dfn> are as follows:</p>
15788:
15789: <ol><li>
15790:
15791: <p>The user agent may display a message to the user and/or may
15792: abort these steps.</p>
15793:
15794: <p class="example">For instance, a kiosk browser could silently
15795: ignore any invocations of the <code title="dom-print"><a href="#dom-print">print()</a></code> method.</p>
15796:
15797: <p class="example">For instance, a browser on a mobile device
15798: could detect that there are no printers in the vicinity and
15799: display a message saying so before continuing to offer a "save to
15800: PDF" option.</p>
15801:
15802: </li>
15803:
15804: <li>
15805:
15806: <p>The user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
15807: <code title="event-beforeprint">beforeprint</code> at the
15808: <code><a href="#window">Window</a></code> object of the <code><a href="dom.html#document">Document</a></code> that is
15809: being printed, as well as any <a href="#nested-browsing-context" title="nested browsing
15810: context">nested browsing contexts</a> in it.</p>
15811:
15812: <p class="example">The <code title="event-beforeprint">beforeprint</code> event can be used
15813: to annotate the printed copy, for instance adding the time at
15814: which the document was printed.</p>
15815:
15816: </li>
15817:
15818: <li>
15819:
15820: <p>The user agent must release the <a href="#storage-mutex">storage mutex</a>.</p>
15821:
15822: </li>
15823:
15824: <li>
15825:
15826: <p>The user agent should offer the user the opportunity to
15827: <a href="#obtain-a-physical-form">obtain a physical form</a> (or the representation of a
15828: physical form) of the document. The user agent may wait for the
15829: user to either accept or decline before returning; if so, the user
15830: agent must <a href="#pause">pause</a> while the method is waiting. Even if
15831: the user agent doesn't wait at this point, the user agent must use
15832: the state of the relevant documents as they are at this point in
15833: the algorithm if and when it eventually creates the alternate
15834: form.</p>
15835:
15836: </li>
15837:
15838: <li>
15839:
15840: <p>The user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
15841: <code title="event-afterprint">afterprint</code> at the
15842: <code><a href="#window">Window</a></code> object of the <code><a href="dom.html#document">Document</a></code> that is
15843: being printed, as well as any <a href="#nested-browsing-context" title="nested browsing
15844: context">nested browsing contexts</a> in it.</p>
15845:
15846: <p class="example">The <code title="event-afterprint">afterprint</code> event can be used
15847: to revert annotations added in the earlier event, as well as
15848: showing post-printing UI. For instance, if a page is walking the
15849: user through the steps of applying for a home loan, the script
15850: could automatically advance to the next step after having printed
15851: a form or other.</p>
15852:
15853: </li>
15854:
15855: </ol></div>
15856:
15857:
15858: <!--TOPIC:DOM APIs-->
15859: <h4 id="dialogs-implemented-using-separate-documents"><span class="secno">6.4.3 </span>Dialogs implemented using separate documents</h4>
15860:
15861: <dl class="domintro"><dt><var title="">result</var> = <var title="">window</var> . <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog</a></code>(<var title="">url</var> [, <var title="">argument</var>] )</dt>
15862:
15863: <dd>
15864:
15865: <p>Prompts the user with the given page, waits for that page to
15866: close, and returns the return value.</p>
15867:
15868: <p>A call to the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
15869: method is implied when this method is invoked.</p>
15870:
15871: </dd>
15872:
15873: </dl><div class="impl">
15874:
15875: <p>The <dfn id="dom-showmodaldialog" title="dom-showModalDialog"><code>showModalDialog(<var title="">url</var>, <var title="">argument</var><!--, <var
15876: title="">features</var>-->)</code></dfn> method, when invoked, must
15877: cause the user agent to run the following steps:</p>
15878:
15879: <ol><li>
15880:
15881: <p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> <var title="">url</var> relative to the <a href="#entry-script">entry script</a>'s
15882: <a href="#script's-base-url" title="script's base URL">base URL</a>.</p>
15883:
15884: <p>If this fails, then throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception
15885: and abort these steps.</p>
15886:
15887: </li>
15888:
15889: <li><p>If the <a href="#event-loop">event loop</a>'s <a href="#termination-nesting-level">termination nesting
15890: level</a> is non-zero, optionally abort these steps, returning
15891: the empty string.</p></li>
15892:
15893: <li>
15894:
15895: <p>Release the <a href="#storage-mutex">storage mutex</a>.</p>
15896:
15897: </li>
15898:
15899: <li>
15900:
15901: <p>If the user agent is configured such that this invocation of
15902: <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> is
15903: somehow disabled, then return the empty string and abort these
15904: steps.</p>
15905:
15906: <p class="note">User agents are expected to disable this method in
15907: certain cases to avoid user annoyance (e.g. as part of their popup
15908: blocker feature). For instance, a user agent could require that a
15909: site be white-listed before enabling this method, or the user
15910: agent could be configured to only allow one modal dialog at a
15911: time.</p>
15912:
15913: </li>
15914:
15915: <li>
15916:
15917: <p>If the <a href="#active-sandboxing-flag-set">active sandboxing flag set</a>
15918: of the <a href="#active-document">active document</a>
15919: of the <a href="#script's-browsing-context" title="script's browsing context">browsing context</a>
15920: of the <a href="#concept-script" title="concept-script">script</a> that invoked the method
15921: has its
15922: <a href="#sandboxed-auxiliary-navigation-browsing-context-flag">sandboxed auxiliary navigation browsing context flag</a>
15923: set, then return the empty string and abort these steps.</p>
15924:
15925: </li>
15926:
15927: <li>
15928:
15929: <p>Let <var title="">the list of background browsing
15930: contexts</var> be a list of all the browsing contexts that:</p>
15931:
15932: <ul><li>are part of the same <a href="#unit-of-related-browsing-contexts">unit of related browsing
15933: contexts</a> as the browsing context of the
15934: <code><a href="#window">Window</a></code> object on which the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method was
15935: called, and that</li>
15936:
15937: <li>have an <a href="#active-document">active document</a> whose
15938: <a href="#origin-0">origin</a> is the <a href="#same-origin" title="same origin">same</a>
15939: as the <a href="#origin-0">origin</a> of the <a href="#concept-script" title="concept-script">script</a> that called the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method at
15940: the time the method was called,</li> <!-- Note that changing
15941: document.domain to talk to another domain doesn't make you able
15942: to block that domain -->
15943:
15944: </ul><p>...as well as any browsing contexts that are nested inside any
15945: of the browsing contexts matching those conditions.</p>
15946:
15947: </li>
15948:
15949: <li>
15950:
15951: <p>Disable the user interface for all the browsing contexts in
15952: <var title="">the list of background browsing contexts</var>. This
15953: should prevent the user from navigating those browsing contexts,
15954: causing events to be sent to those browsing context, or editing
15955: any content in those browsing contexts. However, it does not
15956: prevent those browsing contexts from receiving events from sources
15957: other than the user, from running scripts, from running
15958: animations, and so forth.</p>
15959:
15960: </li>
15961:
15962: <li>
15963:
15964: <p>Create a new <a href="#auxiliary-browsing-context">auxiliary browsing context</a>, with the
15965: <a href="#opener-browsing-context">opener browsing context</a> being the browsing context of
15966: the <code><a href="#window">Window</a></code> object on which the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method was
15967: called. The new auxiliary browsing context has no name.</p>
15968:
15969: <p class="note">This <a href="#browsing-context">browsing context</a>'s
15970: <code><a href="dom.html#document">Document</a></code>s' <code><a href="#window">Window</a></code> objects all implement
15971: the <code><a href="#windowmodal">WindowModal</a></code> interface.</p>
15972:
15973: </li>
15974:
15975: <li>
15976:
15977: <p>Set all the flags
15978: in the new browsing context's <a href="#popup-sandboxing-flag-set">popup sandboxing flag set</a>
15979: that are set in the
15980: <a href="#active-sandboxing-flag-set">active sandboxing flag set</a>
15981: of the <a href="#active-document">active document</a>
15982: of the <a href="#script's-browsing-context" title="script's browsing context">browsing context</a>
15983: of the <a href="#concept-script" title="concept-script">script</a> that invoked the method.
15984: The <a href="#script's-browsing-context" title="script's browsing context">browsing context</a>
15985: of the <a href="#concept-script" title="concept-script">script</a> that invoked the method
15986: must be set as the new browsing context's
15987: <a href="#one-permitted-sandboxed-navigator">one permitted sandboxed navigator</a>.</p>
15988:
15989: </li>
15990:
15991: <li>
15992:
15993: <p>Let the <a href="#dialog-arguments">dialog arguments</a> of the new browsing
15994: context be set to the value of <var title="">argument</var>, or
15995: the 'undefined' value if the argument was omitted.</p>
15996:
15997: </li>
15998:
15999: <li>
16000:
16001: <p>Let the <a href="#dialog-arguments'-origin">dialog arguments' origin</a> be the
16002: <a href="#origin-0">origin</a> of the <a href="#concept-script" title="concept-script">script</a> that called the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method.</p>
16003:
16004: </li>
16005:
16006: <li>
16007:
16008: <p><a href="#navigate">Navigate</a><!--DONAV showModalDialog--> the new
16009: <a href="#browsing-context">browsing context</a> to the <a href="urls.html#absolute-url">absolute URL</a>
16010: that resulted from <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a>
16011: <var title="">url</var> earlier, with <a href="#replacement-enabled">replacement
16012: enabled</a>, and with the <a href="#script's-browsing-context" title="script's browsing
16013: context">browsing context</a> of the <a href="#concept-script" title="concept-script">script</a> that invoked the method as
16014: the <a href="#source-browsing-context">source browsing context</a>.</p>
16015:
16016: </li>
16017:
16018: <li>
16019:
16020: <p><a href="#spin-the-event-loop">Spin the event loop</a> until the new <a href="#browsing-context">browsing
16021: context</a> is closed. (The user agent must allow the user to
16022: indicate that the <a href="#browsing-context">browsing context</a> is to be
16023: closed.)</p>
16024:
16025: </li>
16026:
16027: <li>
16028:
16029: <p>Reenable the user interface for all the browsing contexts in
16030: <var title="">the list of background browsing contexts</var>.</p>
16031:
16032: </li>
16033:
16034: <li>
16035:
16036: <p>Return the <a href="#auxiliary-browsing-context">auxiliary browsing context</a>'s
16037: <a href="#return-value">return value</a>.</p>
16038:
16039: </li>
16040:
16041: </ol><p>The <code><a href="#window">Window</a></code> objects of <code><a href="dom.html#document">Document</a></code>s hosted
16042: by <a href="#browsing-context" title="browsing context">browsing contexts</a> created
16043: by the above algorithm must also implement the
16044: <code><a href="#windowmodal">WindowModal</a></code> interface.</p>
16045:
16046: <p class="note">When this happens, the members of the
16047: <code><a href="#windowmodal">WindowModal</a></code> interface, in JavaScript environments,
16048: appear to actually be part of the <code><a href="#window">Window</a></code> interface
16049: (e.g. they are on the same prototype chain as the <code title="dom-alert"><a href="#dom-alert">window.alert()</a></code> method).</p>
16050:
16051: </div>
16052:
16053: <pre class="idl">[NoInterfaceObject] interface <dfn id="windowmodal">WindowModal</dfn> {
16054: readonly attribute any <a href="#dom-windowmodal-dialogarguments" title="dom-WindowModal-dialogArguments">dialogArguments</a>;
16055: attribute DOMString <a href="#dom-windowmodal-returnvalue" title="dom-WindowModal-returnValue">returnValue</a>;
16056: };</pre>
16057:
16058: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-WindowModal-dialogArguments"><a href="#dom-windowmodal-dialogarguments">dialogArguments</a></code></dt>
16059:
16060: <dd>
16061:
16062: <p>Returns the <var title="">argument</var> argument that was
16063: passed to the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method.</p>
16064:
16065: </dd>
16066:
16067: <dt><var title="">window</var> . <code title="dom-WindowModal-returnValue"><a href="#dom-windowmodal-returnvalue">returnValue</a></code> [ = <var title="">value</var> ]</dt>
16068:
16069: <dd>
16070:
16071: <p>Returns the current return value for the window.</p>
16072:
16073: <p>Can be set, to change the value that will be returned by the
16074: <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code>
16075: method.</p>
16076:
16077: </dd>
16078:
16079: </dl><div class="impl">
16080:
16081: <p>Such browsing contexts have associated <dfn id="dialog-arguments">dialog
16082: arguments</dfn>, which are stored along with the <dfn id="dialog-arguments'-origin">dialog
16083: arguments' origin</dfn>. These values are set by the <code title="dom-showModalDialog"><a href="#dom-showmodaldialog">showModalDialog()</a></code> method in the
16084: algorithm above, when the browsing context is created, based on the
16085: arguments provided to the method.</p>
16086:
16087: <p>The <dfn id="dom-windowmodal-dialogarguments" title="dom-WindowModal-dialogArguments"><code>dialogArguments</code></dfn>
16088: IDL attribute, on getting, must check whether its browsing context's
16089: <a href="#active-document">active document</a>'s <a href="#origin-0">origin</a> is the <a href="#same-origin" title="same origin">same</a> as the <a href="#dialog-arguments'-origin">dialog arguments'
16090: origin</a>. If it is, then the browsing context's <a href="#dialog-arguments">dialog
16091: arguments</a> must be returned unchanged. Otherwise, if the
16092: <a href="#dialog-arguments">dialog arguments</a> are an object, then the empty string
16093: must be returned, and if the <a href="#dialog-arguments">dialog arguments</a> are not
16094: an object, then the stringification of the <a href="#dialog-arguments">dialog
16095: arguments</a> must be returned.
16096:
16097: </p><p>These browsing contexts also have an associated <dfn id="return-value">return
16098: value</dfn>. The <a href="#return-value">return value</a> of a browsing context
16099: must be initialized to the empty string when the browsing context is
16100: created.</p>
16101:
16102: <p>The <dfn id="dom-windowmodal-returnvalue" title="dom-WindowModal-returnValue"><code>returnValue</code></dfn>
16103: IDL attribute, on getting, must return the <a href="#return-value">return value</a>
16104: of its browsing context, and on setting, must set the <a href="#return-value">return
16105: value</a> to the given new value.</p>
16106:
16107: </div>
16108:
16109: <p class="note">The <code title="dom-window-close"><a href="#dom-window-close">window.close()</a></code> method can be used to
16110: close the browsing context.</p>
16111: <!--TOPIC:HTML-->
16112:
16113:
16114: <!--TOPIC:DOM APIs-->
16115: <h3 id="system-state-and-capabilities"><span class="secno">6.5 </span>System state and capabilities</h3>
16116:
16117: <h4 id="the-navigator-object"><span class="secno">6.5.1 </span>The <code><a href="#navigator">Navigator</a></code> object</h4>
16118:
16119: <div class="impl">
16120:
16121: <p>The <dfn id="dom-navigator" title="dom-navigator"><code>navigator</code></dfn>
16122: attribute of the <code><a href="#window">Window</a></code> interface must return an
16123: instance of the <code><a href="#navigator">Navigator</a></code> interface, which represents
16124: the identity and state of the user agent (the client), and allows
16125: Web pages to register themselves as potential protocol and content
16126: handlers:</p>
16127:
16128: </div>
16129:
16130: <pre class="idl">interface <dfn id="navigator">Navigator</dfn> {
16131: // objects implementing this interface also implement the interfaces given below
16132: };
16133: <a href="#navigator">Navigator</a> implements <a href="#navigatorid">NavigatorID</a>;
16134: <a href="#navigator">Navigator</a> implements <a href="#navigatoronline">NavigatorOnLine</a>;
16135: <a href="#navigator">Navigator</a> implements <a href="#navigatorcontentutils">NavigatorContentUtils</a>;
16136: <a href="#navigator">Navigator</a> implements <a href="#navigatorstorageutils">NavigatorStorageUtils</a>;</pre>
16137:
16138: <!-- v2:
16139: cookieEnabled geolocator javaEnabled mozIsLocallyAvailable preference
16140: readonly attribute <span>MimeTypeArray</span> <span title="dom-navigator-mimeTypes">mimeTypes</span>;
16141: readonly attribute <span>PluginArray</span> <span title="dom-navigator-plugins">plugins</span>;
16142: (the latter is used in a <video> element demo now, so we might need to pull this forward from v2!)
16143: -->
16144:
16145: <div class="impl">
16146:
16147: <p>These interfaces are defined separately so that other
16148: specifications can re-use parts of the <code><a href="#navigator">Navigator</a></code>
16149: interface.</p>
16150:
16151: <!-- v2: also, could expose languages:
16152: <dt><dfn title="dom-navigator-browserLanguage"><code>browserLanguage</code></dfn></dt> <!- - Opera and IE only - ->
16153: <dd><p>Must return either null or a language tag representing the language the browser uses in its interface.</p></dd>
16154: <dt><dfn title="dom-navigator-userLanguage"><code>userLanguage</code></dfn></dt> <!- - Opera and IE only - ->
16155: <dt><dfn title="dom-navigator-language"><code>language</code></dfn></dt> <!- - Opera, Safari, and Mozilla only - ->
16156: <dd><p>Must return either null or a language tag representing the user's preferred language.</p></dd>
16157: -->
16158:
16159: </div>
16160:
16161:
16162: <h5 id="client-identification"><span class="secno">6.5.1.1 </span>Client identification</h5>
16163:
16164: <pre class="idl">[NoInterfaceObject]
16165: interface <dfn id="navigatorid">NavigatorID</dfn> {<!--
16166: readonly attribute DOMString <span title="dom-navigator-appCodeName">appCodeName</span>;-->
16167: readonly attribute DOMString <a href="#dom-navigator-appname" title="dom-navigator-appName">appName</a>;
16168: readonly attribute DOMString <a href="#dom-navigator-appversion" title="dom-navigator-appVersion">appVersion</a>;
16169: readonly attribute DOMString <a href="#dom-navigator-platform" title="dom-navigator-platform">platform</a>;
16170: readonly attribute DOMString <a href="#dom-navigator-useragent" title="dom-navigator-userAgent">userAgent</a>;
16171: };</pre>
16172:
16173: <p>In certain cases, despite the best efforts of the entire
16174: industry, Web browsers have bugs and limitations that Web authors
16175: are forced to work around.</p>
16176:
16177: <p>This section defines a collection of attributes that can be used
16178: to determine, from script, the kind of user agent in use, in order
16179: to work around these issues.</p>
16180:
16181: <p>Client detection should always be limited to detecting known
16182: current versions; future versions and unknown versions should always
16183: be assumed to be fully compliant.</p>
16184:
16185: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-appName"><a href="#dom-navigator-appname">appName</a></code></dt>
16186: <dd>
16187: <p>Returns the name of the browser.</p>
16188: </dd>
16189:
16190: <dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-appVersion"><a href="#dom-navigator-appversion">appVersion</a></code></dt>
16191: <dd>
16192: <p>Returns the version of the browser.</p>
16193: </dd>
16194:
16195: <dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-platform"><a href="#dom-navigator-platform">platform</a></code></dt>
16196: <dd>
16197: <p>Returns the name of the platform.</p>
16198: </dd>
16199:
16200: <dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-userAgent"><a href="#dom-navigator-useragent">userAgent</a></code></dt>
16201: <dd>
16202: <p>Returns the complete User-Agent header.</p>
16203: </dd>
16204:
16205: </dl><div class="impl">
16206:
16207: <dl><!-- redundant
16208: <dt><dfn title="dom-navigator-appCodeName"><code>appCodeName</code></dfn></dt>
16209: <dd><p>Must return the string "<code title="">Mozilla</code>".</p></dd>
16210: --><!-- appMinorVersion: IE only. In IE8b1, returns " Beta" (with the space) --><dt><dfn id="dom-navigator-appname" title="dom-navigator-appName"><code>appName</code></dfn></dt>
16211: <dd><p>Must return either the string "<code title="">Netscape</code>" or the full name of the browser, e.g. "<code title="">Mellblom Browsernator</code>".</p></dd>
16212:
16213: <dt><dfn id="dom-navigator-appversion" title="dom-navigator-appVersion"><code>appVersion</code></dfn></dt>
16214: <dd><p>Must return either the string "<code title="">4.0</code>" or a string representing the version of the browser in detail, e.g. "<code title="">1.0 (VMS; en-US) Mellblomenator/9000</code>".</p></dd>
16215:
16216: <!-- buildID: Mozilla only -->
16217:
16218: <!-- oscpu: Mozilla only -->
16219:
16220: <dt><dfn id="dom-navigator-platform" title="dom-navigator-platform"><code>platform</code></dfn></dt>
16221: <dd><p>Must return either the empty string or a string representing the platform on which the browser is executing, e.g. "<code title="">MacIntel</code>", "<code title="">Win32</code>", "<code title="">FreeBSD i386</code>", "<code title="">WebTV OS</code>".</p></dd>
16222:
16223: <!-- product: Mozilla and Safari only; always returns "Gecko" -->
16224:
16225: <!-- productSub: Mozilla and Safari only; returns same as buildID in Mozilla, and returns the fixed string "20030107" in Safari -->
16226:
16227: <!-- securityPolicy: Mozilla only; always returns "" -->
16228:
16229: <!-- taintEnabled(): Opera, IE and Mozilla have this function as one that always returns false -->
16230:
16231: <dt><dfn id="dom-navigator-useragent" title="dom-navigator-userAgent"><code>userAgent</code></dfn></dt>
16232: <dd><p>Must return the string used for the value of the "<code title="">User-Agent</code>" header in HTTP requests, or the empty string if no such header is ever sent.</p></dd>
16233:
16234: <!-- vendor: Mozilla and Safari only; always returns "" in Mozilla, and returns the fixed string "Apple Computer, Inc." in Safari -->
16235:
16236: <!-- vendorSub: Mozilla and Safari only; always returns "" -->
16237:
16238: </dl><p class="warning">Any information in this API that varies from user
16239: to user can be used to profile the user. In fact, if enough such
16240: information is available, a user can actually be uniquely
16241: identified. For this reason, user agent implementors are strongly
16242: urged to include as little information in this API as possible.
16243: <!--INSERT FINGERPRINT-->
16244: </p>
16245:
16246: </div>
16247:
16248:
16249: <h5 id="custom-handlers"><span class="secno">6.5.1.2 </span>Custom scheme and content handlers</h5>
16250:
16251: <pre class="idl">[NoInterfaceObject]
16252: interface <dfn id="navigatorcontentutils">NavigatorContentUtils</dfn> {
16253: // content handler registration
16254: void <a href="#dom-navigator-registerprotocolhandler" title="dom-navigator-registerProtocolHandler">registerProtocolHandler</a>(DOMString scheme, DOMString url, DOMString title);
16255: void <a href="#dom-navigator-registercontenthandler" title="dom-navigator-registerContentHandler">registerContentHandler</a>(DOMString mimeType, DOMString url, DOMString title);
16256: DOMString <a href="#dom-navigator-isprotocolhandlerregistered" title="dom-navigator-isProtocolHandlerRegistered">isProtocolHandlerRegistered</a>(DOMString scheme, DOMString url);
16257: DOMString <a href="#dom-navigator-iscontenthandlerregistered" title="dom-navigator-isContentHandlerRegistered">isContentHandlerRegistered</a>(DOMString mimeType, DOMString url);
16258: void <a href="#dom-navigator-unregisterprotocolhandler" title="dom-navigator-unregisterProtocolHandler">unregisterProtocolHandler</a>(DOMString scheme, DOMString url);
16259: void <a href="#dom-navigator-unregistercontenthandler" title="dom-navigator-unregisterContentHandler">unregisterContentHandler</a>(DOMString mimeType, DOMString url);
16260: };</pre>
16261:
16262: <p>The <dfn id="dom-navigator-registerprotocolhandler" title="dom-navigator-registerProtocolHandler"><code>registerProtocolHandler()</code></dfn>
16263: method allows Web sites to register themselves as possible handlers
16264: for particular schemes. For example, an online telephone messaging
16265: service could register itself as a handler of the <code>sms:</code>
16266: scheme, so that if the user clicks on such a link, he is given the
16267: opportunity to use that Web site. Analogously, the <dfn id="dom-navigator-registercontenthandler" title="dom-navigator-registerContentHandler"><code>registerContentHandler()</code></dfn>
16268: method allows Web sites to register themselves as possible handlers
16269: for content in a particular <a href="infrastructure.html#mime-type">MIME type</a>. For example, the
16270: same online telephone messaging service could register itself as a
16271: handler for <code>text/vcard</code> files, so that if the user has
16272: no native application capable of handling vCards, his Web browser
16273: can instead suggest he use that site to view contact information
16274: stored on vCards that he opens. <a href="#refsRFC5724">[RFC5724]</a>
16275: <a href="#refsRFC6350">RFC6350</a></p>
16276:
16277: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-registerProtocolHandler"><a href="#dom-navigator-registerprotocolhandler">registerProtocolHandler</a></code>(<var title="">scheme</var>, <var title="">url</var>, <var title="">title</var>)</dt>
16278: <dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler</a></code>(<var title="">mimeType</var>, <var title="">url</var>, <var title="">title</var>)</dt>
16279:
16280: <dd>
16281:
16282: <p>Registers a handler for the given scheme or content type, at
16283: the given URL, with the given title.</p>
16284:
16285: <p>The string "<code title="">%s</code>" in the URL is used as a
16286: placeholder for where to put the URL of the content to be
16287: handled.</p>
16288:
16289: <p>Throws a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception if the user agent
16290: blocks the registration (this might happen if trying to register
16291: as a handler for "http", for instance).</p>
16292:
16293: <p>Throws a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> if the "<code title="">%s</code>" string is missing in the URL.</p>
16294:
16295: </dd>
16296:
16297: </dl><div class="impl">
16298:
16299: <p>User agents may, within the constraints described in this
16300: section, do whatever they like when the methods are called. A UA
16301: could, for instance, prompt the user and offer the user the
16302: opportunity to add the site to a shortlist of handlers, or make the
16303: handlers his default, or cancel the request. UAs could provide such
16304: a UI through modal UI or through a non-modal transient notification
16305: interface. UAs could also simply silently collect the information,
16306: providing it only when relevant to the user.</p>
16307:
16308: <p>User agents should keep track of which sites have registered
16309: handlers (even if the user has declined such registrations) so that
16310: the user is not repeatedly prompted with the same request.</p>
16311:
16312: <p>The arguments to the methods have the following meanings and
16313: corresponding implementation requirements. The requirements that
16314: involve throwing exceptions must be processed in the order given
16315: below, stopping at the first exception thrown. (So the exceptions
16316: for the first argument take precedence over the exceptions for the
16317: second argument.)</p>
16318:
16319: <dl><dt><var title="">scheme</var> (<code title="dom-navigator-registerProtocolHandler"><a href="#dom-navigator-registerprotocolhandler">registerProtocolHandler()</a></code> only)</dt>
16320:
16321: <dd>
16322:
16323: <p>A scheme, such as <code>mailto</code> or <code>web+auth</code>.
16324: The scheme must be compared in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
16325: case-insensitive</a> manner by user agents for the purposes of
16326: comparing with the scheme part of URLs that they consider against
16327: the list of registered handlers.</p>
16328:
16329: <p>The <var title="">scheme</var> value, if it contains a colon
16330: (as in "<code>mailto:</code>"), will never match anything, since
16331: schemes don't contain colons.</p>
16332:
16333: <p>If the <code title="dom-navigator-registerProtocolHandler"><a href="#dom-navigator-registerprotocolhandler">registerProtocolHandler()</a></code>
16334: method is invoked with a scheme that is neither a
16335: <a href="#whitelisted-scheme">whitelisted scheme</a> nor a scheme whose value starts
16336: with the substring "<code title="">web+</code>" and otherwise
16337: contains only characters in the range <a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>, the user agent must throw a
16338: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception.</p>
16339:
16340: <p>The following schemes are the <dfn id="whitelisted-scheme" title="whitelisted
16341: scheme">whitelisted schemes</dfn>:</p>
16342:
16343: <ul class="brief"><li><code title="">irc</code></li>
16344: <li><code title="">mailto</code></li>
16345: <li><code title="">magnet</code></li>
16346: <li><code title="">mms</code></li>
16347: <li><code title="">news</code></li>
16348: <li><code title="">nntp</code></li>
16349: <li><code title="">sip</code></li>
16350: <li><code title="">sms</code></li>
16351: <li><code title="">smsto</code></li>
16352: <li><code title="">ssh</code></li>
16353: <li><code title="">tel</code></li>
16354: <li><code title="">urn</code></li>
16355: <li><code title="">webcal</code></li>
16356: <li><code title="">xmpp</code></li>
16357: </ul><p class="note">This list can be changed. If there are schemes
16358: that should be added, please send feedback.</p>
16359:
16360: <p class="note">This list excludes any schemes that could
16361: reasonably be expected to be supported inline, e.g. in an
16362: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, such as <code title="">http</code> or (more
16363: theoretically) <code title="">gopher</code>. If those were
16364: supported, they could potentially be used in man-in-the-middle
16365: attacks, by replacing pages that have frames with such content
16366: with content under the control of the protocol handler. If the
16367: user agent has native support for the schemes, this could further
16368: be used for cookie-theft attacks.</p>
16369:
16370: </dd>
16371:
16372: <dt><var title="">mimeType</var> (<code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code> only)</dt>
16373:
16374: <dd>
16375:
16376: <p>A <a href="infrastructure.html#mime-type">MIME type</a>, such as
16377: <code>model/vnd.flatland.3dml</code> or
16378: <code>application/vnd.google-earth.kml+xml</code>. The <a href="infrastructure.html#mime-type">MIME
16379: type</a> must be compared in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
16380: case-insensitive</a> manner by user agents for the purposes of
16381: comparing with MIME types of documents that they consider against
16382: the list of registered handlers.</p>
16383:
16384: <p>User agents must compare the given values only to the MIME
16385: type/subtype parts of content types, not to the complete type
16386: including parameters. Thus, if <var title="">mimeType</var> values
16387: passed to this method include characters such as commas or
16388: whitespace, or include MIME parameters, then the handler being
16389: registered will never be used.</p>
16390:
16391: <p class="note">The type is compared to the <a href="infrastructure.html#mime-type">MIME type</a>
16392: used by the user agent <em>after</em> the sniffing algorithms have
16393: been applied.</p>
16394:
16395: <p>If the <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code>
16396: method is invoked with a <a href="infrastructure.html#mime-type">MIME type</a> that is in the
16397: <a href="#type-blacklist">type blacklist</a> or that the user agent has deemed a
16398: privileged type, the user agent must throw a
16399: <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception.</p>
16400:
16401: <p>The following <a href="infrastructure.html#mime-type" title="MIME type">MIME types</a> are in
16402: the <dfn id="type-blacklist">type blacklist</dfn>:</p>
16403:
16404: <ul class="brief"><li><code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code></li>
16405: <li><code><a href="#application/xhtml+xml">application/xhtml+xml</a></code></li>
16406: <li><code>application/xml</code></li>
16407: <li><code>image/gif</code></li>
16408: <li><code>image/jpeg</code></li>
16409: <li><code>image/png</code></li>
16410: <li><code>image/svg+xml</code></li>
16411: <li><code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code></li>
16412: <li><code><a href="#text/cache-manifest">text/cache-manifest</a></code></li>
16413: <li><code>text/css</code></li>
16414: <li><code><a href="#text/html">text/html</a></code></li>
16415: <li><code>text/ping</code></li>
16416: <li><code>text/plain</code></li>
16417: <li><code>text/xml</code></li>
16418: <li>All types that the user agent supports displaying natively in a <a href="#browsing-context">browsing context</a> during <a href="#navigate" title="navigate">navigation</a>, except for <code>application/rss+xml</code> and <code>application/atom+xml</code></li>
16419:
16420: </ul><p class="note">This list can be changed. If there are schemes
16421: that should be added, please send feedback.</p>
16422:
16423: </dd>
16424:
16425:
16426: <dt><var title="">url</var></dt>
16427:
16428: <dd>
16429:
16430: <p>A string used to build the <a href="urls.html#url">URL</a> of the page that
16431: will handle the requests.</p>
16432:
16433: <p>User agents must throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception if
16434: the <var title="">url</var> argument passed to one of these
16435: methods does not contain the exact literal string
16436: "<code><a href="the-s-element.html#the-s-element">%s</a></code>".</p>
16437:
16438: <p>User agents must throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> if <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> the <var title="">url</var>
16439: argument relative to the <a href="#entry-script">entry script</a>'s <a href="#script's-base-url" title="script's base URL">base URL</a>, is not successful.</p>
16440:
16441: <p class="note">The resulting <a href="urls.html#absolute-url">absolute URL</a> would by
16442: definition not be a <a href="urls.html#valid-url">valid URL</a> as it would include the
16443: string "<code title="">%s</code>" which is not a valid component
16444: in a URL.</p>
16445:
16446: <p>User agents must throw a <code><a href="infrastructure.html#securityerror">SecurityError</a></code> exception if
16447: the resulting <a href="urls.html#absolute-url">absolute URL</a> has an <a href="#origin-0">origin</a>
16448: that differs from the <a href="#origin-0">origin</a> of the <a href="#entry-script">entry
16449: script</a>.</p>
16450:
16451: <p class="note">This is forcibly the case if the <code title="">%s</code> placeholder is in the scheme, host, or port
16452: parts of the URL.</p>
16453:
16454: <p>The resulting <a href="urls.html#absolute-url">absolute URL</a> is the
16455: <dfn id="proto-url">proto-URL</dfn>. It identifies the handler for the purposes
16456: of the methods described below.</p>
16457:
16458: <p>When the user agent uses this handler, it must replace the
16459: first occurrence of the exact literal string "<code title="">%s</code>" in the <var title="">url</var> argument with
16460: an escaped version of the <a href="urls.html#absolute-url">absolute URL</a> of the content
16461: in question (as defined below), then <a href="urls.html#resolve-a-url" title="resolve a
16462: url">resolve</a> the resulting URL, relative to the <a href="#script's-base-url" title="script's base URL">base URL</a> of the <a href="#entry-script">entry
16463: script</a> at the time the <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code>
16464: or <code title="dom-navigator-registerProtocolHandler"><a href="#dom-navigator-registerprotocolhandler">registerProtocolHandler()</a></code>
16465: methods were invoked, and then <a href="#navigate">navigate</a><!--DONAV
16466: user--> an appropriate <a href="#browsing-context">browsing context</a> to the
16467: resulting URL using the GET method (<a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or equivalent</a> for
16468: non-HTTP URLs).</p>
16469:
16470: <p>To get the escaped version of the <a href="urls.html#absolute-url">absolute URL</a> of
16471: the content in question, the user agent must replace every
16472: character in that <a href="urls.html#absolute-url">absolute URL</a> that doesn't match the
16473: <query> production defined in RFC 3986 by the
16474: percent-encoded form of that character. <a href="#refsRFC3986">[RFC3986]</a></p>
16475:
16476: <div class="example">
16477:
16478: <p>If the user had visited a site at <code title="">http://example.com/</code> that made the following
16479: call:</p>
16480:
16481: <pre>navigator.registerContentHandler('application/x-soup', 'soup?url=%s', 'SoupWeb™')</pre>
16482:
16483: <p>...and then, much later, while visiting <code title="">http://www.example.net/</code>, clicked on a link such
16484: as:</p>
16485:
16486: <pre><a href="chickenkïwi.soup">Download our Chicken Kïwi soup!</a></pre>
16487:
16488: <p>...then, assuming this <code>chickenkïwi.soup</code> file
16489: was served with the <a href="infrastructure.html#mime-type">MIME type</a>
16490: <code>application/x-soup</code>, the UA might navigate to the
16491: following URL:</p>
16492:
16493: <pre>http://example.com/soup?url=http://www.example.net/chickenk%C3%AFwi.soup</pre>
16494:
16495: <p>This site could then fetch the <code>chickenkïwi.soup</code>
16496: file and do whatever it is that it does with soup (synthesize it
16497: and ship it to the user, or whatever).</p>
16498:
16499: </div>
16500:
16501: </dd>
16502:
16503: <dt><var title="">title</var></dt>
16504:
16505: <dd>
16506:
16507: <p>A descriptive title of the handler, which the UA might use to
16508: remind the user what the site in question is.</p>
16509:
16510: </dd>
16511:
16512: </dl><p>This section does not define how the pages registered by these
16513: methods are used, beyond the requirements on how to process the <var title="">url</var> value (see above). To some extent, the <a href="#navigate" title="navigate">processing model for navigating across
16514: documents</a> defines some cases where these methods are
16515: relevant, but in general UAs may use this information wherever they
16516: would otherwise consider handing content to native plugins or helper
16517: applications.</p>
16518:
16519: <p>UAs must not use registered content handlers to handle content
16520: that was returned as part of a non-GET transaction (or rather, as
16521: part of any non-idempotent transaction), as the remote site would
16522: not be able to fetch the same data.</p>
16523:
16524: <hr></div>
16525:
16526: <p>In addition to the registration methods, there are also methods
16527: for determining if particular handlers have been registered, and for
16528: unregistering handlers.</p>
16529:
16530: <dl class="domintro"><dt><var title="">state</var> = <var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-isProtocolHandlerRegistered"><a href="#dom-navigator-isprotocolhandlerregistered">isProtocolHandlerRegistered</a></code>(<var title="">scheme</var>, <var title="">url</var>)</dt>
16531: <dt><var title="">state</var> = <var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-isContentHandlerRegistered"><a href="#dom-navigator-iscontenthandlerregistered">isContentHandlerRegistered</a></code>(<var title="">mimeType</var>, <var title="">url</var>)</dt>
16532:
16533: <dd>
16534:
16535: <p>Returns one of the following strings describing the state of
16536: the handler given by the arguments:</p>
16537:
16538: <dl><dt><code title="">new</code>
16539: </dt><dd>Indicates that no attempt has been made to register the given
16540: handler (or that the handler has been unregistered). It would be
16541: appropriate to promote the availability of the handler or to just
16542: automatically register the handler.
16543:
16544: </dd><dt><code title="">registered</code>
16545: </dt><dd>Indicates that the given handler has been registered or that
16546: the site is blocked from registering the handler. Trying to
16547: register the handler again would have no effect.
16548:
16549: </dd><dt><code title="">declined</code>
16550: </dt><dd>Indicates that the given handler has been offered but was
16551: rejected. Trying to register the handler again may prompt the
16552: user again.
16553:
16554: </dd></dl></dd>
16555:
16556: <dt><var title="">state</var> = <var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-unregisterProtocolHandler"><a href="#dom-navigator-unregisterprotocolhandler">unregisterProtocolHandler</a></code>(<var title="">scheme</var>, <var title="">url</var>)</dt>
16557: <dt><var title="">state</var> = <var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-unregisterContentHandler"><a href="#dom-navigator-unregistercontenthandler">unregisterContentHandler</a></code>(<var title="">mimeType</var>, <var title="">url</var>)</dt>
16558:
16559: <dd>
16560:
16561: <p>Unregisters the handler given by the arguments.</p>
16562:
16563: </dd>
16564:
16565: </dl><div class="impl">
16566:
16567: <p>The <dfn id="dom-navigator-isprotocolhandlerregistered" title="dom-navigator-isProtocolHandlerRegistered"><code>isProtocolHandlerRegistered()</code></dfn>
16568: method must return the <a href="#handler-state-string">handler state string</a> that most
16569: closely describes the current state of the handler described by the
16570: two arguments to the method, where the first argument gives the
16571: scheme and the second gives the string used to build the
16572: <a href="urls.html#url">URL</a> of the page that will handle the requests.
16573: <!--INSERT FINGERPRINT-->
16574: </p>
16575:
16576: <p>The first argument must be compared to the schemes for which
16577: custom protocol handlers are registered in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
16578: case-insensitive</a> manner to find the relevant handlers.</p>
16579:
16580: <p>The second argument must be preprocessed as described below, and
16581: if that is successful, must then be matched against the <a href="#proto-url" title="proto-URL">proto-URLs</a> of the relevant handlers to find
16582: the described handler.</p>
16583:
16584: <hr><p>The <dfn id="dom-navigator-iscontenthandlerregistered" title="dom-navigator-isContentHandlerRegistered"><code>isContentHandlerRegistered()</code></dfn>
16585: method must return the <a href="#handler-state-string">handler state string</a> that most
16586: closely describes the current state of the handler described by the
16587: two arguments to the method, where the first argument gives the
16588: <a href="infrastructure.html#mime-type">MIME type</a> and the second gives the string used to build
16589: the <a href="urls.html#url">URL</a> of the page that will handle the requests.
16590: <!--INSERT FINGERPRINT-->
16591: </p>
16592:
16593: <p>The first argument must be compared to the <a href="infrastructure.html#mime-type" title="MIME
16594: type">MIME types</a> for which custom content handlers are
16595: registered in an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> manner to find
16596: the relevant handlers.</p>
16597:
16598: <p>The second argument must be preprocessed as described below, and
16599: if that is successful, must then be matched against the
16600: <a href="#proto-url" title="proto-URL">proto-URLs</a> of the relevant handlers to
16601: find the described handler.</p>
16602:
16603: <hr><p>The <dfn id="handler-state-string" title="handler state string">handler state strings</dfn>
16604: are the following strings. Each string describes several situations,
16605: as given by the following list.</p>
16606:
16607: <dl><dt><code title="">new</code>
16608:
16609: </dt><dd>The described handler has never been registered for the given
16610: scheme or type.
16611:
1.196 sruby 16612: </dd><dd>The described handler was once registered for the given scheme
1.190 sruby 16613: or type, but the site has since unregistered it. If the handler
16614: were to be reregistered, the user would be notified accordingly.
16615:
1.196 sruby 16616: </dd><dd>The described handler was once registered for the given scheme
1.190 sruby 16617: or type, but the site has since unregistered it, but the user has
16618: indicated that the site is to be blocked from registering the type
16619: again, so the user agent would ignore further registration attempts.
16620:
16621:
1.196 sruby 16622: </dd><dt><code title="">registered</code>
1.190 sruby 16623:
16624: </dt><dd>An attempt was made to register the described handler for the
16625: given scheme or type, but the user has not yet been notified, and
16626: the user agent would ignore further registration attempts. (Maybe
16627: the user agent batches registration requests to display them when
16628: the user requests to be notified about them, and the user has not
16629: yet requested that the user agent notify it of the previous
16630: registration attempt.)
16631:
1.196 sruby 16632: </dd><dd>The described handler is registered for the given scheme or
1.190 sruby 16633: type (maybe, or maybe not, as the default handler).
16634:
1.196 sruby 16635: </dd><dd>The described handler is permanently blocked from being
1.190 sruby 16636: (re)registered. (Maybe the user marked the registration attempt as
16637: spam, or blocked the site for other reasons.)
16638:
16639:
1.196 sruby 16640: </dd><dt><code title="">declined</code>
1.190 sruby 16641:
16642: </dt><dd>An attempt was made to register the described handler for the
16643: given scheme or type, but the user has not yet been notified;
16644: however, the user might be notified if another registration attempt
16645: were to be made. (Maybe the last registration attempt was made
16646: while the page was in the background and the user closed the page
16647: without looking at it, and the user agent requires confirmation for
16648: this registration attempt.)
16649:
1.196 sruby 16650: </dd><dd>An attempt was made to register the described handler for the
1.190 sruby 16651: given scheme or type, but the user has not yet responded.
16652:
1.196 sruby 16653: </dd><dd>An attempt was made to register the described handler for the
1.190 sruby 16654: given scheme or type, but the user declined the offer. The user has
16655: not indicated that the handler is to be permanently blocked,
16656: however, so another attempt to register the described handler might
16657: result in the user being prompted again.
16658:
1.196 sruby 16659: </dd><dd>The described handler was once registered for the given scheme
1.190 sruby 16660: or type, but the user has since removed it. The user has not
16661: indicated that the handler is to be permanently blocked, however,
16662: so another attempt to register the described handler might result
16663: in the user being prompted again.
16664:
1.196 sruby 16665: </dd></dl><hr><p>The <dfn id="dom-navigator-unregisterprotocolhandler" title="dom-navigator-unregisterProtocolHandler"><code>unregisterProtocolHandler()</code></dfn>
1.190 sruby 16666: method must unregister the handler described by the two arguments to
16667: the method, where the first argument gives the scheme and the second
16668: gives the string used to build the <a href="urls.html#url">URL</a> of the page that
16669: will handle the requests.</p>
16670:
16671: <p>The first argument must be compared to the schemes for which
16672: custom protocol handlers are registered in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
16673: case-insensitive</a> manner to find the relevant handlers.</p>
16674:
16675: <p>The second argument must be preprocessed as described below, and
16676: if that is successful, must then be matched against the <a href="#proto-url" title="proto-URL">proto-URLs</a> of the relevant handlers to find
16677: the described handler.</p>
16678:
16679: <hr><p>The <dfn id="dom-navigator-unregistercontenthandler" title="dom-navigator-unregisterContentHandler"><code>unregisterContentHandler()</code></dfn>
16680: method must unregister the handler described by the two arguments to
16681: the method, where the first argument gives the <a href="infrastructure.html#mime-type">MIME
16682: type</a> and the second gives the string used to build the
16683: <a href="urls.html#url">URL</a> of the page that will handle the requests.</p>
16684:
16685: <p>The first argument must be compared to the <a href="infrastructure.html#mime-type" title="MIME
16686: type">MIME types</a> for which custom content handlers are
16687: registered in an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> manner to find
16688: the relevant handlers.</p>
16689:
16690: <p>The second argument must be preprocessed as described below, and
16691: if that is successful, must then be matched against the
16692: <a href="#proto-url" title="proto-URL">proto-URLs</a> of the relevant handlers to
16693: find the described handler.</p>
16694:
16695: <hr><p>The second argument of the four methods described above must be
16696: preprocessed as follows:</p>
16697:
16698: <ol><li><p>If the string does not contain the substring "<code title="">%s</code>", abort these steps. There's no matching
16699: handler.</p></li>
16700:
16701: <li><p><a href="urls.html#resolve-a-url" title="resolve a URL">Resolve</a> the string
16702: relative to the <a href="#script's-base-url" title="script's base URL">base URL</a> of
16703: the <a href="#entry-script">entry script</a>.</p></li>
16704:
16705: <li><p>If this fails, then throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code>
16706: exception, aborting the method.</p></li>
16707:
16708: <li><p>If the resoluting <a href="urls.html#absolute-url">absolute URL</a>'s
16709: <a href="#origin-0">origin</a> is not the <a href="#same-origin">same origin</a> as that of
16710: the <a href="#entry-script">entry script</a> throw a <a href="infrastructure.html#securityerror">SecurityError</a>
16711: exception, aborting the method.</p></li>
16712:
16713: <li><p>Return the resulting <a href="urls.html#absolute-url">absolute URL</a> as the result
16714: of preprocessing the argument.</p></li>
16715:
16716: </ol></div>
16717:
16718:
16719:
16720: <!--ADD-TOPIC:Security-->
16721: <div class="impl">
16722:
16723: <h5 id="security-and-privacy"><span class="secno">6.5.1.3 </span>Security and privacy</h5>
16724:
16725: <p>These mechanisms can introduce a number of concerns, in
16726: particular privacy concerns.</p>
16727:
16728: <p><strong>Hijacking all Web usage.</strong> User agents should not
16729: allow schemes that are key to its normal operation, such as
16730: <code>http</code> or <code>https</code>, to be rerouted through
16731: third-party sites. This would allow a user's activities to be
16732: trivially tracked, and would allow user information, even in secure
16733: connections, to be collected.</p>
16734:
16735: <p><strong>Hijacking defaults.</strong> It is strongly recommended
16736: that user agents do not automatically change any defaults, as this
16737: could lead the user to send data to remote hosts that the user is
16738: not expecting. New handlers registering themselves should never
16739: automatically cause those sites to be used.</p>
16740:
16741: <p><strong>Registration spamming.</strong> User agents should
16742: consider the possibility that a site will attempt to register a
16743: large number of handlers, possibly from multiple domains (e.g. by
16744: redirecting through a series of pages each on a different domain,
16745: and each registering a handler for <code>video/mpeg</code> —
16746: analogous practices abusing other Web browser features have been
16747: used by pornography Web sites for many years). User agents should
16748: gracefully handle such hostile attempts, protecting the user.</p>
16749:
16750: <p><strong>Misleading titles.</strong> User agents should not rely
16751: wholly on the <var title="">title</var> argument to the methods when
16752: presenting the registered handlers to the user, since sites could
16753: easily lie. For example, a site <code>hostile.example.net</code>
16754: could claim that it was registering the "Cuddly Bear Happy Content
16755: Handler". User agents should therefore use the handler's domain in
16756: any UI along with any title.</p>
16757:
16758: <p><strong>Hostile handler metadata.</strong> User agents should
16759: protect against typical attacks against strings embedded in their
16760: interface, for example ensuring that markup or escape characters in
16761: such strings are not executed, that null bytes are properly handled,
16762: that over-long strings do not cause crashes or buffer overruns, and
16763: so forth.</p>
16764:
16765: <p><strong>Leaking Intranet URLs.</strong> The mechanism described
16766: in this section can result in secret Intranet URLs being leaked, in
16767: the following manner:</p>
16768:
16769: <ol><li>The user registers a third-party content handler as the default
16770: handler for a content type.</li>
16771:
16772: <li>The user then browses his corporate Intranet site and accesses
16773: a document that uses that content type.</li>
16774:
16775: <li>The user agent contacts the third party and hands the third
16776: party the URL to the Intranet content.</li>
16777:
16778: </ol><p>No actual confidential file data is leaked in this manner, but
16779: the URLs themselves could contain confidential information. For
16780: example, the URL could be
16781: <code>http://www.corp.example.com/upcoming-aquisitions/the-sample-company.egf</code>,
16782: which might tell the third party that Example Corporation is
16783: intending to merge with The Sample Company. Implementors might wish
16784: to consider allowing administrators to disable this feature for
16785: certain subdomains, content types, or schemes.</p>
16786:
16787: <p><strong>Leaking secure URLs.</strong> User agents should not send
16788: HTTPS URLs to third-party sites registered as content handlers
16789: without the user's informed consent, for the same reason that user
16790: agents sometimes avoid sending <code title="http-referer">Referer</code> (sic) HTTP headers from secure
16791: sites to third-party sites.</p>
16792:
16793: <p><strong>Leaking credentials.</strong> User agents must never send
16794: username or password information in the URLs that are escaped and
16795: included sent to the handler sites. User agents may even avoid
16796: attempting to pass to Web-based handlers the URLs of resources
16797: that are known to require authentication to access, as such sites
16798: would be unable to access the resources in question without
16799: prompting the user for credentials themselves (a practice that would
16800: require the user to know whether to trust the third-party handler, a
16801: decision many users are unable to make or even understand).</p>
16802:
16803: </div>
16804: <!--REMOVE-TOPIC:Security-->
16805:
16806:
16807: <div class="impl">
16808:
16809: <h5 id="sample-handler-impl"><span class="secno">6.5.1.4 </span>Sample user interface</h5>
16810:
16811: <p><i>This section is non-normative.</i></p>
16812: <p>A simple implementation of this feature for a desktop Web browser
16813: might work as follows.</p>
16814:
16815: <p>The <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code>
16816: method could display a modal dialog box:</p>
16817:
16818: <p><img alt="The modal dialog box could have the title 'Content Handler Registration', and could say 'This Web page: Kittens at work http://kittens.example.org/ ...would like permission to handle files of type: application/x-meowmeow using the following Web-based application: Kittens-at-work displayer http://kittens.example.org/?show=%s Do you trust the administrators of the "kittens.example.org" domain?' with two buttons, 'Trust kittens.example.org' and 'Cancel'." height="374" src="images/sample-content-handler-registration.png" width="534"></p>
16819:
16820: <p>In this dialog box, "Kittens at work" is the title of the page
16821: that invoked the method, "http://kittens.example.org/" is the URL of
16822: that page, "application/x-meowmeow" is the string that was passed to
16823: the <code title="dom-navigator-registerContentHandler"><a href="#dom-navigator-registercontenthandler">registerContentHandler()</a></code>
16824: method as its first argument (<var title="">mimeType</var>),
16825: "http://kittens.example.org/?show=%s" was the second argument (<var title="">url</var>), and "Kittens-at-work displayer" was the third
16826: argument (<var title="">title</var>).</p>
16827:
16828: <p>If the user clicks the Cancel button, then nothing further
16829: happens. If the user clicks the "Trust" button, then the handler is
16830: remembered.</p>
16831:
16832: <p>When the user then attempts to fetch a URL that uses the
16833: "application/x-meowmeow" <a href="infrastructure.html#mime-type">MIME type</a>, then it might
16834: display a dialog as follows:</p>
16835:
16836: <p><img alt="The dialog box could have the title 'Unknown File Type' and could say 'You have attempted to access:' followed by a URL, followed by a prompt such as 'How would you like FerretBrowser to handle this resource?' with three radio buttons, one saying 'Contact the FerretBrowser plugin registry to see if there is an official way to handle this resource.', one saying 'Pass this URL to a local application' with an application selector, and one saying 'Pass this URL to the "Kittens-at-work displayer" application at "kittens.example.org"', with a checkbox labeled 'Always do this for resources using the "application/x-meowmeow" type in future.', and with two buttons, 'Ok' and 'Cancel'." height="428" src="images/sample-content-handler.png" width="577"></p>
16837:
16838: <p>In this dialog, the third option is the one that was primed by
16839: the site registering itself earlier.</p>
16840:
16841: <p>If the user does select that option, then the browser, in
16842: accordance with the requirements described in the previous two
16843: sections, will redirect the user to
16844: "http://kittens.example.org/?show=data%3Aapplication/x-meowmeow;base64,S2l0dGVucyBhcmUgdGhlIGN1dGVzdCE%253D".</p>
16845:
16846: <p>The <code title="dom-navigator-registerProtocolHandler"><a href="#dom-navigator-registerprotocolhandler">registerProtocolHandler()</a></code>
16847: method would work equivalently, but for schemes instead of unknown
16848: content types.</p>
16849:
16850: </div>
16851:
16852:
16853:
16854: <h5 id="manually-releasing-the-storage-mutex"><span class="secno">6.5.1.5 </span>Manually releasing the storage mutex</h5>
16855:
16856: <pre class="idl">[NoInterfaceObject]
16857: interface <dfn id="navigatorstorageutils">NavigatorStorageUtils</dfn> {
16858: void <a href="#dom-navigator-yieldforstorageupdates" title="dom-navigator-yieldForStorageUpdates">yieldForStorageUpdates</a>();
16859: };</pre>
16860:
16861: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-navigator"><a href="#dom-navigator">navigator</a></code> . <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">yieldForStorageUpdates</a></code>()</dt>
16862:
16863: <dd>
16864:
16865: <p>If a script uses the <code title="dom-document-cookie"><a href="dom.html#dom-document-cookie">document.cookie</a></code> API, or the
16866: <code title="dom-localStorage">localStorage</code> API, the
16867: browser will block other scripts from accessing cookies or storage
16868: until the first script finishes.
16869: <a href="#refsWEBSTORAGE">[WEBSTORAGE]</a>
16870: </p>
16871:
16872: <p>Calling the <code title="dom-navigator-yieldForStorageUpdates"><a href="#dom-navigator-yieldforstorageupdates">navigator.yieldForStorageUpdates()</a></code>
16873: method tells the user agent to unblock any other scripts that may
16874: be blocked, even though the script hasn't returned.</p>
16875:
16876: <p>Values of cookies and items in the <code>Storage</code> objects
16877: of <code title="dom-localStorage">localStorage</code> attributes
16878: can change after calling this method, whence its name.
16879: <a href="#refsWEBSTORAGE">[WEBSTORAGE]</a>
16880: </p>
16881:
16882: </dd>
16883:
16884: </dl><div class="impl">
16885:
16886: <p>The <dfn id="dom-navigator-yieldforstorageupdates" title="dom-navigator-yieldForStorageUpdates"><code>yieldForStorageUpdates()</code></dfn>
16887: method, when invoked, must, if the <a href="#storage-mutex">storage mutex</a> is
16888: owned by the <a href="#event-loop">event loop</a> of the <a href="#concept-task" title="concept-task">task</a> that resulted in the method being
16889: called, release the <a href="#storage-mutex">storage mutex</a> so that it is once
16890: again free. Otherwise, it must do nothing.</p>
16891:
16892: </div>
16893:
16894:
16895: <h4 id="the-external-interface"><span class="secno">6.5.2 </span>The <code><a href="#external">External</a></code> interface</h4>
16896:
16897: <div class="impl">
16898:
16899: <p>The <dfn id="dom-external" title="dom-external"><code>external</code></dfn>
16900: attribute of the <code><a href="#window">Window</a></code> interface must return an
16901: instance of the <code><a href="#external">External</a></code> interface. The same object
16902: must be returned each time.</p>
16903:
16904: </div>
16905:
16906: <pre class="idl">interface <dfn id="external">External</dfn> {
16907: void <a href="#dom-external-addsearchprovider" title="dom-external-AddSearchProvider">AddSearchProvider</a>(DOMString engineURL);
16908: unsigned long <a href="#dom-external-issearchproviderinstalled" title="dom-external-IsSearchProviderInstalled">IsSearchProviderInstalled</a>(DOMString engineURL);
16909: };</pre>
16910:
16911: <dl class="domintro"><dt><var title="">window</var> . <code title="dom-external"><a href="#dom-external">external</a></code> . <code title="dom-external-AddSearchProvider"><a href="#dom-external-addsearchprovider">AddSearchProvider</a></code>( <var title="">url</var> )</dt>
16912: <dd>
16913:
16914: <p>Adds the search engine described by the OpenSearch description
16915: document at <var title="">url</var>. <a href="#refsOPENSEARCH">[OPENSEARCH]</a></p>
16916:
16917: <p>The OpenSearch description document has to be on the same
16918: server as the script that calls this method.</p>
16919:
16920: </dd>
16921:
16922: <dt><var title="">installed</var> = <var title="">window</var> . <code title="dom-external"><a href="#dom-external">external</a></code> . <code title="dom-external-IsSearchProviderInstalled"><a href="#dom-external-issearchproviderinstalled">IsSearchProviderInstalled</a></code>( <var title="">url</var> )</dt>
16923: <dd>
16924:
16925: <p>Returns a value based on comparing <var title="">url</var> to
16926: the URLs of the results pages of the installed search engines.</p>
16927:
16928: <dl><dt>0 </dt><dd>None of the installed search engines match <var title="">url</var>.
16929: </dd><dt>1 </dt><dd>One or more installed search engines match <var title="">url</var>, but none are the user's default search engine.
16930: </dd><dt>2 </dt><dd>The user's default search engine matches <var title="">url</var>.
16931: </dd></dl><p>The <var title="">url</var> is compared to the URLs of the
16932: results pages of the installed search engines using a prefix
16933: match. Only results pages on the same domain as the script that
16934: calls this method are checked.</p>
16935:
16936: </dd>
16937:
16938: </dl><p class="note">Another way of exposing search engines using
16939: OpenSearch description documents is using a <code><a href="the-link-element.html#the-link-element">link</a></code>
16940: element with the <code title="rel-search"><a href="#link-type-search">search</a></code> link
16941: type.</p>
16942:
16943: <div class="impl">
16944:
16945: <p>The <dfn id="dom-external-addsearchprovider" title="dom-external-AddSearchProvider"><code>AddSearchProvider()</code></dfn>
16946: method, when invoked, must run the following steps:</p>
16947:
16948: <ol><li><p>Optionally, abort these steps. User agents may implement
16949: the method as a stub method that never does anything, or may
16950: arbitrarily ignore invocations with particular arguments for
16951: security, privacy, or usability reasons.</p></li>
16952:
16953: <li><p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the value of the
16954: method's first argument relative to the <a href="#entry-script">entry
16955: script</a>'s <a href="#script's-base-url" title="script's base URL">base
16956: URL</a>.</p></li>
16957:
16958: <li><p>If this fails, abort these steps.</p></li>
16959:
16960: <li><p>Process the resulting <a href="urls.html#absolute-url">absolute URL</a> as the
16961: <a href="urls.html#url">URL</a> to an OpenSearch description document. <a href="#refsOPENSEARCH">[OPENSEARCH]</a></p></li>
16962:
16963: </ol><p>The <dfn id="dom-external-issearchproviderinstalled" title="dom-external-IsSearchProviderInstalled"><code>IsSearchProviderInstalled()</code></dfn>
16964: method, when invoked, must run the following steps:
16965: <!--INSERT FINGERPRINT-->
16966: </p>
16967:
16968: <ol><li><p>Optionally, return 0 and abort these steps. User agents may
16969: implement the method as a stub method that never returns a
16970: non-zero value, or may arbitrarily ignore invocations with
16971: particular arguments for security, privacy, or usability
16972: reasons.</p></li>
16973:
16974: <li><p>If the <a href="#origin-0">origin</a> of the <a href="#entry-script">entry script</a>
16975: is an opaque identifier (i.e. it has no host component), then
16976: return 0 and abort these steps.</p></li>
16977:
16978: <li><p>Let <var title="">host1</var> be the host component of the
16979: <a href="#origin-0">origin</a> of the <a href="#entry-script">entry script</a>.</p></li>
16980:
16981: <li><p><a href="urls.html#resolve-a-url" title="resolve a url">Resolve</a> the <var title="">scriptURL</var> argument relative to the <a href="#entry-script">entry
16982: script</a>'s <a href="#script's-base-url" title="script's base URL">base
16983: URL</a>.</p></li>
16984:
16985: <li><p>If this fails, return 0 and abort these steps.</p></li>
16986:
16987: <li><p>Let <var title="">host2</var> be be the <a href="urls.html#url-host" title="url-host"><host></a> component of the resulting
16988: <a href="urls.html#absolute-url">absolute URL</a>.</p></li>
16989:
16990: <li>
16991:
16992: <p>If the longest suffix in the Public Suffix List that matches
16993: the end of <var title="">host1</var> is different than the
16994: longest suffix in the Public Suffix List that matches the end of
16995: <var title="">host2</var>, then return 0 and abort these steps.
16996: <a href="#refsPSL">[PSL]</a></p>
16997:
16998: <p>If the next domain component of <var title="">host1</var> and
16999: <var title="">host2</var> after their common suffix are not the
17000: same, then return 0 and abort these steps.</p>
17001:
17002: <p>Domain labels must be compared after applying the IDNA ToASCII
17003: algorithm to them, with both the AllowUnassigned and
17004: UseSTD3ASCIIRules flags set, in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
17005: case-insensitive</a> manner. <a href="#refsRFC3490">[RFC3490]</a></p>
17006:
17007: </li>
17008:
17009: <li><p>Let <var title="">search engines</var> be the list of
17010: search engines known by the user agent and made available to the
17011: user by the user agent for which the resulting <a href="urls.html#absolute-url">absolute
17012: URL</a> is a <a href="infrastructure.html#prefix-match">prefix match</a> of the search engine's
17013: <a href="urls.html#url">URL</a>, if any. For search engines registered using
17014: OpenSearch description documents, the <a href="urls.html#url">URL</a> of the
17015: search engine corresponds to the URL given in a <code title="">Url</code> element whose <code title="">rel</code>
17016: attribute is "<code title="">results</code>" (the default). <a href="#refsOPENSEARCH">[OPENSEARCH]</a></p></li>
17017:
17018: <li><p>If <var title="">search engines</var> is empty, return 0
17019: and abort these steps.</p></li>
17020:
17021: <li><p>If the user's default search engine (as determined by the
17022: user agent) is one of the search engines in <var title="">search
17023: engines</var>, then return 2 and abort these steps.</p></li>
17024:
17025: <li><p>Return 1.</p></li>
17026:
17027: </ol></div>
17028: <!--TOPIC:HTML-->
17029:
17030:
17031:
17032: <h2 id="editing"><span class="secno">7 </span><dfn>User interaction</dfn></h2>
17033:
17034:
17035: <h3 id="the-hidden-attribute"><span class="secno">7.1 </span>The <dfn title="attr-hidden"><code>hidden</code></dfn> attribute</h3>
17036:
17037: <p>All <a href="infrastructure.html#html-elements">HTML elements</a> may have the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> content attribute set. The <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute is a <a href="common-microsyntaxes.html#boolean-attribute">boolean
17038: attribute</a>. When specified on an element, it indicates that
17039: the element is not yet, or is no longer, directly relevant to the
17040: page's current state, or that it is being used to declare content to
17041: be reused by other parts of the page as opposed to being directly
17042: accessed by the user. <span class="impl">User agents should not
17043: render elements that have the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute specified.</span></p>
17044:
17045: <div class="example">
17046:
17047: <p>In the following skeletal example, the attribute is used to hide
17048: the Web game's main screen until the user logs in:</p>
17049:
17050: <pre> <h1>The Example Game</h1>
17051: <section id="login">
17052: <h2>Login</h2>
17053: <form>
17054: ...
17055: <!-- calls login() once the user's credentials have been checked -->
17056: </form>
17057: <script>
17058: function login() {
17059: // switch screens
17060: document.getElementById('login').hidden = true;
17061: document.getElementById('game').hidden = false;
17062: }
17063: </script>
17064: </section>
17065: <section id="game" hidden>
17066: ...
17067: </section></pre>
17068:
17069: </div>
17070:
17071: <p>The <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute must not be
17072: used to hide content that could legitimately be shown in another
17073: presentation. For example, it is incorrect to use <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> to hide panels in a tabbed dialog,
17074: because the tabbed interface is merely a kind of overflow
17075: presentation — one could equally well just show all the form
17076: controls in one big page with a scrollbar. It is similarly incorrect
17077: to use this attribute to hide content just from one presentation
17078: — if something is marked <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>, it is hidden from all
1.200 ! sruby 17079: presentations, including, for instance, printers.</p><!--bug
! 17080: 19406-->
1.190 sruby 17081:
17082: <!-- for example, "<a hidden href=#content>Skip to content</a>" would be inappropriate. -->
17083: <!-- (but only add that example if you first add some more good valid examples -->
17084:
17085: <p>Elements that are not themselves <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> must not <a href="#hyperlink">hyperlink</a> to
17086: elements that are <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>. The <code title="">for</code> attributes of <code><a href="the-label-element.html#the-label-element">label</a></code> and
17087: <code><a href="the-output-element.html#the-output-element">output</a></code> elements that are not themselves <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> must similarly not refer to
17088: elements that are <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>. In both
17089: cases, such references would cause user confusion.</p>
17090:
17091: <p>Elements and scripts may, however, refer to elements that are
17092: <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> in other contexts.</p>
17093:
17094: <div class="example">
17095:
17096: <p>For example, it would be incorrect to use the <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute to link to a
17097: section marked with the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>
17098: attribute. If the content is not applicable or relevant, then there
17099: is no reason to link to it.</p>
17100:
17101: <p>It would be fine, however, to use the ARIA <code title="attr-aria-describedby">aria-describedby</code> attribute to
17102: refer to descriptions that are themselves <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>. While hiding the descriptions
17103: implies that they are not useful alone, they could be written in
17104: such a way that they are useful in the specific context of being
17105: referenced from the images that they describe.</p>
17106:
17107: <p>Similarly, a <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code> element with the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute could be used by a
17108: scripted graphics engine as an off-screen buffer, and a form
17109: control could refer to a hidden <code><a href="the-form-element.html#the-form-element">form</a></code> element using its
17110: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code> attribute.</p>
17111:
17112: </div>
17113:
17114: <p>Accessibility APIs are encouraged to provide a way to expose
17115: structured content while marking it as hidden in the default view.
17116: Such content should not be perceivable to users in the normal document
17117: flow in any modality, whether using Assistive Technology (AT) or
17118: mainstream User Agents.</p>
17119:
17120: <p>When such features are available, User Agents may use them to
17121: expose the full semantics of <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>
17122: elements to AT when appropriate, if such content is referenced
17123: indirectly by an <a href="infrastructure.html#concept-id" title="concept-id">ID reference</a> or
17124: <a href="common-microsyntaxes.html#valid-hash-name-reference">valid hash-name reference</a>. This allows ATs to access the
17125: structure of these <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> elements
17126: upon user request, while keeping the content hidden in all
17127: presentations of the normal document flow. Authors who wish to prevent
17128: user-initiated viewing of a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code>
17129: element should not reference the element with such a mechanism.</p>
17130:
17131: <p>Because some User Agents have flattened hidden content when
17132: exposing such content to AT, authors should not reference <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> content which would lose essential
17133: meaning when flattened.</p>
17134:
17135: <p>For example, it would be appropriate for the structure of <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> table headers referenced from a
17136: <code title="attr-tdth-headers"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-headers">headers</a></code> attribute to be exposed
17137: to users of AT with such an API.</p>
17138:
17139: <p>Cases where it would be inappropriate for the structure of <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> elements to be exposed to users of
17140: AT with such an API include:</p>
17141:
17142: <ul><li>a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> element referenced by
17143: an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute within the
17144: same document</li>
17145:
17146: <li>a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> form element referenced
17147: by a <code><a href="the-label-element.html#the-label-element">label</a></code> element's <code title="attr-label-for"><a href="the-label-element.html#attr-label-for">for</a></code> attribute (because the sorts of
17148: elements referenced from a <code><a href="the-label-element.html#the-label-element">label</a></code> element's <code title="attr-label-for"><a href="the-label-element.html#attr-label-for">for</a></code> attribute lose meaning when
17149: flattened)</li>
17150:
17151: </ul><p>Specifications which define elements and attributes which may be
17152: included in <a href="infrastructure.html#conforming-documents" title="Conforming documents">conforming HTML5
17153: documents</a> (such as SVG, MathML, and WAI-ARIA) may define how or
17154: whether this applies to their elements and attributes. <a href="#refsARIA">[ARIA]</a> <a href="#refsMATHML">[MATHML]</a> <a href="#refsSVG">[SVG]</a></p>
17155:
17156: <p>Elements in a section hidden by the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute are still active,
17157: e.g. scripts and form controls in such sections still execute
17158: and submit respectively. Only their presentation to the user
17159: changes.</p>
17160:
17161: <div class="impl">
17162:
17163: <p>The <dfn id="dom-hidden" title="dom-hidden"><code>hidden</code></dfn> IDL
17164: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the
17165: same name.</p>
17166:
17167: </div>
17168:
17169: <h3 id="inert-subtrees"><span class="secno">7.2 </span>Inert subtrees</h3>
17170:
17171: <p>A subtree of a <code><a href="dom.html#document">Document</a></code> can be marked as
17172: <dfn id="inert">inert</dfn>. When a node or one of its ancestors is
17173: <a href="#inert">inert</a>, then the user agent must act as if the element
17174: was absent for the purposes of targetting user interaction events,
17175: may ignore the node for the purposes of text search user interfaces
17176: (commonly known as "find in page"), and may prevent the user from
17177: selecting text in that node. User agents should allow the user to
17178: override the restrictions on search and text selection, however.</p>
17179:
17180: <p class="example">For example, consider a page that consists of
17181: just a single <a href="#inert">inert</a> paragraph positioned in the middle
17182: of a <code><a href="the-body-element.html#the-body-element">body</a></code>. If a user moves their pointing device from
17183: the <code><a href="the-body-element.html#the-body-element">body</a></code> over to the <a href="#inert">inert</a> paragraph and
17184: clicks on the paragraph, no <code title="event-mouseover">mouseover</code> event would be fired, and
17185: the <code title="event-mousemove">mousemove</code> and <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> events would be fired on the
17186: <code><a href="the-body-element.html#the-body-element">body</a></code> element rather than the paragraph.</p>
17187:
17188: <p class="note">When a node or one of its ancestors is inert, it
17189: also can't be focused (see the <a href="#focusing-steps">focusing steps</a>), and it
17190: is disabled if it is a <a href="#concept-command" title="concept-command">command</a>.</p>
17191:
17192: <p>An entire <code><a href="dom.html#document">Document</a></code> can be marked as <dfn id="blocked-by-a-modal-dialog">blocked by
17193: a modal dialog</dfn> <var title="">dialog</var>. While a
17194: <code><a href="dom.html#document">Document</a></code> is so marked, every node that is <a href="infrastructure.html#in-a-document" title="in a Document">in the <code>Document</code></a>, with the
17195: exception of the <var title="">dialog</var> element, its ancestors,
17196: and its descendants, must be marked <a href="#inert">inert</a>. (The
17197: elements excepted by this paragraph can additionally be marked
17198: <a href="#inert">inert</a> through other means; being part of a modal dialog
17199: does not "protect" a node from being marked <a href="#inert">inert</a>.)</p>
17200:
17201: <p>Only one element at a time can mark a <code><a href="dom.html#document">Document</a></code> as
17202: being <a href="#blocked-by-a-modal-dialog">blocked by a modal dialog</a>. When a new
17203: <code><a href="#the-dialog-element">dialog</a></code> is made to <a href="#blocked-by-a-modal-dialog" title="blocked by a modal
17204: dialog">block</a> a <code><a href="dom.html#document">Document</a></code>, the previous element,
17205: if any, stops blocking the <code><a href="dom.html#document">Document</a></code>.</p>
17206:
17207: <p class="note">The <code><a href="#the-dialog-element">dialog</a></code> element's <code title="dom-dialog-showModal"><a href="#dom-dialog-showmodal">showModal()</a></code> method makes use of
17208: this mechanism.</p>
17209:
17210:
17211: <!--INERT-->
17212:
17213:
17214: <!--TOPIC:DOM APIs-->
17215: <h3 id="activation"><span class="secno">7.3 </span>Activation</h3>
17216:
17217: <!-- v2 idea: HTMLImageElement.click(x, y); or clickPoint(), if
17218: click() can't be done in IE; can this be emulated in IE by
17219: posting a synthetic mouse click event with those X and Y
17220: coords? (ack Csaba Gabor)
17221: -->
17222:
17223: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-click"><a href="#dom-click">click</a></code>()</dt>
17224:
17225: <dd>
17226:
17227: <p>Acts as if the element was clicked.</p>
17228:
17229: </dd>
17230:
17231: </dl><div class="impl">
17232:
17233: <p>The <dfn id="dom-click" title="dom-click"><code>click()</code></dfn> method must
17234: <a href="content-models.html#run-synthetic-click-activation-steps">run synthetic click activation steps</a> on the
17235: element.</p>
17236:
17237: </div>
17238: <!--TOPIC:HTML-->
17239:
17240:
17241: <h3 id="focus"><span class="secno">7.4 </span>Focus</h3>
17242:
17243: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%20%0A...%3Cform%3E%3Cinput%20name%3Da%20onfocus%3D%22value%2B%3D1%3Bd.name%3D%27a%27%3Bname%3D%27d%27%3Bb.focus()%22%3E%0A%3Cinput%20name%3Db%20onfocus%3D%22value%2B%3D1%3Bc.focus()%22%3E%0A%3Cinput%20name%3Dc%20onfocus%3D%22value%2B%3D1%3Bd.focus()%22%3E%0A%3Cinput%20name%3Dd%20onfocus%3D%22value%2B%3D1%3Ba.focus()%22%3E -->
17244:
17245: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A...%3Cform%3E%0A%3Ctextarea%20name%3Dt%20cols%3D100%20rows%3D3%3E%3C%2Ftextarea%3E%3Cp%3E%0A%3Cinput%20name%3Da%20onfocus%3D%22t.value%2B%3D%27af1%20%27%3Bb.focus()%3Balert(document.activeElement.name)%3Bt.value%2B%3D%27af2%20%27%3B%22%20onblur%3D%22t.value%2B%3D%27ab%20%27%3B%22%3E%0A%3Cinput%20name%3Db%20onfocus%3D%22t.value%2B%3D%27bf1%20%27%3Bc.focus()%3Bt.value%2B%3D%27bf2%20%27%3B%22%20onblur%3D%22t.value%2B%3D%27bb%20%27%3B%22%3E%0A%3Cinput%20name%3Dc%20onfocus%3D%22t.value%2B%3D%27cf1%20%27%3Bc.focus()%3Bt.value%2B%3D%27cf2%20%27%3B%22%20onblur%3D%22t.value%2B%3D%27cb%20%27%3B%22%3E%0A -->
17246:
17247: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%3Cbody%20onload%3D%22document.forms%5B0%5D.a.focus()%22%3E%0A...%3Cform%3E%0A%3Ctextarea%20name%3Dt%20cols%3D100%20rows%3D3%3E%3C%2Ftextarea%3E%3Cp%3E%0A%3Cinput%20name%3Da%20onblur%3D%22t.value%2B%3D'ab%20'%3B%20b.focus()%3B%22%3E%0A%3Cinput%20name%3Db%20onfocus%3D%22t.value%2B%3D'bf1%20'%3Ba.focus()%3Bt.value%2B%3D'bf2%20'%3B%22%20onblur%3D%22t.value%2B%3D'bb%20'%3B%22%3E -->
17248:
17249: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%3Cbody%3E...%3Cform%3E%0A%3Ctextarea%20name%3Dt%20cols%3D100%20rows%3D3%3E%3C%2Ftextarea%3E%3Cp%3E%0A%3Cinput%20name%3Da%20onfocus%3D%22t.value%2B%3D%27af%20%27%3B%22%20onblur%3D%22t.value%2B%3D%27ab1%20%27%3Bb.focus()%3Bt.value%2B%3D%27ab2%20%27%3B%22%3E%0A%3Cinput%20name%3Db%20onfocus%3D%22t.value%2B%3D%27bf1%20%27%3Ba.focus()%3Bt.value%2B%3D%27bf2%20%27%3B%22%20onblur%3D%22t.value%2B%3D%27bb%20%27%3B%22%3E -->
17250:
17251: <!-- v2: more things to define, if no other specs define them:
17252: - define onfocus/onblur behaviour for Window
17253: - Other things to look at are IE's focus APIs (HTMLElement.setActive(),
17254: onBeforeActivate, onActivate, onBeforeDeactivate, onDeactivate):
17255: https://bugzilla.mozilla.org/show_bug.cgi?id=296471
17256: https://bugzilla.mozilla.org/show_bug.cgi?id=296469
17257: http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/setactive.asp
17258: http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeactivate.asp
17259: -->
17260:
17261: <div class="impl">
17262:
17263: <p>When an element is <i>focused</i>, key events received by the
17264: document must be targeted at that element. There may be no element
17265: focused; when no element is focused, key events received by the
17266: document must be targeted at <a href="dom.html#the-body-element-0">the body element</a>, if there
17267: is one, or else at the <code><a href="dom.html#document">Document</a></code>'s root element, if
17268: there is one. If there is no root element, key events must not be
17269: fired.</p>
17270:
17271: <p>User agents may track focus for each <a href="#browsing-context">browsing
17272: context</a> or <code><a href="dom.html#document">Document</a></code> individually, or may support
17273: only one focused element per <a href="#top-level-browsing-context">top-level browsing context</a>
17274: — user agents should follow platform conventions in this
17275: regard.</p>
17276:
17277: <p>Which elements within a <a href="#top-level-browsing-context">top-level browsing context</a>
17278: currently have focus must be independent of whether or not the
17279: <a href="#top-level-browsing-context">top-level browsing context</a> itself has the <i>system
17280: focus</i>.</p>
17281:
17282: <p id="bc-focus-ergo-bcc-focus">When a <a href="#child-browsing-context">child browsing
17283: context</a> is focused, its <a href="#browsing-context-container">browsing context
17284: container</a> must also have focus.</p>
17285:
17286: <p class="note">When an element is focused, the element matches the
17287: CSS <code>:focus</code> pseudo-class.</p>
17288:
17289: </div>
17290:
17291:
17292: <h4 id="sequential-focus-navigation-and-the-tabindex-attribute"><span class="secno">7.4.1 </span>Sequential focus navigation and the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute</h4>
17293:
17294: <p>The <dfn id="attr-tabindex" title="attr-tabindex"><code>tabindex</code></dfn>
17295: content attribute allows authors to control whether an element is
17296: supposed to be focusable, whether it is supposed to be reachable
17297: using sequential focus navigation, and what is to be the relative
17298: order of the element for the purposes of sequential focus
17299: navigation. The name "tab index" comes from the common use of the
17300: "tab" key to navigate through the focusable elements. The term
17301: "tabbing" refers to moving forward through the focusable elements
17302: that can be reached using sequential focus navigation.</p>
17303:
17304: <p>The <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute, if
17305: specified, must have a value that is a <a href="common-microsyntaxes.html#valid-integer">valid
17306: integer</a>.</p>
17307:
17308: <div class="impl">
17309:
17310: <p>Each element has a <dfn id="specially-focusable">tabindex focus
17311: flag</dfn>. This flag is a factor that contributes towards
17312: determining whether an element is <a href="#focusable">focusable</a>, as
17313: described in the next section.</p>
17314:
17315: <p>If the attribute is specified, it must be parsed using the
17316: <a href="common-microsyntaxes.html#rules-for-parsing-integers">rules for parsing integers</a>. The attribute's values have
17317: the following meanings:</p>
17318:
17319: <dl><dt>If the attribute is omitted or parsing the value returns an
17320: error</dt>
17321:
17322: <dd>
17323:
17324: <p>The user agent should follow platform conventions to determine
17325: if the element's <a href="#specially-focusable">tabindex focus flag</a> is set and, if
17326: so, whether the element can be reached using sequential focus
17327: navigation, and if so, what its relative order should be.</p>
17328:
17329: <p class="note">One valid reason to ignore the platform
17330: conventions and always allow an element to be focused (by setting
17331: its <a href="#specially-focusable">tabindex focus flag</a>) would be if the user's only
17332: mechanism for activating an element is through a keyboard action
17333: that triggers the focused element.</p>
17334:
17335: </dd>
17336:
17337: <dt id="negative-tabindex">If the value is a negative integer</dt>
17338:
17339: <dd>
17340:
17341: <p>The user agent must set the element's <a href="#specially-focusable">tabindex focus
17342: flag</a>, but should not allow the element to be reached using
17343: sequential focus navigation.</p>
17344:
17345: <p class="note">One valid reason to ignore the requirement that
17346: sequential focus navigation not allow the author to lead to the
17347: element would be if the user's only mechanism for moving the focus
17348: is sequential focus navigation. For instance, a keyboard-only user
17349: would be unable to click on a text field with a negative <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code>, so that user's user agent
17350: would be well justified in allowing the user to tab to the control
17351: regardless.</p>
17352:
17353: </dd>
17354:
17355: <dt>If the value is a zero</dt>
17356:
17357: <dd>
17358:
17359: <p>The user agent must set the element's <a href="#specially-focusable">tabindex focus
17360: flag</a>, should allow the element to be reached using
17361: sequential focus navigation, and should follow platform
17362: conventions to determine the element's relative order.</p>
17363:
17364: </dd>
17365:
17366: <dt>If the value is greater than zero</dt>
17367:
17368: <dd>
17369:
17370: <p>The user agent must set the element's <a href="#specially-focusable">tabindex focus
17371: flag</a>, should allow the element to be reached using
17372: sequential focus navigation, and should place the element in the
17373: sequential focus navigation order so that it is:</p>
17374:
17375: <ul><li>before any <a href="#focusable">focusable</a> element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has been omitted
17376: or whose value, when parsed, returns an error,</li>
17377:
17378: <li>before any <a href="#focusable">focusable</a> element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has a value equal
17379: to or less than zero,</li>
17380:
17381: <li>after any element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has a value
17382: greater than zero but less than the value of the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute on the
17383: element,</li>
17384:
17385: <li>after any element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has a value equal
17386: to the value of the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code>
17387: attribute on the element but that is earlier in the document in
17388: <a href="infrastructure.html#tree-order">tree order</a> than the element,</li>
17389:
17390: <li>before any element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has a value equal
17391: to the value of the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code>
17392: attribute on the element but that is later in the document in
17393: <a href="infrastructure.html#tree-order">tree order</a> than the element, and</li>
17394:
17395: <li>before any element whose <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute has a value
17396: greater than the value of the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute on the
17397: element.</li>
17398:
17399: </ul></dd>
17400:
17401: </dl><p>An element that has its <a href="#specially-focusable">tabindex focus flag</a> set but
17402: does not otherwise have an <a href="content-models.html#activation-behavior">activation behavior</a> defined
17403: has an <a href="content-models.html#activation-behavior">activation behavior</a> that does nothing.</p>
17404:
17405: <p class="note">This means that an element that is only focusable
17406: because of its <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> attribute
17407: will fire a <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event in response
17408: to a non-mouse activation (e.g. hitting the "enter" key while the
17409: element is focused).</p>
17410:
17411: <p>The <dfn id="dom-tabindex" title="dom-tabIndex"><code>tabIndex</code></dfn> IDL
17412: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the value of the <code title="attr-tabindex"><a href="#attr-tabindex">tabindex</a></code> content attribute. Its default
17413: value is 0 for elements that are focusable and −1 for
17414: elements that are not focusable.</p>
17415:
17416: </div>
17417:
17418:
17419:
17420: <div class="impl">
17421:
17422: <h4 id="focus-management"><span class="secno">7.4.2 </span>Focus management</h4>
17423:
17424: <p>An element is <dfn id="focusable">focusable</dfn> if the user agent's default
17425: behavior allows it to be focusable or if the element has its
17426: <a href="#specially-focusable">tabindex focus flag</a> set, but only if the element is
17427: either <a href="#being-rendered">being rendered</a> or <!-- CANVAS-FOCUS-FALLBACK -->
17428: is a descendant of a <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code> element that
17429: <a href="#represents">represents</a> <a href="content-models.html#embedded-content-2">embedded content</a>.</p>
17430:
17431: <p>User agents should make the following elements
17432: <a href="#focusable">focusable</a> as part of their default behavior, unless
17433: platform conventions dictate otherwise:</p>
17434:
17435: <ul><li><code><a href="the-a-element.html#the-a-element">a</a></code> elements that have an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</li>
17436:
17437: <li><code><a href="the-link-element.html#the-link-element">link</a></code> elements that have an <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code> attribute</li>
17438:
17439: <li><code><a href="the-button-element.html#the-button-element">button</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
17440:
17441: <li><code><a href="the-input-element.html#the-input-element">input</a></code> elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute are not in the
17442: <a href="states-of-the-type-attribute.html#hidden-state-(type=hidden)" title="attr-input-type-hidden">Hidden</a> state and that
17443: are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
17444:
17445: <li><code><a href="the-select-element.html#the-select-element">select</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
17446:
17447: <li><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a></li>
17448:
17449: <li><code><a href="#the-command-element">command</a></code> elements that do not have a <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code> attribute</li>
17450:
17451: <li>Elements with a <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code>
17452: attribute set, if that would enable the user agent to allow the
17453: user to begin a drag operations for those elements without the use
17454: of a pointing device</li>
17455:
17456: <li><a href="#editing-host" title="editing host">Editing hosts</a></li>
17457:
17458: <li><a href="#browsing-context-container" title="browsing context container">Browsing context
17459: containers</a></li> <!-- like <iframe>s -->
17460:
17461: </ul><p>In addition, each shape that is generated for an
17462: <code><a href="the-area-element.html#the-area-element">area</a></code> element should be <a href="#focusable">focusable</a>, unless
17463: platform conventions dictate otherwise. (A single <code><a href="the-area-element.html#the-area-element">area</a></code>
17464: element can correspond to multiple shapes, since image maps can be
17465: reused with multiple images on a page.)</p>
17466:
17467: <p>The user agent may also make part of a <code><a href="#the-details-element">details</a></code>
17468: element's rendering <a href="#focusable">focusable</a>, to enable the element to
17469: be opened or closed using keyboard input. However, this is distinct
17470: from the <code><a href="#the-details-element">details</a></code> or <code><a href="#the-summary-element">summary</a></code> element being
17471: focusable.</p>
17472:
17473: <hr><p>The <dfn id="focusing-steps">focusing steps</dfn> for an element are as follows:</p>
17474:
17475: <ol><li><p>If the element is not <a href="infrastructure.html#in-a-document" title="in a Document">in a
17476: <code>Document</code></a>, or if the element's
17477: <code><a href="dom.html#document">Document</a></code> has no <a href="#browsing-context">browsing context</a>, or if
17478: the element's <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a>
17479: has no <a href="#top-level-browsing-context">top-level browsing context</a>, or if the element
17480: is not <a href="#focusable">focusable</a>, or if the element is already
17481: focused, then abort these steps.</p>
17482:
17483: </li><li><p>If focusing the element will remove the focus from another
17484: element, then run the <a href="#unfocusing-steps">unfocusing steps</a> for that
17485: element.</p></li>
17486:
17487: <li>
17488:
17489: <p>Make the element the currently focused element in its
17490: <a href="#top-level-browsing-context">top-level browsing context</a>.</p>
17491:
17492: <p>Some elements, most notably <code><a href="the-area-element.html#the-area-element">area</a></code>, can correspond
17493: to more than one distinct focusable area. If a particular area was
17494: indicated when the element was focused, then that is the area that
17495: must get focus; otherwise, e.g. when using the <code title="dom-focus"><a href="#dom-focus">focus()</a></code> method, the first such region in
17496: tree order is the one that must be focused.</p>
17497:
17498: </li>
17499:
17500: <li>
17501:
17502: <p>The user agent may apply relevant platform-specific conventions
17503: for focusing widgets.</p>
17504:
17505: <p class="note">For example, some platforms select the contents of
17506: a text field when that field is focused.</p>
17507:
17508: </li>
17509:
17510: <li><p><a href="#fire-a-simple-event">Fire a simple event</a> named <code title="event-focus">focus</code> at the element.</p></li>
17511: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/723 -->
17512:
17513: </ol><p>User agents must synchronously run the <a href="#focusing-steps">focusing
17514: steps</a> for an element whenever the user moves the focus to a
17515: <a href="#focusable">focusable</a> element.</p>
17516:
17517: <p>The <dfn id="unfocusing-steps">unfocusing steps</dfn> for an element are as
17518: follows:</p>
17519:
17520: <ol><li><p>If the element is an <code><a href="the-input-element.html#the-input-element">input</a></code> element, and the
17521: <code title="event-input-change"><a href="common-input-element-apis.html#event-input-change">change</a></code> event applies to the
17522: element, and the element does not have a defined <a href="content-models.html#activation-behavior">activation
17523: behavior</a>, and the user has changed the element's <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> or its list of <a href="states-of-the-type-attribute.html#concept-input-type-file-selected" title="concept-input-type-file-selected">selected files</a>
17524: while the control was focused without committing that change, then
17525: <a href="#fire-a-simple-event">fire a simple event</a> that bubbles named <code title="event-change">change</code> at the element.</p>
17526:
17527: </li><li><p>Unfocus the element.</p></li>
17528:
17529: <li><p><a href="#fire-a-simple-event">Fire a simple event</a> named <code title="event-blur">blur</code> at the element.</p></li>
17530: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/723 -->
17531:
17532: </ol><p>When an element that is focused stops being a
17533: <a href="#focusable">focusable</a> element, or stops being focused without
17534: another element being explicitly focused in its stead, the user
17535: agent should synchronously run the <a href="#unfocusing-steps">unfocusing steps</a> for
17536: the affected element only.</p>
17537:
17538: <p class="example">For example, this might happen because the
17539: element is removed from its <code><a href="dom.html#document">Document</a></code>, or has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute added. It would also
17540: happen to an <code><a href="the-input-element.html#the-input-element">input</a></code> element when the element gets <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>.</p>
17541:
17542: </div>
17543:
17544:
17545: <!--TOPIC:DOM APIs-->
17546: <h4 id="document-level-focus-apis"><span class="secno">7.4.3 </span>Document-level focus APIs</h4>
17547:
17548: <dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-activeElement"><a href="#dom-document-activeelement">activeElement</a></code></dt>
17549:
17550: <dd>
17551:
17552: <p>Returns the currently focused element.</p>
17553:
17554: </dd>
17555:
17556: <dt><var title="">document</var> . <code title="dom-document-hasFocus"><a href="#dom-document-hasfocus">hasFocus</a></code>()</dt>
17557:
17558: <dd>
17559:
17560: <p>Returns true if the document has focus; otherwise, returns false.</p>
17561:
17562: </dd>
17563:
17564: <dt><var title="">window</var> . <code title="dom-window-focus"><a href="#dom-window-focus">focus</a></code>()</dt>
17565:
17566: <dd>
17567:
17568: <p>Focuses the window. Use of this method is discouraged. Allow the user to control window focus instead.</p>
17569:
17570: </dd>
17571:
17572: <dt><var title="">window</var> . <code title="dom-window-blur"><a href="#dom-window-blur">blur</a></code>()</dt>
17573:
17574: <dd>
17575:
17576: <p>Unfocuses the window. Use of this method is discouraged. Allow the user to control window focus instead.</p>
17577:
17578: </dd>
17579:
17580: </dl><div class="impl">
17581:
17582: <p>The <dfn id="dom-document-activeelement" title="dom-document-activeElement"><code>activeElement</code></dfn>
17583: attribute on <code><a href="dom.html#document">Document</a></code> objects must return the
17584: element in the document that is focused. If no element in the
17585: <code><a href="dom.html#document">Document</a></code> is focused, this must return <a href="dom.html#the-body-element-0">the body
17586: element</a>.</p>
17587:
17588: <p class="note">When a <a href="#child-browsing-context">child browsing context</a> is
17589: focused, its <a href="#browsing-context-container">browsing context container</a> is also
17590: focused, <a href="#bc-focus-ergo-bcc-focus">by definition</a>. For
17591: example, if the user moves the focus to a text field in an
17592: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> is the element with
17593: focus in the <a href="#parent-browsing-context">parent browsing context</a>.</p>
17594:
17595: <p>The <dfn id="dom-document-hasfocus" title="dom-document-hasFocus"><code>hasFocus()</code></dfn> method
17596: on <code><a href="dom.html#document">Document</a></code> objects must return true if the
17597: <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a> is focused,
17598: and all its <a href="#ancestor-browsing-context" title="ancestor browsing context">ancestor
17599: browsing contexts</a> are also focused, and the <a href="#top-level-browsing-context">top-level
17600: browsing context</a> has the <i>system focus</i>. If the
17601: <code><a href="dom.html#document">Document</a></code> has no <a href="#browsing-context">browsing context</a> or if its
17602: <a href="#browsing-context">browsing context</a> has no <a href="#top-level-browsing-context">top-level browsing
17603: context</a>, then the method will always return false.</p>
17604:
17605: <p>The <dfn id="dom-window-focus" title="dom-window-focus"><code>focus()</code></dfn>
17606: method on the <code><a href="#window">Window</a></code> object, when invoked, provides a
17607: hint to the user agent that the script believes the user might be
17608: interested in the contents of the <a href="#browsing-context">browsing context</a> of
17609: the <code><a href="#window">Window</a></code> object on which the method was invoked.</p>
17610:
17611: <p>User agents are encouraged to have this <code title="dom-window-focus"><a href="#dom-window-focus">focus()</a></code> method trigger some kind of
17612: notification.</p>
17613:
17614: <p>The <dfn id="dom-window-blur" title="dom-window-blur"><code>blur()</code></dfn> method
17615: on the <code><a href="#window">Window</a></code> object, when invoked, provides a hint to
17616: the user agent that the script believes the user probably is not
17617: currently interested in the contents of the <a href="#browsing-context">browsing
17618: context</a> of the <code><a href="#window">Window</a></code> object on which the method
17619: was invoked, but that the contents might become interesting again in
17620: the future.</p>
17621:
17622: <p>User agents are encouraged to ignore calls to this <code title="dom-window-blur"><a href="#dom-window-blur">blur()</a></code> method entirely.</p>
17623:
17624: <p class="note">Historically the <code title="dom-window-blur"><a href="#dom-window-blur">focus()</a></code> and <code title="dom-window-blur"><a href="#dom-window-blur">blur()</a></code> methods actually affected the
17625: system focus, but hostile sites widely abuse this behavior to the
17626: user's detriment.</p>
17627:
17628: </div>
17629:
17630:
17631: <h4 id="element-level-focus-apis"><span class="secno">7.4.4 </span>Element-level focus APIs</h4>
17632:
17633: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-focus"><a href="#dom-focus">focus</a></code>()</dt>
17634:
17635: <dd>
17636:
17637: <p>Focuses the element.</p>
17638:
17639: </dd>
17640:
17641: <dt><var title="">element</var> . <code title="dom-blur"><a href="#dom-blur">blur</a></code>()</dt>
17642:
17643: <dd>
17644:
17645: <p>Unfocuses the element. Use of this method is discouraged. Focus
17646: another element instead.</p>
17647:
17648: <!--FORK-->
17649: <p>Do not use this method to hide the focus ring. Do not use any
17650: other method that hides the focus ring from keyboard users,in
17651: particluar do not use a CSS rule to override the 'outline'
17652: property. Removal of the focus ring leads to serious accessibility
17653: issues for users who navigate and interact with interactive
17654: content using the keyboard.</p>
17655: <!--FORK-->
17656:
17657: </dd>
17658:
17659: </dl><div class="impl">
17660:
17661: <p>The <dfn id="dom-focus" title="dom-focus"><code>focus()</code></dfn> method,
17662: when invoked, must run the following algorithm:</p>
17663:
17664: <ol><li><p>If the element is marked as <i><a href="#locked-for-focus">locked for focus</a></i>, then abort
17665: these steps.</p></li>
17666:
17667: <li><p>Mark the element as <dfn id="locked-for-focus">locked for focus</dfn>.</p></li>
17668:
17669: <li><p>Run the <a href="#focusing-steps">focusing steps</a> for the
17670: element.</p></li>
17671:
17672: <li><p>Unmark the element as <i><a href="#locked-for-focus">locked for focus</a></i>.</p></li>
17673:
17674: </ol><p>The <dfn id="dom-blur" title="dom-blur"><code>blur()</code></dfn> method, when
17675: invoked, should run the <a href="#unfocusing-steps">unfocusing steps</a> for the
17676: element on which the method was called instead. User agents may
17677: selectively or uniformly ignore calls to this method for usability
17678: reasons.</p>
17679:
17680: <p class="example">For example, if the <code title="dom-blur"><a href="#dom-blur">blur()</a></code> method is unwisely being used to
17681: remove the focus ring for aesthetics reasons, the page would become
17682: unusable by keyboard users. Ignoring calls to this method would thus
17683: allow keyboard users to interact with the page.</p>
17684:
17685: </div>
17686: <!--TOPIC:HTML-->
17687:
17688:
17689:
17690: <h3 id="assigning-keyboard-shortcuts"><span class="secno">7.5 </span>Assigning keyboard shortcuts</h3>
17691:
17692: <h4 id="introduction-6"><span class="secno">7.5.1 </span>Introduction</h4>
17693:
17694: <p><i>This section is non-normative.</i></p>
17695: <p>Each element that can be activated or focused can be assigned a
17696: single key combination to activate it, using the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute.</p>
17697:
17698: <p>The exact shortcut is determined by the user agent, based on
17699: information about the user's keyboard, what keyboard shortcuts
17700: already exist on the platform, and what other shortcuts have been
17701: specified on the page, using the information provided in the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute as a guide.</p>
17702:
17703: <p>In order to ensure that a relevant keyboard shortcut is available
17704: on a wide variety of input devices, the author can provide a number
17705: of alternatives in the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code>
17706: attribute.</p>
17707:
17708: <p>Each alternative consists of a single character, such as a letter
17709: or digit.</p>
17710:
17711: <p>User agents can provide users with a list of the keyboard
17712: shortcuts, but authors are encouraged to do so also. The <code title="dom-accessKeyLabel"><a href="#dom-accesskeylabel">accessKeyLabel</a></code> IDL attribute
17713: returns a string representing the actual key combination assigned by
17714: the user agent.</p>
17715:
17716: <div class="example">
17717:
17718: <p>In this example, an author has provided a button that can be
17719: invoked using a shortcut key. To support full keyboards, the author
17720: has provided "C" as a possible key. To support devices equipped
17721: only with numeric keypads, the author has provided "1" as another
17722: possibly key.</p>
17723:
17724: <pre><input type=button value=Collect onclick="collect()"
17725: <strong>accesskey="C 1"</strong> id=c></pre>
17726:
17727: </div>
17728:
17729: <div class="example">
17730:
17731: <p>To tell the user what the shortcut key is, the author has
17732: this script here opted to explicitly add the key combination to the
17733: button's label:</p>
17734:
17735: <pre>function addShortcutKeyLabel(button) {
17736: <strong> if (button.accessKeyLabel != '')
17737: button.value += ' (' + button.accessKeyLabel + ')';</strong>
17738: }
17739: addShortcutKeyLabel(document.getElementById('c'));</pre>
17740:
17741: <p>Browsers on different platforms will show different labels, even
17742: for the same key combination, based on the convention prevalent on
17743: that platform. For example, if the key combination is the Control
17744: key, the Shift key, and the letter C, a Windows browser might
17745: display "<samp>Ctrl+Shift+C</samp>", whereas a Mac browser might
17746: display "<samp>^⇧C</samp>", while an Emacs browser might
17747: just display "<samp>C-C</samp>". Similarly, if the key combination
17748: is the Alt key and the Escape key, Windows might use
17749: "<samp>Alt+Esc</samp>", Mac might use
17750: "<samp>⌥⎋</samp>", and an Emacs browser might use
17751: "<samp>M-ESC</samp>" or "<samp>ESC ESC</samp>".</p>
17752:
17753: <p>In general, therefore, it is unwise to attempt to parse the
17754: value returned from the <code title="dom-accessKeyLabel"><a href="#dom-accesskeylabel">accessKeyLabel</a></code> IDL attribute.</p>
17755:
17756: </div>
17757:
17758:
17759: <h4 id="the-accesskey-attribute"><span class="secno">7.5.2 </span>The <dfn title="attr-accesskey"><code>accesskey</code></dfn> attribute</h4>
17760:
17761: <p>All <a href="infrastructure.html#html-elements">HTML elements</a> may have the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> content attribute set. The
17762: <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute's value is
17763: used by the user agent as a guide for creating a keyboard shortcut
17764: that activates or focuses the element.</p>
17765:
17766: <p>If specified, the value must be an <a href="common-microsyntaxes.html#ordered-set-of-unique-space-separated-tokens">ordered set of unique
17767: space-separated tokens</a> that are <a href="infrastructure.html#case-sensitive">case-sensitive</a>,
17768: each of which must be exactly one Unicode code point in length.</p>
17769:
17770: <div class="example">
17771:
17772: <p>In the following example, a variety of links are given with
17773: access keys so that keyboard users familiar with the site can
17774: more quickly navigate to the relevant pages:</p>
17775:
17776: <pre><nav>
17777: <p>
17778: <a title="Consortium Activities" accesskey="A" href="/Consortium/activities">Activities</a> |
17779: <a title="Technical Reports and Recommendations" accesskey="T" href="/TR/">Technical Reports</a> |
17780: <a title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex">Site Index</a> |
17781: <a title="About This Site" accesskey="B" href="/Consortium/">About Consortium</a> |
17782: <a title="Contact Consortium" accesskey="C" href="/Consortium/contact">Contact</a>
17783: </p>
17784: </nav></pre>
17785:
17786: </div>
17787:
17788: <div class="example">
17789:
17790: <p>In the following example, the search field is given two possible
17791: access keys, "s" and "0" (in that order). A user agent on a device
17792: with a full keyboard might pick
17793: <kbd><kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd><a href="the-s-element.html#the-s-element">S</a></kbd></kbd> as the
17794: shortcut key, while a user agent on a small device with just a
17795: numeric keypad might pick just the plain unadorned key
17796: <kbd><kbd>0</kbd></kbd>:</p>
17797:
17798: <pre><form action="/search">
17799: <label>Search: <input type="search" name="q" accesskey="s 0"></label>
17800: <input type="submit">
17801: </form></pre>
17802:
17803: </div>
17804:
17805: <div class="example">
17806:
17807: <p>In the following example, a button has possible access keys
17808: described. A script then tries to update the button's label to
17809: advertise the key combination the user agent selected.</p>
17810:
17811: <pre><input type=submit accesskey="N @ 1" value="Compose">
17812: ...
17813: <script>
17814: function labelButton(button) {
17815: if (button.accessKeyLabel)
17816: button.value += ' (' + button.accessKeyLabel + ')';
17817: }
17818: var inputs = document.getElementsByTagName('input');
17819: for (var i = 0; i < inputs.length; i += 1) {
17820: if (inputs[i].type == "submit")
17821: labelButton(inputs[i]);
17822: }
17823: </script></pre>
17824:
17825: <p>On one user agent, the button's label might become
17826: "<samp>Compose (⌘N)</samp>". On another, it might become
17827: "<samp>Compose (Alt+⇧+1)</samp>". If the user agent doesn't
17828: assign a key, it will be just "<samp>Compose</samp>". The exact
17829: string depends on what the <a href="#assigned-access-key">assigned access key</a> is, and
17830: on how the user agent represents that key combination.</p>
17831:
17832: </div>
17833:
17834:
17835: <div class="impl">
17836:
1.191 sruby 17837: <h4 id="processing-model-4"><span class="secno">7.5.3 </span>Processing model</h4>
1.190 sruby 17838:
17839: <p>An element's <dfn id="assigned-access-key">assigned access key</dfn> is a key combination
17840: derived from the element's <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> content attribute.
17841: Initially, an element must not have an <a href="#assigned-access-key">assigned access
17842: key</a>.</p>
17843:
17844: <p>Whenever an element's <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute is set, changed,
17845: or removed, the user agent must update the element's <a href="#assigned-access-key">assigned
17846: access key</a> by running the following steps:</p>
17847:
17848: <ol><li><p>If the element has no <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute, then skip to the
17849: <i>fallback</i> step below.</p></li>
17850:
17851: <li><p>Otherwise, <a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on spaces">split the
17852: attribute's value on spaces</a>, and let <var title="">keys</var> be the resulting tokens.</p></li>
17853:
17854: <li>
17855:
17856: <p>For each value in <var title="">keys</var> in turn, in the
17857: order the tokens appeared in the attribute's value, run the
17858: following substeps:</p>
17859:
17860: <ol><li><p>If the value is not a string exactly one Unicode code
17861: point in length, then skip the remainder of these steps for this
17862: value.</p></li>
17863:
17864: <li><p>If the value does not correspond to a key on the system's
17865: keyboard, then skip the remainder of these steps for this
17866: value.</p></li>
17867:
17868: <li><p>If the user agent can find a mix of zero or more modifier
17869: keys that, combined with the key that corresponds to the value
17870: given in the attribute, can be used as the access key, then the
17871: user agent may assign that combination of keys as the element's
17872: <a href="#assigned-access-key">assigned access key</a> and abort these steps.</p></li>
17873:
17874: </ol></li>
17875:
17876: <li><p><i>Fallback</i>: Optionally, the user agent may assign a key
17877: combination of its choosing as the element's <a href="#assigned-access-key">assigned access
17878: key</a> and then abort these steps.</p></li>
17879:
17880: <li><p>If this step is reached, the element has no <a href="#assigned-access-key">assigned
17881: access key</a>.</p></li>
17882:
17883: </ol><p>Once a user agent has selected and assigned an access key for an
17884: element, the user agent should not change the element's
17885: <a href="#assigned-access-key">assigned access key</a> unless the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> content attribute is changed
17886: or the element is moved to another <code><a href="dom.html#document">Document</a></code>.</p>
17887:
17888: <p>When the user presses the key combination corresponding to the
17889: <a href="#assigned-access-key">assigned access key</a> for an element, if the element
17890: <a href="#concept-command" title="concept-command">defines a command</a>, the
17891: command's <a href="#command-facet-hiddenstate" title="command-facet-HiddenState">Hidden
17892: State</a> facet is false (visible), the command's <a href="#command-facet-disabledstate" title="command-facet-DisabledState">Disabled State</a> facet is
17893: also false (enabled), and the element is <a href="infrastructure.html#in-a-document">in a
17894: <code>Document</code></a>, then the user agent must trigger the
17895: <a href="#command-facet-action" title="command-facet-Action">Action</a> of the command.</p>
17896:
17897: <p class="note">User agents might expose elements that have an <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> attribute in other ways as
17898: well, e.g. in a menu displayed in response to a specific key
17899: combination.</p> <!-- the actual conformance criteria for this is in
17900: the section that defines commands -->
17901:
17902: <hr><p>The <dfn id="dom-accesskey" title="dom-accessKey"><code>accessKey</code></dfn> IDL
17903: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-accesskey"><a href="#the-accesskey-attribute">accesskey</a></code> content attribute.</p>
17904:
17905: <p>The <dfn id="dom-accesskeylabel" title="dom-accessKeyLabel"><code>accessKeyLabel</code></dfn> IDL
17906: attribute must return a string that represents the element's
17907: <a href="#assigned-access-key">assigned access key</a>, if any. If the element does not
17908: have one, then the IDL attribute must return the empty string.</p>
17909:
17910: </div>
17911:
17912:
17913:
17914: <h3 id="editing-0"><span class="secno">7.6 </span>Editing</h3>
17915:
17916: <h4 id="contenteditable"><span class="secno">7.6.1 </span>Making document regions editable: The <code title="attr-contenteditable"><a href="#attr-contenteditable">contenteditable</a></code> content
17917: attribute</h4>
17918:
17919: <p>The <dfn id="attr-contenteditable" title="attr-contenteditable"><code>contenteditable</code></dfn>
17920: attribute is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated attribute</a> whose keywords are
17921: the empty string, <code title="">true</code>, and <code title="">false</code>. The empty string and the <code title="">true</code> keyword map to the <i>true</i> state. The <code title="">false</code> keyword maps to the <i>false</i> state. In
17922: addition, there is a third state, the <i>inherit</i> state, which is
17923: the <i>missing value default</i> (and the <i>invalid value
17924: default</i>).</p>
17925:
17926: <p>The <i>true</i> state indicates that the element is editable. The
17927: <i>inherit</i> state indicates that the element is editable if its
17928: parent is. The <i>false</i> state indicates that the element is not
17929: editable.</p>
17930:
17931: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-contentEditable"><a href="#dom-contenteditable">contentEditable</a></code> [ = <var title="">value</var> ]</dt>
17932:
17933: <dd>
17934:
17935: <p>Returns "<code title="">true</code>", "<code title="">false</code>", or "<code title="">inherit</code>", based
17936: on the state of the <code title="attr-contenteditable"><a href="#attr-contenteditable">contenteditable</a></code> attribute.</p>
17937:
17938: <p>Can be set, to change that state.</p>
17939:
17940: <p>Throws a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception if the new value
17941: isn't one of those strings.</p>
17942:
17943: </dd>
17944:
17945: <dt><var title="">element</var> . <code title="dom-isContentEditable"><a href="#dom-iscontenteditable">isContentEditable</a></code></dt>
17946:
17947: <dd>
17948:
17949: <p>Returns true if the element is editable; otherwise, returns false.</p>
17950:
17951: </dd>
17952:
17953: </dl><div class="impl">
17954:
17955: <p>The <dfn id="dom-contenteditable" title="dom-contentEditable"><code>contentEditable</code></dfn> IDL
17956: attribute, on getting, must return the string "<code title="">true</code>" if the content attribute is set to the true
17957: state, "<code title="">false</code>" if the content attribute is set
17958: to the false state, and "<code title="">inherit</code>"
17959: otherwise. On setting, if the new value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII
17960: case-insensitive</a> match for the string "<code title="">inherit</code>" then the content attribute must be removed,
17961: if the new value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for
17962: the string "<code title="">true</code>" then the content attribute
17963: must be set to the string "<code title="">true</code>", if the new
17964: value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string
17965: "<code title="">false</code>" then the content attribute must be set
17966: to the string "<code title="">false</code>", and otherwise the
17967: attribute setter must throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception.</p>
17968:
17969: <p>The <dfn id="dom-iscontenteditable" title="dom-isContentEditable"><code>isContentEditable</code></dfn>
17970: IDL attribute, on getting, must return true if the element is either
17971: an <a href="#editing-host">editing host</a> or <a href="#editable">editable</a>, and false
17972: otherwise.</p>
17973:
17974: </div>
17975:
17976:
17977: <h4 id="making-entire-documents-editable:-the-designmode-idl-attribute"><span class="secno">7.6.2 </span>Making entire documents editable: The <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> IDL attribute</h4>
17978:
17979: <div class="impl">
17980:
17981: <p>Documents have a <dfn id="designMode" title="dom-document-designMode"><code>designMode</code></dfn>, which
17982: can be either enabled or disabled.</p>
17983:
17984: </div>
17985:
17986: <dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> [ = <var title="">value</var> ]</dt>
17987:
17988: <dd>
17989:
17990: <p>Returns "<code title="">on</code>" if the document is editable,
17991: and "<code title="">off</code>" if it isn't.</p>
17992:
17993: <p>Can be set, to change the document's current state.</p>
17994:
17995: </dd>
17996:
17997: </dl><div class="impl">
17998:
17999: <p>The <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> IDL
18000: attribute on the <code><a href="dom.html#document">Document</a></code> object takes two values,
18001: "<code title="">on</code>" and "<code title="">off</code>". When it
18002: is set, the new value must be compared in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
18003: case-insensitive</a> manner to these two values. If it matches
18004: the "<code title="">on</code>" value, then <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> must be enabled,
18005: and if it matches the "<code title="">off</code>" value, then <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> must be
18006: disabled. Other values must be ignored.</p>
18007:
18008: <p>When <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> is
18009: enabled, the IDL attribute must return the value "<code title="">on</code>", and when it is disabled, it must return the
18010: value "<code title="">off</code>".</p>
18011:
18012: <p>The last state set must persist until the document is destroyed
18013: or the state is changed. Initially, documents must have their <code title="dom-document-designMode"><a href="#designMode">designMode</a></code> disabled.</p>
18014:
18015: </div>
18016:
18017:
18018: <h4 id="best-practices-for-in-page-editors"><span class="secno">7.6.3 </span>Best practices for in-page editors</h4>
18019:
18020: <p>Authors are encouraged to set the 'white-space' property on <a href="#editing-host" title="editing host">editing hosts</a> and on markup that was
18021: originally created through these editing mechanisms to the value
18022: 'pre-wrap'. Default HTML whitespace handling is not well suited to
18023: WYSIWYG editing, and line wrapping will not work correctly in some
18024: corner cases if 'white-space' is left at its default value.</p>
18025:
18026: <div class="example">
18027:
18028: <p>As an example of problems that occur if the default 'normal'
18029: value is used instead, consider the case of the user typing
18030: "<kbd>yellow␣␣ball</kbd>", with two spaces (here
18031: represented by "␣") between the words. With the editing
18032: rules in place for the default value of 'white-space' ('normal'),
18033: the resulting markup will either consist of
18034: "<samp>yellow&nbsp; ball</samp>" or
18035: "<samp>yellow &nbsp;ball</samp>"; i.e., there will be a
18036: non-breaking space between the two words in addition to the regular
18037: space. This is necessary because the 'normal' value for
18038: 'white-space' requires adjacent regular spaces to be collapsed
18039: together.</p>
18040:
18041: <p>In the former case, "<samp>yellow⍽</samp>" might wrap to
18042: the next line ("⍽" being used here to represent a
18043: non-breaking space) even though "<samp>yellow</samp>" alone might
18044: fit at the end of the line; in the latter case,
18045: "<samp>⍽ball</samp>", if wrapped to the start of the line,
18046: would have visible indentation from the non-breaking space.</p>
18047:
18048: <p>When 'white-space' is set to 'pre-wrap', however, the editing
18049: rules will instead simply put two regular spaces between the words,
18050: and should the two words be split at the end of a line, the spaces
18051: would be neatly removed from the rendering.</p>
18052:
18053: </div>
18054:
18055:
18056:
18057: <h4 id="editing-apis"><span class="secno">7.6.4 </span>Editing APIs</h4>
18058:
18059: <p>The definition of the terms <dfn id="active-range">active range</dfn>, <dfn id="editing-host">editing
18060: host</dfn>, and <dfn id="editable">editable</dfn>, the user interface requirements
18061: of elements that are <a href="#editing-host" title="editing host">editing hosts</a>
18062: or <a href="#editable">editable</a>, the
18063:
18064: <dfn id="execCommand" title="dom-document-execCommand"><code>execCommand()</code></dfn>,
18065: <dfn id="dom-document-querycommandenabled" title="dom-document-queryCommandEnabled"><code>queryCommandEnabled()</code></dfn>,
18066: <dfn id="dom-document-querycommandindeterm" title="dom-document-queryCommandIndeterm"><code>queryCommandIndeterm()</code></dfn>,
18067: <dfn id="dom-document-querycommandstate" title="dom-document-queryCommandState"><code>queryCommandState()</code></dfn>,
18068: <dfn id="dom-document-querycommandsupported" title="dom-document-queryCommandSupported"><code>queryCommandSupported()</code></dfn>, and
18069: <dfn id="dom-document-querycommandvalue" title="dom-document-queryCommandValue"><code>queryCommandValue()</code></dfn>
18070:
18071: methods, text selections, and the <dfn id="delete-the-selection">delete the selection</dfn>
18072: algorithm are defined in the HTML Editing APIs specification. The
18073: interaction of editing and the undo/redo features in user agents is
18074: defined by the UndoManager and DOM Transaction specification. <a href="#refsEDITING">[EDITING]</a> <a href="#refsUNDO">[UNDO]</a></p>
18075:
18076: <!-- those might get merged in here eventually -->
18077:
18078:
18079:
18080: <h4 id="spelling-and-grammar-checking"><span class="secno">7.6.5 </span>Spelling and grammar checking</h4>
18081:
18082: <div class="impl">
18083:
18084: <p>User agents can support the checking of spelling and grammar of
18085: editable text, either in form controls (such as the value of
18086: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements), or in elements in an <a href="#editing-host">editing
18087: host</a> (e.g. using <code title="attr-contenteditable"><a href="#attr-contenteditable">contenteditable</a></code>).</p>
18088:
18089: <p>For each element, user agents must establish a <dfn id="concept-spellcheck-default" title="concept-spellcheck-default">default behavior</dfn>, either
18090: through defaults or through preferences expressed by the user. There
18091: are three possible default behaviors for each element:</p>
18092:
18093: <dl><dt><dfn id="concept-spellcheck-default-true" title="concept-spellcheck-default-true">true-by-default</dfn>
18094:
18095: </dt><dd>The element will be checked for spelling and grammar if its
18096: contents are editable.
18097:
18098: </dd><dt><dfn id="concept-spellcheck-default-false" title="concept-spellcheck-default-false">false-by-default</dfn>
18099:
18100: </dt><dd>The element will never be checked for spelling and grammar.
18101:
18102: </dd><dt><dfn id="concept-spellcheck-default-inherit" title="concept-spellcheck-default-inherit">inherit-by-default</dfn>
18103:
18104: </dt><dd>The element's default behavior is the same as its parent
18105: element's. Elements that have no parent element cannot have this as
18106: their default behavior.
18107:
18108: </dd></dl><hr></div>
18109:
18110: <p>The <dfn id="attr-spellcheck" title="attr-spellcheck"><code>spellcheck</code></dfn>
18111: attribute is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated attribute</a> whose keywords are
18112: the empty string, <code title="">true</code> and <code title="">false</code>. The empty string and the <code title="">true</code> keyword map to the <i>true</i> state. The <code title="">false</code> keyword maps to the <i>false</i> state. In
18113: addition, there is a third state, the <i>default</i> state, which is
18114: the <i>missing value default</i> (and the <i>invalid value
18115: default</i>).</p>
18116:
18117: <p class="note">The <i>true</i> state indicates that the element is
18118: to have its spelling and grammar checked. The <i>default</i> state
18119: indicates that the element is to act according to a default
18120: behavior, possibly based on the parent element's own <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> state, as defined below.
18121: The <i>false</i> state indicates that the element is not to be
18122: checked.</p>
18123:
18124: <div class="impl">
18125:
18126: <hr></div>
18127:
18128: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-spellcheck"><a href="#dom-spellcheck">spellcheck</a></code> [ = <var title="">value</var> ]</dt>
18129:
18130: <dd>
18131:
18132: <p>Returns true if the element is to have its spelling and grammar
18133: checked; otherwise, returns false.</p>
18134:
18135: <p>Can be set, to override the default and set the <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute.</p>
18136:
18137: </dd>
18138:
18139: </dl><div class="impl">
18140:
18141: <p>The <dfn id="dom-spellcheck" title="dom-spellcheck"><code>spellcheck</code></dfn> IDL
18142: attribute, on getting, must return true if the element's <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute is in
18143: the <i>true</i> state, or if the element's <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute is in
18144: the <i>default</i> state and the element's <a href="#concept-spellcheck-default" title="concept-spellcheck-default">default behavior</a> is <a href="#concept-spellcheck-default-true" title="concept-spellcheck-default-true">true-by-default</a>, or
18145: if the element's <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code>
18146: content attribute is in the <i>default</i> state and the element's
18147: <a href="#concept-spellcheck-default" title="concept-spellcheck-default">default behavior</a> is
18148: <a href="#concept-spellcheck-default-inherit" title="concept-spellcheck-default-inherit">inherit-by-default</a>
18149: and the element's parent element's <code title="dom-spellcheck"><a href="#dom-spellcheck">spellcheck</a></code> IDL attribute would return
18150: true; otherwise, if none of those conditions applies, then the
18151: attribute must instead return false.</p>
18152:
18153: <p class="note">The <code title="dom-spellcheck"><a href="#dom-spellcheck">spellcheck</a></code>
18154: IDL attribute is not affected by user preferences that override the
18155: <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute,
18156: and therefore might not reflect the actual spellchecking state.</p>
18157:
18158: <p>On setting, if the new value is true, then the element's <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute must be
18159: set to the literal string "<code title="">true</code>", otherwise it
18160: must be set to the literal string "<code title="">false</code>".
18161:
18162: </p><hr><p>User agents must only consider the following pieces of text as
18163: checkable for the purposes of this feature:</p>
18164:
18165: <ul><li>The value of <code><a href="the-input-element.html#the-input-element">input</a></code> elements to which the <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">readonly</a></code> attribute applies,
18166: whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attributes are not
18167: in the <a href="states-of-the-type-attribute.html#password-state-(type=password)" title="attr-input-type-password">Password</a>
18168: state, and that are not <i title="concept-input-immutable"><a href="the-input-element.html#concept-input-immutable">immutable</a></i> (i.e. that do not
18169: have the <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">readonly</a></code>
18170: attribute specified and that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>).</li>
18171:
18172: <li>The value of <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements that do not have a
18173: <code title="attr-textarea-readonly"><a href="the-textarea-element.html#attr-textarea-readonly">readonly</a></code> attribute and
18174: that are not <a href="attributes-common-to-form-controls.html#concept-fe-disabled" title="concept-fe-disabled">disabled</a>.</li>
18175:
18176: <li>Text in <code><a href="infrastructure.html#text-0">Text</a></code> nodes that are
18177: children of <a href="#editing-host" title="editing host">editing hosts</a> or
18178: <a href="#editable">editable</a> elements.</li>
18179:
18180: <li>Text in attributes of <a href="#editable">editable</a> elements.</li>
18181:
18182: </ul><p>For text that is part of a <code><a href="infrastructure.html#text-0">Text</a></code> node, the element
18183: with which the text is associated is the element that is the
18184: immediate parent of the first character of the word, sentence, or
18185: other piece of text. For text in attributes, it is the attribute's
18186: element. For the values of <code><a href="the-input-element.html#the-input-element">input</a></code> and
18187: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements, it is the element itself.</p>
18188:
18189: <p>To determine if a word, sentence, or other piece of text in an
18190: applicable element (as defined above) is to have spelling- and/or
18191: grammar-checking enabled, the UA must use the following
18192: algorithm:</p>
18193:
18194: <ol><!-- user override --><li>If the user has disabled the checking for this text, then the
18195: checking is disabled.</li>
18196:
18197: <li>Otherwise, if the user has forced the checking for this text to
18198: always be enabled, then the checking is enabled.</li>
18199:
18200: <!-- content attribute: on, off -->
18201:
18202: <li>Otherwise, if the element with which the text is associated has
18203: a <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content
18204: attribute, then: if that attribute is in the <i>true</i> state,
18205: then checking is enabled; otherwise, if that attribute is in the
18206: <i>false</i> state, then checking is disabled.</li>
18207:
18208: <!-- inherit, if there is one to inherit from -->
18209:
18210: <li>Otherwise, if there is an ancestor element with a <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content attribute that is
18211: not in the <i>default</i> state, then: if the nearest such
18212: ancestor's <code title="attr-spellcheck"><a href="#attr-spellcheck">spellcheck</a></code> content
18213: attribute is in the <i>true</i> state, then checking is enabled;
18214: otherwise, checking is disabled.</li>
18215:
18216: <!-- default -->
18217:
18218: <li>Otherwise, if the element's <a href="#concept-spellcheck-default" title="concept-spellcheck-default">default behavior</a> is <a href="#concept-spellcheck-default-true" title="concept-spellcheck-default-true">true-by-default</a>,
18219: then checking is enabled.</li>
18220:
18221: <li>Otherwise, if the element's <a href="#concept-spellcheck-default" title="concept-spellcheck-default">default behavior</a> is <a href="#concept-spellcheck-default-false" title="concept-spellcheck-default-false">false-by-default</a>,
18222: then checking is disabled.</li>
18223:
18224: <!-- default inheritance -->
18225:
18226: <li>Otherwise, if the element's parent element has <em>its</em>
18227: checking enabled, then checking is enabled.</li>
18228:
18229: <li>Otherwise, checking is disabled.</li>
18230:
18231: </ol><p>If the checking is enabled for a word/sentence/text, the user
18232: agent should indicate spelling and/or grammar errors in that
18233: text. User agents should take into account the other semantics given
18234: in the document when suggesting spelling and grammar
18235: corrections. User agents may use the language of the element to
18236: determine what spelling and grammar rules to use, or may use the
18237: user's preferred language settings. UAs should use
18238: <code><a href="the-input-element.html#the-input-element">input</a></code> element attributes such as <code title="attr-input-pattern"><a href="common-input-element-attributes.html#attr-input-pattern">pattern</a></code> to ensure that the
18239: resulting value is valid, where possible.</p>
18240:
18241: <p>If checking is disabled, the user agent should not indicate
18242: spelling or grammar errors for that text.</p>
18243:
18244: <div class="example">
18245:
18246: <p>The element with ID "a" in the following example would be the
18247: one used to determine if the word "Hello" is checked for spelling
18248: errors. In this example, it would not be.</p>
18249:
18250: <pre><div contenteditable="true">
18251: <span spellcheck="false" id="a">Hell</span><em>o!</em>
18252: </div></pre>
18253:
18254: <p>The element with ID "b" in the following example would have
18255: checking enabled (the leading space character in the attribute's
18256: value on the <code><a href="the-input-element.html#the-input-element">input</a></code> element causes the attribute to be
18257: ignored, so the ancestor's value is used instead, regardless of the
18258: default).</p>
18259:
18260: <pre><p spellcheck="true">
18261: <label>Name: <input spellcheck=" false" id="b"></label>
18262: </p></pre>
18263:
18264: </div>
18265:
18266: </div>
18267:
18268: <p class="note">This specification does not define the user
18269: interface for spelling and grammar checkers. A user agent could
18270: offer on-demand checking, could perform continuous checking while
18271: the checking is enabled, or could use other interfaces.</p>
18272:
18273:
18274: <h3 id="dnd"><span class="secno">7.7 </span><dfn>Drag and drop</dfn></h3>
18275:
18276: <!-- v2: ideas for drag and drop:
18277:
18278: * being able to animate a drop target:
18279:
18280: > To implement this with simple interface I've proposed, events
18281: > should be handled either by existing elements (like list
18282: > items that compare their size and position of dragged element
18283: > to decide whether element should be dropped before or after)
18284: > or handled by container that would probably need to calculate
18285: > positions of it's children and create new element to show
18286: > drop target. Smooth Mac-like drag'n'drop can be implemented
18287: > by animating drop target's padding/margin. So that's quite a
18288: > bit of code that's going to be reinvented each time someone
18289: > implements reordering.
18290:
18291: <hyatt> :droptarget
18292: <hyatt> or something
18293: <hyatt> we don't support a pseudo-class for the drop target but that's a great idea
18294: <Hixie_> yeah, thinking about that too
18295: <Hixie_> :drop-target, :drop-target(above), :drop-target(below) and having ondragover be able to say "not on me, but next to me maybe"
18296:
18297: - some way to be able to match an element that is being dragged over.
18298:
18299: - some way to be able to animate an element as it goes into and out of
18300: this state (CSS transitions?), e.g. to be able to animate something
18301: "getting out of the way" to let you drop an item between others.
18302:
18303: - as an extension to the previous feature, a way to distinguish being
18304: dragged above or to the left of the drag target vs below or to the
18305: right of the drag target.
18306:
18307: * We should let drop targets communicate back to drag sources if
18308: they want to communicate. (e.g. expose Window, and thus
18309: postMessage(), on the dataTransfer object on drop.)
18310: Or maybe just use a MessagePort!
18311:
18312: We should let drag sources provide a set of options via a
18313: context menu when the drop happens. (So that, e.g., the source
18314: can know whether a capabilities URI that it is passing along is
18315: supposed to be read-write access or read-only access to the
18316: object being dragged.)
18317:
18318: We should let potential drop targets see the types (but not the
18319: contents!) of dragged data so they can establish if they care
18320: or not. (dataTransfer.hasType())
18321:
18322: Ack: Ben Laurie (@g)
18323:
18324: * Interop with native apps. In particular, we probably want to
18325: whitelist the list of types that a Web page can see, since
18326: otherwise we'll end up exposing things like the username (if a
18327: user drags a file from their desktop, the path is exposed on
18328: some OSes).
18329:
18330: Other things listed below:
18331: DND-v2: more native support: text/html from selections, etc
18332: DND-v3: add Blob support
18333: DND-v4: add structured clone support
18334: DND-v5: add promises (should be able to say "if you accept this
18335: drop, then I can provide the File object that
18336: corresponds to it eventually")
18337:
18338: DataTransferPromise.type = 'string' or 'file' or 'blob' or 'data'
18339: .onneeddata - can wait until this fires to provide data
18340: .setData() - call this once you have data, must be the right type
18341:
18342: -->
18343:
18344: <p>This section defines an event-based drag-and-drop mechanism.</p>
18345:
18346: <p>This specification does not define exactly what a
18347: <em>drag-and-drop operation</em> actually is.</p>
18348:
18349: <p>On a visual medium with a pointing device, a drag operation could
18350: be the default action of a <code title="event-mousedown">mousedown</code> event that is followed by a
18351: series of <code title="event-mousemove">mousemove</code> events, and
18352: the drop could be triggered by the mouse being released.</p>
18353:
18354: <p>When using an input modality other than a pointing device, users
18355: would probably have to explicitly indicate their intention to
18356: perform a drag-and-drop operation, stating what they wish to drag
18357: and where they wish to drop it, respectively.</p>
18358:
18359: <div class="impl">
18360:
18361: <p>However it is implemented, drag-and-drop operations must have a
18362: starting point (e.g. where the mouse was clicked, or the start of
18363: the selection or element that was selected for the drag), may have
18364: any number of intermediate steps (elements that the mouse moves over
18365: during a drag, or elements that the user picks as possible drop
18366: points as he cycles through possibilities), and must either have an
18367: end point (the element above which the mouse button was released, or
18368: the element that was finally selected), or be canceled. The end
18369: point must be the last element selected as a possible drop point
18370: before the drop occurs (so if the operation is not canceled, there
18371: must be at least one element in the middle step).</p>
18372:
18373: </div>
18374:
18375:
18376: <h4 id="introduction-7"><span class="secno">7.7.1 </span>Introduction</h4>
18377:
18378: <p><i>This section is non-normative.</i></p>
18379: <p>To make an element draggable is simple: give the element a <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> attribute, and set an event
18380: listener for <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> that
18381: stores the data being dragged.</p>
18382:
18383: <p>The event handler typically needs to check that it's not a text
18384: selection that is being dragged, and then needs to store data into
18385: the <code><a href="#datatransfer">DataTransfer</a></code> object and set the allowed effects
18386: (copy, move, link, or some combination).</p>
18387:
18388: <p>For example:</p>
18389:
18390: <pre><p>What fruits do you like?</p>
18391: <ol ondragstart="dragStartHandler(event)">
18392: <li draggable="true" data-value="fruit-apple">Apples</li>
18393: <li draggable="true" data-value="fruit-orange">Oranges</li>
18394: <li draggable="true" data-value="fruit-pear">Pears</li>
18395: </ol>
18396: <script>
18397: var internalDNDType = 'text/x-example'; // set this to something specific to your site
18398: function dragStartHandler(event) {
18399: if (event.target instanceof HTMLLIElement) {
18400: // use the element's data-value="" attribute as the value to be moving:
18401: event.dataTransfer.setData(internalDNDType, event.target.dataset.value);
18402: event.dataTransfer.effectAllowed = 'move'; // only allow moves
18403: } else {
18404: event.preventDefault(); // don't allow selection to be dragged
18405: }
18406: }
18407: </script></pre>
18408:
18409: <hr><p>To accept a drop, the drop target has to have a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute and listen to the
18410: <code title="drop-event">drop</code> event.</p>
18411:
18412: <p>The value of the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code>
18413: attribute specifies what kind of data to accept (e.g. "<code title="">string:text/plain</code>" to accept any text strings, or
18414: "<code>file:image/png</code>" to accept a PNG image file) and what
18415: kind of feedback to give (e.g. "<code>move</code>" to indicate that
18416: the data will be moved).</p>
18417:
18418: <p class="note">Instead of using the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute, a drop target can
18419: handle the <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> event (to
18420: report whether or not the drop target is to accept the drop) and the
18421: <code title="event-dragover"><a href="#event-dragover">dragover</a></code> event (to specify what
18422: feedback is to be shown to the user).</p>
18423:
18424: <p>The <code title="event-drop"><a href="#event-drop">drop</a></code> event allows the actual
18425: drop to be performed. This event needs to be canceled, so that the
18426: <code title="dom-DataTransfer-DropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code>
18427: attribute's value can be used by the source (otherwise it's
18428: reset).</p>
18429:
18430: <p>For example:</p>
18431:
18432: <pre><p>Drop your favorite fruits below:</p>
18433: <ol dropzone="move string:text/x-example" ondrop="dropHandler(event)">
18434: <!-- don't forget to change the "text/x-example" type to something
18435: specific to your site -->
18436: </ol>
18437: <script>
18438: var internalDNDType = 'text/x-example'; // set this to something specific to your site
18439: function dropHandler(event) {
18440: var li = document.createElement('li');
18441: var data = event.dataTransfer.getData(internalDNDType);
18442: if (data == 'fruit-apple') {
18443: li.textContent = 'Apples';
18444: } else if (data == 'fruit-orange') {
18445: li.textContent = 'Oranges';
18446: } else if (data == 'fruit-pear') {
18447: li.textContent = 'Pears';
18448: } else {
18449: li.textContent = 'Unknown Fruit';
18450: }
18451: event.target.appendChild(li);
18452: }
18453: </script></pre>
18454:
18455: <hr><p>To remove the original element (the one that was dragged) from
18456: the display, the <code title="event-dragend"><a href="#event-dragend">dragend</a></code> event
18457: can be used.</p>
18458:
18459: <p>For our example here, that means updating the original markup to
18460: handle that event:</p>
18461:
18462: <pre><p>What fruits do you like?</p>
18463: <ol ondragstart="dragStartHandler(event)" ondragend="dragEndHandler(event)">
18464: <em>...as before...</em>
18465: </ol>
18466: <script>
18467: function dragStartHandler(event) {
18468: // <em>...as before...</em>
18469: }
18470: function dragEndHandler(event) {
18471: // remove the dragged element
18472: event.target.parentNode.removeChild(event.target);
18473: }
18474: </script></pre>
18475:
18476:
18477:
18478: <h4 id="the-drag-data-store"><span class="secno">7.7.2 </span>The drag data store</h4>
18479:
18480: <p>The data that underlies a drag-and-drop operation, known as the
18481: <dfn id="drag-data-store">drag data store</dfn>, consists of the following information:</p>
18482:
18483: <ul><li><p>A <dfn id="drag-data-store-item-list">drag data store item list</dfn>, which is a list of
18484: items representing the dragged data, each consisting of the
18485: following information:</p>
18486:
18487: <dl><dt><dfn id="the-drag-data-item-kind">The drag data item kind</dfn></dt>
18488:
18489: <dd>
18490:
18491: <p>The kind of data:</p>
18492:
18493: <dl><dt><i>Plain Unicode string</i></dt>
18494: <dd>
18495: <p>Text.</p>
18496: </dd>
18497:
18498: <!-- DND-v3:
18499: <dt><i title="">Blob</i></dt>
18500: <dd>
18501: <p>Binary data.</p>
18502: </dd>
18503: -->
18504:
18505: <dt><i title="">File</i></dt>
18506: <dd>
18507: <p>Binary data with a file name.</p>
18508: </dd>
18509:
18510: <!-- DND-v4:
18511: <dt><i>Structured object</i></dt>
18512: <dd>
18513: <p>An object that will be cloned using the <span>structured clone</span> algorithm.</p>
18514: </dd>
18515: -->
18516:
18517: </dl></dd>
18518:
18519: <dt><dfn id="the-drag-data-item-type-string">The drag data item type string</dfn></dt>
18520:
18521: <dd>
18522:
18523: <p>A Unicode string giving the type or format of the data,
18524: generally given by a <a href="infrastructure.html#mime-type">MIME type</a>. Some values that
18525: are not <a href="infrastructure.html#mime-type" title="MIME type">MIME types</a> are
18526: special-cased for legacy reasons. The API does not enforce the
18527: use of <a href="infrastructure.html#mime-type" title="MIME type">MIME types</a>; other values
18528: can be used as well. In all cases, however, the values are all
18529: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a> by the API.</p>
18530:
18531: <p class="note">Strings that contain <a href="common-microsyntaxes.html#space-character" title="space
18532: character">space characters</a> cannot be used with the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute, so authors are
18533: encouraged to use only <a href="infrastructure.html#mime-type" title="MIME type">MIME types</a>
18534: or custom strings (without spaces).</p>
18535:
18536: <p>There is a limit of one <i>Plain Unicode string</i> item per
18537: <a href="#the-drag-data-item-type-string" title="The drag data item type string">item type
18538: string</a>.</p> <!-- DND-v4: consider limiting the structured
18539: objects too -->
18540:
18541: </dd>
18542:
18543: <dt>The actual data</dt>
18544:
18545: <dd><p>A Unicode or binary string, in some cases with a file name
18546: (itself a Unicode string), <!-- (DND-v4:) or an object, --> as
18547: per <a href="#the-drag-data-item-kind">the drag data item kind</a>.</p></dd>
18548:
18549: </dl><p>The <a href="#drag-data-store-item-list">drag data store item list</a> is ordered in the
18550: order that the items were added to the list; most recently added
18551: last.</p>
18552:
18553: </li>
18554:
18555: <li>
18556:
18557: <p>The following information, used to generate the UI feedback
18558: during the drag:</p>
18559:
18560: <ul><li>User-agent-defined default feedback information, known as the
18561: <dfn id="drag-data-store-default-feedback">drag data store default feedback</dfn>.</li>
18562:
18563: <li>Optionally, a bitmap image and the coordinate of a point
18564: within that image, known as the <dfn id="drag-data-store-bitmap">drag data store bitmap</dfn>
18565: and <dfn id="drag-data-store-hot-spot-coordinate">drag data store hot spot coordinate</dfn>.</li>
18566:
18567: </ul></li>
18568:
18569: <li>
18570:
18571: <p>A <dfn id="drag-data-store-mode">drag data store mode</dfn>, which is one of the
18572: following:</p>
18573:
18574: <dl><dt><dfn id="concept-dnd-rw" title="concept-dnd-rw">Read/write mode</dfn></dt>
18575: <dd>
18576:
18577: <p>For the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event.
18578: New data can be added to the <a href="#drag-data-store">drag data store</a>.</p>
18579:
18580: </dd>
18581:
18582: <dt><dfn id="concept-dnd-ro" title="concept-dnd-ro">Read-only mode</dfn></dt>
18583: <dd>
18584:
18585: <p>For the <code title="event-drop"><a href="#event-drop">drop</a></code> event. The list of
18586: items representing dragged data can be read, including the data.
18587: No new data can be added.</p>
18588:
18589: </dd>
18590:
18591: <dt><dfn id="concept-dnd-p" title="concept-dnd-p">Protected mode</dfn></dt>
18592: <dd>
18593:
18594: <p>For all other events. The formats and kinds in the <a href="#drag-data-store">drag
18595: data store</a> list of items representing dragged data can be
18596: enumerated, but the data itself is unavailable and no new data can
18597: be added.</p>
18598:
18599: </dd>
18600:
18601: </dl></li>
18602:
18603: <li>
18604:
18605: <p>A <dfn id="drag-data-store-allowed-effects-state">drag data store allowed effects state</dfn>, which is a
18606: string.</p>
18607:
18608: </li>
18609:
18610: </ul><p>When a <a href="#drag-data-store">drag data store</a> is <dfn id="create-a-drag-data-store" title="create a drag
18611: data store">created</dfn>, it must be initialized such that its
18612: <a href="#drag-data-store-item-list">drag data store item list</a> is empty, it has no
18613: <a href="#drag-data-store-default-feedback">drag data store default feedback</a>, it has no <a href="#drag-data-store-bitmap">drag
18614: data store bitmap</a> and <a href="#drag-data-store-hot-spot-coordinate">drag data store hot spot
18615: coordinate</a>, its <a href="#drag-data-store-mode">drag data store mode</a> is <a href="#concept-dnd-p" title="concept-dnd-p">protected mode</a>, and its <a href="#drag-data-store-allowed-effects-state">drag data
18616: store allowed effects state</a> is the string "<code title="">uninitialized</code>".</p>
18617:
18618:
18619: <h4 id="the-datatransfer-interface"><span class="secno">7.7.3 </span>The <code><a href="#datatransfer">DataTransfer</a></code> interface</h4>
18620:
18621: <p><code><a href="#datatransfer">DataTransfer</a></code> objects are used to expose the
18622: <a href="#drag-data-store">drag data store</a> that underlies a drag-and-drop
18623: operation.</p>
18624:
18625: <pre class="idl">interface <dfn id="datatransfer">DataTransfer</dfn> {
18626: attribute DOMString <a href="#dom-datatransfer-dropeffect" title="dom-DataTransfer-dropEffect">dropEffect</a>;
18627: attribute DOMString <a href="#dom-datatransfer-effectallowed" title="dom-DataTransfer-effectAllowed">effectAllowed</a>;
18628:
18629: readonly attribute <a href="#datatransferitemlist">DataTransferItemList</a> <a href="#dom-datatransfer-items" title="dom-DataTransfer-items">items</a>;
18630:
18631: void <a href="#dom-datatransfer-setdragimage" title="dom-DataTransfer-setDragImage">setDragImage</a>(Element image, long x, long y);
18632:
18633: /* old interface */
18634: readonly attribute <span>DOMString</span>[] <a href="#dom-datatransfer-types" title="dom-DataTransfer-types">types</a>;
18635: DOMString <a href="#dom-datatransfer-getdata" title="dom-DataTransfer-getData">getData</a>(DOMString format);
18636: void <a href="#dom-datatransfer-setdata" title="dom-DataTransfer-setData">setData</a>(DOMString format, DOMString data);
18637: void <a href="#dom-datatransfer-cleardata" title="dom-DataTransfer-clearData">clearData</a>(optional DOMString format);
18638: readonly attribute <a href="infrastructure.html#filelist">FileList</a> <a href="#dom-datatransfer-files" title="dom-DataTransfer-files">files</a>;
18639: };</pre>
18640:
18641: <dl class="domintro"><dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> [ = <var title="">value</var> ]</dt>
18642:
18643: <dd>
18644:
18645: <p>Returns the kind of operation that is currently selected. If
18646: the kind of operation isn't one of those that is allowed by the
18647: <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
18648: attribute, then the operation will fail.</p>
18649:
18650: <p>Can be set, to change the selected operation.</p>
18651:
18652: <p>The possible values are "<code title="">none</code>", "<code title="">copy</code>", "<code title="">link</code>", and "<code title="">move</code>".</p>
18653:
18654: </dd>
18655:
18656:
18657: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code> [ = <var title="">value</var> ]</dt>
18658:
18659: <dd>
18660:
18661: <p>Returns the kinds of operations that are to be allowed.</p>
18662:
18663: <p>Can be set (during the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event), to change the
18664: allowed operations.</p>
18665:
18666: <p>The possible values are "<code title="">none</code>", "<code title="">copy</code>", "<code title="">copyLink</code>", "<code title="">copyMove</code>", "<code title="">link</code>", "<code title="">linkMove</code>", "<code title="">move</code>", "<code title="">all</code>", and "<code title="">uninitialized</code>",</p>
18667:
18668: </dd>
18669:
18670:
18671: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-items"><a href="#dom-datatransfer-items">items</a></code></dt>
18672:
18673: <dd>
18674:
18675: <p>Returns a <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object, with the drag data.</p>
18676:
18677: </dd>
18678:
18679:
18680: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-setDragImage"><a href="#dom-datatransfer-setdragimage">setDragImage</a></code>(<var title="">element</var>, <var title="">x</var>, <var title="">y</var>)</dt>
18681:
18682: <dd>
18683:
18684: <p>Uses the given element to update the drag feedback, replacing any previously specified feedback.</p>
18685:
18686: </dd>
18687:
18688:
18689: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-types"><a href="#dom-datatransfer-types">types</a></code></dt>
18690:
18691: <dd>
18692:
18693: <p>Returns an array listing the formats that were set in the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event. In addition, if
18694: any files are being dragged, then one of the types will be the
18695: string "<code title="">Files</code>".</p>
18696:
18697: </dd>
18698:
18699:
18700: <dt><var title="">data</var> = <var title="">dataTransfer</var> . <code title="dom-DataTransfer-getData"><a href="#dom-datatransfer-getdata">getData</a></code>(<var title="">format</var>)</dt>
18701:
18702: <dd>
18703:
18704: <p>Returns the specified data. If there is no such data, returns the empty string.</p>
18705:
18706: </dd>
18707:
18708:
18709: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-setData"><a href="#dom-datatransfer-setdata">setData</a></code>(<var title="">format</var>, <var title="">data</var>)</dt>
18710:
18711: <dd>
18712:
18713: <p>Adds the specified data.</p>
18714:
18715: </dd>
18716:
18717:
18718: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-clearData"><a href="#dom-datatransfer-cleardata">clearData</a></code>( [ <var title="">format</var> ] )</dt>
18719:
18720: <dd>
18721:
18722: <p>Removes the data of the specified formats. Removes all data if
18723: the argument is omitted.</p>
18724:
18725: </dd>
18726:
18727:
18728: <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-files"><a href="#dom-datatransfer-files">files</a></code></dt>
18729:
18730: <dd>
18731:
18732: <p>Returns a <code><a href="infrastructure.html#filelist">FileList</a></code> of the files being dragged, if any.</p>
18733:
18734: </dd>
18735:
18736: </dl><p><code><a href="#datatransfer">DataTransfer</a></code> objects are used during the <a href="#dndevents">drag-and-drop events</a>, and are only valid while
18737: those events are being fired.</p>
18738:
18739: <div class="impl">
18740:
18741: <p>A <code><a href="#datatransfer">DataTransfer</a></code> object is associated with a
18742: <a href="#drag-data-store">drag data store</a> while it is valid.</p>
18743:
18744: <p>The <dfn id="dom-datatransfer-dropeffect" title="dom-DataTransfer-dropEffect"><code>dropEffect</code></dfn>
18745: attribute controls the drag-and-drop feedback that the user is given
18746: during a drag-and-drop operation. When the <code><a href="#datatransfer">DataTransfer</a></code>
18747: object is created, the <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> attribute is
18748: set to a string value. On getting, it must return its current value.
18749: On setting, if the new value is one of "<code title="">none</code>",
18750: "<code title="">copy</code>", "<code title="">link</code>", or
18751: "<code title="">move</code>", then the attribute's current value
18752: must be set to the new value. Other values must be ignored.</p>
18753:
18754: <p>The <dfn id="dom-datatransfer-effectallowed" title="dom-DataTransfer-effectAllowed"><code>effectAllowed</code></dfn>
18755: attribute is used in the drag-and-drop processing model to
18756: initialize the <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> attribute
18757: during the <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> and <code title="event-dragover"><a href="#event-dragover">dragover</a></code> events. When the
18758: <code><a href="#datatransfer">DataTransfer</a></code> object is created, the <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
18759: attribute is set to a string value. On getting, it must return its
18760: current value. On setting, if <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data store mode">mode</a> is the <a href="#concept-dnd-rw" title="concept-dnd-rw">read/write mode</a> and the new value is
18761: one of "<code title="">none</code>", "<code title="">copy</code>",
18762: "<code title="">copyLink</code>", "<code title="">copyMove</code>",
18763: "<code title="">link</code>", "<code title="">linkMove</code>",
18764: "<code title="">move</code>", "<code title="">all</code>", or "<code title="">uninitialized</code>", then the attribute's current value
18765: must be set to the new value. Otherwise it must be left
18766: unchanged.</p>
18767:
18768: <p>The <dfn id="dom-datatransfer-items" title="dom-DataTransfer-items"><code>items</code></dfn>
18769: attribute must return a <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object
18770: associated with the <code><a href="#datatransfer">DataTransfer</a></code> object. The same
18771: object must be returned each time.</p>
18772:
18773: <p>The <dfn id="dom-datatransfer-setdragimage" title="dom-DataTransfer-setDragImage"><code>setDragImage(<var title="">element</var>, <var title="">x</var>, <var title="">y</var>)</code></dfn> method must run the following
18774: steps:</p>
18775:
18776: <ol><li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18777: associated with a <a href="#drag-data-store">drag data store</a>, abort these steps.
18778: Nothing happens.</p></li>
18779:
18780: <li><p>If the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data
18781: store mode">mode</a> is not the <a href="#concept-dnd-rw" title="concept-dnd-rw">read/write mode</a>, abort these steps.
18782: Nothing happens.</p></li>
18783:
18784: <li><p>If the <var title="">element</var> argument is an
18785: <code><a href="the-img-element.html#the-img-element">img</a></code> element, then set the <a href="#drag-data-store-bitmap">drag data store
18786: bitmap</a> to the element's image (at its intrinsic size);
18787: otherwise, set the <a href="#drag-data-store-bitmap">drag data store bitmap</a> to an image
18788: generated from the given element (the exact mechanism for doing so
18789: is not currently specified).</p></li>
18790:
18791: <li><p>Set the <a href="#drag-data-store-hot-spot-coordinate">drag data store hot spot coordinate</a> to
18792: the given <var title="">x</var>, <var title="">y</var>
18793: coordinate.</p></li>
18794:
18795: </ol><p>The <dfn id="dom-datatransfer-types" title="dom-DataTransfer-types"><code>types</code></dfn>
18796: attribute must return a <a href="infrastructure.html#live">live</a> <a href="infrastructure.html#dfn-read-only-array" title="dfn-read-only-array">read only</a> array giving the
18797: strings that the following steps would produce. The same object must
18798: be returned each time.</p>
18799:
18800: <ol><li><p>Start with an empty list <var title="">L</var>.</p></li>
18801:
18802: <li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18803: associated with a <a href="#drag-data-store">drag data store</a>, the array is empty.
18804: Abort these steps; return the empty list <var title="">L</var>.</p></li>
18805:
18806: <li><p>For each item in the <a href="#drag-data-store-item-list">drag data store item list</a>
18807: <!-- in some order...? --> whose <a href="#the-drag-data-item-kind" title="the drag data item
18808: kind">kind</a> is <i>Plain Unicode string</i>, add an entry to
18809: the list <var title="">L</var> consisting of the item's <a href="#the-drag-data-item-type-string" title="the drag data item type string">type string</a>.</p></li>
18810:
18811: <li><p>If there are any items in the <a href="#drag-data-store-item-list">drag data store item
18812: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a>
18813: is <i><a href="infrastructure.html#file">File</a></i>, then add an entry to the list <var title="">L</var>
18814: consisting of the string "<code title="">Files</code>". (This value
18815: can be distinguished from the other values because it is not
18816: lowercase.)</p></li>
18817:
18818: <!-- <li><p>Sort the list...?</p></li> -->
18819:
18820: <li><p>The strings produced by these steps are those in the list
18821: <var title="">L</var>.</p></li>
18822:
18823: </ol><p>The <dfn id="dom-datatransfer-getdata" title="dom-DataTransfer-getData"><code>getData(<var title="">format</var>)</code></dfn> method
18824: must run the following steps:</p>
18825:
18826: <ol><li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18827: associated with a <a href="#drag-data-store">drag data store</a>, return the empty
18828: string and abort these steps.</p></li>
18829:
18830: <li><p>If the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data
18831: store mode">mode</a> is the <a href="#concept-dnd-p" title="concept-dnd-p">protected mode</a>, return the empty
18832: string and abort these steps.</p></li>
18833:
18834: <li><p>Let <var title="">format</var> be the first argument,
18835: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>.</p></li>
18836:
18837: <li><p>Let <var title="">convert-to-URL</var> be false.</p></li>
18838:
18839: <li><p>If <var title="">format</var> equals "<code title="">text</code>", change it to "<code title="">text/plain</code>".</p></li>
18840:
18841: <li><p>If <var title="">format</var> equals "<code title="">url</code>", change it to "<code title="">text/uri-list</code>" and set <var title="">convert-to-URL</var> to true.</p></li>
18842:
18843: <li><p>If there is no item in the <a href="#drag-data-store-item-list">drag data store item
18844: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a>
18845: is <i>Plain Unicode string</i> and whose <a href="#the-drag-data-item-type-string" title="the drag data
18846: item type string">type string</a> is equal to <var title="">format</var>, return the empty string and abort these
18847: steps.</p></li>
18848:
18849: <li><p>Let <var title="">result</var> be the data of the item
18850: in the <a href="#drag-data-store-item-list">drag data store item list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a> is <i>Plain Unicode
18851: string</i> and whose <a href="#the-drag-data-item-type-string" title="the drag data item type
18852: string">type string</a> is equal to <var title="">format</var>.</p></li>
18853:
18854: <li><p>If <var title="">convert-to-URL</var> is true, then parse
18855: <var title="">result</var> as appropriate for <code title="">text/uri-list</code> data, and then set <var title="">result</var> to the first URL from the list, if any, or
18856: the empty string otherwise. <a href="#refsRFC2483">[RFC2483]</a></p></li>
18857:
18858: <li><p>Return <var title="">result</var>.</p></li>
18859:
18860: </ol><p>The <dfn id="dom-datatransfer-setdata" title="dom-DataTransfer-setData"><code>setData(<var title="">format</var>, <var title="">data</var>)</code></dfn> method
18861: must run the following steps:</p>
18862:
18863: <ol><li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18864: associated with a <a href="#drag-data-store">drag data store</a>, abort these steps.
18865: Nothing happens.</p></li>
18866:
18867: <li><p>If the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data
18868: store mode">mode</a> is not the <a href="#concept-dnd-rw" title="concept-dnd-rw">read/write mode</a>, abort these steps.
18869: Nothing happens.</p></li>
18870:
18871: <li><p>Let <var title="">format</var> be the first argument,
18872: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>.</p></li>
18873:
18874: <li>
18875:
18876: <p>If <var title="">format</var> equals "<code title="">text</code>", change it to "<code title="">text/plain</code>".</p>
18877:
18878: <p>If <var title="">format</var> equals "<code title="">url</code>", change it to "<code title="">text/uri-list</code>".</p>
18879:
18880: </li>
18881:
18882: <li><p>Remove the item in the <a href="#drag-data-store-item-list">drag data store item
18883: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a>
18884: is <i>Plain Unicode string</i> and whose <a href="#the-drag-data-item-type-string" title="the drag data
18885: item type string">type string</a> is equal to <var title="">format</var>, if there is one.</p></li>
18886:
18887: <li><p>Add an item to the <a href="#drag-data-store-item-list">drag data store item list</a>
18888: whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a> is <i>Plain
18889: Unicode string</i>, whose <a href="#the-drag-data-item-type-string" title="the drag data item type
18890: string">type string</a> is equal to <var title="">format</var>,
18891: and whose data is the string given by the method's second
18892: argument.</p></li>
18893:
18894: </ol><p>The <dfn id="dom-datatransfer-cleardata" title="dom-DataTransfer-clearData"><code>clearData()</code></dfn>
18895: method must run the following steps:</p>
18896:
18897: <ol><li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18898: associated with a <a href="#drag-data-store">drag data store</a>, abort these steps.
18899: Nothing happens.</p></li>
18900:
18901: <li><p>If the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data
18902: store mode">mode</a> is not the <a href="#concept-dnd-rw" title="concept-dnd-rw">read/write mode</a>, abort these steps.
18903: Nothing happens.</p></li>
18904:
18905: <li><p>If the method was called with no arguments, remove each item
18906: in the <a href="#drag-data-store-item-list">drag data store item list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a> is <i>Plain Unicode
18907: string</i>, and abort these steps.</p></li>
18908:
18909: <li><p>Let <var title="">format</var> be the first argument,
18910: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>.</p></li>
18911:
18912: <li>
18913:
18914: <p>If <var title="">format</var> equals "<code title="">text</code>", change it to "<code title="">text/plain</code>".</p>
18915:
18916: <p>If <var title="">format</var> equals "<code title="">url</code>", change it to "<code title="">text/uri-list</code>".</p>
18917:
18918: </li>
18919:
18920: <li><p>Remove the item in the <a href="#drag-data-store-item-list">drag data store item
18921: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a>
18922: is <i>Plain Unicode string</i> and whose <a href="#the-drag-data-item-type-string" title="the drag data
18923: item type string">type string</a> is equal to <var title="">format</var>, if there is one.</p></li>
18924:
18925: </ol><p class="note">The <code title="dom-DataTransfer-clearData"><a href="#dom-datatransfer-cleardata">clearData()</a></code> method does
18926: not affect whether any files were included in the drag, so the <code title="dom-DataTransfer-types"><a href="#dom-datatransfer-types">types</a></code> attribute's list might
18927: still not be empty after calling <code title="dom-DataTransfer-clearData"><a href="#dom-datatransfer-cleardata">clearData()</a></code> (it would
18928: still contain the "<code title="">Files</code>" string if any files
18929: were included in the drag).</p>
18930:
18931: <p>The <dfn id="dom-datatransfer-files" title="dom-DataTransfer-files"><code>files</code></dfn>
18932: attribute must return a <a href="infrastructure.html#live">live</a> <code><a href="infrastructure.html#filelist">FileList</a></code>
18933: sequence consisting of <code><a href="infrastructure.html#file">File</a></code> objects representing the
18934: files found by the following steps. The same object must be returned
18935: each time. Furthermore, for a given <code><a href="infrastructure.html#filelist">FileList</a></code> object and
18936: a given underlying file, the same <code><a href="infrastructure.html#file">File</a></code> object must be
18937: used each time.</p>
18938:
18939: <ol><li><p>Start with an empty list <var title="">L</var>.</p></li>
18940:
18941: <li><p>If the <code><a href="#datatransfer">DataTransfer</a></code> object is no longer
18942: associated with a <a href="#drag-data-store">drag data store</a>, the
18943: <code><a href="infrastructure.html#filelist">FileList</a></code> is empty. Abort these steps; return the
18944: empty list <var title="">L</var>.</p></li>
18945:
18946: <li><p>If the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-mode" title="drag data
18947: store mode">mode</a> is the <a href="#concept-dnd-p" title="concept-dnd-p">protected mode</a>, abort these steps;
18948: return the empty list <var title="">L</var>.</p></li>
18949:
18950: <li><p>For each item in the <a href="#drag-data-store-item-list">drag data store item list</a>
18951: <!-- in some order...? --> whose <a href="#the-drag-data-item-kind" title="the drag data item
18952: kind">kind</a> is <i><a href="infrastructure.html#file">File</a></i> <!-- DND-v3: (not <i>Blob</i>) -->,
18953: add the item's data (the file, in particular its name and contents,
18954: as well as its <a href="#the-drag-data-item-type-string" title="the drag data item type
18955: string">type</a>) to the list <var title="">L</var>.</p></li>
18956:
18957: <!-- <li><p>Sort the list...?</p></li> -->
18958:
18959: <li><p>The files found by these steps are those in the list <var title="">L</var>.</p></li>
18960:
18961: </ol><p class="note">This version of the API does not expose the types of
18962: the files during the drag.</p>
18963:
18964: </div>
18965:
18966:
18967: <h5 id="the-datatransferitemlist-interface"><span class="secno">7.7.3.1 </span>The <code><a href="#datatransferitemlist">DataTransferItemList</a></code> interface</h5>
18968:
18969: <p>Each <code><a href="#datatransfer">DataTransfer</a></code> object is associated with a
18970: <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object.</p>
18971:
18972: <pre class="idl">interface <dfn id="datatransferitemlist">DataTransferItemList</dfn> {
18973: readonly attribute unsigned long <a href="#dom-datatransferitemlist-length" title="dom-DataTransferItemList-length">length</a>;
18974: <a href="#dom-datatransferitemlist-item" title="dom-DataTransferItemList-item">getter</a> <a href="#datatransferitem">DataTransferItem</a> (unsigned long index);
18975: <a href="#dom-datatransferitemlist-removeitem" title="dom-DataTransferItemList-removeItem">deleter</a> void (unsigned long index);
18976: void <a href="#dom-datatransferitemlist-clear" title="dom-DataTransferItemList-clear">clear</a>();
18977:
18978: <a href="#datatransferitem">DataTransferItem</a>? <a href="#dom-datatransferitemlist-add" title="dom-DataTransferItemList-add">add</a>(DOMString data, DOMString type);<!--
18979: DND-v3: <span>DataTransferItem</span>? <span title="dom-DataTransferItemList-add">add</span>(<span>Blob</span> data);-->
18980: <a href="#datatransferitem">DataTransferItem</a>? <a href="#dom-datatransferitemlist-add" title="dom-DataTransferItemList-add">add</a>(<a href="infrastructure.html#file">File</a> data);<!--
18981: DND-v4: <span>DataTransferItem</span>? <span title="dom-DataTransferItemList-add">add</span>(any data, DOMString type);--><!--
18982: DND-v5: <span>DataTransferItem</span>? <span title="dom-DataTransferItemList-add">add</span>(<span>DataTransferPromise</span> data);-->
18983: };</pre>
18984:
18985: <dl class="domintro"><dt><var title="">items</var> . <code title="dom-DataTransferItemList-length"><a href="#dom-datatransferitemlist-length">length</a></code></dt>
18986:
18987: <dd><p>Returns the number of items in the <a href="#drag-data-store">drag data store</a>.</p></dd>
18988:
18989:
18990: <dt><var title="">items</var>[<var title="">index</var>]</dt>
18991:
18992: <dd>
18993:
18994: <p>Returns the <code><a href="#datatransferitem">DataTransferItem</a></code> object representing the <var title="">index</var>th entry in the <a href="#drag-data-store">drag data store</a>.</p>
18995:
18996: </dd>
18997:
18998:
18999: <dt><code title="">delete</code> <var title="">items</var>[<var title="">index</var>]</dt>
19000:
19001: <dd>
19002:
19003: <p>Removes the <var title="">index</var>th entry in the <a href="#drag-data-store">drag data store</a>.</p>
19004:
19005: </dd>
19006:
19007:
19008: <dt><var title="">items</var> . <code title="dom-DataTransferItemList-clear"><a href="#dom-datatransferitemlist-clear">clear</a></code>()</dt>
19009:
19010: <dd>
19011:
19012: <p>Removes all the entries in the <a href="#drag-data-store">drag data store</a>.</p>
19013:
19014: </dd>
19015:
19016:
19017: <dt><var title="">items</var> . <code title="dom-DataTransferItemList-add"><a href="#dom-datatransferitemlist-add">add</a></code>(<var title="">data</var>)</dt>
19018: <dt><var title="">items</var> . <code title="dom-DataTransferItemList-add"><a href="#dom-datatransferitemlist-add">add</a></code>(<var title="">data</var>, <var title="">type</var>)</dt>
19019:
19020: <dd>
19021:
19022: <p>Adds a new entry for the given data to the <a href="#drag-data-store">drag data
19023: store</a>. If the data is plain text <!-- DND-v4: or an object -->
19024: then a <var title="">type</var> string has to be provided
19025: also.</p>
19026:
19027: </dd>
19028:
19029: </dl><div class="impl">
19030:
19031: <p>While the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object's
19032: <code><a href="#datatransfer">DataTransfer</a></code> object is associated with a <a href="#drag-data-store">drag
19033: data store</a>, the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object's
19034: <i>mode</i> is the same as the <a href="#drag-data-store-mode">drag data store mode</a>.
19035: When the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object's
19036: <code><a href="#datatransfer">DataTransfer</a></code> object is <em>not</em> associated with a
19037: <a href="#drag-data-store">drag data store</a>, the <code><a href="#datatransferitemlist">DataTransferItemList</a></code>
19038: object's <i>mode</i> is the <i>disabled mode</i>. The <a href="#drag-data-store">drag
19039: data store</a> referenced in this section (which is used only
19040: when the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object is not in the
19041: <i>disabled mode</i>) is the <a href="#drag-data-store">drag data store</a> with which
19042: the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object's
19043: <code><a href="#datatransfer">DataTransfer</a></code> object is associated.</p>
19044:
19045: <p>The <dfn id="dom-datatransferitemlist-length" title="dom-DataTransferItemList-length"><code>length</code></dfn>
19046: attribute must return zero if the object is in the <i>disabled
19047: mode</i>; otherwise it must return the number of items in the
19048: <a href="#drag-data-store-item-list">drag data store item list</a>.</p>
19049:
19050: <p>When a <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object is not in the
19051: <i>disabled mode</i>, its <a href="infrastructure.html#supported-property-indices">supported property indices</a>
19052: are the numbers in the range
19053:
19054: <span title="">0 .. <var title="">n</var>-1</span>,
19055:
19056: where <var title="">n</var> is the number of items in the <a href="#drag-data-store-item-list">drag
19057: data store item list</a>.</p>
19058:
19059: <p>To <dfn id="dom-datatransferitemlist-item" title="dom-DataTransferItemList-item">determine the value of
19060: an indexed property</dfn> <var title="">i</var> of a
19061: <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object, the user agent must return a
19062: <code><a href="#datatransferitem">DataTransferItem</a></code> object representing the <var title="">i</var>th item in the <a href="#drag-data-store">drag data store</a>. The
19063: same object must be returned each time a particular item is obtained
19064: from this <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object. The
19065: <code><a href="#datatransferitem">DataTransferItem</a></code> object must be associated with the
19066: same <code><a href="#datatransfer">DataTransfer</a></code> object as the
19067: <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object when it is first created.</p>
19068:
19069: <p>To <dfn id="dom-datatransferitemlist-removeitem" title="dom-DataTransferItemList-removeItem">delete an
19070: existing indexed property</dfn> <var title="">i</var> of a
19071: <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object, the user agent must run these
19072: steps:</p>
19073:
19074: <ol><li><p>If the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object is not in the
19075: <i title="concept-dnd-rw"><a href="#concept-dnd-rw">read/write mode</a></i>, throw an
19076: <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception and abort these
19077: steps.</p></li>
19078:
19079: <li><p>Remove the <var title="">i</var>th item from the <a href="#drag-data-store">drag
19080: data store</a>.</p></li>
19081:
19082: </ol><p>The <dfn id="dom-datatransferitemlist-clear" title="dom-DataTransferItemList-clear"><code>clear</code></dfn> method,
19083: if the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object is in the <i title="concept-dnd-rw"><a href="#concept-dnd-rw">read/write mode</a></i>, must remove all the
19084: items from the <a href="#drag-data-store">drag data store</a>. Otherwise, it must do
19085: nothing.</p>
19086:
19087: <p>The <dfn id="dom-datatransferitemlist-add" title="dom-DataTransferItemList-add"><code>add()</code></dfn> method
19088: must run the following steps:</p>
19089:
19090: <ol><li><p>If the <code><a href="#datatransferitemlist">DataTransferItemList</a></code> object is not in the
19091: <i title="concept-dnd-rw"><a href="#concept-dnd-rw">read/write mode</a></i>, return null and
19092: abort these steps.</p></li>
19093:
19094: <li>
19095:
19096: <p>Jump to the appropriate set of steps from the following list:</p>
19097:
19098: <dl class="switch"><dt>If the first argument to the method is a string</dt>
19099:
19100: <dd>
19101:
19102: <p>If there is already an item in the <a href="#drag-data-store-item-list">drag data store item
19103: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item
19104: kind">kind</a> is <i>Plain Unicode string</i> and whose <a href="#the-drag-data-item-type-string" title="the drag data item type string">type string</a> is
19105: equal to the value of the method's second argument,
19106: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>, then throw a
19107: <code><a href="infrastructure.html#notsupportederror">NotSupportedError</a></code> exception and abort these
19108: steps.</p>
19109:
19110: <p>Otherwise, add an item to the <a href="#drag-data-store-item-list">drag data store item
19111: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item
19112: kind">kind</a> is <i>Plain Unicode string</i>, whose <a href="#the-drag-data-item-type-string" title="the drag data item type string">type string</a> is
19113: equal to the value of the method's second argument,
19114: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>, and whose data is the
19115: string given by the method's first argument.</p>
19116:
19117: </dd>
19118:
19119: <!--DND-v3:
19120: <dt>If the first argument to the method is a <code>Blob</code></dt>
19121:
19122: <dd>
19123:
19124: <p>Add an item to the <span>drag data store item list</span>
19125: whose <span title="the drag data item kind">kind</span> is
19126: <i>Blob</i>, whose <span title="the drag data item type
19127: string">type string</span> is the <code
19128: title="dom-Blob-type">type</code> of the <code>Blob</code>,
19129: <span>converted to ASCII lowercase</span>, and whose data is the
19130: same as the <code>Blob</code>'s data.</p>
19131:
19132: </dd>
19133: -->
19134:
19135: <dt>If the first argument to the method is a <code><a href="infrastructure.html#file">File</a></code></dt>
19136:
19137: <dd>
19138:
19139: <p>Add an item to the <a href="#drag-data-store-item-list">drag data store item list</a>
19140: whose <a href="#the-drag-data-item-kind" title="the drag data item kind">kind</a> is
19141: <i><a href="infrastructure.html#file">File</a></i>, whose <a href="#the-drag-data-item-type-string" title="the drag data item type
19142: string">type string</a> is the <code title="dom-Blob-type">type</code> of the <code><a href="infrastructure.html#file">File</a></code>,
19143: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>, and whose data is the
19144: same as the <code><a href="infrastructure.html#file">File</a></code>'s data.</p>
19145:
19146: </dd>
19147:
19148: <!--DND-v4: (might want to prevent duplicates like for strings; see above)
19149: [make sure that the cloning happens before any side-effects can happen]
19150: <dt>Otherwise
19151:
19152: <dd>
19153:
19154: <p>Add an item to the <span>drag data store item list</span>
19155: whose <span title="the drag data item kind">kind</span> is
19156: <i>Object</i>, whose <span title="the drag data item type
19157: string">type string</span> is equal to the value of the method's
19158: second argument, <span>converted to ASCII lowercase</span>, and
19159: whose data is a <span>structured clone</span> of the method's
19160: first argument. If creating the clone throws an exception, then
19161: throw that exception and abort these steps.</p>
19162:
19163: </dd>
19164: -->
19165:
19166: </dl></li>
19167:
19168: <li><p><a href="#dom-datatransferitemlist-item" title="dom-DataTransferItemList-item">Determine the value
19169: of the indexed property</a> corresponding to the newly added
19170: item, and return that value (a newly created
19171: <code><a href="#datatransferitem">DataTransferItem</a></code> object).</p></li>
19172:
19173: </ol></div>
19174:
19175:
19176: <h5 id="the-datatransferitem-interface"><span class="secno">7.7.3.2 </span>The <code><a href="#datatransferitem">DataTransferItem</a></code> interface</h5>
19177:
19178: <p>Each <code><a href="#datatransferitem">DataTransferItem</a></code> object is associated with a
19179: <code><a href="#datatransfer">DataTransfer</a></code> object.</p>
19180:
19181: <pre class="idl">interface <dfn id="datatransferitem">DataTransferItem</dfn> {
19182: readonly attribute DOMString <a href="#dom-datatransferitem-kind" title="dom-DataTransferItem-kind">kind</a>;
19183: readonly attribute DOMString <a href="#dom-datatransferitem-type" title="dom-DataTransferItem-type">type</a>;
19184: void <a href="#dom-datatransferitem-getasstring" title="dom-DataTransferItem-getAsString">getAsString</a>(<a href="#functionstringcallback">FunctionStringCallback</a>? _callback);<!--
19185: DND-v3: <span>Blob</span> <span title="dom-DataTransferItem-getAsBlob">getAsBlob</span>();-->
19186: <a href="infrastructure.html#file">File</a>? <a href="#dom-datatransferitem-getasfile" title="dom-DataTransferItem-getAsFile">getAsFile</a>();<!--
19187: DND-v4: void <span title="dom-DataTransferItem-getAsObject">getAsObject</span>(<span>FunctionObjectCallback</span> _callback);-->
19188: };
19189:
19190: [Callback, NoInterfaceObject]
19191: interface <dfn id="functionstringcallback">FunctionStringCallback</dfn> {
19192: void <span title="dom-FunctionStringCallback-handleEvent">handleEvent</span>(DOMString data);
19193: };<!--
19194:
19195: // DND-v4:
19196: [Callback, NoInterfaceObject]
19197: interface <dfn>FunctionObjectCallback</dfn> {
19198: void <span title="dom-FunctionObjectCallback-handleEvent">handleEvent</span>(any data);
19199: };--></pre>
19200:
19201: <dl class="domintro"><dt><var title="">item</var> . <code title="dom-DataTransferItem-kind"><a href="#dom-datatransferitem-kind">kind</a></code></dt>
19202: <dd>
19203:
19204: <p>Returns <a href="#the-drag-data-item-kind">the drag data item kind</a>, one of: "string",
19205: <!-- DND-v3: "blob", --> "file"<!-- DND-v4: , "object" -->.</p>
19206:
19207: </dd>
19208:
19209: <dt><var title="">item</var> . <code title="dom-DataTransferItem-type"><a href="#dom-datatransferitem-type">type</a></code></dt>
19210: <dd>
19211:
19212: <p>Returns <a href="#the-drag-data-item-type-string">the drag data item type string</a>.</p>
19213:
19214: </dd>
19215:
19216: <dt><var title="">item</var> . <code title="dom-DataTransferItem-getAsString"><a href="#dom-datatransferitem-getasstring">getAsString</a></code>(<var title="">callback</var>)</dt>
19217: <dd>
19218:
19219: <p>Invokes the callback with the string data as the argument, if <a href="#the-drag-data-item-kind">the drag data item kind</a> is <i>Plain Unicode string</i>.</p>
19220:
19221: </dd>
19222:
19223: <!-- DND-v3:
19224: <dt><var title="">file</var> = <var title="">item</var> . <code title="dom-DataTransferItem-getAsBlob">getAsBlob</code>()</dt>
19225: <dd>
19226:
19227: <p>Returns a <code>Blob</code> object, if <span>the drag data item kind</span> is <i>Blob</i> or <i>File</i>.</p>
19228:
19229: </dd>
19230: -->
19231:
19232: <dt><var title="">file</var> = <var title="">item</var> . <code title="dom-DataTransferItem-getAsFile"><a href="#dom-datatransferitem-getasfile">getAsFile</a></code>()</dt>
19233: <dd>
19234:
19235: <p>Returns a <code><a href="infrastructure.html#file">File</a></code> object, if <a href="#the-drag-data-item-kind">the drag data item kind</a> is <i><a href="infrastructure.html#file">File</a></i>.</p>
19236:
19237: </dd>
19238:
19239: <!-- DND-v4:
19240: <dt><var title="">file</var> = <var title="">item</var> . <code title="dom-DataTransferItem-getAsObject">getAsObject</code>()</dt>
19241: <dd>
19242:
19243: <p>Invokes the callback with the cloned object data as the argument, if <span>the drag data item kind</span> is <i>Plain Unicode string</i> or <i>Object</i>.</p>
19244:
19245: </dd>
19246: -->
19247:
19248: </dl><div class="impl">
19249:
19250: <p>While the <code><a href="#datatransferitem">DataTransferItem</a></code> object's
19251: <code><a href="#datatransfer">DataTransfer</a></code> object is associated with a <a href="#drag-data-store">drag
19252: data store</a> and that <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-item-list">drag
19253: data store item list</a> still contains the item that the
19254: <code><a href="#datatransferitem">DataTransferItem</a></code> object represents, the
19255: <code><a href="#datatransferitem">DataTransferItem</a></code> object's <i>mode</i> is the same as
19256: the <a href="#drag-data-store-mode">drag data store mode</a>. When the
19257: <code><a href="#datatransferitem">DataTransferItem</a></code> object's <code><a href="#datatransfer">DataTransfer</a></code>
19258: object is <em>not</em> associated with a <a href="#drag-data-store">drag data
19259: store</a>, or if the item that the <code><a href="#datatransferitem">DataTransferItem</a></code>
19260: object represents has been removed from the relevant <a href="#drag-data-store-item-list">drag data
19261: store item list</a>, the <code><a href="#datatransferitem">DataTransferItem</a></code> object's
19262: <i>mode</i> is the <i>disabled mode</i>. The <a href="#drag-data-store">drag data
19263: store</a> referenced in this section (which is used only when the
19264: <code><a href="#datatransferitem">DataTransferItem</a></code> object is not in the <i>disabled
19265: mode</i>) is the <a href="#drag-data-store">drag data store</a> with which the
19266: <code><a href="#datatransferitem">DataTransferItem</a></code> object's <code><a href="#datatransfer">DataTransfer</a></code>
19267: object is associated.</p>
19268:
19269: <p>The <dfn id="dom-datatransferitem-kind" title="dom-DataTransferItem-kind"><code>kind</code></dfn> attribute
19270: must return the empty string if the <code><a href="#datatransferitem">DataTransferItem</a></code>
19271: object is in the <i>disabled mode</i>; otherwise it must return the
19272: string given in the cell from the second column of the following
19273: table from the row whose cell in the first column contains <a href="#the-drag-data-item-kind">the
19274: drag data item kind</a> of the item represented by the
19275: <code><a href="#datatransferitem">DataTransferItem</a></code> object:</p>
19276:
19277: <table><thead><tr><th> Kind </th><th> String
19278: </th></tr></thead><tbody><tr><td> <i>Plain Unicode string</i> </td><td> "<code title="">string</code>"
19279: <!-- DND-v3: <tr> <td> <i>Blob</i> <td> "<code title="">blob</code>"-->
19280: </td></tr><tr><td> <i><a href="infrastructure.html#file">File</a></i> </td><td> "<code title="">file</code>"
19281: <!-- DND-v4: <tr> <td> <i>Object</i> <td> "<code title="">object</code>"-->
19282: </td></tr></tbody></table><p>The <dfn id="dom-datatransferitem-type" title="dom-DataTransferItem-type"><code>type</code></dfn> attribute
19283: must return the empty string if the <code><a href="#datatransferitem">DataTransferItem</a></code>
19284: object is in the <i>disabled mode</i>; otherwise it must return
19285: <a href="#the-drag-data-item-type-string">the drag data item type string</a> of the item represented
19286: by the <code><a href="#datatransferitem">DataTransferItem</a></code> object.</p>
19287:
19288: <p>The <dfn id="dom-datatransferitem-getasstring" title="dom-DataTransferItem-getAsString"><code>getAsString(<var title="">callback</var>)</code></dfn> method must run the following
19289: steps:</p>
19290:
19291: <ol><li><p>If the <var title="">callback</var> is null, abort these
19292: steps.</p></li>
19293:
19294: <li><p>If the <code><a href="#datatransferitem">DataTransferItem</a></code> object is not in the <i title="concept-dnd-rw"><a href="#concept-dnd-rw">read/write mode</a></i> or the <i title="concept-dnd-ro"><a href="#concept-dnd-ro">read-only mode</a></i>, abort these steps. The
19295: callback is never invoked.</p></li>
19296:
19297: <li><p>If <a href="#the-drag-data-item-kind">the drag data item kind</a> is not <i>Plain
19298: Unicode string</i>, abort these steps. The callback is never
19299: invoked.</p></li>
19300:
19301: <li><p>Otherwise, <a href="#queue-a-task">queue a task</a> to invoke <var title="">callback</var>, passing the actual data of the item
19302: represented by the <code><a href="#datatransferitem">DataTransferItem</a></code> object as the
19303: argument.</p></li>
19304:
19305: </ol><!--DND-v3:
19306: <p>The <dfn
19307: title="dom-DataTransferItem-getAsBlob"><code>getAsBlob()</code></dfn>
19308: method must run the following steps:</p>
19309:
19310: <ol>
19311:
19312: <li><p>If the <code>DataTransferItem</code> object is not in the <i
19313: title="concept-dnd-rw">read/write mode</i> or the <i
19314: title="concept-dnd-ro">read-only mode</i>, return null and abort
19315: these steps.</p></li>
19316:
19317: <li>
19318:
19319: --><!--DND-v4:
19320: <p>If <span>the drag data item kind</span> is <i>Object</i>,
19321: return null.</p></li>
19322: --><!--DND-v3:
19323:
19324: <p>If <span>the drag data item kind</span> is <i>File</i>, then
19325: return a new <code>File</code> object representing the actual data
19326: of the item represented by the <code>DataTransferItem</code>
19327: object.</p>
19328:
19329: <p>If <span>the drag data item kind</span> is <i>Unicode Data
19330: string</i>, then return a new <code>Blob</code> object
19331: representing the actual data of the item represented by the
19332: <code>DataTransferItem</code> object, with the <code
19333: title="dom-Blob-type">type</code> of the <code>Blob</code> being
19334: <span>the drag data item type string</span> and with the binary
19335: data of the <code>Blob</code> object being the Unicode string
19336: encoded as UTF-8. <a href="#refsRFC3629">[RFC3629]</a></p>
19337:
19338: <p>Otherwise, <span>the drag data item kind</span> is <i>Blob</i>;
19339: return a new <code>Blob</code> object representing the actual data
19340: of the item represented by the <code>DataTransferItem</code>
19341: object.</p>
19342:
19343: </li>
19344:
19345: </ol>
19346: --><p>The <dfn id="dom-datatransferitem-getasfile" title="dom-DataTransferItem-getAsFile"><code>getAsFile()</code></dfn>
19347: method must run the following steps:</p>
19348:
19349: <ol><li><p>If the <code><a href="#datatransferitem">DataTransferItem</a></code> object is not in the <i title="concept-dnd-rw"><a href="#concept-dnd-rw">read/write mode</a></i> or the <i title="concept-dnd-ro"><a href="#concept-dnd-ro">read-only mode</a></i>, return null and abort
19350: these steps.</p></li>
19351:
19352: <li><p>If <a href="#the-drag-data-item-kind">the drag data item kind</a> is not <i><a href="infrastructure.html#file">File</a></i>,
19353: then return null and abort these steps.</p></li>
19354:
19355: <li><p>Return a new <code><a href="infrastructure.html#file">File</a></code> object representing the
19356: actual data of the item represented by the
19357: <code><a href="#datatransferitem">DataTransferItem</a></code> object.</p>
19358:
19359: </li></ol><!--DND-v4:
19360: <p>The <dfn
19361: title="dom-DataTransferItem-getAsObject"><code>getAsObject(<var
19362: title="">callback</var>)</code></dfn> method must run the following
19363: steps:</p>
19364:
19365: <ol>
19366:
19367: <li><p>If the <code>DataTransferItem</code> object is not in the <i
19368: title="concept-dnd-rw">read/write mode</i> or the <i
19369: title="concept-dnd-ro">read-only mode</i>, return null and abort
19370: these steps.</p></li>
19371:
19372: <li>
19373:
19374: <p>Let <var title="">data</var> be the actual data of the item
19375: represented by the <code>DataTransferItem</code> object.</p>
19376:
19377: <p>If <span>the drag data item kind</span> is <i>Unicode Data
19378: string</i>, then <var title="">data</var> is a <code
19379: title="">DOMString</code> containing the actual data.</p>
19380:
19381: <p>If <span>the drag data item kind</span> is <i>Blob</i>, then
19382: <var title="">data</var> is a <code>Blob</code> representing the
19383: actual data.</p>
19384:
19385: <p>If <span>the drag data item kind</span> is <i>File</i>, then
19386: <var title="">data</var> is a <code>File</code> representing the
19387: actual data.</p>
19388:
19389: <p>If <span>the drag data item kind</span> is <i>Object</i>, then
19390: <var title="">data</var> is the object that is the actual
19391: data.</p>
19392:
19393: </li>
19394:
19395: <li><span>Queue a task</span> to invoke <var
19396: title="">callback</var>, passing a <span>structured clone</span> of
19397: <var title="">data</var> as the argument.</p></li>
19398:
19399: </ol>
19400: --></div>
19401:
19402:
19403:
19404: <h4 id="the-dragevent-interface"><span class="secno">7.7.4 </span>The <code><a href="#dragevent">DragEvent</a></code> interface</h4>
19405:
19406: <p>The drag-and-drop processing model involves several events. They
19407: all use the <code><a href="#dragevent">DragEvent</a></code> interface.</p>
19408:
19409: <pre class="idl">[Constructor(DOMString type, optional <a href="#drageventinit">DragEventInit</a> eventInitDict)]
19410: interface <dfn id="dragevent">DragEvent</dfn> : <a href="infrastructure.html#mouseevent-10">MouseEvent</a> {
19411: readonly attribute <a href="#datatransfer">DataTransfer</a>? <a href="#dom-dragevent-datatransfer" title="dom-DragEvent-dataTransfer">dataTransfer</a>;
19412: };
19413:
19414: dictionary <dfn id="drageventinit">DragEventInit</dfn> : <a href="infrastructure.html#eventinit">EventInit</a> {
19415: // Attributes from UIEvent:
19416: <a href="#window">Window</a>? <a href="infrastructure.html#dom-uievent-view" title="dom-UIEvent-view">view</a> = null;
19417: long <a href="infrastructure.html#dom-uievent-detail" title="dom-UIEvent-detail">detail</a> = 0;
19418: // Attributes for MouseEvent:
19419: long <a href="infrastructure.html#dom-mouseevent-screenx" title="dom-MouseEvent-screenX">screenX</a> = 0;
19420: long <a href="infrastructure.html#dom-mouseevent-screeny" title="dom-MouseEvent-screenY">screenY</a> = 0;
19421: long <a href="infrastructure.html#dom-mouseevent-clientx" title="dom-MouseEvent-clientX">clientX</a> = 0;
19422: long <a href="infrastructure.html#dom-mouseevent-clienty" title="dom-MouseEvent-clientY">clientY</a> = 0;
19423: boolean <a href="infrastructure.html#dom-mouseevent-ctrlkey" title="dom-MouseEvent-ctrlKey">ctrlKey</a> = false;
19424: boolean <a href="infrastructure.html#dom-mouseevent-shiftkey" title="dom-MouseEvent-shiftKey">shiftKey</a> = false;
19425: boolean <a href="infrastructure.html#dom-mouseevent-altkey" title="dom-MouseEvent-altKey">altKey</a> = false;
19426: boolean <a href="infrastructure.html#dom-mouseevent-metakey" title="dom-MouseEvent-metaKey">metaKey</a> = false;
19427: unsigned short <a href="infrastructure.html#dom-mouseevent-button" title="dom-MouseEvent-button">button</a> = 0;
19428: unsigned short <a href="infrastructure.html#dom-mouseevent-buttons" title="dom-MouseEvent-buttons">buttons</a> = 0;
19429: EventTarget? <a href="infrastructure.html#dom-mouseevent-relatedtarget" title="dom-MouseEvent-relatedTarget">relatedTarget</a> = null;
19430: // Attributes for <a href="#dragevent">DragEvent</a>:
19431: <a href="#datatransfer">DataTransfer</a>? dataTransfer;
19432: };</pre>
19433:
19434: <dl class="domintro"><dt><var title="">event</var> . <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code></dt>
19435:
19436: <dd>
19437:
19438: <p>Returns the <code><a href="#datatransfer">DataTransfer</a></code> object for the event.</p>
19439:
19440: </dd>
19441:
19442: </dl><div class="impl">
19443:
19444: <p>The <dfn id="dom-dragevent-datatransfer" title="dom-DragEvent-dataTransfer"><code>dataTransfer</code></dfn>
19445: attribute of the <code><a href="#dragevent">DragEvent</a></code> interface must return the
19446: value it was initialized to. When the object is created, this
19447: attribute must be initialized to null. It represents the context
19448: information for the event.</p>
19449:
19450: </div>
19451:
19452: <div class="impl">
19453:
19454: <p>When a user agent is required to <dfn id="fire-a-dnd-event">fire a DND event</dfn>
19455: named <var title="">e</var> at an element, using a particular
19456: <a href="#drag-data-store">drag data store</a>, the user agent must run the following
19457: steps:</p>
19458:
19459: <ol><li>
19460:
19461: <p>If <var title="">e</var> is <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code>, set the <a href="#drag-data-store-mode">drag data
19462: store mode</a> to the <a href="#concept-dnd-rw" title="concept-dnd-rw">read/write
19463: mode</a>.</p>
19464:
19465: <p>If <var title="">e</var> is <code title="event-drop"><a href="#event-drop">drop</a></code>, set the <a href="#drag-data-store-mode">drag data store
19466: mode</a> to the <a href="#concept-dnd-ro" title="concept-dnd-ro">read-only
19467: mode</a>.</p>
19468:
19469: </li>
19470:
19471: <li><p>Let <var title="">dataTransfer</var> be a newly created
19472: <code><a href="#datatransfer">DataTransfer</a></code> object associated with the given
19473: <a href="#drag-data-store">drag data store</a>.</p></li>
19474:
19475: <li><p id="effectAllowed-initialization">Set the <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
19476: attribute to the <a href="#drag-data-store">drag data store</a>'s <a href="#drag-data-store-allowed-effects-state">drag data
19477: store allowed effects state</a>.</p></li>
19478:
19479: <li>
19480:
19481: <p id="dropEffect-initialization">Set the <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> attribute to
19482: "<code title="">none</code>" if <var title="">e</var> is <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code>, <code title="event-drag"><a href="#event-drag">drag</a></code>, or <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code>; to the value
19483: corresponding to the <a href="#current-drag-operation">current drag operation</a> if <var title="">e</var> is <code title="event-drop"><a href="#event-drop">drop</a></code> or <code title="event-dragend"><a href="#event-dragend">dragend</a></code>; and to a value based on the
19484: <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
19485: attribute's value and to the drag-and-drop source, as given by the
19486: following table, otherwise (i.e. if <var title="">e</var> is <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> or <code title="event-dragover"><a href="#event-dragover">dragover</a></code>):</p>
19487:
19488: <table><thead><tr><th><code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code></th>
19489: <th><code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code></th>
19490: </tr></thead><tr><td>"<code title="">none</code>"</td>
19491: <td>"<code title="">none</code>"</td>
19492: </tr><tr><td>"<code title="">copy</code>"</td>
19493: <td>"<code title="">copy</code>"</td>
19494: </tr><tr><td>"<code title="">copyLink</code>"</td>
19495: <td>"<code title="">copy</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, "<code title="">link</code>"</td>
19496: </tr><tr><td>"<code title="">copyMove</code>"</td>
19497: <td>"<code title="">copy</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, "<code title="">move</code>"</td>
19498: </tr><tr><td>"<code title="">all</code>"</td>
19499: <td>"<code title="">copy</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, either "<code title="">link</code>" or "<code title="">move</code>"</td>
19500: </tr><tr><td>"<code title="">link</code>"</td>
19501: <td>"<code title="">link</code>"</td>
19502: </tr><tr><td>"<code title="">linkMove</code>"</td>
19503: <td>"<code title="">link</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, "<code title="">move</code>"</td>
19504: </tr><tr><td>"<code title="">move</code>"</td>
19505: <td>"<code title="">move</code>"</td>
19506: </tr><tr><td>"<code title="">uninitialized</code>" when what is being dragged is a selection from a text field</td>
19507: <td>"<code title="">move</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, either "<code title="">copy</code>" or "<code title="">link</code>"</td>
19508: </tr><tr><td>"<code title="">uninitialized</code>" when what is being dragged is a selection</td>
19509: <td>"<code title="">copy</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, either "<code title="">link</code>" or "<code title="">move</code>"</td>
19510: </tr><tr><td>"<code title="">uninitialized</code>" when what is being dragged is an <code><a href="the-a-element.html#the-a-element">a</a></code> element with an <code>href</code> attribute</td>
19511: <td>"<code title="">link</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, either "<code title="">copy</code>" or "<code title="">move</code>"</td>
19512: </tr><tr><td>Any other case</td>
19513: <td>"<code title="">copy</code>", or, <a href="#concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">if appropriate</a>, either "<code title="">link</code>" or "<code title="">move</code>"</td>
19514: </tr></table><p>Where the table above provides <dfn id="concept-platform-dropeffect-override" title="concept-platform-dropEffect-override">possibly appropriate
19515: alternatives</dfn>, user agents may instead use the listed
19516: alternative values if platform conventions dictate that the user
19517: has requested those alternate effects.</p>
19518:
19519: <p class="example">For example, Windows platform conventions are
19520: such that dragging while holding the "alt" key indicates a
19521: preference for linking the data, rather than moving or copying it.
19522: Therefore, on a Windows system, if "<code title="">link</code>" is
19523: an option according to the table above while the "alt" key is
19524: depressed, the user agent could select that instead of "<code title="">copy</code>" or "<code title="">move</code>.</p>
19525:
19526: </li>
19527:
19528: <li>
19529:
19530: <p>Create a <code><a href="#dragevent">DragEvent</a></code> object and initialize it to
19531: have the given name <var title="">e</var>, to bubble, to be
19532: cancelable unless <var title="">e</var> is <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code> or <code title="event-dragend"><a href="#event-dragend">dragend</a></code>, and to have the <code title="dom-UIEvent-detail"><a href="infrastructure.html#dom-uievent-detail">detail</a></code> attribute initialized to
19533: zero, the mouse and key attributes initialized according to the
19534: state of the input devices as they would be for user interaction
19535: events, the <code title="">relatedTarget</code> attribute
19536: initialized to null, and the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> attribute
19537: initialized to <var title="">dataTransfer</var>, the
19538: <code><a href="#datatransfer">DataTransfer</a></code> object created above.</p>
19539:
19540: <!-- interaction event spec point -->
19541:
19542: <p>If there is no relevant pointing device, the object must have
19543: its <code title="">screenX</code>, <code title="">screenY</code>,
19544: <code title="">clientX</code>, <code title="">clientY</code>, and
19545: <code title="">button</code> attributes set to 0.</p>
19546:
19547: </li>
19548:
19549: <li><p>Dispatch the newly created <code><a href="#dragevent">DragEvent</a></code> object at
19550: the specified target element.</p></li>
19551:
19552: <li><p>Set the <a href="#drag-data-store-allowed-effects-state">drag data store allowed effects state</a>
19553: to the current value of <var title="">dataTransfer</var>'s <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
19554: attribute. (It can only have changed value if <var title="">e</var>
19555: is <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code>.)</p></li>
19556:
19557: <li><p>Set the <a href="#drag-data-store-mode">drag data store mode</a> back to the <a href="#concept-dnd-p" title="concept-dnd-p">protected mode</a> if it was changed in
19558: the first step.</p></li>
19559:
19560: <li><p>Break the association between <var title="">dataTransfer</var> and the <a href="#drag-data-store">drag data
19561: store</a>.</p></li>
19562:
19563: </ol></div>
19564:
19565:
19566: <div class="impl">
19567:
19568: <h4 id="drag-and-drop-processing-model"><span class="secno">7.7.5 </span>Drag-and-drop processing model</h4>
19569:
19570: <p>When the user attempts to begin a drag operation, the user agent
19571: must run the following steps. User agents must act as if these steps
19572: were run even if the drag actually started in another document or
19573: application and the user agent was not aware that the drag was
19574: occuring until it intersected with a document under the user agent's
19575: purview.</p>
19576:
19577: <ol><li>
19578:
19579: <p>Determine what is being dragged, as follows:</p>
19580:
19581: <p>If the drag operation was invoked on a selection, then it is
19582: the selection that is being dragged.</p>
19583:
19584: <p>Otherwise, if the drag operation was invoked on a
19585: <code><a href="dom.html#document">Document</a></code>, it is the first element, going up the
19586: ancestor chain, starting at the node that the user tried to drag,
19587: that has the IDL attribute <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> set to true. If there is no
19588: such element, then nothing is being dragged; abort these steps,
19589: the drag-and-drop operation is never started.</p>
19590:
19591: <p>Otherwise, the drag operation was invoked outside the user
19592: agent's purview. What is being dragged is defined by the document
19593: or application where the drag was started.</p>
19594:
19595: <p class="note"><code><a href="the-img-element.html#the-img-element">img</a></code> elements and <code><a href="the-a-element.html#the-a-element">a</a></code>
19596: elements with an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>
19597: attribute have their <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code>
19598: attribute set to true by default.</p>
19599:
19600: </li>
19601:
19602: <li><p><a href="#create-a-drag-data-store">Create a drag data store</a>. All the DND events
19603: fired subsequently by the steps in this section must use this
19604: <a href="#drag-data-store">drag data store</a>.</p></li>
19605:
19606: <li>
19607:
19608: <p>Establish which DOM node is the <dfn id="source-node">source node</dfn>, as
19609: follows:</p>
19610:
19611: <p>If it is a selection that is being dragged, then the
19612: <a href="#source-node">source node</a> is the <code><a href="infrastructure.html#text-0">Text</a></code> node that the
19613: user started the drag on (typically the <code><a href="infrastructure.html#text-0">Text</a></code> node
19614: that the user originally clicked). If the user did not specify a
19615: particular node, for example if the user just told the user agent
19616: to begin a drag of "the selection", then the <a href="#source-node">source
19617: node</a> is the first <code><a href="infrastructure.html#text-0">Text</a></code> node containing a part
19618: of the selection.</p>
19619:
19620: <p>Otherwise, if it is an element that is being dragged, then the
19621: <a href="#source-node">source node</a> is the element that is being dragged.</p>
19622:
19623: <p>Otherwise, the <a href="#source-node">source node</a> is part of another
19624: document or application. When this specification requires that an
19625: event be dispatched at the <a href="#source-node">source node</a> in this case,
19626: the user agent must instead follow the platform-specific
19627: conventions relevant to that situation.</p>
19628:
19629: <p class="note">Multiple events are fired on the <a href="#source-node">source
19630: node</a> during the course of the drag-and-drop operation.</p>
19631:
19632: </li>
19633:
19634: <li>
19635:
19636: <p>Determine the <dfn id="list-of-dragged-nodes">list of dragged nodes</dfn>, as follows:</p>
19637:
19638: <p>If it is a selection that is being dragged, then the <a href="#list-of-dragged-nodes">list
19639: of dragged nodes</a> contains, in <a href="infrastructure.html#tree-order">tree order</a>,
19640: every node that is partially or completely included in the
19641: selection (including all their ancestors).</p>
19642:
19643: <p>Otherwise, the <a href="#list-of-dragged-nodes">list of dragged nodes</a> contains only
19644: the <a href="#source-node">source node</a>, if any.</p>
19645:
19646: </li>
19647:
19648: <li>
19649:
19650: <p>If it is a selection that is being dragged, then add an item to
19651: the <a href="#drag-data-store-item-list">drag data store item list</a>, with its properties
19652: set as follows:</p>
19653:
19654: <dl><dt><a href="#the-drag-data-item-type-string">The drag data item type string</a>
19655: </dt><dd>"<code>text/plain</code>"</dd>
19656:
19657: <dt><a href="#the-drag-data-item-kind">The drag data item kind</a>
19658: </dt><dd><i>Plain Unicode string</i></dd>
19659:
19660: <dt>The actual data</dt>
19661: <dd>The text of the selection</dd>
19662:
19663: </dl><p>Otherwise, if any files are being dragged, then add one item
19664: per file to the <a href="#drag-data-store-item-list">drag data store item list</a>, with their
19665: properties set as follows:</p>
19666:
19667: <dl><dt><a href="#the-drag-data-item-type-string">The drag data item type string</a>
19668: </dt><dd>The MIME type of the file, if known, or "<code>application/octet-stream</code>" otherwise.</dd>
19669:
19670: <dt><a href="#the-drag-data-item-kind">The drag data item kind</a>
19671: </dt><dd><i><a href="infrastructure.html#file">File</a></i></dd>
19672:
19673: <dt>The actual data</dt>
19674: <dd>The file's contents and name.</dd>
19675:
19676: </dl><p class="note">Dragging files can currently only happen from
19677: outside a <a href="#browsing-context">browsing context</a>, for example from a file
19678: system manager application.</p>
19679:
19680: <p>If the drag initiated outside of the application, the user
19681: agent must add items to the <a href="#drag-data-store-item-list">drag data store item list</a>
19682: as appropriate for the data being dragged, honoring platform
19683: conventions where appropriate; however, if the platform
19684: conventions do not use <a href="infrastructure.html#mime-type" title="MIME type">MIME types</a>
19685: to label dragged data, the user agent must make a best-effort
19686: attempt to map the types to MIME types, and, in any case, all the
19687: <a href="#the-drag-data-item-type-string" title="the drag data item type string">drag data item type
19688: strings</a> must be <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII
19689: lowercase</a>.</p>
19690:
19691: <p>User agents may also add one or more items representing the
19692: selection or dragged element(s) in other forms, e.g. as HTML.</p>
19693:
19694: </li>
19695:
19696: <!-- DND-v2: text/html as an export format -->
19697:
19698: <!--MD-->
19699:
19700: <li>Perform <dfn id="drag-and-drop-initialization-steps">drag-and-drop initialization steps</dfn> defined
19701: in any <a href="infrastructure.html#other-applicable-specifications">other applicable specifications</a>.</li>
19702:
19703: <!--MD-->
19704:
19705: <li>
19706:
19707: <p>Run the following substeps:</p>
19708:
19709: <ol><li><p>Let <var title="">urls</var> be an empty list of <a href="urls.html#absolute-url" title="absolute URL">absolute URLs</a>.</p></li>
19710:
19711: <li>
19712:
19713: <p>For each <var title="">node</var> in the <a href="#list-of-dragged-nodes">list of
19714: dragged nodes</a>:</p>
19715:
19716: <dl><dt>If the node is an <code><a href="the-a-element.html#the-a-element">a</a></code> element with an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute</dt>
19717:
19718: <dd>Add to <var title="">urls</var> the result of <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> the element's <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> content attribute
19719: relative to the element.</dd>
19720:
19721: <dt>If the node is an <code><a href="the-img-element.html#the-img-element">img</a></code> element with an <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute</dt>
19722:
19723: <dd>Add to <var title="">urls</var> the result of <a href="urls.html#resolve-a-url" title="resolve a url">resolving</a> the element's <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> content attribute relative to
19724: the element.</dd>
19725:
19726: <!-- DND-v2: more -->
19727:
19728: </dl></li>
19729:
19730: <li><p>If <var title="">urls</var> is still empty, abort these
19731: substeps.</p></li>
19732:
19733: <li><p>Let <var title="">url string</var> be the result of
19734: concatenating the strings in <var title="">urls</var>, in the
19735: order they were added, separated by a U+000D CARRIAGE RETURN
19736: U+000A LINE FEED character pair (CRLF).</p></li>
19737:
19738: <li><p>Add one item to the <a href="#drag-data-store-item-list">drag data store item
19739: list</a>, with its properties set as follows:</p>
19740:
19741: <dl><dt><a href="#the-drag-data-item-type-string">The drag data item type string</a>
19742: </dt><dd><code>text/uri-list</code></dd>
19743:
19744: <dt><a href="#the-drag-data-item-kind">The drag data item kind</a>
19745: </dt><dd><i>Plain Unicode string</i></dd>
19746:
19747: <dt>The actual data</dt>
19748: <dd><var title="">url string</var></dd>
19749:
19750: </dl></li>
19751:
19752: </ol></li>
19753:
19754: <li>
19755:
19756: <p>Update the <a href="#drag-data-store-default-feedback">drag data store default feedback</a> as
19757: appropriate for the user agent (if the user is dragging the
19758: selection, then the selection would likely be the basis for this
19759: feedback; if the user is dragging an element, then that element's
19760: rendering would be used; if the drag began outside the user agent,
19761: then the platform conventions for determining the drag feedback
19762: should be used).</p>
19763:
19764: </li>
19765:
19766: <li>
19767:
19768: <p><a href="#fire-a-dnd-event">Fire a DND event</a> named <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> at the <a href="#source-node">source
19769: node</a>.</p>
19770:
19771: <p>If the event is canceled, then the drag-and-drop operation
19772: should not occur; abort these steps.</p> <!-- only a should
19773: because the UA can always allow the user to drag without the page
19774: knowing -->
19775:
19776: <p class="note">Since events with no event listeners registered
19777: are, almost by definition, never canceled, drag-and-drop is always
19778: available to the user if the author does not specifically prevent
19779: it.</p>
19780:
19781: </li>
19782:
19783: <li>
19784:
19785: <p><a href="#initiate-the-drag-and-drop-operation">Initiate the drag-and-drop operation</a> in a manner
19786: consistent with platform conventions, and as described below.</p>
19787:
19788: <p id="base-dnd-feedback">The drag-and-drop feedback must be
19789: generated from the first of the following sources that is
19790: available:</p>
19791:
19792: <ol><li>The <a href="#drag-data-store-bitmap">drag data store bitmap</a>, if any. In this
19793: case, the <a href="#drag-data-store-hot-spot-coordinate">drag data store hot spot coordinate</a> should
19794: be used as hints for where to put the cursor relative to the
19795: resulting image. The values are expressed as distances in CSS
19796: pixels from the left side and from the top side of the image
19797: respectively. <a href="#refsCSS">[CSS]</a></li>
19798:
19799: <li>The <a href="#drag-data-store-default-feedback">drag data store default feedback</a>.</li>
19800:
19801: </ol></li>
19802:
19803: </ol><p>From the moment that the user agent is to <dfn id="initiate-the-drag-and-drop-operation">initiate the
19804: drag-and-drop operation</dfn>, until the end of the drag-and-drop
19805: operation, device input events (e.g. mouse and keyboard events) must
19806: be suppressed.</p>
19807:
19808: <p>During the drag operation, the element directly indicated by the
19809: user as the drop target is called the <dfn id="immediate-user-selection">immediate user
19810: selection</dfn>. (Only elements can be selected by the user; other
19811: nodes must not be made available as drop targets.) However, the
19812: <a href="#immediate-user-selection">immediate user selection</a> is not necessarily the
19813: <dfn id="current-target-element">current target element</dfn>, which is the element currently
19814: selected for the drop part of the drag-and-drop operation.</p>
19815:
19816: <p>The <a href="#immediate-user-selection">immediate user selection</a> changes as the user
19817: selects different elements (either by pointing at them with a
19818: pointing device, or by selecting them in some other way). The
19819: <a href="#current-target-element">current target element</a> changes when the <a href="#immediate-user-selection">immediate
19820: user selection</a> changes, based on the results of event
19821: listeners in the document, as described below.</p>
19822:
19823: <p>Both the <a href="#current-target-element">current target element</a> and the
19824: <a href="#immediate-user-selection">immediate user selection</a> can be null, which means no
19825: target element is selected. They can also both be elements in other
19826: (DOM-based) documents, or other (non-Web) programs altogether. (For
19827: example, a user could drag text to a word-processor.) The
19828: <a href="#current-target-element">current target element</a> is initially null.</p>
19829:
19830: <p>In addition, there is also a <dfn id="current-drag-operation">current drag operation</dfn>,
19831: which can take on the values "<code title="">none</code>", "<code title="">copy</code>", "<code title="">link</code>", and "<code title="">move</code>". Initially, it has the value "<code title="">none</code>". It is updated by the user agent as described
19832: in the steps below.</p>
19833:
19834: <p>User agents must, as soon as the drag operation is <a href="#initiate-the-drag-and-drop-operation" title="initiate the drag-and-drop operation">initiated</a> and
19835: every 350ms (±200ms) thereafter for as long as the drag
19836: operation is ongoing, <a href="#queue-a-task">queue a task</a> to perform the
19837: following steps in sequence:</p>
19838:
19839: <ol><li>
19840:
19841: <p>If the user agent is still performing the previous iteration of
19842: the sequence (if any) when the next iteration becomes due, abort
19843: these steps for this iteration (effectively "skipping missed
19844: frames" of the drag-and-drop operation).</p>
19845:
19846: </li>
19847:
19848: <li>
19849:
19850: <p><a href="#fire-a-dnd-event">Fire a DND event</a> named <code title="event-drag"><a href="#event-drag">drag</a></code> event at the <a href="#source-node">source
19851: node</a>. If this event is canceled, the user agent must set
19852: the <a href="#current-drag-operation">current drag operation</a> to "<code title="">none</code>" (no drag operation).</p>
19853:
19854: </li>
19855:
19856: <li>
19857:
19858: <p>If the <code title="event-drag"><a href="#event-drag">drag</a></code> event was not
19859: canceled and the user has not ended the drag-and-drop operation,
19860: check the state of the drag-and-drop operation, as follows:</p>
19861:
19862: <ol><li>
19863:
19864: <p>If the user is indicating a different <a href="#immediate-user-selection">immediate user
19865: selection</a> than during the last iteration (or if this is
19866: the first iteration), and if this <a href="#immediate-user-selection">immediate user
19867: selection</a> is not the same as the <a href="#current-target-element">current target
19868: element</a>, then update the <a href="#current-target-element">current target
19869: element</a> as follows:</p>
19870:
19871: <dl class="switch"><dt>If the new <a href="#immediate-user-selection">immediate user selection</a> is null</dt>
19872:
19873: <dd><p>Set the <a href="#current-target-element">current target element</a> to null
19874: also.</p></dd>
19875:
19876: <dt>If the new <a href="#immediate-user-selection">immediate user selection</a> is in a
19877: non-DOM document or application</dt>
19878:
19879: <dd><p>Set the <a href="#current-target-element">current target element</a> to the
19880: <a href="#immediate-user-selection">immediate user selection</a>.</p></dd>
19881:
19882: <dt>Otherwise</dt>
19883:
19884: <dd>
19885:
19886: <p><a href="#fire-a-dnd-event">Fire a DND event</a> named <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> at the
19887: <a href="#immediate-user-selection">immediate user selection</a>.</p>
19888:
19889: <p>If the event is canceled, then set the <a href="#current-target-element">current target
19890: element</a> to the <a href="#immediate-user-selection">immediate user
19891: selection</a>.</p>
19892:
19893: <p>Otherwise, run the appropriate step from the following
19894: list:</p>
19895:
19896: <dl class="switch"><dt>If the <a href="#immediate-user-selection">immediate user selection</a> is a text
19897: field (e.g. <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>, or an <code><a href="the-input-element.html#the-input-element">input</a></code>
19898: element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>
19899: attribute is in the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a> state) or an
19900: <a href="#editing-host">editing host</a> or <a href="#editable">editable</a> element,
19901: and the <a href="#drag-data-store-item-list">drag data store item list</a> has an item
19902: with <a href="#the-drag-data-item-type-string">the drag data item type string</a>
19903: "<code>text/plain</code>" and <a href="#the-drag-data-item-kind">the drag data item
19904: kind</a> <i>Plain Unicode string</i></dt>
19905:
19906: <dd><p>Set the <a href="#current-target-element">current target element</a> to the
19907: <a href="#immediate-user-selection">immediate user selection</a> anyway.</p></dd>
19908:
19909:
19910: <dt>If the <a href="#immediate-user-selection">immediate user selection</a> is an element
19911: with a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute
19912: that <a href="#concept-dropzone-match" title="concept-dropzone-match">matches</a> the
19913: <a href="#drag-data-store">drag data store</a></dt>
19914:
19915: <dd><p>Set the <a href="#current-target-element">current target element</a> to the
19916: <a href="#immediate-user-selection">immediate user selection</a> anyway.</p></dd>
19917:
19918:
19919: <dt>If the <a href="#immediate-user-selection">immediate user selection</a> is an element
19920: that itself has an ancestor element with a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute that <a href="#concept-dropzone-match" title="concept-dropzone-match">matches</a> the <a href="#drag-data-store">drag
19921: data store</a></dt>
19922:
19923: <dd>
19924:
19925: <p>Let <var title="">new target</var> be the nearest
19926: (deepest) such ancestor element.</p>
19927:
19928: <p>If the <a href="#immediate-user-selection">immediate user selection</a> is <var title="">new target</var>, then leave the <a href="#current-target-element">current
19929: target element</a> unchanged.</p>
19930:
19931: <p>Otherwise, <a href="#fire-a-dnd-event">fire a DND event</a> named <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> at <var title="">new target</var>. Then, set the <a href="#current-target-element">current
19932: target element</a> to <var title="">new target</var>
19933:
19934: </p></dd>
19935:
19936:
19937: <dt>If the <a href="#immediate-user-selection">immediate user selection</a> is
19938: <a href="dom.html#the-body-element-0">the body element</a></dt>
19939:
19940: <dd><p>Leave the <a href="#current-target-element">current target element</a>
19941: unchanged.</p></dd>
19942:
19943:
19944: <dt>Otherwise</dt>
19945:
19946: <dd>
19947:
19948: <p><a href="#fire-a-dnd-event">Fire a DND event</a> named <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> at <a href="dom.html#the-body-element-0">the body
19949: element</a>, if there is one, or at the
19950: <code><a href="dom.html#document">Document</a></code> object, if not. Then, set the
19951: <a href="#current-target-element">current target element</a> to <a href="dom.html#the-body-element-0">the body
19952: element</a>, regardless of whether that event was
19953: canceled or not.</p>
19954:
19955: </dd>
19956:
19957: </dl></dd>
19958:
19959: </dl></li>
19960:
19961: <li>
19962:
19963: <p>If the previous step caused the <a href="#current-target-element">current target
19964: element</a> to change, and if the previous target element was
19965: not null or a part of a non-DOM document, then <a href="#fire-a-dnd-event">fire a DND
19966: event</a> named <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code> at the previous target
19967: element.</p>
19968:
19969: </li>
19970:
19971: <li>
19972:
19973: <p>If the <a href="#current-target-element">current target element</a> is a DOM element,
19974: then <a href="#fire-a-dnd-event">fire a DND event</a> named <code title="event-dragover"><a href="#event-dragover">dragover</a></code> at this <a href="#current-target-element">current
19975: target element</a>.</p>
19976:
19977: <p>If the <code title="event-dragover"><a href="#event-dragover">dragover</a></code> event is
19978: not canceled, run the appropriate step from the following
19979: list:</p>
19980:
19981: <dl class="switch"><dt>If the <a href="#current-target-element">current target element</a> is a text field
19982: (e.g. <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>, or an <code><a href="the-input-element.html#the-input-element">input</a></code> element
19983: whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in
19984: the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a> state) or an
19985: <a href="#editing-host">editing host</a> or <a href="#editable">editable</a> element, and
19986: the <a href="#drag-data-store-item-list">drag data store item list</a> has an item with
19987: <a href="#the-drag-data-item-type-string">the drag data item type string</a>
19988: "<code>text/plain</code>" and <a href="#the-drag-data-item-kind">the drag data item
19989: kind</a> <i>Plain Unicode string</i></dt>
19990:
19991: <dd><p>Set the <a href="#current-drag-operation">current drag operation</a> to either
19992: "<code title="">copy</code>" or "<code title="">move</code>",
19993: as appropriate given the platform conventions.</p></dd>
19994:
19995:
19996: <dt>If the <a href="#current-target-element">current target element</a> is an element
19997: with a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute
19998: that <a href="#concept-dropzone-match" title="concept-dropzone-match">matches</a> the
19999: <a href="#drag-data-store">drag data store</a> and <a href="#concept-dropzone-operation" title="concept-dropzone-operation">specifies an
20000: operation</a></dt>
20001:
20002: <dd><p>Set the <a href="#current-drag-operation">current drag operation</a> to the
20003: operation <a href="#concept-dropzone-operation" title="concept-dropzone-operation">specified</a> by the
20004: <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute of the
20005: <a href="#current-target-element">current target element</a>.</p>
20006:
20007:
20008: </dd><dt>If the <a href="#current-target-element">current target element</a> is an element
20009: with a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute
20010: that <a href="#concept-dropzone-match" title="concept-dropzone-match">matches</a> the
20011: <a href="#drag-data-store">drag data store</a> and does not <a href="#concept-dropzone-operation" title="concept-dropzone-operation">specify an
20012: operation</a></dt>
20013:
20014: <dd><p>Set the <a href="#current-drag-operation">current drag operation</a> to "<code title="">copy</code>".</p>
20015:
20016:
20017: </dd><dt>Otherwise</dt>
20018:
20019: <dd><p>Reset the <a href="#current-drag-operation">current drag operation</a> to "<code title="">none</code>".</p></dd>
20020:
20021: </dl><p>Otherwise (if the <code title="event-dragover"><a href="#event-dragover">dragover</a></code> event <em>is</em>
20022: canceled), set the <a href="#current-drag-operation">current drag operation</a> based on
20023: the values of the <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code> and
20024: <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code>
20025: attributes of the <code><a href="#dragevent">DragEvent</a></code> object's <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> object as
20026: they stood after the event dispatch finished, as per the
20027: following table:</p>
20028:
20029: <table><thead><tr><th><code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code></th>
20030: <th><code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code></th>
20031: <th>Drag operation</th>
20032: </tr></thead><tr><td>"<code title="">uninitialized</code>", "<code title="">copy</code>", "<code title="">copyLink</code>", "<code title="">copyMove</code>", or "<code title="">all</code>"</td>
20033: <td>"<code title="">copy</code>"</td>
20034: <td>"<code title="">copy</code>"</td>
20035: </tr><tr><td>"<code title="">uninitialized</code>", "<code title="">link</code>", "<code title="">copyLink</code>", "<code title="">linkMove</code>", or "<code title="">all</code>"</td>
20036: <td>"<code title="">link</code>"</td>
20037: <td>"<code title="">link</code>"</td>
20038: </tr><tr><td>"<code title="">uninitialized</code>", "<code title="">move</code>", "<code title="">copyMove</code>", "<code title="">linkMove</code>", or "<code title="">all</code>"</td>
20039: <td>"<code title="">move</code>"</td>
20040: <td>"<code title="">move</code>"</td>
20041: </tr><tr><td colspan="2">Any other case</td>
20042: <td>"<code title="">none</code>"</td>
20043: </tr></table></li>
20044:
20045: <li>
20046:
20047: <p>Otherwise, if the <a href="#current-target-element">current target element</a> is not
20048: a DOM element, use platform-specific mechanisms to determine
20049: what drag operation is being performed (none, copy, link, or
20050: move), and set the <i><a href="#current-drag-operation">current drag operation</a></i>
20051: accordingly.</p>
20052:
20053: </li>
20054:
20055: <li>
20056:
20057: <p>Update the drag feedback (e.g. the mouse cursor) to match the
20058: <a href="#current-drag-operation">current drag operation</a>, as follows:</p>
20059:
20060: <table><thead><tr><th>Drag operation</th>
20061: <th>Feedback</th>
20062: </tr></thead><tr><td>"<code title="">copy</code>"</td>
20063: <td>Data will be copied if dropped here.</td>
20064: </tr><tr><td>"<code title="">link</code>"</td>
20065: <td>Data will be linked if dropped here.</td>
20066: </tr><tr><td>"<code title="">move</code>"</td>
20067: <td>Data will be moved if dropped here.</td>
20068: </tr><tr><td>"<code title="">none</code>"</td>
20069: <td>No operation allowed, dropping here will cancel the drag-and-drop operation.</td>
20070: </tr></table></li>
20071:
20072: </ol></li>
20073:
20074: <li>
20075:
20076: <p>Otherwise, if the user ended the drag-and-drop operation (e.g.
20077: by releasing the mouse button in a mouse-driven drag-and-drop
20078: interface), or if the <code title="event-drag"><a href="#event-drag">drag</a></code> event
20079: was canceled, then this will be the last iteration. Run the
20080: following steps, then stop the drag-and-drop operation:</p>
20081:
20082: <ol><li>
20083:
20084: <p>If the <a href="#current-drag-operation">current drag operation</a> is "<code title="">none</code>" (no drag operation), or, if the user ended
20085: the drag-and-drop operation by canceling it (e.g. by hitting the
20086: <kbd>Escape</kbd> key), or if the <a href="#current-target-element">current target
20087: element</a> is null, then the drag operation failed. Run
20088: these substeps:</p>
20089:
20090: <ol><li><p>Let <var title="">dropped</var> be false.</p></li>
20091:
20092: <li><p>If the <a href="#current-target-element">current target element</a> is a DOM
20093: element, <a href="#fire-a-dnd-event">fire a DND event</a> named <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code> at it; otherwise, if
20094: it is not null, use platform-specific conventions for drag
20095: cancellation.</p>
20096:
20097: </li></ol><p>Otherwise, the drag operation might be a success; run these
20098: substeps:</p>
20099:
20100: <ol><li><p>Let <var title="">dropped</var> be true.</p></li>
20101:
20102: <li><p>If the <a href="#current-target-element">current target element</a> is a DOM
20103: element, <a href="#fire-a-dnd-event">fire a DND event</a> named <code title="event-drop"><a href="#event-drop">drop</a></code> at it; otherwise, use
20104: platform-specific conventions for indicating a drop.</p></li>
20105:
20106: <li>
20107:
20108: <p>If the event is canceled, set the <a href="#current-drag-operation">current drag
20109: operation</a> to the value of the <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> attribute
20110: of the <code><a href="#dragevent">DragEvent</a></code> object's <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> object
20111: as it stood after the event dispatch finished.</p>
20112:
20113: <p>Otherwise, the event is not canceled; perform the event's
20114: default action, which depends on the exact target as
20115: follows:</p>
20116:
20117: <dl class="switch"><dt>If the <a href="#current-target-element">current target element</a> is a text
20118: field (e.g. <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>, or an <code><a href="the-input-element.html#the-input-element">input</a></code>
20119: element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>
20120: attribute is in the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a> state) or an
20121: <a href="#editing-host">editing host</a> or <a href="#editable">editable</a> element,
20122: and the <a href="#drag-data-store-item-list">drag data store item list</a> has an item
20123: with <a href="#the-drag-data-item-type-string">the drag data item type string</a>
20124: "<code>text/plain</code>" and <a href="#the-drag-data-item-kind">the drag data item
20125: kind</a> <i>Plain Unicode string</i></dt>
20126:
20127: <dd><p>Insert the actual data of the first item in the
20128: <a href="#drag-data-store-item-list">drag data store item list</a> to have <a href="#the-drag-data-item-type-string" title="the drag data item type string">a drag data item type
20129: string</a> of "<code>text/plain</code>" and <a href="#the-drag-data-item-kind" title="the drag data item kind">a drag data item kind</a>
20130: that is <i>Plain Unicode string</i> into the text field or
20131: <a href="#editing-host">editing host</a> or <a href="#editable">editable</a> element in
20132: a manner consistent with platform-specific conventions (e.g.
20133: inserting it at the current mouse cursor position, or
20134: inserting it at the end of the field).</p></dd>
20135:
20136: <dt>Otherwise</dt>
20137:
20138: <dd><p>Reset the <a href="#current-drag-operation">current drag operation</a> to
20139: "<code title="">none</code>".</p></dd>
20140:
20141: </dl></li>
20142:
20143: </ol></li>
20144:
20145: <li>
20146:
20147: <p><a href="#fire-a-dnd-event">Fire a DND event</a> named <code title="event-dragend"><a href="#event-dragend">dragend</a></code> at the <a href="#source-node">source
20148: node</a>.</p>
20149:
20150: </li>
20151:
20152: <li>
20153:
20154: <p>Run the appropriate steps from the following list as the
20155: default action of the <code title="event-dragend"><a href="#event-dragend">dragend</a></code>
20156: event:</p>
20157:
20158: <dl class="switch"><dt>If <var title="">dropped</var> is true, the <a href="#current-target-element">current
20159: target element</a> is a <i>text field</i> (see below), the
20160: <a href="#current-drag-operation">current drag operation</a> is "<code title="">move</code>", and the source of the drag-and-drop
20161: operation is a selection in the DOM that is entirely contained
20162: within an <a href="#editing-host">editing host</a></dt>
20163:
20164: <dd><p><a href="#delete-the-selection">Delete the selection</a>.</p></dd>
20165:
20166: <dt>If <var title="">dropped</var> is true, the <a href="#current-target-element">current
20167: target element</a> is a <i>text field</i> (see below), the
20168: <a href="#current-drag-operation">current drag operation</a> is "<code title="">move</code>", and the source of the drag-and-drop
20169: operation is a selection in a text field</dt>
20170:
20171: <dd><p>The user agent should delete the dragged selection from
20172: the relevant text field.</p></dd>
20173:
20174: <dt>If <var title="">dropped</var> is false or if the
20175: <a href="#current-drag-operation">current drag operation</a> is "<code title="">none</code>"</dt>
20176:
20177: <dd><p>The drag was canceled. If the platform conventions
20178: dictate that this be represented to the user (e.g. by animating
20179: the dragged selection going back to the source of the
20180: drag-and-drop operation), then do so.</p></dd>
20181:
20182: <dt>Otherwise</dt>
20183:
20184: <dd><p>The event has no default action.</p></dd>
20185:
20186: </dl><p>For the purposes of this step, a <i>text field</i> is a
20187: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element or an <code><a href="the-input-element.html#the-input-element">input</a></code> element
20188: whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in
20189: one of the
20190: <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a>,
20191: <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-search">Search</a>,
20192: <a href="states-of-the-type-attribute.html#telephone-state-(type=tel)" title="attr-input-type-tel">Tel</a>,
20193: <a href="states-of-the-type-attribute.html#url-state-(type=url)" title="attr-input-type-url">URL</a>,
20194: <a href="states-of-the-type-attribute.html#e-mail-state-(type=email)" title="attr-input-type-email">E-mail</a>,
20195: <a href="states-of-the-type-attribute.html#password-state-(type=password)" title="attr-input-type-password">Password</a>, or
20196: <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a>
20197: states.</p>
20198:
20199:
20200: </li>
20201:
20202: </ol></li>
20203:
20204: </ol><p class="note">User agents are encouraged to consider how to react
20205: to drags near the edge of scrollable regions. For example, if a user
20206: drags a link to the bottom of the viewport on a long page, it might
20207: make sense to scroll the page so that the user can drop the link
20208: lower on the page.</p>
20209:
20210: <p class="note">This model is independent of which
20211: <code><a href="dom.html#document">Document</a></code> object the nodes involved are from; the events
20212: are fired as described above and the rest of the processing model
20213: runs as described above, irrespective of how many documents are
20214: involved in the operation.</p>
20215:
20216: </div>
20217:
20218:
20219: <h4 id="dndevents"><span class="secno">7.7.6 </span>Events summary</h4>
20220:
20221: <p><i>This section is non-normative.</i></p>
20222: <p>The following events are involved in the drag-and-drop
20223: model.</p>
20224:
20225: <table><thead><tr><th> Event Name </th>
20226: <th> Target </th>
20227: <!-- <th> Bubbles? </th> -->
20228: <th> Cancelable? </th>
20229: <th> <a href="#drag-data-store-mode">Drag data store mode</a> </th>
20230: <!-- <th> <code title="dom-DataTransfer-effectAllowed">effectAllowed</code> </th> -->
20231: <th> <code title="dom-DataTransfer-dropEffect"><a href="#dom-datatransfer-dropeffect">dropEffect</a></code> </th>
20232: <th> Default Action </th>
20233: </tr></thead><tbody><tr><td><dfn id="event-dragstart" title="event-dragstart"><code>dragstart</code></dfn></td>
20234: <td><a href="#source-node">Source node</a></td>
20235: <!-- <td>✓ Bubbles</td> -->
20236: <td>✓ Cancelable</td>
20237: <td><a href="#concept-dnd-rw" title="concept-dnd-rw">Read/write mode</a>
20238: <!-- <td>"<code title="">uninitialized</code>"</td> -->
20239: </td><td>"<code title="">none</code>"</td>
20240: <td>Initiate the drag-and-drop operation</td>
20241: </tr><tr><td><dfn id="event-drag" title="event-drag"><code>drag</code></dfn></td>
20242: <td><a href="#source-node">Source node</a></td>
20243: <!-- <td>✓ Bubbles</td> -->
20244: <td>✓ Cancelable</td>
20245: <td><a href="#concept-dnd-p" title="concept-dnd-p">Protected mode</a>
20246: <!-- <td>Same as last event</td> -->
20247: </td><td>"<code title="">none</code>"</td>
20248: <td>Continue the drag-and-drop operation</td>
20249: </tr><tr><td><dfn id="event-dragenter" title="event-dragenter"><code>dragenter</code></dfn></td>
20250: <td><a href="#immediate-user-selection">Immediate user selection</a> or <a href="dom.html#the-body-element-0">the body element</a></td>
20251: <!-- <td>✓ Bubbles</td> -->
20252: <td>✓ Cancelable</td>
20253: <td><a href="#concept-dnd-p" title="concept-dnd-p">Protected mode</a>
20254: <!-- <td>Same as last event</td> -->
20255: </td><td><a href="#dropEffect-initialization">Based on <code>effectAllowed</code> value</a></td>
20256: <td>Reject <a href="#immediate-user-selection">immediate user selection</a> as potential <a href="#current-target-element" title="current target element">target element</a></td>
20257: </tr><tr><td><dfn id="event-dragleave" title="event-dragleave"><code>dragleave</code></dfn></td>
20258: <td><a href="#current-target-element" title="current target element">Previous target element</a></td>
20259: <!-- <td>✓ Bubbles</td> -->
20260: <td>—</td>
20261: <td><a href="#concept-dnd-p" title="concept-dnd-p">Protected mode</a>
20262: <!-- <td>Same as last event</td> -->
20263: </td><td>"<code title="">none</code>"</td>
20264: <td>None</td>
20265: </tr><tr><td><dfn id="event-dragover" title="event-dragover"><code>dragover</code></dfn></td>
20266: <td><a href="#current-target-element">Current target element</a></td>
20267: <!-- <td>✓ Bubbles</td> -->
20268: <td>✓ Cancelable</td>
20269: <td><a href="#concept-dnd-p" title="concept-dnd-p">Protected mode</a>
20270: <!-- <td>Same as last event</td> -->
20271: </td><td><a href="#dropEffect-initialization">Based on <code>effectAllowed</code> value</a></td>
20272: <td>Reset the <a href="#current-drag-operation">current drag operation</a> to "none"</td>
20273: </tr><tr><td><dfn id="event-drop" title="event-drop"><code>drop</code></dfn></td>
20274: <td><a href="#current-target-element">Current target element</a></td>
20275: <!-- <td>✓ Bubbles</td> -->
20276: <td>✓ Cancelable</td>
20277: <td><a href="#concept-dnd-ro" title="concept-dnd-ro">Read-only mode</a>
20278: <!-- <td>Same as last event</td> -->
20279: </td><td><a href="#current-drag-operation">Current drag operation</a></td>
20280: <td>Varies</td>
20281: </tr><tr><td><dfn id="event-dragend" title="event-dragend"><code>dragend</code></dfn></td>
20282: <td><a href="#source-node">Source node</a></td>
20283: <!-- <td>✓ Bubbles</td> -->
20284: <td>—</td>
20285: <td><a href="#concept-dnd-p" title="concept-dnd-p">Protected mode</a>
20286: <!-- <td>Same as last event</td> -->
20287: </td><td><a href="#current-drag-operation">Current drag operation</a></td>
20288: <td>Varies</td>
20289: </tr></tbody></table><p>Not shown in the above table: all these events bubble, and the
20290: <code title="dom-DataTransfer-effectAllowed"><a href="#dom-datatransfer-effectallowed">effectAllowed</a></code>
20291: attribute always has the value it had after the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event, defaulting to "<code title="">uninitialized</code>" in the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event.</p>
20292:
20293:
20294:
20295: <h4 id="the-draggable-attribute"><span class="secno">7.7.7 </span>The <dfn title="attr-draggable"><code>draggable</code></dfn> attribute</h4>
20296:
20297: <p>All <a href="infrastructure.html#html-elements">HTML elements</a> may have the <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> content attribute set. The
20298: <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> attribute is an
20299: <a href="common-microsyntaxes.html#enumerated-attribute">enumerated attribute</a>. It has three states. The first
20300: state is <i>true</i> and it has the keyword <code title="">true</code>. The second state is <i>false</i> and it has
20301: the keyword <code title="">false</code>. The third state is
20302: <i>auto</i>; it has no keywords but it is the <i>missing value
20303: default</i>.</p>
20304:
20305: <p>The <i>true</i> state means the element is draggable; the
20306: <i>false</i> state means that it is not. The <i>auto</i> state
20307: uses the default behavior of the user agent.</p>
20308:
20309: <p>An element with a <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code>
20310: attribute should also have a <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code>
20311: attribute that names the element for the purpose of non-visual
20312: interactions. <!-- "should", not "must", only because this is a
20313: relatively new attribute and its design implications are not
20314: entirely obvious yet. For example, what happens if you use an
20315: element with text as a drag source? Is that sufficiently clear for
20316: ATs? Indeed, shouldn't the element generally be distinguishable
20317: anyway for it to be useful to drag? See also the dropzone attribute.
20318: --></p>
20319:
20320: <dl class="domintro"><dt><var title="">element</var> . <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> [ = <var title="">value</var> ]</dt>
20321:
20322: <dd>
20323:
20324: <p>Returns true if the element is draggable; otherwise, returns
20325: false.</p>
20326:
20327: <p>Can be set, to override the default and set the <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> content attribute.</p>
20328:
20329: </dd>
20330:
20331: </dl><div class="impl">
20332:
20333: <p>The <dfn id="dom-draggable" title="dom-draggable"><code>draggable</code></dfn> IDL
20334: attribute, whose value depends on the content attribute's in the way
20335: described below, controls whether or not the element is
20336: draggable. Generally, only text selections are draggable, but
20337: elements whose <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL
20338: attribute is true become draggable as well.</p>
20339:
20340: <p>If an element's <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code>
20341: content attribute has the state <i>true</i>, the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL attribute must return
20342: true.</p>
20343:
20344: <p>Otherwise, if the element's <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> content attribute has the
20345: state <i>false</i>, the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL attribute must return
20346: false.</p>
20347:
20348: <p>Otherwise, the element's <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> content attribute has the
20349: state <i>auto</i>. If the element is an <code><a href="the-img-element.html#the-img-element">img</a></code> element,
20350: or, if the element is an <code><a href="the-a-element.html#the-a-element">a</a></code> element with an <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> content attribute, the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL attribute must return
20351: true.</p>
20352:
20353: <p>Otherwise, the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> DOM
20354: must return false.</p>
20355:
20356: <p>If the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL attribute
20357: is set to the value false, the <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code> content attribute must be
20358: set to the literal value <code title="">false</code>. If the <code title="dom-draggable"><a href="#dom-draggable">draggable</a></code> IDL attribute is set to the
20359: value true, the <code title="attr-draggable"><a href="#the-draggable-attribute">draggable</a></code>
20360: content attribute must be set to the literal value <code title="">true</code>.</p>
20361:
20362: </div>
20363:
20364:
20365: <h4 id="the-dropzone-attribute"><span class="secno">7.7.8 </span>The <dfn title="attr-dropzone"><code>dropzone</code></dfn> attribute</h4>
20366:
20367: <p>All <a href="infrastructure.html#html-elements">HTML elements</a> may have the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> content attribute set. When
20368: specified, its value must be an <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">unordered set of unique
20369: space-separated tokens</a> that are <a href="infrastructure.html#ascii-case-insensitive">ASCII
20370: case-insensitive</a>. The allowed values are the following:</p>
20371:
20372: <dl><dt><dfn id="attr-dropzone-copy" title="attr-dropzone-copy"><code>copy</code></dfn></dt>
20373:
20374: <dd><p>Indicates that dropping an accepted item on the element will
20375: result in a copy of the dragged data.</p>
20376:
20377:
20378: </dd><dt><dfn id="attr-dropzone-move" title="attr-dropzone-move"><code>move</code></dfn></dt>
20379:
20380: <dd><p>Indicates that dropping an accepted item on the element will
20381: result in the dragged data being moved to the new location.</p>
20382:
20383:
20384: </dd><dt><dfn id="attr-dropzone-link" title="attr-dropzone-link"><code>link</code></dfn></dt>
20385:
20386: <dd><p>Indicates that dropping an accepted item on the element will
20387: result in a link to the original data.</p>
20388:
20389:
20390: </dd><dt>Any keyword with eight characters or more, beginning with the
1.198 sruby 20391: an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">string:</code>"</dt><dd><p>Indicates that items with <a href="#the-drag-data-item-kind">the drag data item
1.190 sruby 20392: kind</a> <i>Plain Unicode string</i> and <a href="#the-drag-data-item-type-string">the drag data
20393: item type string</a> set to a value that matches the remainder
20394: of the keyword are accepted.</p></dd>
20395:
20396: <!--DND-v3:
20397: <dt>Any keyword with six characters or more, beginning with an
20398: <span>ASCII case-insensitive</span> match for the string "<code
20399: title="">blob:</code>"<dt>
20400:
20401: <dd><p>Indicates that items with <span>the drag data item
20402: kind</span> <i>Blob</i>, <i>File</i>, or <i>Plain Unicode
20403: string</i> and <span>the drag data item type string</span> set to a
20404: value that matches the remainder of the keyword are
20405: accepted.</p></dd>
20406: -->
20407:
20408: <dt>Any keyword with six characters or more, beginning with an
1.198 sruby 20409: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">file:</code>"</dt><dd><p>Indicates that items with <a href="#the-drag-data-item-kind">the drag data item
1.190 sruby 20410: kind</a> <i><a href="infrastructure.html#file">File</a></i> and <a href="#the-drag-data-item-type-string">the drag data item type
20411: string</a> set to a value that matches the remainder of the
20412: keyword are accepted.</p></dd>
20413:
20414: <!--DND-v4:
20415: <dt>Any keyword with eight characters or more, beginning with an
20416: <span>ASCII case-insensitive</span> match for the string "<code
20417: title="">object:</code>"<dt>
20418:
20419: <dd><p>Indicates that items with <span>the drag data item type
20420: string</span> set to a value that matches the remainder of the
20421: keyword are accepted.</p></dd>
20422: -->
20423:
20424: </dl><p>The <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> content
20425: attribute's values must not have more than one of the three feedback
20426: values (<code title="attr-dropzone-copy"><a href="#attr-dropzone-copy">copy</a></code>, <code title="attr-dropzone-move"><a href="#attr-dropzone-move">move</a></code>, and <code title="attr-dropzone-link"><a href="#attr-dropzone-link">link</a></code>) specified. If none are
20427: specified, the <code title="attr-dropzone-copy"><a href="#attr-dropzone-copy">copy</a></code> value is
20428: implied.</p>
20429:
20430: <p>An element with a <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code>
20431: attribute should also have a <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code>
20432: attribute that names the element for the purpose of non-visual
20433: interactions. <!-- "should", not "must", only because this is a
20434: relatively new attribute and its design implications are not
20435: entirely obvious yet. For example, what happens if you use an
20436: element with text as a drop zone? Is that sufficiently clear for
20437: ATs? See also the draggable attribute. --></p>
20438:
20439: <div class="impl">
20440:
20441: <p>A <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute <dfn id="concept-dropzone-match" title="concept-dropzone-match">matches a drag data store</dfn> if
20442: the <a href="#dropzone-processing-steps"><code title="attr-dropzone">dropzone</code> processing
20443: steps</a> result in a match.</p>
20444:
20445: <p>A <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute <dfn id="concept-dropzone-operation" title="concept-dropzone-operation">specifies an operation</dfn> if
20446: the <a href="#dropzone-processing-steps"><code title="attr-dropzone">dropzone</code> processing
20447: steps</a> result in a specified operation. The specified
20448: operation is as given by those steps.</p>
20449:
20450: <p>The <dfn id="dropzone-processing-steps"><code title="attr-dropzone">dropzone</code> processing
20451: steps</dfn> are as follows. They either result in a match or not,
20452: and separate from this result either in a specified operation or
20453: not, as defined below.</p>
20454:
20455: <ol><li><p>Let <var title="">value</var> be the value of the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute.</p></li>
20456:
20457: <li><p>Let <var title="">keywords</var> be the result of <a href="common-microsyntaxes.html#split-a-string-on-spaces" title="split a string on spaces">splitting <var title="">value</var> on spaces</a>.</p></li>
20458:
20459: <li><p>Let <var title="">matched</var> be false.</p></li>
20460:
20461: <li><p>Let <var title="">operation</var> be unspecified.</p></li>
20462:
20463: <li>
20464:
20465: <p>For each value in <var title="">keywords</var>, if any, in the
20466: order that they were found in <var title="">value</var>, run the
20467: following steps.</p>
20468:
20469: <ol><li><p>Let <var title="">keyword</var> be the keyword.</p></li>
20470:
20471: <li>
20472:
20473: <p>If <var title="">keyword</var> is one of "<code title="attr-dropzone-copy"><a href="#attr-dropzone-copy">copy</a></code>", "<code title="attr-dropzone-move"><a href="#attr-dropzone-move">move</a></code>", or "<code title="attr-dropzone-link"><a href="#attr-dropzone-link">link</a></code>", then: run the following
20474: substeps:</p>
20475:
20476: <ol><li><p>If <var title="">operation</var> is still unspecified,
20477: then let <var title="">operation</var> be the string given by
20478: <var title="">keyword</var>.</p></li>
20479:
20480: <li><p>Skip to the step labeled <i>end of keyword</i>
20481: below.</p></li>
20482:
20483: </ol></li>
20484:
20485: <li><p>If <var title="">keyword</var> does not contain a ":" (U+003A) character, or if the first such character in <var title="">keyword</var> is either the first character or the last
20486: character in the string, then skip to the step labeled <i>end of
20487: keyword</i> below.</p></li>
20488:
20489: <li><p>Let <var title="">kind code</var> be the substring
20490: of <var title="">keyword</var> from the first character in the
20491: string to the last character in the string that is before the
20492: first ":" (U+003A) character in the string, <a href="infrastructure.html#converted-to-ascii-lowercase">converted
20493: to ASCII lowercase</a>.</p>
20494:
20495: </li><li>
20496:
20497: <p>Jump to the appropriate step from the list below, based on
20498: the value of <var title="">kind code</var>:</p>
20499:
20500: <dl class="switch"><dt>If <var title="">kind code</var> is the string "<code title="">string</code>"</dt>
20501: <dd>
20502:
20503: <p>Let <var title="">kind<!--DND-v3:/DND-v4: s--></var> be
20504: <i>Plain Unicode string</i>.</p>
20505:
20506: </dd>
20507:
20508: <!--DND-v3:
20509: <dt>If <var title="">kind code</var> is the string "<code title="">blob</code>"</dt>
20510: <dd>
20511:
20512: <p>Let <var title="">kinds</var> be <i>Plain Unicode
20513: string</i>, <i>Blob</i>, and <i>File</i>.</p>
20514:
20515: </dd>
20516: -->
20517:
20518: <dt>If <var title="">kind code</var> is the string "<code title="">file</code>"</dt>
20519: <dd>
20520:
20521: <p>Let <var title="">kind<!--DND-v3:/DND-v4: s--></var> be
20522: <i><a href="infrastructure.html#file">File</a></i>.</p>
20523:
20524: </dd>
20525:
20526: <!--DND-v4:
20527: <dt>If <var title="">kind code</var> is the string "<code title="">object</code>"</dt>
20528: <dd>
20529:
20530: <p>Let <var title="">kinds</var> be <i>Plain Unicode
20531: string</i>, <i>Blob</i>, <i>File</i>, and <i>Object</i>.</p>
20532:
20533: </dd>
20534: -->
20535:
20536: <dt>Otherwise</dt>
20537: <dd>
20538:
20539: <p>Skip to the step labeled <i>end of keyword</i> below.</p>
20540:
20541: </dd>
20542:
20543: </dl></li>
20544:
20545: <li><p>Let <var title="">type</var> be the substring of <var title="">keyword</var> from the first character after the first
20546: ":" (U+003A) character in the string, to the last character
20547: in the string, <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII
20548: lowercase</a>.</p></li>
20549:
20550: <li><p>If there exist any items in the <a href="#drag-data-store-item-list">drag data store item
20551: list</a> whose <a href="#the-drag-data-item-kind" title="the drag data item kind">drag data
20552: item kind</a> is <!--DND-v3:/DND-v4: one of--> the
20553: kind<!--DND-v3:/DND-v4: s--> given in <var title="">kind<!--DND-v3:/DND-v4: s--></var> and whose <span title="the drag data item type">drag data item type</span> is
20554: <var title="">type</var>, then let <var title="">matched</var> be
20555: true.</p></li>
20556:
20557: <li><p><i>End of keyword</i>: Go on to the next keyword, if any,
20558: or the next step in the overall algorithm, if there are no
20559: more.</p></li>
20560:
20561: </ol></li>
20562:
20563: <li>
20564:
20565: <p>The algorithm results in a match if <var title="">matched</var>
20566: is true, and does not otherwise.</p>
20567:
20568: <p>The algorithm results in a specified operation if <var title="">operation</var> is not unspecified. The specified
20569: operation, if one is specified, is the one given by <var title="">operation</var>.</p>
20570:
20571: </li>
20572:
20573: </ol><p>The <dfn id="dom-dropzone" title="dom-dropzone"><code>dropzone</code></dfn> IDL
20574: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the
20575: same name.</p>
20576:
20577: </div>
20578:
20579: <div class="example">
20580:
20581: <p>In this example, a <code><a href="the-div-element.html#the-div-element">div</a></code> element is made into a drop
20582: target for image files using the <code title="attr-dropzone"><a href="#the-dropzone-attribute">dropzone</a></code> attribute. Images dropped
20583: into the target are then displayed.</p>
20584:
20585: <pre><div dropzone="copy file:image/png file:image/gif file:image/jpeg" ondrop="receive(event, this)">
20586: <p>Drop an image here to have it displayed.</p>
20587: </div>
20588: <script>
20589: function receive(event, element) {
20590: var data = event.dataTransfer.items;
20591: for (var i = 0; i < data.length; i += 1) {
20592: if ((data[i].kind == 'file') && (data[i].type.match('^image/'))) {
20593: var img = new Image();
20594: img.src = window.createObjectURL(data[i].getAsFile());
20595: element.appendChild(img);
20596: }
20597: }
20598: }
20599: </script></pre>
20600:
20601: </div>
20602:
20603:
20604: <!--
20605: <h4>Copy and paste</h4>
20606:
20607: <p>Copy-and-paste is a form of drag-and-drop: the "copy" part is
20608: equivalent to dragging content to another application (the
20609: "clipboard"), and the "paste" part is equivalent to dragging content
20610: <em>from</em> another application.</p>
20611:
20612: <p>Select-and-paste (a model used by mouse operations in the X
20613: Window System) is equivalent to a drag-and-drop operation where the
20614: source is the selection.</p>
20615:
20616:
20617: <div class="impl">
20618:
20619: <h5>Copy to clipboard</h5>
20620:
20621: <p>When the user invokes a copy operation, the user agent must act
20622: as if the user had invoked a drag on the current selection. If the
20623: drag-and-drop operation initiates, then the user agent must act as
20624: if the user had indicated (as the <span>immediate user
20625: selection</span>) a hypothetical application representing the
20626: clipboard. Then, the user agent must act as if the user had ended
20627: the drag-and-drop operation without canceling it. If the
20628: drag-and-drop operation didn't get canceled, the user agent should
20629: then follow the relevant platform-specific conventions for copy
20630: operations (e.g. updating the clipboard).</p>
20631:
20632: <p>The events involved in this process are the <code
20633: title="event-dragstart">dragstart</code>, <code
20634: title="event-drag">drag</code>, and <code
20635: title="event-dragend">dragend</code> events.</p>
20636:
20637:
20638: <h5>Cut to clipboard</h5>
20639:
20640: <p>When the user invokes a cut operation, the user agent must act as
20641: if the user had invoked a copy operation (see the previous section),
20642: followed, if the copy was completed successfully, by <a
20643: href="#contenteditable-delete">a selection delete operation</a>.</p>
20644:
20645: <p>The events involved in this process are the <code
20646: title="event-dragstart">dragstart</code>, <code
20647: title="event-drag">drag</code>, and <code
20648: title="event-dragend">dragend</code> events.</p>
20649:
20650:
20651: <h5>Paste from clipboard</h5>
20652:
20653: <p>When the user invokes a clipboard paste operation, the user agent
20654: must act as if the user had invoked a drag on a hypothetical
20655: application representing the clipboard, setting the data associated
20656: with the drag as the content on the clipboard (in whatever formats
20657: are available).</p>
20658:
20659: <p>Then, the user agent must act as if the user had indicated (as
20660: the <span>immediate user selection</span>) the element with the
20661: keyboard focus, and then ended the drag-and-drop operation without
20662: canceling it.</p>
20663:
20664: <p>The events involved in this process are the <code
20665: title="event-dragenter">dragenter</code>, <code
20666: title="event-dragover">dragover</code>, <code
20667: title="event-dragleave">dragleave</code>, and <code
20668: title="event-drop">drop</code> events.</p>
20669:
20670:
20671: <h5>Paste from selection</h5>
20672:
20673: <p>When the user invokes a selection paste operation, the user agent
20674: must act as if the user had invoked a drag on the current selection,
20675: then indicated (as the <span>immediate user selection</span>) the
20676: element with the keyboard focus, and then ended the drag-and-drop
20677: operation without canceling it.</p>
20678:
20679: <p>All the drag-and-drop events can be involved in this process.</p>
20680:
20681: </div>
20682: -->
20683:
20684:
20685: <!--ADD-TOPIC:Security-->
20686: <div class="impl">
20687:
20688: <h4 id="security-risks-in-the-drag-and-drop-model"><span class="secno">7.7.9 </span>Security risks in the drag-and-drop model</h4>
20689:
20690: <p>User agents must not make the data added to the
20691: <code><a href="#datatransfer">DataTransfer</a></code> object during the <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event available to scripts
20692: until the <code title="event-drop"><a href="#event-drop">drop</a></code> event, because
20693: otherwise, if a user were to drag sensitive information from one
20694: document to a second document, crossing a hostile third document in
20695: the process, the hostile document could intercept the data.</p>
20696:
20697: <p>For the same reason, user agents must consider a drop to be
20698: successful only if the user specifically ended the drag operation
20699: — if any scripts end the drag operation, it must be considered
20700: unsuccessful (canceled) and the <code title="event-drop"><a href="#event-drop">drop</a></code>
20701: event must not be fired.</p>
20702:
20703: <p>User agents should take care to not start drag-and-drop
20704: operations in response to script actions. For example, in a
20705: mouse-and-window environment, if a script moves a window while the
20706: user has his mouse button depressed, the UA would not consider that
20707: to start a drag. This is important because otherwise UAs could cause
20708: data to be dragged from sensitive sources and dropped into hostile
20709: documents without the user's consent.</p>
20710:
20711: <p>User agents should filter potentially active (scripted) content
20712: (e.g. HTML) when it is dragged and when it is dropped, using a
20713: whitelist of known-safe features. Similarly, relative URLs should be
20714: turned into absolute URLs to avoid references changing in unexpected
20715: ways. This specification does not specify how this is performed.</p>
20716:
20717: <div class="example">
20718:
20719: <p>Consider a hostile page providing some content and getting the
20720: user to select and drag and drop (or indeed, copy and paste) that
20721: content to a victim page's <code title="attr-contenteditable"><a href="#attr-contenteditable">contenteditable</a></code> region. If the
20722: browser does not ensure that only safe content is dragged,
20723: potentially unsafe content such as scripts and event handlers in
20724: the selection, once dropped (or pasted) into the victim site, get
20725: the privileges of the victim site. This would thus enable a
20726: cross-site scripting attack.</p>
20727:
20728: </div>
20729:
20730: </div>
20731: <!--REMOVE-TOPIC:Security-->
20732:
20733:
20734: <!--FIND-->
20735:
20736: <!--POSTMSG-->
20737: <!--POSTMSG-->
20738: <!--TOPIC:HTML Syntax and Parsing-->
20739:
20740: <h2 id="syntax"><span class="secno">8 </span><dfn>The HTML syntax</dfn></h2>
20741:
20742: <p class="note">This section only describes the rules for resources
20743: labeled with an <a href="infrastructure.html#html-mime-type">HTML MIME type</a>. Rules for XML resources
20744: are discussed in the section below entitled "<a href="#the-xhtml-syntax">The XHTML
20745: syntax</a>".</p>
20746:
20747:
20748: <h3 id="writing"><span class="secno">8.1 </span>Writing HTML documents</h3>
20749:
20750: <div class="impl">
20751:
20752: <p><i>This section only applies to documents, authoring tools, and
20753: markup generators. In particular, it does not apply to conformance
20754: checkers; conformance checkers must use the requirements given in
20755: the next section ("parsing HTML documents").</i></p>
20756:
20757: </div>
20758:
20759: <p>Documents must consist of the following parts, in the given
20760: order:</p>
20761:
20762: <ol><li>Optionally, a single "BOM" (U+FEFF) character.</li>
20763:
20764: <li>Any number of <a href="#syntax-comments" title="syntax-comments">comments</a> and
20765: <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20766:
20767: <li>A <a href="#syntax-doctype" title="syntax-doctype">DOCTYPE</a>.
20768:
20769: </li><li>Any number of <a href="#syntax-comments" title="syntax-comments">comments</a> and
20770: <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20771:
20772: <li>The root element, in the form of an <code><a href="the-html-element.html#the-html-element">html</a></code> <a href="#syntax-elements" title="syntax-elements">element</a>.</li>
20773:
20774: <li>Any number of <a href="#syntax-comments" title="syntax-comments">comments</a> and
20775: <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20776:
20777: </ol><p>The various types of content mentioned above are described in the
20778: next few sections.</p>
20779:
20780: <p>In addition, there are some restrictions on how <a href="the-meta-element.html#character-encoding-declaration" title="character encoding declaration">character encoding
20781: declarations</a> are to be serialized, as discussed in the
20782: section on that topic.</p>
20783:
20784: <div class="note">
20785:
20786: <p>Space characters before the root <code><a href="the-html-element.html#the-html-element">html</a></code> element, and
20787: space characters at the start of the <code><a href="the-html-element.html#the-html-element">html</a></code> element and
20788: before the <code><a href="the-head-element.html#the-head-element">head</a></code> element, will be dropped when the
20789: document is parsed; space characters <em>after</em> the root
20790: <code><a href="the-html-element.html#the-html-element">html</a></code> element will be parsed as if they were at the end
20791: of the <code><a href="the-body-element.html#the-body-element">body</a></code> element. Thus, space characters around the
20792: root element do not round-trip.</p>
20793:
20794: <p>It is suggested that newlines be inserted after the DOCTYPE,
20795: after any comments that are before the root element, after the
20796: <code><a href="the-html-element.html#the-html-element">html</a></code> element's start tag (if it is not <a href="#syntax-tag-omission" title="syntax-tag-omission">omitted</a>), and after any comments
20797: that are inside the <code><a href="the-html-element.html#the-html-element">html</a></code> element but before the
20798: <code><a href="the-head-element.html#the-head-element">head</a></code> element.</p>
20799:
20800: </div>
20801:
20802: <p>Many strings in the HTML syntax (e.g. the names of elements and
20803: their attributes) are case-insensitive, but only for characters in
20804: the ranges U+0041 to U+005A (LATIN CAPITAL LETTER A to LATIN CAPITAL
20805: LETTER Z) and U+0061 to U+007A (LATIN SMALL LETTER A to LATIN SMALL
20806: LETTER Z). For convenience, in this section this is just referred to
20807: as "case-insensitive".</p>
20808:
20809:
20810: <h4 id="the-doctype"><span class="secno">8.1.1 </span>The DOCTYPE</h4>
20811:
20812: <p>A <dfn id="syntax-doctype" title="syntax-doctype">DOCTYPE</dfn> is a <!-- mostly
20813: useless but nonetheless --> required preamble.</p>
20814:
20815: <p class="note">DOCTYPEs are required for legacy reasons. When
20816: omitted, browsers tend to use a different rendering mode that is
20817: incompatible with some specifications. Including the DOCTYPE in a
20818: document ensures that the browser makes a best-effort attempt at
20819: following the relevant specifications.</p>
20820:
20821: <p>A DOCTYPE must consist of the following components, in this
20822: order:</p>
20823:
20824: <ol class="brief"><li>A string that is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title=""><!DOCTYPE</code>".</li>
20825: <li>One or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20826: <li>A string that is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">html</code>".</li>
20827: <li>Optionally, a <a href="#doctype-legacy-string">DOCTYPE legacy string</a> or an <a href="#obsolete-permitted-doctype-string">obsolete permitted DOCTYPE string</a> (defined below).</li>
20828: <li>Zero or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20829: <li>A U+003E GREATER-THAN SIGN character (>).</li>
20830: </ol><p class="note">In other words, <code><!DOCTYPE html></code>,
20831: case-insensitively.</p>
20832:
20833: <hr><p>For the purposes of HTML generators that cannot output HTML
20834: markup with the short DOCTYPE "<code title=""><!DOCTYPE
20835: html></code>", a <dfn id="doctype-legacy-string">DOCTYPE legacy string</dfn> may be inserted
20836: into the DOCTYPE (in the position defined above). This string must
20837: consist of:</p>
20838:
20839: <ol class="brief"><li>One or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20840: <li>A string that is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">SYSTEM</code>".</li>
20841: <li>One or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20842: <li>A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the <i>quote mark</i>).</li>
20843: <li>The literal string "<code><a href="urls.html#about:legacy-compat">about:legacy-compat</a></code>".</li>
20844: <li>A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled <i>quote mark</i>).</li>
20845: </ol><p class="note">In other words, <code><!DOCTYPE html SYSTEM
20846: "about:legacy-compat"></code> or <code><!DOCTYPE html SYSTEM
20847: 'about:legacy-compat'></code>, case-insensitively except for the
20848: part in single or double quotes.</p>
20849:
20850: <p>The <a href="#doctype-legacy-string">DOCTYPE legacy string</a> should not be used unless
20851: the document is generated from a system that cannot output the
20852: shorter string.</p>
20853:
20854: <hr><!-- see the parser section before changing this bit --><p>To help authors transition from HTML4 and XHTML1, an
20855: <dfn id="obsolete-permitted-doctype-string">obsolete permitted DOCTYPE string</dfn> can be inserted into
20856: the DOCTYPE (in the position defined above). This string must
20857: consist of:</p>
20858:
20859: <ol class="brief"><li>One or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20860: <li>A string that is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">PUBLIC</code>".</li>
20861: <li>One or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20862: <li>A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the <i>first quote mark</i>).</li>
20863: <li>The string from one of the cells in the first column of the table below. The row to which this cell belongs is the <i>selected row</i>.</li>
20864: <li>A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled <i>first quote mark</i>).</li>
20865: <li>If the cell in the second column of the <i>selected row</i> is not blank, one or more <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
20866: <li>If the cell in the second column of the <i>selected row</i> is not blank, a U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the <i>third quote mark</i>).</li>
20867: <li>If the cell in the second column of the <i>selected row</i> is not blank, the string from the cell in the second column of the <i>selected row</i>.</li>
20868: <li>If the cell in the second column of the <i>selected row</i> is not blank, a matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled <i>third quote mark</i>).</li>
20869: </ol><table><caption>
20870: Allowed values for public and system identifiers in an <a href="#obsolete-permitted-doctype-string">obsolete permitted DOCTYPE string</a>.
20871: </caption>
20872: <thead><tr><th> Public identifier
20873: </th><th> System identifier
20874: </th></tr></thead><tbody><tr><td> <code title="">-//W3C//DTD HTML 4.0//EN</code>
20875: </td><td>
20876: </td></tr><tr><td> <code title="">-//W3C//DTD HTML 4.0//EN</code>
20877: </td><td> <code title="">http://www.w3.org/TR/REC-html40/strict.dtd</code>
20878: </td></tr><tr><td> <code title="">-//W3C//DTD HTML 4.01//EN</code>
20879: </td><td>
20880: </td></tr><tr><td> <code title="">-//W3C//DTD HTML 4.01//EN</code>
20881: </td><td> <code title="">http://www.w3.org/TR/html4/strict.dtd</code>
20882: </td></tr><tr><td> <code title="">-//W3C//DTD XHTML 1.0 Strict//EN</code>
20883: </td><td> <code title="">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</code>
20884: </td></tr><tr><td> <code title="">-//W3C//DTD XHTML 1.1//EN</code>
20885: </td><td> <code title="">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd</code>
20886: </td></tr></tbody></table><p>A <a href="#syntax-doctype" title="syntax-doctype">DOCTYPE</a> containing an
20887: <a href="#obsolete-permitted-doctype-string">obsolete permitted DOCTYPE string</a> is an <dfn id="obsolete-permitted-doctype">obsolete
20888: permitted DOCTYPE</dfn>. Authors should not use <a href="#obsolete-permitted-doctype" title="obsolete permitted DOCTYPE">obsolete permitted
20889: DOCTYPEs</a>, as they are unnecessarily long.</p>
20890:
20891:
20892:
20893:
20894: <h4 id="elements-0"><span class="secno">8.1.2 </span>Elements</h4>
20895:
20896: <p>There are five different kinds of <dfn id="syntax-elements" title="syntax-elements">elements</dfn>: <a href="#void-elements">void elements</a>,
20897: <a href="#raw-text-elements">raw text elements</a>, <a href="#rcdata-elements">RCDATA elements</a>,
20898: <a href="#foreign-elements">foreign elements</a>, and <a href="#normal-elements">normal elements</a>.</p>
20899:
20900: <dl><dt><dfn id="void-elements">Void elements</dfn></dt>
20901:
20902: <dd><code><a href="the-area-element.html#the-area-element">area</a></code>, <code><a href="the-base-element.html#the-base-element">base</a></code>, <code><a href="the-br-element.html#the-br-element">br</a></code>,
20903: <code><a href="the-col-element.html#the-col-element">col</a></code>, <code><a href="#the-command-element">command</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>,
20904: <code><a href="the-hr-element.html#the-hr-element">hr</a></code>, <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>,
20905: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>, <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-meta-element.html#the-meta-element">meta</a></code>,
20906: <code><a href="the-param-element.html#the-param-element">param</a></code>, <code><a href="the-source-element.html#the-source-element">source</a></code>, <code><a href="the-track-element.html#the-track-element">track</a></code>,
20907: <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code></dd>
20908: <!-- see also other places that say VOIDLIST -->
20909:
20910: <dt><dfn id="raw-text-elements">Raw text elements</dfn></dt>
20911:
20912: <dd><code><a href="the-script-element.html#the-script-element">script</a></code>, <code><a href="the-style-element.html#the-style-element">style</a></code></dd> <!-- iframe and
20913: noscript don't count as raw text for syntax purposes -->
20914:
20915: <dt><dfn id="rcdata-elements">RCDATA elements</dfn></dt>
20916:
20917: <dd><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>, <code><a href="the-title-element.html#the-title-element">title</a></code></dd>
20918:
20919: <dt><dfn id="foreign-elements">Foreign elements</dfn></dt>
20920:
20921: <dd>Elements from the <a href="namespaces.html#mathml-namespace">MathML namespace</a>
20922: and the <a href="namespaces.html#svg-namespace">SVG namespace</a>.</dd>
20923:
20924: <dt><dfn id="normal-elements">Normal elements</dfn></dt>
20925:
20926: <dd>All other allowed <a href="infrastructure.html#html-elements">HTML elements</a> are normal
20927: elements.</dd>
20928:
20929: </dl><p><dfn id="syntax-tags" title="syntax-tags">Tags</dfn> are used to delimit the start
20930: and end of elements in the markup. <a href="#raw-text-elements" title="raw text
20931: elements">Raw text</a>, <a href="#rcdata-elements" title="RCDATA
20932: elements">RCDATA</a>, and <a href="#normal-elements" title="normal
20933: elements">normal</a> elements have a <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> to indicate where they
20934: begin, and an <a href="#syntax-end-tag" title="syntax-end-tag">end tag</a> to
20935: indicate where they end. The start and end tags of certain
20936: <a href="#normal-elements">normal elements</a> can be <a href="#syntax-tag-omission" title="syntax-tag-omission">omitted</a>, as described
20937: later. Those that cannot be omitted must not be omitted. <a href="#void-elements">Void
20938: elements</a> only have a start tag; end tags must not be
20939: specified for <a href="#void-elements">void elements</a>. <a href="#foreign-elements">Foreign
20940: elements</a> must either have a start tag and an end tag, or a
20941: start tag that is marked as self-closing, in which case they must
20942: not have an end tag.</p>
20943:
20944: <p>The contents of the element must be placed between just after the
20945: start tag (which <a href="#syntax-tag-omission" title="syntax-tag-omission">might be implied,
20946: in certain cases</a>) and just before the end tag (which again,
20947: <a href="#syntax-tag-omission" title="syntax-tag-omission">might be implied in certain
20948: cases</a>). The exact allowed contents of each individual element
20949: depend on the content model of that element, as described earlier in
20950: this specification. Elements must not contain content that their
20951: content model disallows. In addition to the restrictions placed on
20952: the contents by those content models, however, the five types of
20953: elements have additional <em>syntactic</em> requirements.</p>
20954:
20955: <p><a href="#void-elements">Void elements</a> can't have any contents (since there's
20956: no end tag, no content can be put between the start tag and the end
20957: tag).</p>
20958:
20959: <p><a href="#raw-text-elements">Raw text elements</a> can have <a href="#syntax-text" title="syntax-text">text</a>, though it has <a href="#cdata-rcdata-restrictions">restrictions</a> described
20960: below.</p>
20961:
20962: <p><a href="#rcdata-elements">RCDATA elements</a> can have <a href="#syntax-text" title="syntax-text">text</a> and <a href="#syntax-charref" title="syntax-charref">character references</a>, but the text
20963: must not contain an <a href="#syntax-ambiguous-ampersand" title="syntax-ambiguous-ampersand">ambiguous ampersand</a>.
20964: There are also <a href="#cdata-rcdata-restrictions">further
20965: restrictions</a> described below.</p>
20966:
20967: <p><a href="#foreign-elements">Foreign elements</a> whose start tag is marked as
20968: self-closing can't have any contents (since, again, as there's no
20969: end tag, no content can be put between the start tag and the end
20970: tag). <a href="#foreign-elements">Foreign elements</a> whose start tag is <em>not</em>
20971: marked as self-closing can have <a href="#syntax-text" title="syntax-text">text</a>, <a href="#syntax-charref" title="syntax-charref">character references</a>, <a href="#syntax-cdata" title="syntax-cdata">CDATA sections</a>, other <a href="#syntax-elements" title="syntax-elements">elements</a>, and <a href="#syntax-comments" title="syntax-comments">comments</a>, but the text must not
20972: contain the character U+003C LESS-THAN SIGN (<) or an <a href="#syntax-ambiguous-ampersand" title="syntax-ambiguous-ampersand">ambiguous ampersand</a>.</p>
20973:
20974: <div class="note">
20975:
20976: <p>The HTML syntax does not support namespace
20977: declarations, even in <a href="#foreign-elements">foreign elements</a>.</p>
20978:
20979: <p>For instance, consider the following HTML fragment:</p>
20980:
20981: <pre><p>
20982: <svg>
20983: <metadata>
20984: <!-- this is invalid -->
20985: <cdr:license xmlns:cdr="http://www.example.com/cdr/metadata" name="MIT"/>
20986: </metadata>
20987: </svg>
20988: </p></pre>
20989:
20990: <p>The innermost element, <code title="">cdr:license</code>, is
20991: actually in the SVG namespace, as the "<code title="">xmlns:cdr</code>" attribute has no effect (unlike in
20992: XML). In fact, as the comment in the fragment above says, the
20993: fragment is actually non-conforming. This is because the SVG
20994: specification does not define any elements called "<code title="">cdr:license</code>" in the SVG namespace.</p>
20995:
20996: </div>
20997:
20998: <p><a href="#normal-elements">Normal elements</a> can have <a href="#syntax-text" title="syntax-text">text</a>, <a href="#syntax-charref" title="syntax-charref">character references</a>, other <a href="#syntax-elements" title="syntax-elements">elements</a>, and <a href="#syntax-comments" title="syntax-comments">comments</a>, but the text must not
20999: contain the character U+003C LESS-THAN SIGN (<) or an <a href="#syntax-ambiguous-ampersand" title="syntax-ambiguous-ampersand">ambiguous ampersand</a>. Some
21000: <a href="#normal-elements">normal elements</a> also have <a href="#element-restrictions">yet more restrictions</a> on what
21001: content they are allowed to hold, beyond the restrictions imposed by
21002: the content model and those described in this paragraph. Those
21003: restrictions are described below.</p>
21004:
21005: <p>Tags contain a <dfn id="syntax-tag-name" title="syntax-tag-name">tag name</dfn>,
21006: giving the element's name. HTML elements all have names that only
21007: use characters in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, <a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>, and <a href="common-microsyntaxes.html#uppercase-ascii-letters">uppercase ASCII letters</a>. In the HTML syntax, tag names, even those for <a href="#foreign-elements">foreign
21008: elements</a>, may be written with any mix of lower- and uppercase
21009: letters that, when converted to all-lowercase, matches the element's
21010: tag name; tag names are case-insensitive.</p>
21011:
21012:
21013: <h5 id="start-tags"><span class="secno">8.1.2.1 </span>Start tags</h5>
21014:
21015: <p><dfn id="syntax-start-tag" title="syntax-start-tag">Start tags</dfn> must have the
21016: following format:</p>
21017:
21018: <ol><li>The first character of a start tag must be a U+003C LESS-THAN
21019: SIGN character (<).</li>
21020:
21021: <li>The next few characters of a start tag must be the element's
21022: <a href="#syntax-tag-name" title="syntax-tag-name">tag name</a>.</li>
21023:
21024: <li>If there are to be any attributes in the next step, there must
21025: first be one or more <a href="common-microsyntaxes.html#space-character" title="space character">space
21026: characters</a>.</li>
21027:
21028: <li>Then, the start tag may have a number of attributes, the <a href="#syntax-attributes" title="syntax-attributes">syntax for which</a> is described
21029: below. Attributes must be separated from each other by one or more
21030: <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>.</li>
21031:
21032: <li>After the attributes, or after the <a href="#syntax-tag-name" title="syntax-tag-name">tag name</a> if there are no attributes,
21033: there may be one or more <a href="common-microsyntaxes.html#space-character" title="space character">space
21034: characters</a>. (Some attributes are required to be followed by
21035: a space. See the <a href="#syntax-attributes" title="syntax-attributes">attributes
21036: section</a> below.)</li>
21037:
21038: <li>Then, if the element is one of the <a href="#void-elements">void elements</a>,
21039: or if the element is a <a href="#foreign-elements" title="foreign elements">foreign
21040: element</a>, then there may be a single U+002F SOLIDUS character
21041: (/). This character has no effect on <a href="#void-elements">void elements</a>,
21042: but on <a href="#foreign-elements">foreign elements</a> it marks the start tag as
21043: self-closing.</li>
21044:
21045: <li>Finally, start tags must be closed by a U+003E GREATER-THAN
21046: SIGN character (>).</li>
21047:
21048: </ol><h5 id="end-tags"><span class="secno">8.1.2.2 </span>End tags</h5>
21049:
21050: <p><dfn id="syntax-end-tag" title="syntax-end-tag">End tags</dfn> must have the
21051: following format:</p>
21052:
21053: <ol><li>The first character of an end tag must be a U+003C LESS-THAN
21054: SIGN character (<).</li>
21055:
21056: <li>The second character of an end tag must be a "/" (U+002F) character.</li>
21057:
21058: <li>The next few characters of an end tag must be the element's
21059: <a href="#syntax-tag-name" title="syntax-tag-name">tag name</a>.</li>
21060:
21061: <li>After the tag name, there may be one or more <a href="common-microsyntaxes.html#space-character" title="space
21062: character">space characters</a>.</li>
21063:
21064: <li>Finally, end tags must be closed by a U+003E GREATER-THAN SIGN
21065: character (>).</li>
21066:
21067: </ol><h5 id="attributes-0"><span class="secno">8.1.2.3 </span>Attributes</h5>
21068:
21069: <p><dfn id="syntax-attributes" title="syntax-attributes">Attributes</dfn> for an element
21070: are expressed inside the element's start tag.</p>
21071:
21072: <p>Attributes have a name and a value. <dfn id="syntax-attribute-name" title="syntax-attribute-name">Attribute names</dfn> must consist of
21073: one or more characters other than the <a href="common-microsyntaxes.html#space-character" title="space
21074: character">space characters</a>, U+0000 NULL, U+0022 QUOTATION
21075: MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN
21076: (>), "/" (U+002F), and "=" (U+003D) characters,
21077: the control characters, and any characters that are not defined by
21078: Unicode. In the HTML syntax, attribute names, even those for
21079: <a href="#foreign-elements">foreign elements</a>, may be written with any mix of lower-
21080: and uppercase letters that are an <a href="infrastructure.html#ascii-case-insensitive">ASCII
21081: case-insensitive</a> match for the attribute's name.</p>
21082:
21083: <p><dfn id="syntax-attribute-value" title="syntax-attribute-value">Attribute values</dfn> are a
21084: mixture of <a href="#syntax-text" title="syntax-text">text</a> and <a href="#syntax-charref" title="syntax-charref">character references</a>, except with the
21085: additional restriction that the text cannot contain an <a href="#syntax-ambiguous-ampersand" title="syntax-ambiguous-ampersand">ambiguous ampersand</a>.</p>
21086:
21087: <p>Attributes can be specified in four different ways:</p>
21088:
21089: <dl><dt>Empty attribute syntax</dt>
21090:
21091: <dd>
21092:
21093: <p>Just the <a href="#syntax-attribute-name" title="syntax-attribute-name">attribute
21094: name</a>. The value is implicitly the empty string.</p>
21095:
21096: <div class="example">
21097:
21098: <p>In the following example, the <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code> attribute is given with
21099: the empty attribute syntax:</p>
21100:
21101: <pre><input <em>disabled</em>></pre>
21102:
21103: </div>
21104:
21105: <p>If an attribute using the empty attribute syntax is to be
21106: followed by another attribute, then there must be a <a href="common-microsyntaxes.html#space-character">space
21107: character</a> separating the two.</p>
21108:
21109: </dd>
21110:
21111: <dt id="unquoted">Unquoted attribute value syntax</dt>
21112:
21113: <dd>
21114:
21115: <p>The <a href="#syntax-attribute-name" title="syntax-attribute-name">attribute name</a>,
21116: followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space character">space
21117: characters</a>, followed by a single U+003D EQUALS SIGN
21118: character, followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space
21119: character">space characters</a>, followed by the <a href="#syntax-attribute-value" title="syntax-attribute-value">attribute value</a>, which, in
21120: addition to the requirements given above for attribute values,
21121: must not contain any literal <a href="common-microsyntaxes.html#space-character" title="space character">space
21122: characters</a>, any U+0022 QUOTATION MARK characters ("),
21123: U+0027 APOSTROPHE characters ('), "=" (U+003D) characters, U+003C LESS-THAN SIGN characters (<), U+003E
21124: GREATER-THAN SIGN characters (>), or "`" (U+0060) characters, and must not be the empty string.</p>
21125:
21126: <!-- The ` character is in this list on a temporary basis, waiting
21127: for IE to fix its parsing bug whereby it treats ` as an
21128: attribute value delimiter. Otherwise, escaping software that
21129: tries to be clever and not use quotes when it doesn't need to
21130: could be tricked by an attacker.
21131:
21132: Posit a site that allows the user to input text that is used
21133: verbatim in two attributes, such that the user can set the
21134: first attribute's value to:
21135:
21136: `
21137:
21138: ...and the second to:
21139:
21140: ` onload='...payload...' end=x
21141:
21142: ...with the assumption that the site is going to not quote
21143: the first one, and quote the second one with double quotes:
21144:
21145: <body title=` class="` onload='...payload...' end=x">
21146:
21147: In IE, this is treated as:
21148:
21149: <body title=' class="'
21150: onload='...payload...'
21151: end='x"'>
21152:
21153: -->
21154:
21155:
21156: <div class="example">
21157:
21158: <p>In the following example, the <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code> attribute is given
21159: with the unquoted attribute value syntax:</p>
21160:
21161: <pre><input <em>value=yes</em>></pre>
21162:
21163: </div>
21164:
21165: <p>If an attribute using the unquoted attribute syntax is to be
21166: followed by another attribute or by the optional "/" (U+002F) character allowed in step 6 of the <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> syntax above, then there
21167: must be a <a href="common-microsyntaxes.html#space-character">space character</a> separating the two.</p>
21168:
21169: </dd>
21170:
21171: <dt>Single-quoted attribute value syntax</dt>
21172:
21173: <dd>
21174:
21175: <p>The <a href="#syntax-attribute-name" title="syntax-attribute-name">attribute name</a>,
21176: followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space character">space
21177: characters</a>, followed by a single U+003D EQUALS SIGN
21178: character, followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space
21179: character">space characters</a>, followed by a single "'" (U+0027) character, followed by the <a href="#syntax-attribute-value" title="syntax-attribute-value">attribute value</a>, which, in
21180: addition to the requirements given above for attribute values,
21181: must not contain any literal "'" (U+0027) characters, and
21182: finally followed by a second single U+0027 APOSTROPHE character
21183: (').</p>
21184:
21185: <div class="example">
21186:
21187: <p>In the following example, the <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is given with the
21188: single-quoted attribute value syntax:</p>
21189:
21190: <pre><input <em>type='checkbox'</em>></pre>
21191:
21192: </div>
21193:
21194: <p>If an attribute using the single-quoted attribute syntax is to
21195: be followed by another attribute, then there must be a <a href="common-microsyntaxes.html#space-character">space
21196: character</a> separating the two.</p>
21197:
21198: </dd>
21199:
21200: <dt>Double-quoted attribute value syntax</dt>
21201:
21202: <dd>
21203:
21204: <p>The <a href="#syntax-attribute-name" title="syntax-attribute-name">attribute name</a>,
21205: followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space character">space
21206: characters</a>, followed by a single U+003D EQUALS SIGN
21207: character, followed by zero or more <a href="common-microsyntaxes.html#space-character" title="space
21208: character">space characters</a>, followed by a single """ (U+0022) character, followed by the <a href="#syntax-attribute-value" title="syntax-attribute-value">attribute value</a>, which, in
21209: addition to the requirements given above for attribute values,
21210: must not contain any literal """ (U+0022) characters,
21211: and finally followed by a second single """ (U+0022) character.</p>
21212:
21213: <div class="example">
21214:
21215: <p>In the following example, the <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute is given with the
21216: double-quoted attribute value syntax:</p>
21217:
21218: <pre><input <em>name="be evil"</em>></pre>
21219:
21220: </div>
21221:
21222: <p>If an attribute using the double-quoted attribute syntax is to
21223: be followed by another attribute, then there must be a <a href="common-microsyntaxes.html#space-character">space
21224: character</a> separating the two.</p>
21225:
21226: </dd>
21227:
21228: </dl><p>There must never be two or more attributes on the same start tag
21229: whose names are an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for
21230: each other.</p>
21231:
21232: <hr><p>When a <a href="#foreign-elements" title="foreign elements">foreign element</a> has
21233: one of the namespaced attributes given by the local name and
21234: namespace of the first and second cells of a row from the following
21235: table, it must be written using the name given by the third cell
21236: from the same row.</p>
21237:
21238: <table><thead><tr><th> Local name </th><th> Namespace </th><th> Attribute name
21239: </th></tr></thead><tbody><tr><td> <code title="">actuate</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:actuate</code>
21240: </td></tr><tr><td> <code title="">arcrole</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:arcrole</code>
21241: </td></tr><tr><td> <code title="">href</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:href</code>
21242: </td></tr><tr><td> <code title="">role</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:role</code>
21243: </td></tr><tr><td> <code title="">show</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:show</code>
21244: </td></tr><tr><td> <code title="">title</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:title</code>
21245: </td></tr><tr><td> <code title="">type</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a> </td><td> <code title="">xlink:type</code>
21246: </td></tr><tr><td> <code title="">base</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a> <!-- attr-xml-base --> </td><td> <code title="">xml:base</code>
21247: </td></tr><tr><td> <code title="">lang</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a> </td><td> <code title="">xml:lang</code>
21248: </td></tr><tr><td> <code title="">space</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a> </td><td> <code title="">xml:space</code>
21249: </td></tr><tr><td> <code title="">xmlns</code> </td><td> <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a> </td><td> <code title="">xmlns</code>
21250: </td></tr><tr><td> <code title="">xlink</code> </td><td> <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a> </td><td> <code title="">xmlns:xlink</code>
21251: </td></tr></tbody></table><p>No other namespaced attribute can be expressed in <a href="#syntax">the
21252: HTML syntax</a>.</p>
21253:
21254: <p class="note">Whether the attributes in the table above are
21255: conforming or not is defined by other specifications (e.g. the SVG
21256: and MathML specifications); this section only describes the syntax
21257: rules if the attributes are serialised using the HTML syntax.</p>
21258:
21259:
21260: <h5 id="optional-tags"><span class="secno">8.1.2.4 </span>Optional tags</h5>
21261:
21262: <p>Certain tags can be <dfn id="syntax-tag-omission" title="syntax-tag-omission">omitted</dfn>.</p>
21263:
21264: <p class="note">Omitting an element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> in the situations
21265: described below does not mean the element is not present; it is
21266: implied, but it is still there. For example, an HTML document always
21267: has a root <code><a href="the-html-element.html#the-html-element">html</a></code> element, even if the string <code title=""><html></code> doesn't appear anywhere in the markup.</p>
21268:
21269: <!-- <html> -->
21270: <p>An <code><a href="the-html-element.html#the-html-element">html</a></code> element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> may be omitted if the
21271: first thing inside the <code><a href="the-html-element.html#the-html-element">html</a></code> element is not a <a href="#syntax-comments" title="syntax-comments">comment</a>.</p>
21272:
21273: <!-- </html> -->
21274: <p>An <code><a href="the-html-element.html#the-html-element">html</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21275: tag</a> may be omitted if the <code><a href="the-html-element.html#the-html-element">html</a></code> element is not
21276: immediately followed by a <a href="#syntax-comments" title="syntax-comments">comment</a>.</p>
21277:
21278: <!-- <head> -->
21279: <p>A <code><a href="the-head-element.html#the-head-element">head</a></code> element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> may be omitted if the
21280: element is empty, or if the first thing inside the
21281: <code><a href="the-head-element.html#the-head-element">head</a></code> element is an element.</p>
21282:
21283: <!-- </head> -->
21284: <p>A <code><a href="the-head-element.html#the-head-element">head</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21285: tag</a> may be omitted if the <code><a href="the-head-element.html#the-head-element">head</a></code> element is not
21286: immediately followed by a <a href="common-microsyntaxes.html#space-character">space character</a> or a <a href="#syntax-comments" title="syntax-comments">comment</a>.</p>
21287:
21288: <!-- <body> -->
21289: <p>A <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> may be omitted if the
21290: element is empty, or if the first thing inside the <code><a href="the-body-element.html#the-body-element">body</a></code>
21291: element is not a <a href="common-microsyntaxes.html#space-character">space character</a> or a <a href="#syntax-comments" title="syntax-comments">comment</a>, except if the first thing
21292: inside the <code><a href="the-body-element.html#the-body-element">body</a></code> element is a <code><a href="the-script-element.html#the-script-element">script</a></code> or
21293: <code><a href="the-style-element.html#the-style-element">style</a></code> element. <!-- Note that even if the </head> end
21294: tag is present, the parser makes <style> and <script> elements
21295: between </head> and <body> end up in the <head> instead of implying
21296: the <body> --></p>
21297:
21298: <!-- </body> -->
21299: <p>A <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21300: tag</a> may be omitted if the <code><a href="the-body-element.html#the-body-element">body</a></code> element is not
21301: immediately followed by a <a href="#syntax-comments" title="syntax-comments">comment</a>.</p>
21302:
21303: <!-- </li> -->
21304: <p>An <code><a href="the-li-element.html#the-li-element">li</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21305: tag</a> may be omitted if the <code><a href="the-li-element.html#the-li-element">li</a></code> element is
21306: immediately followed by another <code><a href="the-li-element.html#the-li-element">li</a></code> element or if there
21307: is no more content in the parent element.</p>
21308:
21309: <!-- </dt> -->
21310: <p>A <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21311: tag</a> may be omitted if the <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element is
21312: immediately followed by another <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element or a
21313: <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element.</p>
21314:
21315: <!-- </dd> -->
21316: <p>A <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21317: tag</a> may be omitted if the <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element is
21318: immediately followed by another <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element or a
21319: <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element, or if there is no more content in the
21320: parent element.</p>
21321:
21322: <!-- </p> -->
21323: <p>A <code><a href="the-p-element.html#the-p-element">p</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21324: tag</a> may be omitted if the <code><a href="the-p-element.html#the-p-element">p</a></code> element is
21325: immediately followed by an <code><a href="the-address-element.html#the-address-element">address</a></code>,
21326: <code><a href="the-article-element.html#the-article-element">article</a></code>, <code><a href="the-aside-element.html#the-aside-element">aside</a></code>, <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>,
21327: <code><a href="#dir">dir</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>, <code><a href="the-dl-element.html#the-dl-element">dl</a></code>,
21328: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>, <code><a href="the-footer-element.html#the-footer-element">footer</a></code>, <code><a href="the-form-element.html#the-form-element">form</a></code>,
21329: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>,
21330: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>, <code><a href="the-header-element.html#the-header-element">header</a></code>,
21331: <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>, <code><a href="the-hr-element.html#the-hr-element">hr</a></code>, <code><a href="#the-menu-element">menu</a></code>,
21332: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>, <code><a href="the-ol-element.html#the-ol-element">ol</a></code>, <code><a href="the-p-element.html#the-p-element">p</a></code>, <code><a href="the-pre-element.html#the-pre-element">pre</a></code>,
21333: <code><a href="the-section-element.html#the-section-element">section</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>, or <code><a href="the-ul-element.html#the-ul-element">ul</a></code>,
21334: element, or if there is no more content in the parent element and
21335: the parent element is not an <code><a href="the-a-element.html#the-a-element">a</a></code> element.</p>
21336:
21337: <!-- </rt> -->
21338: <p>An <code><a href="the-rt-element.html#the-rt-element">rt</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21339: tag</a> may be omitted if the <code><a href="the-rt-element.html#the-rt-element">rt</a></code> element is
21340: immediately followed by an <code><a href="the-rt-element.html#the-rt-element">rt</a></code> or <code><a href="the-rp-element.html#the-rp-element">rp</a></code>
21341: element, or if there is no more content in the parent element.</p>
21342:
21343: <!-- </rp> -->
21344: <p>An <code><a href="the-rp-element.html#the-rp-element">rp</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21345: tag</a> may be omitted if the <code><a href="the-rp-element.html#the-rp-element">rp</a></code> element is
21346: immediately followed by an <code><a href="the-rt-element.html#the-rt-element">rt</a></code> or <code><a href="the-rp-element.html#the-rp-element">rp</a></code>
21347: element, or if there is no more content in the parent element.</p>
21348:
21349: <!-- </optgroup> (the text assumes <optgroup> can only be inside a
21350: <select>; commented out text below can handle the non-<select> case
21351: if we ever allow it) -->
21352: <p>An <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end tag</a> may be omitted if the
21353: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element <!--has an ancestor
21354: <code>select</code> element and--> is immediately followed by
21355: another <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, or if <!--all of the elements
21356: that are ancestors of the <code>optgroup</code> element, up to and
21357: including the first ancestor element that is not an
21358: <code>optgroup</code> element, have no more content--> there is no
21359: more content in the parent element.</p>
21360: <!-- so e.g. the max number of </optgroup>s are omitted here:
21361: <select><optgroup></select>
21362: <p id=x><optgroup></optgroup>x</p>
21363: <p id=x><optgroup><optgroup></optgroup></optgroup>x</p>
21364: <p><optgroup id=x><optgroup></optgroup>x</p>
21365: <p><optgroup><optgroup id=x>x</p>
21366: -->
21367:
21368: <!-- </option> -->
21369: <p>An <code><a href="the-option-element.html#the-option-element">option</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21370: tag</a> may be omitted if the <code><a href="the-option-element.html#the-option-element">option</a></code> element is
21371: immediately followed by another <code><a href="the-option-element.html#the-option-element">option</a></code> element, or if
21372: it is immediately followed by an <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, or
21373: if there is no more content in the parent element.</p>
21374:
21375: <!-- <colgroup> -->
21376: <p>A <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> may be omitted if the
21377: first thing inside the <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element is a
21378: <code><a href="the-col-element.html#the-col-element">col</a></code> element, and if the element is not immediately
21379: preceded by another <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element whose <a href="#syntax-end-tag" title="syntax-end-tag">end tag</a> has been omitted. (It can't be
21380: omitted if the element is empty.)</p>
21381:
21382: <!-- </colgroup> -->
21383: <p>A <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end tag</a> may be omitted if the
21384: <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element is not immediately followed by a
21385: <a href="common-microsyntaxes.html#space-character">space character</a> or a <a href="#syntax-comments" title="syntax-comments">comment</a>.</p>
21386:
21387: <!-- </thead> -->
21388: <p>A <code><a href="the-thead-element.html#the-thead-element">thead</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21389: tag</a> may be omitted if the <code><a href="the-thead-element.html#the-thead-element">thead</a></code> element is
21390: immediately followed by a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> or <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>
21391: element.</p>
21392:
21393: <!-- <tbody> -->
21394: <p>A <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> may be omitted if the
21395: first thing inside the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element is a
21396: <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, and if the element is not immediately
21397: preceded by a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or
21398: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element whose <a href="#syntax-end-tag" title="syntax-end-tag">end
21399: tag</a> has been omitted. (It can't be omitted if the element is
21400: empty.)</p>
21401:
21402: <!-- </tbody> -->
21403: <p>A <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21404: tag</a> may be omitted if the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element is
21405: immediately followed by a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> or <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>
21406: element, or if there is no more content in the parent element.</p>
21407:
21408: <!-- </tfoot> -->
21409: <p>A <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21410: tag</a> may be omitted if the <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element is
21411: immediately followed by a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element, or if there is
21412: no more content in the parent element.</p>
21413:
21414: <!-- </tr> -->
21415: <p>A <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21416: tag</a> may be omitted if the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element is
21417: immediately followed by another <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, or if there
21418: is no more content in the parent element.</p>
21419:
21420: <!-- </td> -->
21421: <p>A <code><a href="the-td-element.html#the-td-element">td</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21422: tag</a> may be omitted if the <code><a href="the-td-element.html#the-td-element">td</a></code> element is
21423: immediately followed by a <code><a href="the-td-element.html#the-td-element">td</a></code> or <code><a href="the-th-element.html#the-th-element">th</a></code>
21424: element, or if there is no more content in the parent element.</p>
21425:
21426: <!-- </th> -->
21427: <p>A <code><a href="the-th-element.html#the-th-element">th</a></code> element's <a href="#syntax-end-tag" title="syntax-end-tag">end
21428: tag</a> may be omitted if the <code><a href="the-th-element.html#the-th-element">th</a></code> element is
21429: immediately followed by a <code><a href="the-td-element.html#the-td-element">td</a></code> or <code><a href="the-th-element.html#the-th-element">th</a></code>
21430: element, or if there is no more content in the parent element.</p>
21431:
21432: <p><strong>However</strong>, a <a href="#syntax-start-tag" title="syntax-start-tag">start
21433: tag</a> must never be omitted if it has any attributes.</p>
21434:
21435:
21436: <h5 id="element-restrictions"><span class="secno">8.1.2.5 </span>Restrictions on content models</h5>
21437:
21438: <p>For historical reasons, certain elements have extra restrictions
21439: beyond even the restrictions given by their content model.</p>
21440:
21441: <p>A <code><a href="the-table-element.html#the-table-element">table</a></code> element must not contain <code><a href="the-tr-element.html#the-tr-element">tr</a></code>
21442: elements, even though these elements are technically allowed inside
21443: <code><a href="the-table-element.html#the-table-element">table</a></code> elements according to the content models
21444: described in this specification. (If a <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element is
21445: put inside a <code><a href="the-table-element.html#the-table-element">table</a></code> in the markup, it will in fact imply
21446: a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> start tag before it.)</p>
21447:
21448: <p>A single <a href="#syntax-newlines" title="syntax-newlines">newline</a> may be
21449: placed immediately after the <a href="#syntax-start-tag" title="syntax-start-tag">start
21450: tag</a> of <code><a href="the-pre-element.html#the-pre-element">pre</a></code> and <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
21451: elements. This does not affect the processing of the element. The
21452: otherwise optional <a href="#syntax-newlines" title="syntax-newlines">newline</a>
21453: <em>must</em> be included if the element's contents themselves start
21454: with a <a href="#syntax-newlines" title="syntax-newlines">newline</a> (because
21455: otherwise the leading newline in the contents would be treated like
21456: the optional newline, and ignored).</p>
21457:
21458: <div class="example">
21459: <p>The following two <code><a href="the-pre-element.html#the-pre-element">pre</a></code> blocks are equivalent:</p>
21460: <pre><pre>Hello</pre></pre>
21461: <pre><pre><br>Hello</pre></pre>
21462: </div>
21463:
21464:
21465: <h5 id="cdata-rcdata-restrictions"><span class="secno">8.1.2.6 </span>Restrictions on the contents of raw text and RCDATA elements</h5>
21466:
21467: <p>The text in <a href="#raw-text-elements" title="raw text elements">raw text</a> and
21468: <a href="#rcdata-elements">RCDATA elements</a> must not contain any occurrences of the
21469: string "<code title=""></</code>" (U+003C LESS-THAN SIGN, U+002F
21470: SOLIDUS) followed by characters that case-insensitively match the
21471: tag name of the element followed by one of "tab" (U+0009), "LF" (U+000A), "FF" (U+000C), "CR" (U+000D), U+0020 SPACE, ">" (U+003E), or
21472: "/" (U+002F).</p>
21473:
21474:
21475: <h4 id="text"><span class="secno">8.1.3 </span>Text</h4>
21476:
21477: <p><dfn id="syntax-text" title="syntax-text">Text</dfn> is allowed inside elements,
21478: attribute values, and comments. Extra constraints are placed on what
21479: is and what is not allowed in text based on where the text is to be
21480: put, as described in the other sections.</p>
21481:
21482:
21483: <h5 id="newlines"><span class="secno">8.1.3.1 </span>Newlines</h5>
21484:
21485: <p><dfn id="syntax-newlines" title="syntax-newlines">Newlines</dfn> in HTML may be
21486: represented either as "CR" (U+000D) characters, "LF" (U+000A) characters, or pairs of "CR" (U+000D),
21487: "LF" (U+000A) characters in that order.</p>
21488:
21489: <p>Where <a href="#syntax-charref" title="syntax-charref">character references</a>
21490: are allowed, a character reference of a "LF" (U+000A)
21491: character (but not a "CR" (U+000D) character) also
21492: represents a <a href="#syntax-newlines" title="syntax-newlines">newline</a>.</p>
21493:
21494:
21495: <h4 id="character-references"><span class="secno">8.1.4 </span>Character references</h4>
21496:
21497: <p>In certain cases described in other sections, <a href="#syntax-text" title="syntax-text">text</a> may be mixed with <dfn id="syntax-charref" title="syntax-charref">character references</dfn>. These can be used
21498: to escape characters that couldn't otherwise legally be included in
21499: <a href="#syntax-text" title="syntax-text">text</a>.</p>
21500:
21501: <p>Character references must start with a U+0026 AMPERSAND character
21502: (&). Following this, there are three possible kinds of character
21503: references:</p>
21504:
21505: <dl><dt>Named character references</dt>
21506:
21507: <dd>The ampersand must be followed by one of the names given in the
21508: <a href="#named-character-references">named character references</a> section, using the same
21509: case. <span class="impl">The name must be one that is terminated by
21510: a ";" (U+003B) character.</span></dd>
21511:
21512:
21513: <dt>Decimal numeric character reference</dt>
21514:
21515: <dd>The ampersand must be followed by a "#" (U+0023) character, followed by one or more digits in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, representing a base-ten
21516: integer that corresponds to a Unicode code point that is allowed
21517: according to the definition below. The digits must then be followed
21518: by a ";" (U+003B) character.</dd>
21519:
21520:
21521: <dt>Hexadecimal numeric character reference</dt>
21522:
21523: <dd>The ampersand must be followed by a "#" (U+0023) character, which must be followed by either a "x" (U+0078) character or a "X" (U+0058) character, which must then be followed by one or more digits in
21524: the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, U+0061
21525: LATIN SMALL LETTER A to U+0066 LATIN SMALL LETTER F, and U+0041
21526: LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL LETTER F,
21527: representing a base-sixteen integer that corresponds to a Unicode
21528: code point that is allowed according to the definition below. The
21529: digits must then be followed by a U+003B SEMICOLON character
21530: (;).</dd>
21531:
21532: </dl><p>The numeric character reference forms described above are allowed
21533: to reference any Unicode code point other than U+0000, U+000D,
21534: permanently undefined Unicode characters (noncharacters), and
21535: control characters other than <a href="common-microsyntaxes.html#space-character" title="space character">space
21536: characters</a>.</p>
21537:
21538: <p>An <dfn id="syntax-ambiguous-ampersand" title="syntax-ambiguous-ampersand">ambiguous
21539: ampersand</dfn> is a U+0026 AMPERSAND character (&) that is
21540: followed by one or more characters in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, <a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>, and <a href="common-microsyntaxes.html#uppercase-ascii-letters">uppercase ASCII letters</a>, followed by a U+003B SEMICOLON character
21541: (;), where these characters do not match any of the names given in
21542: the <a href="#named-character-references">named character references</a> section.</p>
21543:
21544:
21545: <h4 id="cdata-sections"><span class="secno">8.1.5 </span>CDATA sections</h4>
21546:
21547: <p><dfn id="syntax-cdata" title="syntax-cdata">CDATA sections</dfn> must consist of
21548: the following components, in this order:</p>
21549:
21550: <ol><li>The string "<code title=""><![CDATA[</code>".</li>
21551:
21552: <li>Optionally, <a href="#syntax-text" title="syntax-text">text</a>, with the
21553: additional restriction that the text must not contain the string
21554: "<code title="">]]></code>".</li>
21555:
21556: <li>The string "<code title="">]]></code>".</li>
21557:
21558: </ol><div class="example">
21559:
21560: <p>CDATA sections can only be used in foreign content (MathML or
21561: SVG). In this example, a CDATA section is used to escape the
21562: contents of an <code>ms</code> element:</p>
21563:
21564: <pre><p>You can add a string to a number, but this stringifies the number:</p>
21565: <math>
21566: <ms><![CDATA[x<y]]></ms>
21567: <mo>+</mo>
21568: <mn>3</mn>
21569: <mo>=</mo>
21570: <ms><![CDATA[x<y3]]></ms>
21571: </math></pre>
21572:
21573: </div>
21574:
21575:
21576: <h4 id="comments"><span class="secno">8.1.6 </span>Comments</h4>
21577:
21578: <p><dfn id="syntax-comments" title="syntax-comments">Comments</dfn> must start with the
21579: four character sequence U+003C LESS-THAN SIGN, U+0021 EXCLAMATION
21580: MARK, U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS (<code title=""><!--</code>). Following this sequence, the comment may
21581: have <a href="#syntax-text" title="syntax-text">text</a>, with the additional
21582: restriction that the text must not start with a single U+003E
21583: GREATER-THAN SIGN character (>), nor start with a "-" (U+002D) character followed by a U+003E GREATER-THAN SIGN
21584: (>) character, nor contain two consecutive U+002D HYPHEN-MINUS
21585: characters (<code title="">--</code>), nor end with a "-" (U+002D) character. Finally, the comment must be ended by
21586: the three character sequence U+002D HYPHEN-MINUS, U+002D
21587: HYPHEN-MINUS, U+003E GREATER-THAN SIGN (<code title="">--></code>).</p>
21588:
21589:
21590: <div class="impl">
21591:
21592: <h3 id="parsing"><span class="secno">8.2 </span>Parsing HTML documents</h3>
21593:
21594: <p><i>This section only applies to user agents, data mining tools,
21595: and conformance checkers.</i></p>
21596:
21597: <p class="note">The rules for parsing XML documents into DOM trees
21598: are covered by the next section, entitled "<a href="#the-xhtml-syntax">The XHTML
21599: syntax</a>".</p>
21600:
21601: <p>User agents must use the parsing rules described in this section
21602: to generate the DOM trees from <code><a href="#text/html">text/html</a></code> resources.
21603: Together, these rules define what is referred to as the <dfn id="html-parser">HTML
21604: parser</dfn>.</p>
21605:
21606: <div class="note">
21607:
21608: <p>While the HTML syntax described in this specification bears a
21609: close resemblance to SGML and XML, it is a separate language with
21610: its own parsing rules.</p>
21611:
21612: <p>Some earlier versions of HTML (in particular from HTML2 to
21613: HTML4) were based on SGML and used SGML parsing rules. However, few
21614: (if any) web browsers ever implemented true SGML parsing for HTML
21615: documents; the only user agents to strictly handle HTML as an SGML
21616: application have historically been validators. The resulting
21617: confusion — with validators claiming documents to have one
21618: representation while widely deployed Web browsers interoperably
21619: implemented a different representation — has wasted decades
21620: of productivity. This version of HTML thus returns to a non-SGML
21621: basis.</p>
21622:
21623: <p>Authors interested in using SGML tools in their authoring
21624: pipeline are encouraged to use XML tools and the XML serialization
21625: of HTML.</p>
21626:
21627: </div>
21628:
21629: <p>This specification defines the parsing rules for HTML documents,
21630: whether they are syntactically correct or not. Certain points in the
21631: parsing algorithm are said to be <dfn id="parse-error" title="parse error">parse
21632: errors</dfn>. The error handling for parse errors is well-defined:
21633: user agents must either act as described below when encountering
21634: such problems, or must abort processing at the first error that they
21635: encounter for which they do not wish to apply the rules described
21636: below.</p>
21637:
21638: <p>Conformance checkers must report at least one parse error
21639: condition to the user if one or more parse error conditions exist in
21640: the document and must not report parse error conditions if none
21641: exist in the document. Conformance checkers may report more than one
21642: parse error condition if more than one parse error condition exists
21643: in the document. Conformance checkers are not required to recover
21644: from parse errors.</p>
21645:
21646: <p class="note">Parse errors are only errors with the
21647: <em>syntax</em> of HTML. In addition to checking for parse errors,
21648: conformance checkers will also verify that the document obeys all
21649: the other conformance requirements described in this
21650: specification.</p>
21651:
21652: <p>For the purposes of conformance checkers, if a resource is
21653: determined to be in <a href="#syntax">the HTML syntax</a>, then it is an
21654: <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>.</p>
21655:
21656: </div>
21657:
21658:
21659: <div class="impl">
21660:
21661: <h4 id="overview-of-the-parsing-model"><span class="secno">8.2.1 </span>Overview of the parsing model</h4>
21662:
21663: <p class="overview"><object data="images/parsing-model-overview.svg" height="535" width="345"><img alt="" height="450" src="images/parsing-model-overview.png" width="345"></object></p>
21664:
21665: <p>The input to the HTML parsing process consists of a stream of
21666: <a href="infrastructure.html#unicode-code-point" title="Unicode code point">Unicode code points</a>, which
21667: is passed through a <a href="#tokenization">tokenization</a> stage followed by a
21668: <a href="#tree-construction">tree construction</a> stage. The output is a
21669: <code><a href="dom.html#document">Document</a></code> object.</p>
21670:
21671: <p class="note">Implementations that <a href="infrastructure.html#non-scripted">do not
21672: support scripting</a> do not have to actually create a DOM
21673: <code><a href="dom.html#document">Document</a></code> object, but the DOM tree in such cases is
21674: still used as the model for the rest of the specification.</p>
21675:
21676: <p>In the common case, the data handled by the tokenization stage
21677: comes from the network, but <a href="dynamic-markup-insertion.html#dynamic-markup-insertion" title="dynamic markup
21678: insertion">it can also come from script</a> running in the user
21679: agent, e.g. using the <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> API.</p>
21680:
21681: <p id="nestedParsing">There is only one set of states for the
21682: tokenizer stage and the tree construction stage, but the tree
21683: construction stage is reentrant, meaning that while the tree
21684: construction stage is handling one token, the tokenizer might be
21685: resumed, causing further tokens to be emitted and processed before
21686: the first token's processing is complete.</p>
21687:
21688: <div class="example">
21689:
21690: <p>In the following example, the tree construction stage will be
21691: called upon to handle a "p" start tag token while handling the
21692: "script" end tag token:</p>
21693:
21694: <pre>...
21695: <script>
21696: document.write('<p>');
21697: </script>
21698: ...</pre>
21699:
21700: </div>
21701:
21702: <p>To handle these cases, parsers have a <dfn id="script-nesting-level">script nesting
21703: level</dfn>, which must be initially set to zero, and a <dfn id="parser-pause-flag">parser
21704: pause flag</dfn>, which must be initially set to false.</p>
21705:
21706: </div>
21707:
21708:
21709:
21710: <div class="impl">
21711:
21712: <h4 id="the-input-byte-stream"><span class="secno">8.2.2 </span>The <dfn>input byte stream</dfn></h4>
21713:
21714: <p>The stream of Unicode code points that comprises the input to the
21715: tokenization stage will be initially seen by the user agent as a
21716: stream of bytes (typically coming over the network or from the local
21717: file system). The bytes encode the actual characters according to a
21718: particular <i>character encoding</i>, which the user agent must use
21719: to decode the bytes into characters.</p>
21720:
21721: <p class="note">For XML documents, the algorithm user agents must
21722: use to determine the character encoding is given by the XML
21723: specification. This section does not apply to XML documents. <a href="#refsXML">[XML]</a></p>
21724:
21725: <p>The <a href="#encoding-sniffing-algorithm">encoding sniffing algorithm</a> defined below is
21726: used to determine the character encoding.</p>
21727:
21728: <p>Given an encoding, the bytes in the <a href="#the-input-byte-stream">input byte
21729: stream</a> must be converted to Unicode code points for the
21730: tokenizer's <a href="#input-stream">input stream</a>, as described by the rules for
21731: that encoding, except that the leading U+FEFF BYTE ORDER MARK
21732: character, if any, must not be stripped by the encoding layer (it is
21733: stripped by the rule below).</p> <!-- this is to prevent two leading
21734: BOMs from being both stripped, once by the decoder, and once by the
21735: parser -->
21736:
21737: <p>Bytes or sequences of bytes in the original byte stream that
21738: could not be converted to Unicode code points must be converted to
21739: U+FFFD REPLACEMENT CHARACTERs. Specifically, if the encoding is
21740: UTF-8, the bytes must be <a href="infrastructure.html#decoded-as-utf-8,-with-error-handling" title="decoded as UTF-8, with error
21741: handling">decoded with the error handling</a> defined in this
21742: specification.</p>
21743:
21744: <p class="note">Bytes or sequences of bytes in the original byte
21745: stream that did not conform to the encoding specification (e.g.
21746: invalid UTF-8 byte sequences in a UTF-8 input byte stream) are
21747: errors that conformance checkers are expected to report.</p>
21748:
21749: <p>Any byte or sequence of bytes in the original byte stream that is
21750: <a href="#misinterpreted-for-compatibility">misinterpreted for compatibility</a> is a <a href="#parse-error">parse
21751: error</a>.</p>
21752:
21753:
21754: <h5 id="determining-the-character-encoding"><span class="secno">8.2.2.1 </span>Determining the character encoding</h5>
21755:
21756: <p>In some cases, it might be impractical to unambiguously determine
21757: the encoding before parsing the document. Because of this, this
21758: specification provides for a two-pass mechanism with an optional
21759: pre-scan. Implementations are allowed, as described below, to apply
21760: a simplified parsing algorithm to whatever bytes they have available
21761: before beginning to parse the document. Then, the real parser is
21762: started, using a tentative encoding derived from this pre-parse and
21763: other out-of-band metadata. If, while the document is being loaded,
21764: the user agent discovers an encoding declaration that conflicts with
21765: this information, then the parser can get reinvoked to perform a
21766: parse of the document with the real encoding.</p>
21767:
21768: <p id="documentEncoding">User agents must use the following
21769: algorithm, called the <dfn id="encoding-sniffing-algorithm">encoding sniffing algorithm</dfn>, to
21770: determine the character encoding to use when decoding a document in
21771: the first pass. This algorithm takes as input any out-of-band
21772: metadata available to the user agent (e.g. the <a href="urls.html#content-type" title="Content-Type">Content-Type metadata</a> of the document)
21773: and all the bytes available so far, and returns an encoding and a
21774: <dfn id="concept-encoding-confidence" title="concept-encoding-confidence">confidence</dfn>. The
21775: confidence is either <i>tentative</i>, <i>certain</i>, or
21776: <i>irrelevant</i>. The encoding used, and whether the confidence in
21777: that encoding is <i>tentative</i> or <i>certain</i>, is <a href="#meta-charset-during-parse">used during the parsing</a> to
21778: determine whether to <a href="#change-the-encoding">change the encoding</a>. If no
21779: encoding is necessary, e.g. because the parser is operating on a
21780: Unicode stream and doesn't have to use an encoding at all, then the
21781: <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> is
21782: <i>irrelevant</i>.</p>
21783:
21784: <ol><li>
21785:
21786: <p>If the user has explicitly instructed the user agent to
21787: override the document's character encoding with a specific
21788: encoding, optionally return that encoding with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21789: <i>certain</i> and abort these steps.</p>
21790:
21791: <p class="note">Typically, user agents remember such user requests
21792: across sessions, and in some cases apply them to documents in
21793: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>s as well.</p>
21794:
21795: </li>
21796:
21797: <li>
21798:
21799: <p>The user agent may wait for more bytes of the resource to be
21800: available, either in this step or at any later step in this
21801: algorithm. For instance, a user agent might wait 500ms or 1024
21802: bytes, whichever came first. In general preparsing the source to
21803: find the encoding improves performance, as it reduces the need to
21804: throw away the data structures used when parsing upon finding the
21805: encoding information. However, if the user agent delays too long
21806: to obtain data to determine the encoding, then the cost of the
21807: delay could outweigh any performance improvements from the
21808: preparse.</p>
21809:
21810: <p class="note">The authoring conformance requirements for
21811: character encoding declarations limit them to only appearing <a href="the-meta-element.html#charset1024">in the first 1024 bytes</a>. User agents are
21812: therefore encouraged to use the prescan algorithm below (as
21813: invoked by these steps) on the first 1024 bytes, but not to stall
21814: beyond that.</p>
21815:
21816: </li>
21817:
21818: <li>
21819:
21820: <!-- Doing this step before honouring HTTP is important for supporting
21821: http://kb.dsqq.cn/html/2012-09/16/node_193.htm
21822: which is encoded as UTF-8 but is incorrectly labeled as
21823: Content-Type: text/html; charset=GB2312
21824: -->
21825:
21826: <p>For each of the rows in the following table, starting with the
21827: first one and going down, if there are as many or more bytes
21828: available than the number of bytes in the first column, and the
21829: first bytes of the file match the bytes given in the first column,
21830: then return the encoding given in the cell in the second column of
21831: that row, with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21832: <i>certain</i>, and abort these steps:</p>
21833:
21834: <!-- this table is present in several forms in this file; keep them in sync -->
21835: <table><thead><tr><th>Bytes in Hexadecimal
21836: </th><th>Encoding
21837: </th></tr></thead><tbody><!-- nobody uses this
21838: <tr>
21839: <td>00 00 FE FF
21840: <td>UTF-32BE
21841: <tr>
21842: <td>FF FE 00 00
21843: <td>UTF-32LE
21844: --><tr><td>FE FF
21845: </td><td>Big-endian UTF-16
21846: </td></tr><tr><td>FF FE
21847: </td><td>Little-endian UTF-16
21848: </td></tr><tr><td>EF BB BF
21849: </td><td>UTF-8
21850: <!-- nobody uses this
21851: <tr>
21852: <td>DD 73 66 73
21853: <td>UTF-EBCDIC
21854: -->
21855: </td></tr></tbody></table><p class="note">This step looks for Unicode Byte Order Marks
21856: (BOMs).</p>
21857:
21858: <p class="note">That this step happens before the next one
21859: honoring the HTTP <code><a href="urls.html#content-type">Content-Type</a></code> header is a
21860: <a href="introduction.html#willful-violation">willful violation</a> of the HTTP specification,
21861: motivated by a desire to be maximally compatible with legacy
21862: content. <a href="#refsHTTP">[HTTP]</a></p>
21863:
21864: </li>
21865:
21866: <li><p>If the transport layer specifies an encoding, and it is
21867: supported, return that encoding with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21868: <i>certain</i>, and abort these steps.</p></li>
21869:
21870: <li>
21871:
21872: <p>Optionally <a href="#prescan-a-byte-stream-to-determine-its-encoding" title="prescan a byte stream to determine its
21873: encoding">prescan the byte stream to determine its
21874: encoding</a>. The <var title="">end condition</var> is that the
21875: user agent decides that scanning further bytes would not be
21876: efficient. User agents are encouraged to only prescan the first
21877: 1024 bytes. User agents may decide that scanning <em>any</em>
21878: bytes is not efficient, in which case these substeps are entirely
21879: skipped.</p>
21880:
21881: <p>The aforementioned algorithm either aborts unsuccessfully or
21882: returns a character encoding. If it returns a character encoding,
21883: then this algorithm must be aborted, returning the same encoding,
21884: with <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21885: <i>tentative</i>.</p>
21886:
21887: </li>
21888:
21889: <li><p>Otherwise, if the <code><a href="dom.html#document">Document</a></code> is in a <a href="#nested-browsing-context">nested
21890: browsing context</a>, return the encoding of the <a href="#browsing-context-container">browsing
21891: context container</a>'s <code><a href="dom.html#document">Document</a></code>'s <a href="infrastructure.html#document's-character-encoding" title="document's character encoding">character encoding</a>,
21892: with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21893: <i>tentative</i>, and abort these steps.</p></li> <!-- not
21894: carefully tested -->
21895:
21896: <li><p>Otherwise, if the user agent has information on the likely
21897: encoding for this page, e.g. based on the encoding of the page when
21898: it was last visited, then return that encoding, with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21899: <i>tentative</i>, and abort these steps.</p></li>
21900:
21901: <li>
21902:
21903: <p>The user agent may attempt to autodetect the character encoding
21904: from applying frequency analysis or other algorithms to the data
21905: stream. Such algorithms may use information about the resource
21906: other than the resource's contents, including the address of the
21907: resource. If autodetection succeeds in determining a character
21908: encoding, and that encoding is a supported encoding, then return
21909: that encoding, with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21910: <i>tentative</i>, and abort these steps. <a href="#refsUNIVCHARDET">[UNIVCHARDET]</a></p>
21911:
21912: <p class="note">The UTF-8 encoding has a highly detectable bit
21913: pattern. Documents that contain bytes with values greater than
21914: 0x7F which match the UTF-8 pattern are very likely to be UTF-8,
21915: while documents with byte sequences that do not match it are very
21916: likely not. User-agents are therefore encouraged to search for
21917: this common encoding. <a href="#refsPPUTF8">[PPUTF8]</a> <a href="#refsUTF8DET">[UTF8DET]</a></p>
21918:
21919: </li>
21920:
21921: <li>
21922:
21923: <p>Otherwise, return an implementation-defined or user-specified
21924: default character encoding, with the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a>
21925: <i>tentative</i>.</p>
21926:
21927: <p>In controlled environments or in environments where the
21928: encoding of documents can be prescribed (for example, for user
21929: agents intended for dedicated use in new networks), the
21930: comprehensive <code title="">UTF-8</code> encoding is
21931: suggested.</p>
21932:
21933: <p>In other environments, the default encoding is typically
21934: dependent on the user's locale (an approximation of the languages,
21935: and thus often encodings, of the pages that the user is likely to
21936: frequent). The following table gives suggested defaults based on
21937: the user's locale, for compatibility with legacy content. Locales
21938: are identified by BCP 47 language tags. <a href="#refsBCP47">[BCP47]</a></p>
21939:
21940: <!-- based on mozilla 1.9.1 localizations:
21941: http://mxr.mozilla.org/l10n-mozilla1.9.1/find?string=global%2Fintl.properties&tree=l10n-mozilla1.9.1&hint= -->
21942:
21943: <table><thead><tr><th>Locale language
21944: </th><th>Suggested default encoding
21945: </th></tr></thead><tbody><tr><td>ar
21946: </td><td>UTF-8
21947:
21948: </td></tr><tr><td>be
21949: </td><td>ISO-8859-5
21950:
21951: </td></tr><tr><td>bg
21952: </td><td>windows-1251
21953:
21954: </td></tr><tr><td>cs<!-- -CZ -->
21955: </td><td>ISO-8859-2
21956:
21957: </td></tr><tr><td>cy
21958: </td><td>UTF-8
21959:
21960: </td></tr><tr><td>fa<!-- -IR -->
21961: </td><td>UTF-8
21962:
21963: </td></tr><tr><td>he<!-- -IL -->
21964: </td><td>windows-1255
21965:
21966: </td></tr><tr><td>hr
21967: </td><td>UTF-8
21968:
21969: </td></tr><tr><td>hu<!-- -HU -->
21970: </td><td>ISO-8859-2
21971:
21972: </td></tr><tr><td>ja <!-- and ja-JP-mac -->
21973: </td><td>Windows-31J <!-- Shift_JIS -->
21974:
21975: </td></tr><tr><td>kk
21976: </td><td>UTF-8
21977:
21978: </td></tr><tr><td>ko<!-- -KR -->
21979: </td><td>windows-949 <!-- EUC-KR -->
21980:
21981: </td></tr><tr><td>ku
21982: </td><td>windows-1254 <!-- ISO-8859-9 -->
21983:
21984: </td></tr><tr><td>lt
21985: </td><td>windows-1257
21986:
21987: </td></tr><tr><td>lv<!-- -LV -->
21988: </td><td>ISO-8859-13
21989:
21990: </td></tr><tr><td>mk<!-- -MK -->
21991: </td><td>UTF-8
21992:
21993: </td></tr><tr><td>or
21994: </td><td>UTF-8
21995:
21996: </td></tr><tr><td>pl<!-- -PL -->
21997: </td><td>ISO-8859-2
21998:
21999: </td></tr><tr><td>ro
22000: </td><td>UTF-8
22001:
22002: </td></tr><tr><td>ru
22003: </td><td>windows-1251
22004:
22005: </td></tr><tr><td>sk
22006: </td><td>windows-1250
22007:
22008: </td></tr><tr><td>sl
22009: </td><td>ISO-8859-2
22010:
22011: </td></tr><tr><td>sr
22012: </td><td>UTF-8
22013:
22014: </td></tr><tr><td>th
22015: </td><td>windows-874 <!-- TIS-620 -->
22016:
22017: </td></tr><tr><td>tr<!-- -TR -->
22018: </td><td>windows-1254 <!-- ISO-8859-9 -->
22019:
22020: </td></tr><tr><td>uk
22021: </td><td>windows-1251
22022:
22023: </td></tr><tr><td>vi
22024: </td><td>UTF-8
22025:
22026: </td></tr><tr><td>zh-CN
22027: </td><td>GB18030
22028:
22029: </td></tr><tr><td>zh-TW
22030: </td><td>Big5
22031:
22032: </td></tr><tr><td>All other locales
22033: </td><td>windows-1252
22034:
22035: </td></tr></tbody></table></li>
22036:
22037: </ol><p>The <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> must immediately
22038: be set to the value returned from this algorithm, at the same time
22039: as the user agent uses the returned value to select the decoder to
22040: use for the input byte stream.</p>
22041:
22042: <hr><p>When an algorithm requires a user agent to <dfn id="prescan-a-byte-stream-to-determine-its-encoding">prescan a byte
22043: stream to determine its encoding</dfn>, given some defined <var title="">end condition</var>, then it must run the following steps.
22044: These steps either abort unsuccessfully or return a character
22045: encoding.</p>
22046:
22047: <ol><li>
22048:
22049: <p>Let <var title="">position</var> be a pointer to a byte in the
22050: input byte stream, initially pointing at the first byte. If at any
22051: point during these steps the user agent either runs out of bytes
22052: or reaches its <var title="">end condition</var>, then abort the
22053: <a href="#prescan-a-byte-stream-to-determine-its-encoding">prescan a byte stream to determine its encoding</a>
22054: algorithm unsuccessfully.</p>
22055:
22056: </li>
22057:
22058: <li>
22059:
22060: <p><i>Loop</i>: If <var title="">position</var> points to:</p>
22061:
22062: <dl class="switch"><dt>A sequence of bytes starting with: 0x3C 0x21 0x2D 0x2D (ASCII '<!--')</dt>
22063: <dd>
22064:
22065: <p>Advance the <var title="">position</var> pointer so that it
22066: points at the first 0x3E byte which is preceded by two 0x2D
22067: bytes (i.e. at the end of an ASCII '-->' sequence) and comes
22068: after the 0x3C byte that was found. (The two 0x2D bytes can be
22069: the same as the those in the '<!--' sequence.)</p>
22070:
22071: </dd>
22072:
22073: <dt>A sequence of bytes starting with: 0x3C, 0x4D or 0x6D, 0x45 or 0x65, 0x54 or 0x74, 0x41 or 0x61, and one of 0x09, 0x0A, 0x0C, 0x0D, 0x20, 0x2F (case-insensitive ASCII '<meta' followed by a space or slash)</dt>
22074: <dd>
22075:
22076: <ol><li><p>Advance the <var title="">position</var> pointer so
22077: that it points at the next 0x09, 0x0A, 0x0C, 0x0D, 0x20, or
22078: 0x2F byte (the one in sequence of characters matched
22079: above).</p></li>
22080:
22081: <li><p>Let <var title="">attribute list</var> be an empty
22082: list of strings.</p></li> <!-- so long as we only care about
22083: http-equiv, content, and charset, this can be a 3-bit
22084: bitfield -->
22085:
22086: <li><p>Let <var title="">got pragma</var> be false.</p></li>
22087:
22088: <li><p>Let <var title="">need pragma</var> be null.</p></li>
22089:
22090: <li><p>Let <var title="">charset</var> be the null value
22091: (which, for the purposes of this algorithm, is distinct from
22092: an unrecognised encoding or the empty string).</p></li>
22093:
22094: <li><p><i>Attributes</i>: <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">Get an
22095: attribute</a> and its value. If no attribute was sniffed,
22096: then jump to the <i>processing</i> step below.</p></li>
22097:
22098: <li><p>If the attribute's name is already in <var title="">attribute list</var>, then return to the step
22099: labeled <i>attributes</i>.</p>
22100:
22101: </li><li><p>Add the attribute's name to <var title="">attribute
22102: list</var>.</p>
22103:
22104: </li><li>
22105:
22106: <p>Run the appropriate step from the following list, if one
22107: applies:</p>
22108:
22109: <dl class="switch"><dt>If the attribute's name is "<code title="">http-equiv</code>"</dt>
22110:
22111: <dd><p>If the attribute's value is "<code title="">content-type</code>", then set <var title="">got
22112: pragma</var> to true.</p></dd>
22113:
22114: <dt>If the attribute's name is "<code title="">content</code>"</dt>
22115:
22116: <dd><p>Apply the <a href="urls.html#algorithm-for-extracting-an-encoding-from-a-meta-element">algorithm for extracting an encoding
22117: from a <code>meta</code> element</a>, giving the
22118: attribute's value as the string to parse. If an encoding is
22119: returned, and if <var title="">charset</var> is still set
22120: to null, let <var title="">charset</var> be the encoding
22121: returned, and set <var title="">need pragma</var> to
22122: true.</p></dd>
22123:
22124: <dt>If the attribute's name is "<code title="">charset</code>"</dt>
22125:
22126: <dd><p>Let <var title="">charset</var> be the encoding
22127: corresponding to the attribute's value, and set <var title="">need pragma</var> to false.</p></dd>
22128:
22129: </dl></li>
22130:
22131: <li><p>Return to the step labeled <i>attributes</i>.</p></li>
22132:
22133: <li><p><i>Processing</i>: If <var title="">need pragma</var> is
22134: null, then jump to the step below labeled <i>next
22135: byte</i>.</p></li>
22136:
22137: <li><p>If <var title="">need pragma</var> is true but <var title="">got pragma</var> is false, then jump to the step below
22138: labeled <i>next byte</i>.</p></li>
22139:
22140: <li><p>If <var title="">charset</var> is <a href="infrastructure.html#a-utf-16-encoding">a UTF-16
22141: encoding</a>, change the value of <var title="">charset</var> to UTF-8.</p></li>
22142:
22143: <li><p>If <var title="">charset</var> is not a supported
22144: character encoding, then jump to the step below labeled <i>next
22145: byte</i>.</p></li>
22146:
22147: <li><p>Abort the <a href="#prescan-a-byte-stream-to-determine-its-encoding">prescan a byte stream to determine its
22148: encoding</a> algorithm, returning the encoding given by <var title="">charset</var>.</p></li>
22149:
22150: </ol></dd>
22151:
22152: <dt>A sequence of bytes starting with a 0x3C byte (ASCII <), optionally a 0x2F byte (ASCII /), and finally a byte in the range 0x41-0x5A or 0x61-0x7A (an ASCII letter)</dt>
22153: <dd>
22154:
22155: <ol><li><p>Advance the <var title="">position</var> pointer so
22156: that it points at the next 0x09 (ASCII TAB), 0x0A (ASCII LF),
22157: 0x0C (ASCII FF), 0x0D (ASCII CR), 0x20 (ASCII space), or 0x3E
22158: (ASCII >) byte.</p></li>
22159:
22160: <li><p>Repeatedly <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22161: attribute</a> until no further attributes can be found, then
22162: jump to the step below labeled <i>next byte</i>.</p></li>
22163:
22164: </ol></dd>
22165:
22166: <dt>A sequence of bytes starting with: 0x3C 0x21 (ASCII '<!')</dt>
22167: <dt>A sequence of bytes starting with: 0x3C 0x2F (ASCII '</')</dt>
22168: <dt>A sequence of bytes starting with: 0x3C 0x3F (ASCII '<?')</dt>
22169: <dd>
22170:
22171: <p>Advance the <var title="">position</var> pointer so that it
22172: points at the first 0x3E byte (ASCII >) that comes after the
22173: 0x3C byte that was found.</p>
22174:
22175: </dd>
22176:
22177: <dt>Any other byte</dt>
22178: <dd>
22179:
22180: <p>Do nothing with that byte.</p>
22181:
22182: </dd>
22183:
22184: </dl></li>
22185:
22186: <li><i>Next byte</i>: Move <var title="">position</var> so it
22187: points at the next byte in the input byte stream, and return to the
22188: step above labeled <i>loop</i>.</li>
22189:
22190: </ol><p>When the <a href="#prescan-a-byte-stream-to-determine-its-encoding">prescan a byte stream to determine its
22191: encoding</a> algorithm says to <dfn id="concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an attribute</dfn>,
22192: it means doing this:</p>
22193:
22194: <ol><li><p>If the byte at <var title="">position</var> is one of 0x09
22195: (ASCII TAB), 0x0A (ASCII LF), 0x0C (ASCII FF), 0x0D (ASCII CR),
22196: 0x20 (ASCII space), or 0x2F (ASCII /) then advance <var title="">position</var> to the next byte and redo this
22197: step.</p></li>
22198:
22199: <li><p>If the byte at <var title="">position</var> is 0x3E (ASCII
22200: >), then abort the <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22201: attribute</a> algorithm. There isn't one.</p></li>
22202:
22203: <li><p>Otherwise, the byte at <var title="">position</var> is the
22204: start of the attribute name. Let <var title="">attribute name</var>
22205: and <var title="">attribute value</var> be the empty
22206: string.</p></li>
22207:
22208: <li><p><i>Attribute name</i>: Process the byte at <var title="">position</var> as follows:</p>
22209:
22210: <dl class="switch"><dt>If it is 0x3D (ASCII =), and the <var title="">attribute
22211: name</var> is longer than the empty string</dt>
22212:
22213: <dd>Advance <var title="">position</var> to the next byte and
22214: jump to the step below labeled <i>value</i>.</dd>
22215:
22216: <dt>If it is 0x09 (ASCII TAB), 0x0A (ASCII LF), 0x0C (ASCII
22217: FF), 0x0D (ASCII CR), or 0x20 (ASCII space)</dt>
22218:
22219: <dd>Jump to the step below labeled <i>spaces</i>.</dd>
22220:
22221: <dt>If it is 0x2F (ASCII /) or 0x3E (ASCII >)</dt>
22222:
22223: <dd>Abort the <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22224: attribute</a> algorithm. The attribute's name is the value of
22225: <var title="">attribute name</var>, its value is the empty
22226: string.</dd>
22227:
22228: <dt>If it is in the range 0x41 (ASCII A) to 0x5A (ASCII
22229: Z)</dt>
22230:
22231: <dd>Append the Unicode character with code point <span title=""><var title="">b</var>+0x20</span> to <var title="">attribute name</var> (where <var title="">b</var> is
22232: the value of the byte at <var title="">position</var>). (This
22233: converts the input to lowercase.)</dd>
22234:
22235: <dt>Anything else</dt>
22236:
22237: <dd>Append the Unicode character with the same code point as the
22238: value of the byte at <var title="">position</var>) to <var title="">attribute name</var>. (It doesn't actually matter how
22239: bytes outside the ASCII range are handled here, since only
22240: ASCII characters can contribute to the detection of a character
22241: encoding.)</dd>
22242:
22243: </dl></li>
22244:
22245: <li><p>Advance <var title="">position</var> to the next byte and
22246: return to the previous step.</p></li>
22247:
22248: <li><p><i>Spaces</i>: If the byte at <var title="">position</var> is one of 0x09 (ASCII TAB), 0x0A (ASCII
22249: LF), 0x0C (ASCII FF), 0x0D (ASCII CR), or 0x20 (ASCII space) then
22250: advance <var title="">position</var> to the next byte, then,
22251: repeat this step.</p></li>
22252:
22253: <li><p>If the byte at <var title="">position</var> is <em>not</em>
22254: 0x3D (ASCII =), abort the <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22255: attribute</a> algorithm. The attribute's name is the value of
22256: <var title="">attribute name</var>, its value is the empty
22257: string.</p></li>
22258:
22259: <li><p>Advance <var title="">position</var> past the 0x3D (ASCII
22260: =) byte.</p></li>
22261:
22262: <li><p><i>Value</i>: If the byte at <var title="">position</var> is one of 0x09 (ASCII TAB), 0x0A (ASCII
22263: LF), 0x0C (ASCII FF), 0x0D (ASCII CR), or 0x20 (ASCII space) then
22264: advance <var title="">position</var> to the next byte, then,
22265: repeat this step.</p></li>
22266:
22267: <li><p>Process the byte at <var title="">position</var> as
22268: follows:</p>
22269:
22270: <dl class="switch"><dt>If it is 0x22 (ASCII ") or 0x27 (ASCII ')</dt>
22271:
22272: <dd>
22273:
22274: <ol><li>Let <var title="">b</var> be the value of the byte at
22275: <var title="">position</var>.</li>
22276:
22277: <li><i>Quote loop</i>: Advance <var title="">position</var> to
22278: the next byte.</li>
22279:
22280: <li>If the value of the byte at <var title="">position</var> is
22281: the value of <var title="">b</var>, then advance <var title="">position</var> to the next byte and abort the "get an
22282: attribute" algorithm. The attribute's name is the value of <var title="">attribute name</var>, and its value is the value of
22283: <var title="">attribute value</var>.</li>
22284:
22285: <li>Otherwise, if the value of the byte at <var title="">position</var> is in the range 0x41 (ASCII A) to 0x5A
22286: (ASCII Z), then append a Unicode character to <var title="">attribute value</var> whose code point is 0x20 more
22287: than the value of the byte at <var title="">position</var>.</li>
22288:
22289: <li>Otherwise, append a Unicode character to <var title="">attribute value</var> whose code point is the same as
22290: the value of the byte at <var title="">position</var>.</li>
22291:
22292: <li>Return to the step above labeled <i>quote loop</i>.</li>
22293:
22294: </ol></dd>
22295:
22296: <dt>If it is 0x3E (ASCII >)</dt>
22297:
22298: <dd>Abort the <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22299: attribute</a> algorithm. The attribute's name is the value of
22300: <var title="">attribute name</var>, its value is the empty
22301: string.</dd>
22302:
22303:
22304: <dt>If it is in the range 0x41 (ASCII A) to 0x5A (ASCII
22305: Z)</dt>
22306:
22307: <dd>Append the Unicode character with code point <span title=""><var title="">b</var>+0x20</span> to <var title="">attribute value</var> (where <var title="">b</var> is
22308: the value of the byte at <var title="">position</var>). Advance
22309: <var title="">position</var> to the next byte.</dd>
22310:
22311: <dt>Anything else</dt>
22312:
22313: <dd>Append the Unicode character with the same code point as the
22314: value of the byte at <var title="">position</var>) to <var title="">attribute value</var>. Advance <var title="">position</var> to the next byte.</dd>
22315:
22316: </dl></li>
22317:
22318: <li><p>Process the byte at <var title="">position</var> as
22319: follows:</p>
22320:
22321: <dl class="switch"><dt>If it is 0x09 (ASCII TAB), 0x0A (ASCII LF), 0x0C (ASCII
22322: FF), 0x0D (ASCII CR), 0x20 (ASCII space), or 0x3E (ASCII
22323: >)</dt>
22324:
22325: <dd>Abort the <a href="#concept-get-attributes-when-sniffing" title="concept-get-attributes-when-sniffing">get an
22326: attribute</a> algorithm. The attribute's name is the value of
22327: <var title="">attribute name</var> and its value is the value of
22328: <var title="">attribute value</var>.</dd>
22329:
22330: <dt>If it is in the range 0x41 (ASCII A) to 0x5A (ASCII Z)</dt>
22331:
22332: <dd>Append the Unicode character with code point <span title=""><var title="">b</var>+0x20</span> to <var title="">attribute value</var> (where <var title="">b</var> is
22333: the value of the byte at <var title="">position</var>).</dd>
22334:
22335: <dt>Anything else</dt>
22336:
22337: <dd>Append the Unicode character with the same code point as the
22338: value of the byte at <var title="">position</var>) to <var title="">attribute value</var>.</dd>
22339:
22340: </dl></li>
22341:
22342: <li><p>Advance <var title="">position</var> to the next byte and
22343: return to the previous step.</p></li>
22344:
22345: </ol><p>For the sake of interoperability, user agents should not use a
22346: pre-scan algorithm that returns different results than the one
22347: described above. (But, if you do, please at least let us know, so
22348: that we can improve this algorithm and benefit everyone...)</p>
22349:
22350: <!--(removed this since the specs are being changed)
22351: <p class="note">These algorithms are a <span>willful
22352: violation</span> of the HTTP specification, which requires that the
22353: encoding be assumed to be ISO-8859-1 in the absence of a
22354: <span>character encoding declaration</span> to the contrary, and of
22355: RFC 2046, which requires that the encoding be assumed to be US-ASCII
22356: in the absence of a <span>character encoding declaration</span> to
22357: the contrary. This specification's third approach is motivated by a
22358: desire to be maximally compatible with legacy content. <a
22359: href="#refsHTTP">[HTTP]</a> <a href="#refsRFC2046">[RFC2046]</a></p>
22360: -->
22361:
22362:
22363:
22364: <h5 id="character-encodings-0"><span class="secno">8.2.2.2 </span>Character encodings</h5>
22365:
22366: <p>User agents must at a minimum support the UTF-8 and Windows-1252
22367: encodings, but may support more. <a href="#refsRFC3629">[RFC3629]</a> <a href="#refsWIN1252">[WIN1252]</a></p>
22368:
22369: <p class="note">It is not unusual for Web browsers to support dozens
22370: if not upwards of a hundred distinct character encodings.</p>
22371:
22372: <p>User agents must support the <a href="infrastructure.html#preferred-mime-name">preferred MIME name</a> of
22373: every character encoding they support, and should support all the
22374: IANA-registered names and aliases of every character encoding they
22375: support. <a href="#refsIANACHARSET">[IANACHARSET]</a></p>
22376:
22377: <p>When comparing a string specifying a character encoding with the
22378: name or alias of a character encoding to determine if they are
22379: equal, user agents must remove any leading or trailing <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a> in both names, and
22380: then perform the comparison in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
22381: case-insensitive</a> manner.</p>
22382:
22383: <hr><p>When a user agent would otherwise use an encoding given in the
22384: first column of the following table to either convert content to
22385: Unicode characters or convert Unicode characters to bytes, it must
22386: instead use the encoding given in the cell in the second column of
22387: the same row. When a byte or sequence of bytes is treated
22388: differently due to this encoding aliasing, it is said to have been
22389: <dfn id="misinterpreted-for-compatibility">misinterpreted for compatibility</dfn>.</p>
22390:
22391: <table id="table-encoding-overrides"><caption>Character encoding overrides</caption>
22392: <thead><tr><th> Input encoding </th><th> Replacement encoding </th><th> References
22393: </th></tr></thead><tbody><tr><td> EUC-KR </td><td> windows-949 </td><td>
22394: <a href="#refsEUCKR">[EUCKR]</a>
22395: <a href="#refsWIN949">[WIN949]</a>
22396: </td></tr><tr><td> EUC-JP </td><td> CP51932 </td><td>
22397: <a href="#refsEUCJP">[EUCJP]</a>
22398: <a href="#refsCP51932">[CP51932]</a>
22399: </td></tr><tr><td> GB2312 </td><td> GBK </td><td>
22400: <a href="#refsRFC1345">[RFC1345]</a>
22401: <a href="#refsGBK">[GBK]</a>
22402: </td></tr><tr><td> GB_2312-80 </td><td> GBK </td><td>
22403: <a href="#refsRFC1345">[RFC1345]</a>
22404: <a href="#refsGBK">[GBK]</a>
22405: </td></tr><tr><td> ISO-2022-JP </td><td> CP50220 </td><td>
22406: <a href="#refsRFC1468">[RFC1468]</a><!-- ISO-2022-JP -->
22407: <a href="#refsRFC2237">[RFC2237]</a><!-- ISO-2022-JP-1 -->
22408: <a href="#refsRFC1554">[RFC1554]</a><!-- ISO-2022-JP-2 -->
22409: <a href="#refsCP50220">[CP50220]</a><!-- CP50220, the compatibility replacement for ISO-2022-JP -->
22410: </td></tr><tr><td> ISO-8859-1 </td><td> windows-1252 </td><td>
22411: <a href="#refsRFC1345">[RFC1345]</a>
22412: <a href="#refsWIN1252">[WIN1252]</a>
22413: </td></tr><tr><td> ISO-8859-9 </td><td> windows-1254 </td><td>
22414: <a href="#refsRFC1345">[RFC1345]</a>
22415: <a href="#refsWIN1254">[WIN1254]</a>
22416: </td></tr><tr><td> ISO-8859-11 </td><td> windows-874 </td><td>
22417: <a href="#refsISO885911">[ISO885911]</a>
22418: <a href="#refsWIN874">[WIN874]</a>
22419: </td></tr><tr><td> KS_C_5601-1987 </td><td> windows-949 </td><td>
22420: <a href="#refsRFC1345">[RFC1345]</a>
22421: <a href="#refsWIN949">[WIN949]</a>
22422: </td></tr><tr><td> Shift_JIS </td><td> Windows-31J </td><td>
22423: <a href="#refsSHIFTJIS">[SHIFTJIS]</a>
22424: <a href="#refsWIN31J">[WIN31J]</a>
22425: </td></tr><tr><td> TIS-620 </td><td> windows-874 </td><td>
22426: <a href="#refsTIS620">[TIS620]</a>
22427: <a href="#refsWIN874">[WIN874]</a>
22428: </td></tr><tr><td> US-ASCII </td><td> windows-1252 </td><td>
22429: <a href="#refsRFC1345">[RFC1345]</a>
22430: <a href="#refsWIN1252">[WIN1252]</a>
22431: </td></tr></tbody></table><p class="note">The requirement to treat certain encodings as other
22432: encodings according to the table above is a <a href="introduction.html#willful-violation">willful
22433: violation</a> of the W3C Character Model specification, motivated
22434: by a desire for compatibility with legacy content. <a href="#refsCHARMOD">[CHARMOD]</a></p>
22435:
22436: <p>When a user agent is to use the self-describing UTF-16 encoding
22437: but no BOM has been found, user agents must default to little-endian
22438: UTF-16.</p>
22439:
22440: <p class="note">The requirement to default UTF-16 to little-endian
22441: rather than big-endian is a <a href="introduction.html#willful-violation">willful violation</a> of RFC
22442: 2781, motivated by a desire for compatibility with legacy content.
22443: <a href="#refsRFC2781">[RFC2781]</a></p>
22444:
22445: <hr><p>User agents must not support the CESU-8, UTF-7, BOCU-1 and SCSU
22446: encodings. <a href="#refsCESU8">[CESU8]</a> <a href="#refsUTF7">[UTF7]</a> <a href="#refsBOCU1">[BOCU1]</a> <a href="#refsSCSU">[SCSU]</a></p>
22447:
22448: <p>Support for encodings based on EBCDIC is not recommended. This
22449: encoding is rarely used for publicly-facing Web content.</p>
22450:
22451: <p>Support for UTF-32 is not recommended. This encoding is rarely
22452: used, and frequently implemented incorrectly.</p>
22453:
22454: <p class="note">This specification does not make any attempt to
22455: support EBCDIC-based encodings and UTF-32 in its algorithms; support
22456: and use of these encodings can thus lead to unexpected behavior in
22457: implementations of this specification.</p>
22458:
22459:
22460:
22461: <h5 id="changing-the-encoding-while-parsing"><span class="secno">8.2.2.3 </span>Changing the encoding while parsing</h5>
22462:
22463: <p>When the parser requires the user agent to <dfn id="change-the-encoding">change the
22464: encoding</dfn>, it must run the following steps. This might happen
22465: if the <a href="#encoding-sniffing-algorithm">encoding sniffing algorithm</a> described above
22466: failed to find an encoding, or if it found an encoding that was not
22467: the actual encoding of the file.</p>
22468:
22469: <ol><li>If the encoding that is already being used to interpret the
22470: input stream is <a href="infrastructure.html#a-utf-16-encoding">a UTF-16 encoding</a>, then set the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> to
22471: <i>certain</i> and abort these steps. The new encoding is ignored;
22472: if it was anything but the same encoding, then it would be clearly
22473: incorrect.</li>
22474:
22475: <li>If the new encoding is <a href="infrastructure.html#a-utf-16-encoding">a UTF-16 encoding</a>, change
22476: it to UTF-8.</li>
22477:
22478: <li>If the new encoding is identical or equivalent to the encoding
22479: that is already being used to interpret the input stream, then set
22480: the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> to
22481: <i>certain</i> and abort these steps. This happens when the
22482: encoding information found in the file matches what the
22483: <a href="#encoding-sniffing-algorithm">encoding sniffing algorithm</a> determined to be the
22484: encoding, and in the second pass through the parser if the first
22485: pass found that the encoding sniffing algorithm described in the
22486: earlier section failed to find the right encoding.</li>
22487:
22488: <li>If all the bytes up to the last byte converted by the current
22489: decoder have the same Unicode interpretations in both the current
22490: encoding and the new encoding, and if the user agent supports
22491: changing the converter on the fly, then the user agent may change
22492: to the new converter for the encoding on the fly. Set the
22493: <a href="infrastructure.html#document's-character-encoding">document's character encoding</a> and the encoding used to
22494: convert the input stream to the new encoding, set the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> to
22495: <i>certain</i>, and abort these steps.</li>
22496:
22497: <li>Otherwise, <a href="#navigate">navigate</a><!--DONAV reparse--> to the
22498: document again, with <a href="#replacement-enabled">replacement enabled</a>, and using
22499: the same <a href="#source-browsing-context">source browsing context</a>, but this time skip
22500: the <a href="#encoding-sniffing-algorithm">encoding sniffing algorithm</a> and instead just set
22501: the encoding to the new encoding and the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> to
22502: <i>certain</i>. Whenever possible, this should be done without
22503: actually contacting the network layer (the bytes should be
22504: re-parsed from memory), even if, e.g., the document is marked as
22505: not being cacheable. If this is not possible and contacting the
22506: network layer would involve repeating a request that uses a method
22507: other than HTTP GET (<a href="urls.html#concept-http-equivalent-get" title="concept-http-equivalent-get">or
22508: equivalent</a> for non-HTTP URLs), then instead set the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> to
22509: <i>certain</i> and ignore the new encoding. The resource will be
22510: misinterpreted. User agents may notify the user of the situation,
22511: to aid in application development.</li>
22512:
22513: </ol><h5 id="preprocessing-the-input-stream"><span class="secno">8.2.2.4 </span>Preprocessing the input stream</h5>
22514:
22515: <p>The <dfn id="input-stream">input stream</dfn> consists of the characters pushed
22516: into it as the <a href="#the-input-byte-stream">input byte stream</a> is decoded or from the
22517: various APIs that directly manipulate the input stream.</p>
22518:
22519: <p>One leading U+FEFF BYTE ORDER MARK character must be ignored if
22520: any are present in the <a href="#input-stream">input stream</a>.</p>
22521:
22522: <p class="note">The requirement to strip a U+FEFF BYTE ORDER MARK
22523: character regardless of whether that character was used to determine
22524: the byte order is a <a href="introduction.html#willful-violation">willful violation</a> of Unicode,
22525: motivated by a desire to increase the resilience of user agents in
22526: the face of naïve transcoders.</p>
22527:
22528: <p>Any occurrences of any characters in the ranges U+0001 to U+0008,
22529: <!-- HT, LF allowed --> <!-- U+000B is in the next list --> <!-- FF,
22530: CR allowed --> U+000E to U+001F, <!-- ASCII allowed --> U+007F
22531: <!--to U+0084, (U+0085 NEL not allowed), U+0086--> to U+009F, U+FDD0
22532: to U+FDEF, and characters U+000B, U+FFFE, U+FFFF, U+1FFFE, U+1FFFF,
22533: U+2FFFE, U+2FFFF, U+3FFFE, U+3FFFF, U+4FFFE, U+4FFFF, U+5FFFE,
22534: U+5FFFF, U+6FFFE, U+6FFFF, U+7FFFE, U+7FFFF, U+8FFFE, U+8FFFF,
22535: U+9FFFE, U+9FFFF, U+AFFFE, U+AFFFF, U+BFFFE, U+BFFFF, U+CFFFE,
22536: U+CFFFF, U+DFFFE, U+DFFFF, U+EFFFE, U+EFFFF, U+FFFFE, U+FFFFF,
22537: U+10FFFE, and U+10FFFF are <a href="#parse-error" title="parse error">parse
22538: errors</a>. These are all control characters or permanently
22539: undefined Unicode characters (noncharacters).</p>
22540:
22541: <p>"CR" (U+000D) characters and "LF" (U+000A)
22542: characters are treated specially. All CR characters must be
22543: converted to LF characters, and any LF characters that immediately
22544: follow a CR character must be ignored. Thus, newlines in HTML DOMs
22545: are represented by LF characters, and there are never any CR
22546: characters in the input to the <a href="#tokenization">tokenization</a> stage.</p>
22547:
22548: <p>The <dfn id="next-input-character">next input character</dfn> is the first character in the
22549: <a href="#input-stream">input stream</a> that has not yet been <dfn id="consumed">consumed</dfn>
22550: or explicitly ignored by the requirements in this section.
22551: Initially, the <i><a href="#next-input-character">next input character</a></i> is the first character in
22552: the input. The <dfn id="current-input-character">current input character</dfn> is the last
22553: character to have been <i><a href="#consumed">consumed</a></i>.</p>
22554:
22555: <p>The <dfn id="insertion-point">insertion point</dfn> is the position (just before a
22556: character or just before the end of the input stream) where content
22557: inserted using <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> is actually
22558: inserted. The insertion point is relative to the position of the
22559: character immediately after it, it is not an absolute offset into
22560: the input stream. Initially, the insertion point is
22561: undefined.</p>
22562:
22563: <p>The "EOF" character in the tables below is a conceptual character
22564: representing the end of the <a href="#input-stream">input stream</a>. If the parser
22565: is a <a href="dynamic-markup-insertion.html#script-created-parser">script-created parser</a>, then the end of the
22566: <a href="#input-stream">input stream</a> is reached when an <dfn id="explicit-eof-character">explicit "EOF"
22567: character</dfn> (inserted by the <code title="dom-document-close"><a href="dynamic-markup-insertion.html#dom-document-close">document.close()</a></code> method) is
22568: consumed. Otherwise, the "EOF" character is not a real character in
22569: the stream, but rather the lack of any further characters.</p>
22570:
22571: </div>
22572:
22573:
22574: <div class="impl">
22575:
22576: <h4 id="parse-state"><span class="secno">8.2.3 </span>Parse state</h4>
22577:
22578: <h5 id="the-insertion-mode"><span class="secno">8.2.3.1 </span>The insertion mode</h5>
22579:
22580: <p>The <dfn id="insertion-mode">insertion mode</dfn> is a state variable that controls
22581: the primary operation of the tree construction stage.</p>
22582:
22583: <p>Initially, the <a href="#insertion-mode">insertion mode</a> is "<a href="#the-initial-insertion-mode" title="insertion mode: initial">initial</a>". It can change to
22584: "<a href="#the-before-html-insertion-mode" title="insertion mode: before html">before html</a>",
22585: "<a href="#the-before-head-insertion-mode" title="insertion mode: before head">before head</a>",
22586: "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>", "<a href="#parsing-main-inheadnoscript" title="insertion mode: in head noscript">in head noscript</a>",
22587: "<a href="#the-after-head-insertion-mode" title="insertion mode: after head">after head</a>", "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>", "<a href="#parsing-main-incdata" title="insertion mode: text">text</a>", "<a href="#parsing-main-intable" title="insertion
22588: mode: in table">in table</a>", "<a href="#parsing-main-intabletext" title="insertion mode: in
22589: table text">in table text</a>", "<a href="#parsing-main-incaption" title="insertion mode: in
22590: caption">in caption</a>", "<a href="#parsing-main-incolgroup" title="insertion mode: in column
22591: group">in column group</a>", "<a href="#parsing-main-intbody" title="insertion mode: in
22592: table body">in table body</a>", "<a href="#parsing-main-intr" title="insertion mode: in
22593: row">in row</a>", "<a href="#parsing-main-intd" title="insertion mode: in cell">in
22594: cell</a>", "<a href="#parsing-main-inselect" title="insertion mode: in select">in
22595: select</a>", "<a href="#parsing-main-inselectintable" title="insertion mode: in select in table">in
22596: select in table</a>", "<a href="#parsing-main-afterbody" title="insertion mode: after
22597: body">after body</a>", "<a href="#parsing-main-inframeset" title="insertion mode: in
22598: frameset">in frameset</a>", "<a href="#parsing-main-afterframeset" title="insertion mode: after
22599: frameset">after frameset</a>", "<a href="#the-after-after-body-insertion-mode" title="insertion mode:
22600: after after body">after after body</a>", and "<a href="#the-after-after-frameset-insertion-mode" title="insertion mode: after after frameset">after after
22601: frameset</a>" during the course of the parsing, as described in
22602: the <a href="#tree-construction">tree construction</a> stage. The insertion mode affects
22603: how tokens are processed and whether CDATA sections are
22604: supported.</p>
22605:
22606: <p>Several of these modes, namely "<a href="#parsing-main-inhead" title="insertion mode: in
22607: head">in head</a>", "<a href="#parsing-main-inbody" title="insertion mode: in body">in
22608: body</a>", "<a href="#parsing-main-intable" title="insertion mode: in table">in
22609: table</a>", and "<a href="#parsing-main-inselect" title="insertion mode: in select">in
22610: select</a>", are special, in that the other modes defer to them
22611: at various times. When the algorithm below says that the user agent
22612: is to do something "<dfn id="using-the-rules-for">using the rules for</dfn> the <var title="">m</var> insertion mode", where <var title="">m</var> is one
22613: of these modes, the user agent must use the rules described under
22614: the <var title="">m</var> <a href="#insertion-mode">insertion mode</a>'s section, but
22615: must leave the <a href="#insertion-mode">insertion mode</a> unchanged unless the
22616: rules in <var title="">m</var> themselves switch the <a href="#insertion-mode">insertion
22617: mode</a> to a new value.</p>
22618:
22619: <p>When the insertion mode is switched to "<a href="#parsing-main-incdata" title="insertion
22620: mode: text">text</a>" or "<a href="#parsing-main-intabletext" title="insertion mode: in table
22621: text">in table text</a>", the <dfn id="original-insertion-mode">original insertion mode</dfn>
22622: is also set. This is the insertion mode to which the tree
22623: construction stage will return.</p>
22624:
22625: <hr><p>When the steps below require the UA to <dfn id="reset-the-insertion-mode-appropriately">reset the insertion
22626: mode appropriately</dfn>, it means the UA must follow these
22627: steps:</p>
22628:
22629: <ol><li>Let <var title="">last</var> be false.</li>
22630:
22631: <li>Let <var title="">node</var> be the last node in the
22632: <a href="#stack-of-open-elements">stack of open elements</a>.</li>
22633:
22634: <li><i>Loop</i>: If <var title="">node</var> is the first node in
22635: the stack of open elements, then set <var title="">last</var> to
22636: true and set <var title="">node</var> to the <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element.
22637: (<a href="#fragment-case">fragment case</a>)</li>
22638:
22639: <li>If <var title="">node</var> is a <code><a href="the-select-element.html#the-select-element">select</a></code> element,
22640: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inselect" title="insertion mode: in select">in select</a>" and abort these
22641: steps. (<a href="#fragment-case">fragment case</a>)</li>
22642:
22643: <li>If <var title="">node</var> is a <code><a href="the-td-element.html#the-td-element">td</a></code> or
22644: <code><a href="the-th-element.html#the-th-element">th</a></code> element and <var title="">last</var> is false, then
22645: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intd" title="insertion
22646: mode: in cell">in cell</a>" and abort these steps.</li>
22647:
22648: <li>If <var title="">node</var> is a <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, then
22649: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intr" title="insertion
22650: mode: in row">in row</a>" and abort these steps.</li>
22651:
22652: <li>If <var title="">node</var> is a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
22653: <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element, then switch the
22654: <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intbody" title="insertion mode: in
22655: table body">in table body</a>" and abort these steps.</li>
22656:
22657: <li>If <var title="">node</var> is a <code><a href="the-caption-element.html#the-caption-element">caption</a></code> element,
22658: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incaption" title="insertion mode: in caption">in caption</a>" and abort
22659: these steps.</li>
22660:
22661: <li>If <var title="">node</var> is a <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element,
22662: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incolgroup" title="insertion mode: in column group">in column group</a>" and
22663: abort these steps. (<a href="#fragment-case">fragment case</a>)</li>
22664:
22665: <li>If <var title="">node</var> is a <code><a href="the-table-element.html#the-table-element">table</a></code> element,
22666: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>" and abort these
22667: steps.</li>
22668:
22669: <li>If <var title="">node</var> is a <code><a href="the-head-element.html#the-head-element">head</a></code> element,
22670: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" ("<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>"! <em> not "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>"</em>!) and abort
22671: these steps. (<a href="#fragment-case">fragment case</a>)</li> <!-- This is only
22672: here for now in case people think that the spec accidentally
22673: omitted it and try to "fix" it. Note that noscript-in-head is also
22674: handled this way. This is all intentional. The only thing it
22675: doesn't handle is the scripting-disabled fragment parsing case for
22676: a <head> element containing a <noscript> which itself contains
22677: something other than a <link> or a <style> element; you'd expect
22678: that to break out of the <noscript> but it doesn't. This is an edge
22679: case that doesn't affect the spec, since the algorithm for fragment
22680: parsing is only used for innerHTML/outerHTML/insertAdjacentHTML(),
22681: where we know scripting is enabled. -->
22682:
22683: <li>If <var title="">node</var> is a <code><a href="the-body-element.html#the-body-element">body</a></code> element,
22684: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" and abort these
22685: steps.</li>
22686:
22687: <li>If <var title="">node</var> is a <code><a href="#frameset">frameset</a></code> element,
22688: then switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inframeset" title="insertion mode: in frameset">in frameset</a>" and abort
22689: these steps. (<a href="#fragment-case">fragment case</a>)</li>
22690:
22691: <li>If <var title="">node</var> is an <code><a href="the-html-element.html#the-html-element">html</a></code> element,
22692: then <!--: if the <span><code title="">head</code> element
22693: pointer</span> is null,--> switch the <a href="#insertion-mode">insertion mode</a>
22694: to "<a href="#the-before-head-insertion-mode" title="insertion mode: before head">before
22695: head</a>"<!--, otherwise, switch the <span>insertion mode</span>
22696: to "<span title="insertion mode: after head">after head</span>".-->
22697: Then, <!-- in either case, --> abort these steps. (<a href="#fragment-case">fragment
22698: case</a>)</li> <!-- if the head element pointer can ever be
22699: non-null when we're going through these steps, we'll need to
22700: uncomment out the commented-out bits -->
22701:
22702: <li>If <var title="">last</var> is true, then switch the
22703: <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inbody" title="insertion mode: in
22704: body">in body</a>" and abort these steps. (<a href="#fragment-case">fragment
22705: case</a>)</li>
22706:
22707: <li>Let <var title="">node</var> now be the node before <var title="">node</var> in the <a href="#stack-of-open-elements">stack of open
22708: elements</a>.</li>
22709:
22710: <li>Return to the step labeled <i>loop</i>.</li>
22711:
22712: </ol><h5 id="the-stack-of-open-elements"><span class="secno">8.2.3.2 </span>The stack of open elements</h5>
22713:
22714: <p>Initially, the <dfn id="stack-of-open-elements">stack of open elements</dfn> is empty. The
22715: stack grows downwards; the topmost node on the stack is the first
22716: one added to the stack, and the bottommost node of the stack is the
22717: most recently added node in the stack (notwithstanding when the
22718: stack is manipulated in a random access fashion as part of <a href="#adoptionAgency">the handling for misnested tags</a>).</p>
22719:
22720: <p>The "<a href="#the-before-html-insertion-mode" title="insertion mode: before html">before
22721: html</a>" <a href="#insertion-mode">insertion mode</a> creates the
22722: <code><a href="the-html-element.html#the-html-element">html</a></code> root element node, which is then added to the
22723: stack.</p>
22724:
22725: <p>In the <a href="#fragment-case">fragment case</a>, the <a href="#stack-of-open-elements">stack of open
22726: elements</a> is initialized to contain an <code><a href="the-html-element.html#the-html-element">html</a></code>
22727: element that is created as part of <a href="#html-fragment-parsing-algorithm" title="html fragment
22728: parsing algorithm">that algorithm</a>. (The <a href="#fragment-case">fragment
22729: case</a> skips the "<a href="#the-before-html-insertion-mode" title="insertion mode: before
22730: html">before html</a>" <a href="#insertion-mode">insertion mode</a>.)</p>
22731:
22732: <p>The <code><a href="the-html-element.html#the-html-element">html</a></code> node, however it is created, is the topmost
22733: node of the stack. It only gets popped off the stack when the parser
22734: <a href="#stop-parsing" title="stop parsing">finishes</a>.</p>
22735:
22736: <p>The <dfn id="current-node">current node</dfn> is the bottommost node in this
22737: stack.</p>
22738:
22739: <p>The <dfn id="current-table">current table</dfn> is the last <code><a href="the-table-element.html#the-table-element">table</a></code>
22740: element in the <a href="#stack-of-open-elements">stack of open elements</a>, if there is
22741: one. If there is no <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of
22742: open elements</a> (<a href="#fragment-case">fragment case</a>), then the
22743: <a href="#current-table">current table</a> is the first element in the <a href="#stack-of-open-elements">stack
22744: of open elements</a> (the <code><a href="the-html-element.html#the-html-element">html</a></code> element).</p>
22745:
22746: <p>Elements in the stack fall into the following categories:</p>
22747:
22748: <dl><dt><dfn id="special">Special</dfn></dt>
22749: <dd><p>The following elements have varying levels of special
22750: parsing rules: HTML's <code><a href="the-address-element.html#the-address-element">address</a></code>, <code><a href="#the-applet-element">applet</a></code>,
22751: <code><a href="the-area-element.html#the-area-element">area</a></code>, <code><a href="the-article-element.html#the-article-element">article</a></code>, <code><a href="the-aside-element.html#the-aside-element">aside</a></code>,
22752: <code><a href="the-base-element.html#the-base-element">base</a></code>, <code><a href="#basefont">basefont</a></code>, <code><a href="#bgsound">bgsound</a></code>,
22753: <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-br-element.html#the-br-element">br</a></code>,
22754: <code><a href="the-button-element.html#the-button-element">button</a></code>, <code><a href="the-caption-element.html#the-caption-element">caption</a></code>, <code><a href="#center">center</a></code>,
22755: <code><a href="the-col-element.html#the-col-element">col</a></code>, <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code>, <code><a href="#the-command-element">command</a></code>,
22756: <code><a href="the-dd-element.html#the-dd-element">dd</a></code>, <code><a href="#the-details-element">details</a></code>, <code><a href="#dir">dir</a></code>,
22757: <code><a href="the-div-element.html#the-div-element">div</a></code>, <code><a href="the-dl-element.html#the-dl-element">dl</a></code>, <code><a href="the-dt-element.html#the-dt-element">dt</a></code>,
22758: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>, <code><a href="the-figcaption-element.html#the-figcaption-element">figcaption</a></code>,
22759: <code><a href="the-figure-element.html#the-figure-element">figure</a></code>, <code><a href="the-footer-element.html#the-footer-element">footer</a></code>, <code><a href="the-form-element.html#the-form-element">form</a></code>,
22760: <code><a href="#frame">frame</a></code>, <code><a href="#frameset">frameset</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>,
22761: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>,
22762: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>, <code><a href="the-head-element.html#the-head-element">head</a></code>, <code><a href="the-header-element.html#the-header-element">header</a></code>,
22763: <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>, <code><a href="the-hr-element.html#the-hr-element">hr</a></code>, <code><a href="the-html-element.html#the-html-element">html</a></code>,
22764: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <!-- <code>image</code>, (commented out
22765: because this isn't an element that can end up on the stack, so it
22766: doesn't matter) --> <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>,
22767: <code><a href="#isindex-0">isindex</a></code>, <code><a href="the-li-element.html#the-li-element">li</a></code>, <code><a href="the-link-element.html#the-link-element">link</a></code>,
22768: <code><a href="#listing">listing</a></code>, <code><a href="#the-marquee-element-0">marquee</a></code>, <code><a href="#the-menu-element">menu</a></code>,
22769: <code><a href="the-meta-element.html#the-meta-element">meta</a></code>, <code><a href="the-nav-element.html#the-nav-element">nav</a></code>, <code><a href="#noembed">noembed</a></code>,
22770: <code><a href="#noframes">noframes</a></code>, <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>, <code><a href="the-object-element.html#the-object-element">object</a></code>,
22771: <code><a href="the-ol-element.html#the-ol-element">ol</a></code>, <code><a href="the-p-element.html#the-p-element">p</a></code>, <code><a href="the-param-element.html#the-param-element">param</a></code>,
22772: <code><a href="#plaintext">plaintext</a></code>, <code><a href="the-pre-element.html#the-pre-element">pre</a></code>, <code><a href="the-script-element.html#the-script-element">script</a></code>,
22773: <code><a href="the-section-element.html#the-section-element">section</a></code>, <code><a href="the-select-element.html#the-select-element">select</a></code>, <code><a href="the-source-element.html#the-source-element">source</a></code>,
22774: <code><a href="the-style-element.html#the-style-element">style</a></code>, <code><a href="#the-summary-element">summary</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>,
22775: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>,
22776: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-th-element.html#the-th-element">th</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>,
22777: <code><a href="the-title-element.html#the-title-element">title</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-track-element.html#the-track-element">track</a></code>,
22778: <code><a href="the-ul-element.html#the-ul-element">ul</a></code>, <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code>, and <code><a href="#xmp">xmp</a></code>; MathML's
22779: <code title="">mi</code>, <code title="">mo</code>, <code title="">mn</code>, <code title="">ms</code>, <code title="">mtext</code>, and <code title="">annotation-xml</code>;
22780: and SVG's <code title="">foreignObject</code>, <code title="">desc</code>, and <code title="">title</code>.</p></dd>
22781: <!-- we could actually put all non-HTML elements in this list, I
22782: think -->
22783:
22784: <dt><dfn id="formatting">Formatting</dfn></dt>
22785: <dd><p>The following HTML elements are those that end up in the
22786: <a href="#list-of-active-formatting-elements">list of active formatting elements</a>: <code><a href="the-a-element.html#the-a-element">a</a></code>,
22787: <code><a href="the-b-element.html#the-b-element">b</a></code>, <code><a href="#big">big</a></code>, <code><a href="the-code-element.html#the-code-element">code</a></code>,
22788: <code><a href="the-em-element.html#the-em-element">em</a></code>, <code><a href="#font">font</a></code>, <code><a href="the-i-element.html#the-i-element">i</a></code>,
22789: <code><a href="#nobr">nobr</a></code>, <code><a href="the-s-element.html#the-s-element">s</a></code>, <code><a href="the-small-element.html#the-small-element">small</a></code>,
22790: <code><a href="#strike">strike</a></code>, <code><a href="the-strong-element.html#the-strong-element">strong</a></code>, <code><a href="#tt">tt</a></code>, and
22791: <code><a href="the-u-element.html#the-u-element">u</a></code>.</p></dd>
22792:
22793: <dt><dfn id="ordinary">Ordinary</dfn></dt>
22794: <dd><p>All other elements found while parsing an HTML
22795: document.</p></dd>
22796:
22797: </dl><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-the-specific-scope" title="has an element in the specific scope">have an element in a
22798: specific scope</dfn> consisting of a list of element types <var title="">list</var> when the following algorithm terminates in a
22799: match state:</p>
22800:
22801: <ol><li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
22802: node</a> (the bottommost node of the stack).</p></li>
22803:
22804: <li><p>If <var title="">node</var> is the target node, terminate in
22805: a match state.</p></li>
22806:
22807: <li><p>Otherwise, if <var title="">node</var> is one of the element
22808: types in <var title="">list</var>, terminate in a failure
22809: state.</p></li>
22810:
22811: <li><p>Otherwise, set <var title="">node</var> to the previous
22812: entry in the <a href="#stack-of-open-elements">stack of open elements</a> and return to step
22813: 2. (This will never fail, since the loop will always terminate in
22814: the previous step if the top of the stack — an
22815: <code><a href="the-html-element.html#the-html-element">html</a></code> element — is reached.)</p></li>
22816:
22817: </ol><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-scope" title="has an element in scope">have an element in scope</dfn> when
22818: it <a href="#has-an-element-in-the-specific-scope">has an element in the specific scope</a> consisting
22819: of the following element types:</p>
22820:
22821: <ul class="brief"><li><code><a href="#the-applet-element">applet</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22822: <li><code><a href="the-caption-element.html#the-caption-element">caption</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22823: <li><code><a href="the-html-element.html#the-html-element">html</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
22824: <li><code><a href="the-table-element.html#the-table-element">table</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22825: <li><code><a href="the-td-element.html#the-td-element">td</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22826: <li><code><a href="the-th-element.html#the-th-element">th</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22827: <li><code><a href="#the-marquee-element-0">marquee</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22828: <li><code><a href="the-object-element.html#the-object-element">object</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22829: <li><code title="">mi</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22830: <li><code title="">mo</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22831: <li><code title="">mn</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22832: <li><code title="">ms</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22833: <li><code title="">mtext</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22834: <li><code title="">annotation-xml</code> in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
22835: <li><code title="">foreignObject</code> in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
22836: <li><code title="">desc</code> in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
22837: <li><code title="">title</code> in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
22838: </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-list-item-scope" title="has an element in list item scope">have an element in list
22839: item scope</dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
22840: scope</a> consisting of the following element types:</p>
22841:
22842: <ul class="brief"><li>All the element types listed above for the <i><a href="#has-an-element-in-scope">has an element
22843: in scope</a></i> algorithm.</li>
22844: <li><code><a href="the-ol-element.html#the-ol-element">ol</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22845: <li><code><a href="the-ul-element.html#the-ul-element">ul</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22846: </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-button-scope" title="has an element in button scope">have an element in button
22847: scope</dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
22848: scope</a> consisting of the following element types:</p>
22849:
22850: <ul class="brief"><li>All the element types listed above for the <i><a href="#has-an-element-in-scope">has an element
22851: in scope</a></i> algorithm.</li>
22852: <li><code><a href="the-button-element.html#the-button-element">button</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22853: </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-table-scope" title="has an element in table scope">have an element in table
22854: scope</dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
22855: scope</a> consisting of the following element types:</p>
22856:
22857: <ul class="brief"><li><code><a href="the-html-element.html#the-html-element">html</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
22858: <li><code><a href="the-table-element.html#the-table-element">table</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22859: </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-select-scope" title="has an element in select scope">have an element in select
22860: scope</dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
22861: scope</a> consisting of all element types <em>except</em> the
22862: following:</p>
22863:
22864: <ul class="brief"><!--<li><code>select</code> in the <span>HTML namespace</span></li>--><li><code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22865: <li><code><a href="the-option-element.html#the-option-element">option</a></code> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></li>
22866: </ul><p>Nothing happens if at any time any of the elements in the
22867: <a href="#stack-of-open-elements">stack of open elements</a> are moved to a new location in,
22868: or removed from, the <code><a href="dom.html#document">Document</a></code> tree. In particular, the
22869: stack is not changed in this situation. This can cause, amongst
22870: other strange effects, content to be appended to nodes that are no
22871: longer in the DOM.</p>
22872:
22873: <p class="note">In some cases (namely, when <a href="#adoptionAgency">closing misnested formatting elements</a>),
22874: the stack is manipulated in a random-access fashion.</p>
22875:
22876:
22877: <h5 id="the-list-of-active-formatting-elements"><span class="secno">8.2.3.3 </span>The list of active formatting elements</h5>
22878:
22879: <p>Initially, the <dfn id="list-of-active-formatting-elements">list of active formatting elements</dfn> is
22880: empty. It is used to handle mis-nested <a href="#formatting" title="formatting">formatting element tags</a>.</p>
22881:
22882: <p>The list contains elements in the <a href="#formatting">formatting</a>
22883: category, and scope markers. The scope markers are inserted when
22884: entering <code><a href="#the-applet-element">applet</a></code> elements, buttons, <code><a href="the-object-element.html#the-object-element">object</a></code>
22885: elements, marquees, table cells, and table captions, and are used to
22886: prevent formatting from "leaking" <em>into</em> <code><a href="#the-applet-element">applet</a></code>
22887: elements, buttons, <code><a href="the-object-element.html#the-object-element">object</a></code> elements, marquees, and
22888: tables.</p>
22889:
22890: <p class="note">The scope markers are unrelated to the concept of an
22891: element being <a href="#has-an-element-in-scope" title="has an element in scope">in
22892: scope</a>.</p>
22893:
22894: <p>In addition, each element in the <a href="#list-of-active-formatting-elements">list of active formatting
22895: elements</a> is associated with the token for which it was
22896: created, so that further elements can be created for that token if
22897: necessary.</p>
22898:
22899: <p>When the steps below require the UA to <dfn id="push-onto-the-list-of-active-formatting-elements">push onto the list of
22900: active formatting elements</dfn> an element <var title="">element</var>, the UA must perform the following steps:</p>
22901:
22902: <ol><li><p>If there are already three elements in the <a href="#list-of-active-formatting-elements">list of
22903: active formatting elements</a> after the last list marker, if
22904: any, or anywhere in the list if there are no list markers, that
22905: have the same tag name, namespace, and attributes as <var title="">element</var>, then remove the earliest such element from
22906: the <a href="#list-of-active-formatting-elements">list of active formatting elements</a>. For these
22907: purposes, the attributes must be compared as they were when the
22908: elements were created by the parser; two elements have the same
22909: attributes if all their parsed attributes can be paired such that
22910: the two attributes in each pair have identical names, namespaces,
22911: and values (the order of the attributes does not matter).</p>
22912:
22913: <p class="note">This is the Noah's Ark clause. But with three per
22914: family instead of two.</p></li> <!-- A sort of polyamorous Noah's
22915: Ark, if you will. -->
22916:
22917: <li><p>Add <var title="">element</var> to the <a href="#list-of-active-formatting-elements">list of active
22918: formatting elements</a>.</p></li>
22919:
22920: </ol><p>When the steps below require the UA to <dfn id="reconstruct-the-active-formatting-elements">reconstruct the
22921: active formatting elements</dfn>, the UA must perform the following
22922: steps:</p>
22923:
22924: <ol><li>If there are no entries in the <a href="#list-of-active-formatting-elements">list of active formatting
22925: elements</a>, then there is nothing to reconstruct; stop this
22926: algorithm.</li>
22927:
22928: <li>If the last (most recently added) entry in the <a href="#list-of-active-formatting-elements">list of
22929: active formatting elements</a> is a marker, or if it is an
22930: element that is in the <a href="#stack-of-open-elements">stack of open elements</a>, then
22931: there is nothing to reconstruct; stop this algorithm.</li>
22932:
22933: <li>Let <var title="">entry</var> be the last (most recently added)
22934: element in the <a href="#list-of-active-formatting-elements">list of active formatting
22935: elements</a>.</li>
22936:
22937: <li>If there are no entries before <var title="">entry</var> in the
22938: <a href="#list-of-active-formatting-elements">list of active formatting elements</a>, then jump to step
22939: 8.</li>
22940:
22941: <li>Let <var title="">entry</var> be the entry one earlier than
22942: <var title="">entry</var> in the <a href="#list-of-active-formatting-elements">list of active formatting
22943: elements</a>.</li>
22944:
22945: <li>If <var title="">entry</var> is neither a marker nor an element
22946: that is also in the <a href="#stack-of-open-elements">stack of open elements</a>, go to step
22947: 4.</li>
22948:
22949: <li>Let <var title="">entry</var> be the element one later than
22950: <var title="">entry</var> in the <a href="#list-of-active-formatting-elements">list of active formatting
22951: elements</a>.</li>
22952:
22953: <li><a href="#create-an-element-for-the-token">Create an element for the token</a> for which the
22954: element <var title="">entry</var> was created, to obtain <var title="">new element</var>.</li>
22955:
22956: <li>Append <var title="">new element</var> to the <a href="#current-node">current
22957: node</a> and push it onto the <a href="#stack-of-open-elements">stack of open
22958: elements</a> so that it is the new <a href="#current-node">current
22959: node</a>.</li>
22960:
22961: <li>Replace the entry for <var title="">entry</var> in the list
22962: with an entry for <var title="">new element</var>.</li>
22963:
22964: <li>If the entry for <var title="">new element</var> in the
22965: <a href="#list-of-active-formatting-elements">list of active formatting elements</a> is not the last
22966: entry in the list, return to step 7.</li>
22967:
22968: </ol><p>This has the effect of reopening all the formatting elements that
22969: were opened in the current body, cell, or caption (whichever is
22970: youngest) that haven't been explicitly closed.</p>
22971:
22972: <p class="note">The way this specification is written, the
22973: <a href="#list-of-active-formatting-elements">list of active formatting elements</a> always consists of
22974: elements in chronological order with the least recently added
22975: element first and the most recently added element last (except for
22976: while steps 8 to 11 of the above algorithm are being executed, of
22977: course).</p>
22978:
22979: <p>When the steps below require the UA to <dfn id="clear-the-list-of-active-formatting-elements-up-to-the-last-marker">clear the list of
22980: active formatting elements up to the last marker</dfn>, the UA must
22981: perform the following steps:</p>
22982:
22983: <ol><li>Let <var title="">entry</var> be the last (most recently added)
22984: entry in the <a href="#list-of-active-formatting-elements">list of active formatting elements</a>.</li>
22985:
22986: <li>Remove <var title="">entry</var> from the <a href="#list-of-active-formatting-elements">list of active
22987: formatting elements</a>.</li>
22988:
22989: <li>If <var title="">entry</var> was a marker, then stop the
22990: algorithm at this point. The list has been cleared up to the last
22991: marker.</li>
22992:
22993: <li>Go to step 1.</li>
22994:
22995: </ol><h5 id="the-element-pointers"><span class="secno">8.2.3.4 </span>The element pointers</h5>
22996:
22997: <p>Initially, the <dfn id="head-element-pointer"><code title="">head</code> element
22998: pointer</dfn> and the <dfn id="form-element-pointer"><code title="">form</code> element
22999: pointer</dfn> are both null.</p>
23000:
23001: <p>Once a <code><a href="the-head-element.html#the-head-element">head</a></code> element has been parsed (whether
23002: implicitly or explicitly) the <a href="#head-element-pointer"><code title="">head</code>
23003: element pointer</a> gets set to point to this node.</p>
23004:
23005: <p>The <a href="#form-element-pointer"><code title="">form</code> element pointer</a>
23006: points to the last <code><a href="the-form-element.html#the-form-element">form</a></code> element that was opened and
23007: whose end tag has not yet been seen. It is used to make form
23008: controls associate with forms in the face of dramatically bad
23009: markup, for historical reasons.</p>
23010:
23011:
23012: <h5 id="other-parsing-state-flags"><span class="secno">8.2.3.5 </span>Other parsing state flags</h5>
23013:
23014: <p>The <dfn id="scripting-flag">scripting flag</dfn> is set to "enabled" if <a href="#concept-n-script" title="concept-n-script">scripting was enabled</a> for the
23015: <code><a href="dom.html#document">Document</a></code> with which the parser is associated when the
23016: parser was created, and "disabled" otherwise.</p>
23017:
23018: <p class="note">The <a href="#scripting-flag">scripting flag</a> can be enabled even
23019: when the parser was originally created for the <a href="#html-fragment-parsing-algorithm">HTML fragment
23020: parsing algorithm</a>, even though <code><a href="the-script-element.html#the-script-element">script</a></code> elements
23021: don't execute in that case.</p>
23022:
23023: <p>The <dfn id="frameset-ok-flag">frameset-ok flag</dfn> is set to "ok" when the parser is
23024: created. It is set to "not ok" after certain tokens are seen.</p>
23025:
23026: </div>
23027:
23028:
23029: <div class="impl">
23030:
23031: <h4 id="tokenization"><span class="secno">8.2.4 </span><dfn>Tokenization</dfn></h4>
23032:
23033: <p>Implementations must act as if they used the following state
23034: machine to tokenize HTML. The state machine must start in the
23035: <a href="#data-state">data state</a>. Most states consume a single character,
23036: which may have various side-effects, and either switches the state
23037: machine to a new state to <i>reconsume</i> the same character, or
23038: switches it to a new state to consume the next character, or stays
23039: in the same state to consume the next character. Some states have
23040: more complicated behavior and can consume several characters before
23041: switching to another state. In some cases, the tokenizer state is
23042: also changed by the tree construction stage.</p>
23043:
23044: <p>The exact behavior of certain states depends on the
23045: <a href="#insertion-mode">insertion mode</a> and the <a href="#stack-of-open-elements">stack of open
23046: elements</a>. Certain states also use a <dfn id="temporary-buffer"><var>temporary
23047: buffer</var></dfn> to track progress.</p>
23048:
23049: <p>The output of the tokenization step is a series of zero or more
23050: of the following tokens: DOCTYPE, start tag, end tag, comment,
23051: character, end-of-file. DOCTYPE tokens have a name, a public
23052: identifier, a system identifier, and a <i>force-quirks
23053: flag</i>. When a DOCTYPE token is created, its name, public
23054: identifier, and system identifier must be marked as missing (which
23055: is a distinct state from the empty string), and the <i>force-quirks
23056: flag</i> must be set to <i>off</i> (its other state is
23057: <i>on</i>). Start and end tag tokens have a tag name, a
23058: <i>self-closing flag</i>, and a list of attributes, each of which
23059: has a name and a value. When a start or end tag token is created,
23060: its <i>self-closing flag</i> must be unset (its other state is that
23061: it be set), and its attributes list must be empty. Comment and
23062: character tokens have data.</p>
23063:
23064: <p>When a token is emitted, it must immediately be handled by the
23065: <a href="#tree-construction">tree construction</a> stage. The tree construction stage
23066: can affect the state of the tokenization stage, and can insert
23067: additional characters into the stream. (For example, the
23068: <code><a href="the-script-element.html#the-script-element">script</a></code> element can result in scripts executing and
23069: using the <a href="dynamic-markup-insertion.html#dynamic-markup-insertion">dynamic markup insertion</a> APIs to insert
23070: characters into the stream being tokenized.)</p>
23071:
23072: <p>When a start tag token is emitted with its <i>self-closing
23073: flag</i> set, if the flag is not <dfn id="acknowledge-self-closing-flag" title="acknowledge
23074: self-closing flag">acknowledged</dfn> when it is processed by the
23075: tree construction stage, that is a <a href="#parse-error">parse error</a>.</p>
23076:
23077: <p>When an end tag token is emitted with attributes, that is a
23078: <a href="#parse-error">parse error</a>.</p>
23079:
23080: <p>When an end tag token is emitted with its <i>self-closing
23081: flag</i> set, that is a <a href="#parse-error">parse error</a>.</p>
23082:
23083: <p>An <dfn id="appropriate-end-tag-token">appropriate end tag token</dfn> is an end tag token whose
23084: tag name matches the tag name of the last start tag to have been
23085: emitted from this tokenizer, if any. If no start tag has been
23086: emitted from this tokenizer, then no end tag token is
23087: appropriate.</p>
23088:
23089: <p>Before each step of the tokenizer, the user agent must first
23090: check the <a href="#parser-pause-flag">parser pause flag</a>. If it is true, then the
23091: tokenizer must abort the processing of any nested invocations of the
23092: tokenizer, yielding control back to the caller.</p>
23093:
23094: <p>The tokenizer state machine consists of the states defined in the
23095: following subsections.</p>
23096:
23097:
23098: <!-- Order of the lists below is supposed to be non-error then
23099: error, by unicode, then EOF, ending with "anything else" -->
23100:
23101:
23102: <h5 id="data-state"><span class="secno">8.2.4.1 </span><dfn>Data state</dfn></h5>
23103:
23104: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23105:
23106: <dl class="switch"><dt>U+0026 AMPERSAND (&)</dt>
23107: <dd>Switch to the <a href="#character-reference-in-data-state">character reference in data
23108: state</a>.</dd>
23109:
23110: <dt>U+003C LESS-THAN SIGN (<)</dt>
23111: <dd>Switch to the <a href="#tag-open-state">tag open state</a>.</dd>
23112:
23113: <dt>U+0000 NULL</dt>
23114: <dd><a href="#parse-error">Parse error</a>. Emit the <a href="#current-input-character">current input
23115: character</a> as a character token.</dd>
23116:
23117: <dt>EOF</dt>
23118: <dd>Emit an end-of-file token.</dd>
23119:
23120: <dt>Anything else</dt>
23121: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23122: token.</dd>
23123:
23124: </dl><h5 id="character-reference-in-data-state"><span class="secno">8.2.4.2 </span><dfn>Character reference in data state</dfn></h5>
23125:
23126: <p>Switch to the <a href="#data-state">data state</a>.</p>
23127:
23128: <p>Attempt to <a href="#consume-a-character-reference">consume a character reference</a>, with no
23129: <a href="#additional-allowed-character">additional allowed character</a>.</p>
23130:
23131: <p>If nothing is returned, emit a U+0026 AMPERSAND character (&)
23132: token.</p>
23133:
23134: <p>Otherwise, emit the character tokens that were returned.</p>
23135:
23136:
23137: <h5 id="rcdata-state"><span class="secno">8.2.4.3 </span><dfn>RCDATA state</dfn></h5>
23138:
23139: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23140:
23141: <dl class="switch"><dt>U+0026 AMPERSAND (&)</dt>
23142: <dd>Switch to the <a href="#character-reference-in-rcdata-state">character reference in RCDATA
23143: state</a>.</dd>
23144:
23145: <dt>U+003C LESS-THAN SIGN (<)</dt>
23146: <dd>Switch to the <a href="#rcdata-less-than-sign-state">RCDATA less-than sign state</a>.</dd>
23147:
23148: <dt>U+0000 NULL</dt>
23149: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23150: character token.</dd>
23151:
23152: <dt>EOF</dt>
23153: <dd>Emit an end-of-file token.</dd>
23154:
23155: <dt>Anything else</dt>
23156: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23157: token.</dd>
23158:
23159: </dl><h5 id="character-reference-in-rcdata-state"><span class="secno">8.2.4.4 </span><dfn>Character reference in RCDATA state</dfn></h5>
23160:
23161: <p>Switch to the <a href="#rcdata-state">RCDATA state</a>.</p>
23162:
23163: <p>Attempt to <a href="#consume-a-character-reference">consume a character reference</a>, with no
23164: <a href="#additional-allowed-character">additional allowed character</a>.</p>
23165:
23166: <p>If nothing is returned, emit a U+0026 AMPERSAND character (&)
23167: token.</p>
23168:
23169: <p>Otherwise, emit the character tokens that were returned.</p>
23170:
23171:
23172: <h5 id="rawtext-state"><span class="secno">8.2.4.5 </span><dfn>RAWTEXT state</dfn></h5>
23173:
23174: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23175:
23176: <dl class="switch"><dt>U+003C LESS-THAN SIGN (<)</dt>
23177: <dd>Switch to the <a href="#rawtext-less-than-sign-state">RAWTEXT less-than sign state</a>.</dd>
23178:
23179: <dt>U+0000 NULL</dt>
23180: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23181: character token.</dd>
23182:
23183: <dt>EOF</dt>
23184: <dd>Emit an end-of-file token.</dd>
23185:
23186: <dt>Anything else</dt>
23187: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23188: token.</dd>
23189:
23190: </dl><h5 id="script-data-state"><span class="secno">8.2.4.6 </span><dfn>Script data state</dfn></h5>
23191:
23192: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23193:
23194: <dl class="switch"><dt>U+003C LESS-THAN SIGN (<)</dt>
23195: <dd>Switch to the <a href="#script-data-less-than-sign-state">script data less-than sign state</a>.</dd>
23196:
23197: <dt>U+0000 NULL</dt>
23198: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23199: character token.</dd>
23200:
23201: <dt>EOF</dt>
23202: <dd>Emit an end-of-file token.</dd>
23203:
23204: <dt>Anything else</dt>
23205: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23206: token.</dd>
23207:
23208: </dl><h5 id="plaintext-state"><span class="secno">8.2.4.7 </span><dfn>PLAINTEXT state</dfn></h5>
23209:
23210: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23211:
23212: <dl class="switch"><dt>U+0000 NULL</dt>
23213: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23214: character token.</dd>
23215:
23216: <dt>EOF</dt>
23217: <dd>Emit an end-of-file token.</dd>
23218:
23219: <dt>Anything else</dt>
23220: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23221: token.</dd>
23222:
23223: </dl><h5 id="tag-open-state"><span class="secno">8.2.4.8 </span><dfn>Tag open state</dfn></h5>
23224:
23225: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23226:
23227: <dl class="switch"><dt>"!" (U+0021)</dt>
23228: <dd>Switch to the <a href="#markup-declaration-open-state">markup declaration open state</a>.</dd>
23229:
23230: <dt>"/" (U+002F)</dt>
23231: <dd>Switch to the <a href="#end-tag-open-state">end tag open state</a>.</dd>
23232:
23233: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23234: <dd>Create a new start tag token, set its tag name to the
23235: lowercase version of the <a href="#current-input-character">current input character</a> (add 0x0020 to the
23236: character's code point), then switch to the <a href="#tag-name-state">tag name
23237: state</a>. (Don't emit the token yet; further details will
23238: be filled in before it is emitted.)</dd>
23239:
23240: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23241: <dd>Create a new start tag token, set its tag name to the
23242: <a href="#current-input-character">current input character</a>, then switch to the <a href="#tag-name-state">tag
23243: name state</a>. (Don't emit the token yet; further details will
23244: be filled in before it is emitted.)</dd>
23245:
23246: <dt>"?" (U+003F)</dt>
23247: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#bogus-comment-state">bogus
23248: comment state</a>.</dd>
23249:
23250: <dt>Anything else</dt>
23251: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23252: state</a>. Emit a U+003C LESS-THAN SIGN character token.
23253: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23254:
23255: </dl><h5 id="end-tag-open-state"><span class="secno">8.2.4.9 </span><dfn>End tag open state</dfn></h5>
23256:
23257: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23258:
23259: <dl class="switch"><dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23260: <dd>Create a new end tag token, set its tag name to the lowercase
23261: version of the <a href="#current-input-character">current input character</a> (add 0x0020 to
23262: the character's code point), then switch to the <a href="#tag-name-state">tag name
23263: state</a>. (Don't emit the token yet; further details will be
23264: filled in before it is emitted.)</dd>
23265:
23266: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23267: <dd>Create a new end tag token, set its tag name to the
23268: <a href="#current-input-character">current input character</a>, then switch to the <a href="#tag-name-state">tag
23269: name state</a>. (Don't emit the token yet; further details will
23270: be filled in before it is emitted.)</dd>
23271:
23272: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23273: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23274: state</a>.</dd>
23275:
23276: <dt>EOF</dt>
23277: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23278: state</a>. Emit a U+003C LESS-THAN SIGN character token and a
23279: U+002F SOLIDUS character token. Reconsume the EOF character.</dd>
23280:
23281: <dt>Anything else</dt>
23282: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#bogus-comment-state">bogus
23283: comment state</a>.</dd>
23284:
23285: </dl><h5 id="tag-name-state"><span class="secno">8.2.4.10 </span><dfn>Tag name state</dfn></h5>
23286:
23287: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23288:
23289: <dl class="switch"><dt>"tab" (U+0009)</dt>
23290: <dt>"LF" (U+000A)</dt>
23291: <dt>"FF" (U+000C)</dt>
23292: <!--<dt>"CR" (U+000D)</dt>-->
23293: <dt>U+0020 SPACE</dt>
23294: <dd>Switch to the <a href="#before-attribute-name-state">before attribute name state</a>.</dd>
23295:
23296: <dt>"/" (U+002F)</dt>
23297: <dd>Switch to the <a href="#self-closing-start-tag-state">self-closing start tag state</a>.</dd>
23298:
23299: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23300: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
23301: token.</dd>
23302:
23303: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23304: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23305: character</a> (add 0x0020 to the character's code point) to the
23306: current tag token's tag name.</dd>
23307:
23308: <dt>U+0000 NULL</dt>
23309: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
23310: character to the current tag token's tag name.</dd>
23311:
23312: <dt>EOF</dt>
23313: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23314: state</a>. Reconsume the EOF character.</dd>
23315:
23316: <dt>Anything else</dt>
23317: <dd>Append the <a href="#current-input-character">current input character</a> to the current
23318: tag token's tag name.</dd>
23319:
23320: </dl><h5 id="rcdata-less-than-sign-state"><span class="secno">8.2.4.11 </span><dfn>RCDATA less-than sign state</dfn></h5>
23321: <!-- identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g -->
23322:
23323: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23324:
23325: <dl class="switch"><dt>"/" (U+002F)</dt>
23326: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Switch
23327: to the <a href="#rcdata-end-tag-open-state">RCDATA end tag open state</a>.</dd>
23328:
23329: <dt>Anything else</dt>
23330: <dd>Switch to the <a href="#rcdata-state">RCDATA state</a>. Emit a U+003C
23331: LESS-THAN SIGN character token. Reconsume the <a href="#current-input-character">current
23332: input character</a>.</dd>
23333:
23334: </dl><h5 id="rcdata-end-tag-open-state"><span class="secno">8.2.4.12 </span><dfn>RCDATA end tag open state</dfn></h5>
23335: <!-- identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g -->
23336:
23337: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23338:
23339: <dl class="switch"><dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23340: <dd>Create a new end tag token, and set its tag name to the
23341: lowercase version of the <a href="#current-input-character">current input character</a> (add
23342: 0x0020 to the character's code point). Append the <a href="#current-input-character">current
23343: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23344: switch to the <a href="#rcdata-end-tag-name-state">RCDATA end tag name state</a>. (Don't emit
23345: the token yet; further details will be filled in before it is
23346: emitted.)</dd>
23347:
23348: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23349: <dd>Create a new end tag token, and set its tag name to the
23350: <a href="#current-input-character">current input character</a>. Append the <a href="#current-input-character">current
23351: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23352: switch to the <a href="#rcdata-end-tag-name-state">RCDATA end tag name state</a>. (Don't emit
23353: the token yet; further details will be filled in before it is
23354: emitted.)</dd>
23355:
23356: <dt>Anything else</dt>
23357: <dd>Switch to the <a href="#rcdata-state">RCDATA state</a>. Emit a U+003C
23358: LESS-THAN SIGN character token and a U+002F SOLIDUS character token.
23359: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23360:
23361: </dl><h5 id="rcdata-end-tag-name-state"><span class="secno">8.2.4.13 </span><dfn>RCDATA end tag name state</dfn></h5>
23362: <!-- identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g -->
23363:
23364: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23365:
23366: <dl class="switch"><dt>"tab" (U+0009)</dt>
23367: <dt>"LF" (U+000A)</dt>
23368: <dt>"FF" (U+000C)</dt>
23369: <!--<dt>"CR" (U+000D)</dt>-->
23370: <dt>U+0020 SPACE</dt>
23371: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23372: token</a>, then switch to the <a href="#before-attribute-name-state">before attribute name
23373: state</a>. Otherwise, treat it as per the "anything else" entry
23374: below.</dd>
23375:
23376: <dt>"/" (U+002F)</dt>
23377: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23378: token</a>, then switch to the <a href="#self-closing-start-tag-state">self-closing start tag
23379: state</a>. Otherwise, treat it as per the "anything else" entry
23380: below.</dd>
23381:
23382: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23383: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23384: token</a>, then switch to the <a href="#data-state">data state</a> and emit
23385: the current tag token. Otherwise, treat it as per the "anything
23386: else" entry below.</dd>
23387:
23388: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23389: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23390: character</a> (add 0x0020 to the character's code point) to the
23391: current tag token's tag name. Append the <a href="#current-input-character">current input
23392: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23393:
23394: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23395: <dd>Append the <a href="#current-input-character">current input character</a> to the current
23396: tag token's tag name. Append the <a href="#current-input-character">current input
23397: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23398:
23399: <dt>Anything else</dt>
23400: <dd>Switch to the <a href="#rcdata-state">RCDATA state</a>. Emit a U+003C
23401: LESS-THAN SIGN character token, a U+002F SOLIDUS character token,
23402: and a character token for each of the characters in the
23403: <var><a href="#temporary-buffer">temporary buffer</a></var> (in the order they were added to the
23404: buffer). Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23405:
23406: </dl><h5 id="rawtext-less-than-sign-state"><span class="secno">8.2.4.14 </span><dfn>RAWTEXT less-than sign state</dfn></h5>
23407: <!-- identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g -->
23408:
23409: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23410:
23411: <dl class="switch"><dt>"/" (U+002F)</dt>
23412: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Switch
23413: to the <a href="#rawtext-end-tag-open-state">RAWTEXT end tag open state</a>.</dd>
23414:
23415: <dt>Anything else</dt>
23416: <dd>Switch to the <a href="#rawtext-state">RAWTEXT state</a>. Emit a U+003C
23417: LESS-THAN SIGN character token. Reconsume the <a href="#current-input-character">current
23418: input character</a>.</dd>
23419:
23420: </dl><h5 id="rawtext-end-tag-open-state"><span class="secno">8.2.4.15 </span><dfn>RAWTEXT end tag open state</dfn></h5>
23421: <!-- identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g -->
23422:
23423: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23424:
23425: <dl class="switch"><dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23426: <dd>Create a new end tag token, and set its tag name to the
23427: lowercase version of the <a href="#current-input-character">current input character</a> (add
23428: 0x0020 to the character's code point). Append the <a href="#current-input-character">current
23429: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23430: switch to the <a href="#rawtext-end-tag-name-state">RAWTEXT end tag name state</a>. (Don't emit
23431: the token yet; further details will be filled in before it is
23432: emitted.)</dd>
23433:
23434: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23435: <dd>Create a new end tag token, and set its tag name to the
23436: <a href="#current-input-character">current input character</a>. Append the <a href="#current-input-character">current
23437: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23438: switch to the <a href="#rawtext-end-tag-name-state">RAWTEXT end tag name state</a>. (Don't emit
23439: the token yet; further details will be filled in before it is
23440: emitted.)</dd>
23441:
23442: <dt>Anything else</dt>
23443: <dd>Switch to the <a href="#rawtext-state">RAWTEXT state</a>. Emit a U+003C
23444: LESS-THAN SIGN character token and a U+002F SOLIDUS character
23445: token. Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23446:
23447: </dl><h5 id="rawtext-end-tag-name-state"><span class="secno">8.2.4.16 </span><dfn>RAWTEXT end tag name state</dfn></h5>
23448: <!-- identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g -->
23449:
23450: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23451:
23452: <dl class="switch"><dt>"tab" (U+0009)</dt>
23453: <dt>"LF" (U+000A)</dt>
23454: <dt>"FF" (U+000C)</dt>
23455: <!--<dt>"CR" (U+000D)</dt>-->
23456: <dt>U+0020 SPACE</dt>
23457: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23458: token</a>, then switch to the <a href="#before-attribute-name-state">before attribute name
23459: state</a>. Otherwise, treat it as per the "anything else" entry
23460: below.</dd>
23461:
23462: <dt>"/" (U+002F)</dt>
23463: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23464: token</a>, then switch to the <a href="#self-closing-start-tag-state">self-closing start tag
23465: state</a>. Otherwise, treat it as per the "anything else" entry
23466: below.</dd>
23467:
23468: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23469: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23470: token</a>, then switch to the <a href="#data-state">data state</a> and emit
23471: the current tag token. Otherwise, treat it as per the "anything
23472: else" entry below.</dd>
23473:
23474: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23475: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23476: character</a> (add 0x0020 to the character's code point) to the
23477: current tag token's tag name. Append the <a href="#current-input-character">current input
23478: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23479:
23480: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23481: <dd>Append the <a href="#current-input-character">current input character</a> to the current
23482: tag token's tag name. Append the <a href="#current-input-character">current input
23483: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23484:
23485: <dt>Anything else</dt>
23486: <dd>Switch to the <a href="#rawtext-state">RAWTEXT state</a>. Emit a U+003C
23487: LESS-THAN SIGN character token, a U+002F SOLIDUS character token,
23488: and a character token for each of the characters in the
23489: <var><a href="#temporary-buffer">temporary buffer</a></var> (in the order they were added to the
23490: buffer). Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23491:
23492: </dl><h5 id="script-data-less-than-sign-state"><span class="secno">8.2.4.17 </span><dfn>Script data less-than sign state</dfn></h5>
23493:
23494: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23495:
23496: <dl class="switch"><dt>"/" (U+002F)</dt>
23497: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Switch
23498: to the <a href="#script-data-end-tag-open-state">script data end tag open state</a>.</dd>
23499:
23500: <dt>"!" (U+0021)</dt>
23501: <dd>Switch to the <a href="#script-data-escape-start-state">script data escape start state</a>. Emit
23502: a U+003C LESS-THAN SIGN character token and a U+0021 EXCLAMATION
23503: MARK character token.</dd>
23504:
23505: <dt>Anything else</dt>
23506: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003C
23507: LESS-THAN SIGN character token. Reconsume the <a href="#current-input-character">current
23508: input character</a>.</dd>
23509:
23510: </dl><h5 id="script-data-end-tag-open-state"><span class="secno">8.2.4.18 </span><dfn>Script data end tag open state</dfn></h5>
23511: <!-- identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g -->
23512:
23513: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23514:
23515: <dl class="switch"><dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23516: <dd>Create a new end tag token, and set its tag name to the
23517: lowercase version of the <a href="#current-input-character">current input character</a> (add
23518: 0x0020 to the character's code point). Append the <a href="#current-input-character">current
23519: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23520: switch to the <a href="#script-data-end-tag-name-state">script data end tag name state</a>. (Don't emit
23521: the token yet; further details will be filled in before it is
23522: emitted.)</dd>
23523:
23524: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23525: <dd>Create a new end tag token, and set its tag name to the
23526: <a href="#current-input-character">current input character</a>. Append the <a href="#current-input-character">current
23527: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23528: switch to the <a href="#script-data-end-tag-name-state">script data end tag name state</a>. (Don't emit
23529: the token yet; further details will be filled in before it is
23530: emitted.)</dd>
23531:
23532: <dt>Anything else</dt>
23533: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003C
23534: LESS-THAN SIGN character token and a U+002F SOLIDUS character token.
23535: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23536:
23537: </dl><h5 id="script-data-end-tag-name-state"><span class="secno">8.2.4.19 </span><dfn>Script data end tag name state</dfn></h5>
23538: <!-- identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g -->
23539:
23540: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23541:
23542: <dl class="switch"><dt>"tab" (U+0009)</dt>
23543: <dt>"LF" (U+000A)</dt>
23544: <dt>"FF" (U+000C)</dt>
23545: <!--<dt>"CR" (U+000D)</dt>-->
23546: <dt>U+0020 SPACE</dt>
23547: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23548: token</a>, then switch to the <a href="#before-attribute-name-state">before attribute name
23549: state</a>. Otherwise, treat it as per the "anything else" entry
23550: below.</dd>
23551:
23552: <dt>"/" (U+002F)</dt>
23553: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23554: token</a>, then switch to the <a href="#self-closing-start-tag-state">self-closing start tag
23555: state</a>. Otherwise, treat it as per the "anything else" entry
23556: below.</dd>
23557:
23558: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23559: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23560: token</a>, then switch to the <a href="#data-state">data state</a> and emit
23561: the current tag token. Otherwise, treat it as per the "anything
23562: else" entry below.</dd>
23563:
23564: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23565: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23566: character</a> (add 0x0020 to the character's code point) to the
23567: current tag token's tag name. Append the <a href="#current-input-character">current input
23568: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23569:
23570: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23571: <dd>Append the <a href="#current-input-character">current input character</a> to the current
23572: tag token's tag name. Append the <a href="#current-input-character">current input
23573: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23574:
23575: <dt>Anything else</dt>
23576: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003C
23577: LESS-THAN SIGN character token, a U+002F SOLIDUS character token,
23578: and a character token for each of the characters in the
23579: <var><a href="#temporary-buffer">temporary buffer</a></var> (in the order they were added to the
23580: buffer). Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23581:
23582: </dl><h5 id="script-data-escape-start-state"><span class="secno">8.2.4.20 </span><dfn>Script data escape start state</dfn></h5>
23583:
23584: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23585:
23586: <dl class="switch"><dt>"-" (U+002D)</dt>
23587: <dd>Switch to the <a href="#script-data-escape-start-dash-state">script data escape start dash
23588: state</a>. Emit a U+002D HYPHEN-MINUS character token.</dd>
23589:
23590: <dt>Anything else</dt>
23591: <dd>Switch to the <a href="#script-data-state">script data state</a>. Reconsume the
23592: <a href="#current-input-character">current input character</a>.</dd>
23593:
23594: </dl><h5 id="script-data-escape-start-dash-state"><span class="secno">8.2.4.21 </span><dfn>Script data escape start dash state</dfn></h5>
23595:
23596: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23597:
23598: <dl class="switch"><dt>"-" (U+002D)</dt>
23599: <dd>Switch to the <a href="#script-data-escaped-dash-dash-state">script data escaped dash dash
23600: state</a>. Emit a U+002D HYPHEN-MINUS character token.</dd>
23601:
23602: <dt>Anything else</dt>
23603: <dd>Switch to the <a href="#script-data-state">script data state</a>. Reconsume the
23604: <a href="#current-input-character">current input character</a>.</dd>
23605:
23606: </dl><h5 id="script-data-escaped-state"><span class="secno">8.2.4.22 </span><dfn>Script data escaped state</dfn></h5>
23607:
23608: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23609:
23610: <dl class="switch"><dt>"-" (U+002D)</dt>
23611: <dd>Switch to the <a href="#script-data-escaped-dash-state">script data escaped dash state</a>. Emit
23612: a U+002D HYPHEN-MINUS character token.</dd>
23613:
23614: <dt>U+003C LESS-THAN SIGN (<)</dt>
23615: <dd>Switch to the <a href="#script-data-escaped-less-than-sign-state">script data escaped less-than sign
23616: state</a>.</dd>
23617:
23618: <dt>U+0000 NULL</dt>
23619: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23620: character token.</dd>
23621:
23622: <dt>EOF</dt>
23623: <dd>Switch to the <a href="#data-state">data state</a>. <a href="#parse-error">Parse
23624: error</a>. Reconsume the EOF character.</dd>
23625:
23626: <dt>Anything else</dt>
23627: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23628: token.</dd>
23629:
23630: </dl><h5 id="script-data-escaped-dash-state"><span class="secno">8.2.4.23 </span><dfn>Script data escaped dash state</dfn></h5>
23631:
23632: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23633:
23634: <dl class="switch"><dt>"-" (U+002D)</dt>
23635: <dd>Switch to the <a href="#script-data-escaped-dash-dash-state">script data escaped dash dash
23636: state</a>. Emit a U+002D HYPHEN-MINUS character token.</dd>
23637:
23638: <dt>U+003C LESS-THAN SIGN (<)</dt>
23639: <dd>Switch to the <a href="#script-data-escaped-less-than-sign-state">script data escaped less-than sign
23640: state</a>.</dd>
23641:
23642: <dt>U+0000 NULL</dt>
23643: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#script-data-escaped-state">script data
23644: escaped state</a>. Emit a U+FFFD REPLACEMENT CHARACTER character
23645: token.</dd>
23646:
23647: <dt>EOF</dt>
23648: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23649: state</a>. Reconsume the EOF character.</dd>
23650:
23651: <dt>Anything else</dt>
23652: <dd>Switch to the <a href="#script-data-escaped-state">script data escaped state</a>. Emit the
23653: <a href="#current-input-character">current input character</a> as a character token.</dd>
23654:
23655: </dl><h5 id="script-data-escaped-dash-dash-state"><span class="secno">8.2.4.24 </span><dfn>Script data escaped dash dash state</dfn></h5>
23656:
23657: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23658:
23659: <dl class="switch"><dt>"-" (U+002D)</dt>
23660: <dd>Emit a U+002D HYPHEN-MINUS character token.</dd>
23661:
23662: <dt>U+003C LESS-THAN SIGN (<)</dt>
23663: <dd>Switch to the <a href="#script-data-escaped-less-than-sign-state">script data escaped less-than sign
23664: state</a>.</dd>
23665:
23666: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23667: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003E
23668: GREATER-THAN SIGN character token.</dd>
23669:
23670: <dt>U+0000 NULL</dt>
23671: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#script-data-escaped-state">script data
23672: escaped state</a>. Emit a U+FFFD REPLACEMENT CHARACTER character
23673: token.</dd>
23674:
23675: <dt>EOF</dt>
23676: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23677: state</a>. Reconsume the EOF character.</dd>
23678:
23679: <dt>Anything else</dt>
23680: <dd>Switch to the <a href="#script-data-escaped-state">script data escaped state</a>. Emit the
23681: <a href="#current-input-character">current input character</a> as a character token.</dd>
23682:
23683: </dl><h5 id="script-data-escaped-less-than-sign-state"><span class="secno">8.2.4.25 </span><dfn>Script data escaped less-than sign state</dfn></h5>
23684:
23685: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23686:
23687: <dl class="switch"><dt>"/" (U+002F)</dt>
23688: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Switch
23689: to the <a href="#script-data-escaped-end-tag-open-state">script data escaped end tag open state</a>.</dd>
23690:
23691: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23692: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Append
23693: the lowercase version of the <a href="#current-input-character">current input character</a>
23694: (add 0x0020 to the character's code point) to the <var><a href="#temporary-buffer">temporary
23695: buffer</a></var>. Switch to the <a href="#script-data-double-escape-start-state">script data double escape start
23696: state</a>. Emit a U+003C LESS-THAN SIGN character token and the
23697: <a href="#current-input-character">current input character</a> as a character token.</dd>
23698:
23699: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23700: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Append
23701: the <a href="#current-input-character">current input character</a> to the <var><a href="#temporary-buffer">temporary
23702: buffer</a></var>. Switch to the <a href="#script-data-double-escape-start-state">script data double escape start
23703: state</a>. Emit a U+003C LESS-THAN SIGN character token and the
23704: <a href="#current-input-character">current input character</a> as a character token.</dd>
23705:
23706: <dt>Anything else</dt>
23707: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003C
23708: LESS-THAN SIGN character token. Reconsume the <a href="#current-input-character">current
23709: input character</a>.</dd>
23710:
23711: </dl><h5 id="script-data-escaped-end-tag-open-state"><span class="secno">8.2.4.26 </span><dfn>Script data escaped end tag open state</dfn></h5>
23712:
23713: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23714:
23715: <dl class="switch"><dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23716: <dd>Create a new end tag token, and set its tag name to the
23717: lowercase version of the <a href="#current-input-character">current input character</a> (add
23718: 0x0020 to the character's code point). Append the <a href="#current-input-character">current
23719: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23720: switch to the <a href="#script-data-escaped-end-tag-name-state">script data escaped end tag name
23721: state</a>. (Don't emit the token yet; further details will be
23722: filled in before it is emitted.)</dd>
23723:
23724: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23725: <dd>Create a new end tag token, and set its tag name to the
23726: <a href="#current-input-character">current input character</a>. Append the <a href="#current-input-character">current
23727: input character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>. Finally,
23728: switch to the <a href="#script-data-escaped-end-tag-name-state">script data escaped end tag name
23729: state</a>. (Don't emit the token yet; further details will be
23730: filled in before it is emitted.)</dd>
23731:
23732: <dt>Anything else</dt>
23733: <dd>Switch to the <a href="#script-data-escaped-state">script data escaped state</a>. Emit a
23734: U+003C LESS-THAN SIGN character token and a U+002F SOLIDUS
23735: character token. Reconsume the <a href="#current-input-character">current input
23736: character</a>.</dd>
23737:
23738: </dl><h5 id="script-data-escaped-end-tag-name-state"><span class="secno">8.2.4.27 </span><dfn>Script data escaped end tag name state</dfn></h5>
23739:
23740: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23741:
23742: <dl class="switch"><dt>"tab" (U+0009)</dt>
23743: <dt>"LF" (U+000A)</dt>
23744: <dt>"FF" (U+000C)</dt>
23745: <!--<dt>"CR" (U+000D)</dt>-->
23746: <dt>U+0020 SPACE</dt>
23747: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23748: token</a>, then switch to the <a href="#before-attribute-name-state">before attribute name
23749: state</a>. Otherwise, treat it as per the "anything else" entry
23750: below.</dd>
23751:
23752: <dt>"/" (U+002F)</dt>
23753: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23754: token</a>, then switch to the <a href="#self-closing-start-tag-state">self-closing start tag
23755: state</a>. Otherwise, treat it as per the "anything else" entry
23756: below.</dd>
23757:
23758: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23759: <dd>If the current end tag token is an <a href="#appropriate-end-tag-token">appropriate end tag
23760: token</a>, then switch to the <a href="#data-state">data state</a> and emit
23761: the current tag token. Otherwise, treat it as per the "anything
23762: else" entry below.</dd>
23763:
23764: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23765: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23766: character</a> (add 0x0020 to the character's code point) to the
23767: current tag token's tag name. Append the <a href="#current-input-character">current input
23768: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23769:
23770: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23771: <dd>Append the <a href="#current-input-character">current input character</a> to the current
23772: tag token's tag name. Append the <a href="#current-input-character">current input
23773: character</a> to the <var><a href="#temporary-buffer">temporary buffer</a></var>.</dd>
23774:
23775: <dt>Anything else</dt>
23776: <dd>Switch to the <a href="#script-data-escaped-state">script data escaped state</a>. Emit a
23777: U+003C LESS-THAN SIGN character token, a U+002F SOLIDUS character
23778: token, and a character token for each of the characters in the
23779: <var><a href="#temporary-buffer">temporary buffer</a></var> (in the order they were added to the
23780: buffer). Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23781:
23782: </dl><h5 id="script-data-double-escape-start-state"><span class="secno">8.2.4.28 </span><dfn>Script data double escape start state</dfn></h5>
23783:
23784: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23785:
23786: <dl class="switch"><dt>"tab" (U+0009)</dt>
23787: <dt>"LF" (U+000A)</dt>
23788: <dt>"FF" (U+000C)</dt>
23789: <!--<dt>"CR" (U+000D)</dt>-->
23790: <dt>U+0020 SPACE</dt>
23791: <dt>"/" (U+002F)</dt>
23792: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23793: <dd>If the <var><a href="#temporary-buffer">temporary buffer</a></var> is the string "<code title="">script</code>", then switch to the <a href="#script-data-double-escaped-state">script data
23794: double escaped state</a>. Otherwise, switch to the <a href="#script-data-escaped-state">script
23795: data escaped state</a>. Emit the <a href="#current-input-character">current input
23796: character</a> as a character token.</dd>
23797:
23798: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23799: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23800: character</a> (add 0x0020 to the character's code point) to the
23801: <var><a href="#temporary-buffer">temporary buffer</a></var>. Emit the <a href="#current-input-character">current input
23802: character</a> as a character token.</dd>
23803:
23804: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23805: <dd>Append the <a href="#current-input-character">current input character</a> to the
23806: <var><a href="#temporary-buffer">temporary buffer</a></var>. Emit the <a href="#current-input-character">current input
23807: character</a> as a character token.</dd>
23808:
23809: <dt>Anything else</dt>
23810: <dd>Switch to the <a href="#script-data-escaped-state">script data escaped state</a>. Reconsume
23811: the <a href="#current-input-character">current input character</a>.</dd>
23812:
23813: </dl><h5 id="script-data-double-escaped-state"><span class="secno">8.2.4.29 </span><dfn>Script data double escaped state</dfn></h5>
23814:
23815: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23816:
23817: <dl class="switch"><dt>"-" (U+002D)</dt>
23818: <dd>Switch to the <a href="#script-data-double-escaped-dash-state">script data double escaped dash
23819: state</a>. Emit a U+002D HYPHEN-MINUS character token.</dd>
23820:
23821: <dt>U+003C LESS-THAN SIGN (<)</dt>
23822: <dd>Switch to the <a href="#script-data-double-escaped-less-than-sign-state">script data double escaped less-than
23823: sign state</a>. Emit a U+003C LESS-THAN SIGN character
23824: token.</dd>
23825:
23826: <dt>U+0000 NULL</dt>
23827: <dd><a href="#parse-error">Parse error</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23828: character token.</dd>
23829:
23830: <dt>EOF</dt>
23831: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23832: state</a>. Reconsume the EOF character.</dd>
23833:
23834: <dt>Anything else</dt>
23835: <dd>Emit the <a href="#current-input-character">current input character</a> as a character
23836: token.</dd>
23837:
23838: </dl><h5 id="script-data-double-escaped-dash-state"><span class="secno">8.2.4.30 </span><dfn>Script data double escaped dash state</dfn></h5>
23839:
23840: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23841:
23842: <dl class="switch"><dt>"-" (U+002D)</dt>
23843: <dd>Switch to the <a href="#script-data-double-escaped-dash-dash-state">script data double escaped dash dash
23844: state</a>. Emit a U+002D HYPHEN-MINUS character token.</dd>
23845:
23846: <dt>U+003C LESS-THAN SIGN (<)</dt>
23847: <dd>Switch to the <a href="#script-data-double-escaped-less-than-sign-state">script data double escaped less-than
23848: sign state</a>. Emit a U+003C LESS-THAN SIGN character
23849: token.</dd>
23850:
23851: <dt>U+0000 NULL</dt>
23852: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#script-data-double-escaped-state">script data
23853: double escaped state</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23854: character token.</dd>
23855:
23856: <dt>EOF</dt>
23857: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23858: state</a>. Reconsume the EOF character.</dd>
23859:
23860: <dt>Anything else</dt>
23861: <dd>Switch to the <a href="#script-data-double-escaped-state">script data double escaped
23862: state</a>. Emit the <a href="#current-input-character">current input character</a> as a
23863: character token.</dd>
23864:
23865: </dl><h5 id="script-data-double-escaped-dash-dash-state"><span class="secno">8.2.4.31 </span><dfn>Script data double escaped dash dash state</dfn></h5>
23866:
23867: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23868:
23869: <dl class="switch"><dt>"-" (U+002D)</dt>
23870: <dd>Emit a U+002D HYPHEN-MINUS character token.</dd>
23871:
23872: <dt>U+003C LESS-THAN SIGN (<)</dt>
23873: <dd>Switch to the <a href="#script-data-double-escaped-less-than-sign-state">script data double escaped less-than
23874: sign state</a>. Emit a U+003C LESS-THAN SIGN character
23875: token.</dd>
23876:
23877: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23878: <dd>Switch to the <a href="#script-data-state">script data state</a>. Emit a U+003E
23879: GREATER-THAN SIGN character token.</dd>
23880:
23881: <dt>U+0000 NULL</dt>
23882: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#script-data-double-escaped-state">script data
23883: double escaped state</a>. Emit a U+FFFD REPLACEMENT CHARACTER
23884: character token.</dd>
23885:
23886: <dt>EOF</dt>
23887: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23888: state</a>. Reconsume the EOF character.</dd>
23889:
23890: <dt>Anything else</dt>
23891: <dd>Switch to the <a href="#script-data-double-escaped-state">script data double escaped
23892: state</a>. Emit the <a href="#current-input-character">current input character</a> as a
23893: character token.</dd>
23894:
23895: </dl><h5 id="script-data-double-escaped-less-than-sign-state"><span class="secno">8.2.4.32 </span><dfn>Script data double escaped less-than sign state</dfn></h5>
23896:
23897: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23898:
23899: <dl class="switch"><dt>"/" (U+002F)</dt>
23900: <dd>Set the <var><a href="#temporary-buffer">temporary buffer</a></var> to the empty string. Switch
23901: to the <a href="#script-data-double-escape-end-state">script data double escape end state</a>. Emit a
23902: U+002F SOLIDUS character token.</dd>
23903:
23904: <dt>Anything else</dt>
23905: <dd>Switch to the <a href="#script-data-double-escaped-state">script data double escaped state</a>.
23906: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23907:
23908: </dl><h5 id="script-data-double-escape-end-state"><span class="secno">8.2.4.33 </span><dfn>Script data double escape end state</dfn></h5>
23909:
23910: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23911:
23912: <dl class="switch"><dt>"tab" (U+0009)</dt>
23913: <dt>"LF" (U+000A)</dt>
23914: <dt>"FF" (U+000C)</dt>
23915: <!--<dt>"CR" (U+000D)</dt>-->
23916: <dt>U+0020 SPACE</dt>
23917: <dt>"/" (U+002F)</dt>
23918: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23919: <dd>If the <var><a href="#temporary-buffer">temporary buffer</a></var> is the string "<code title="">script</code>", then switch to the <a href="#script-data-escaped-state">script data
23920: escaped state</a>. Otherwise, switch to the <a href="#script-data-double-escaped-state">script data
23921: double escaped state</a>. Emit the <a href="#current-input-character">current input
23922: character</a> as a character token.</dd>
23923:
23924: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23925: <dd>Append the lowercase version of the <a href="#current-input-character">current input
23926: character</a> (add 0x0020 to the character's code point) to the
23927: <var><a href="#temporary-buffer">temporary buffer</a></var>. Emit the <a href="#current-input-character">current input
23928: character</a> as a character token.</dd>
23929:
23930: <dt>U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z</dt>
23931: <dd>Append the <a href="#current-input-character">current input character</a> to the
23932: <var><a href="#temporary-buffer">temporary buffer</a></var>. Emit the <a href="#current-input-character">current input
23933: character</a> as a character token.</dd>
23934:
23935: <dt>Anything else</dt>
23936: <dd>Switch to the <a href="#script-data-double-escaped-state">script data double escaped state</a>.
23937: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
23938:
23939: </dl><h5 id="before-attribute-name-state"><span class="secno">8.2.4.34 </span><dfn>Before attribute name state</dfn></h5>
23940:
23941: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23942:
23943: <dl class="switch"><dt>"tab" (U+0009)</dt>
23944: <dt>"LF" (U+000A)</dt>
23945: <dt>"FF" (U+000C)</dt>
23946: <!--<dt>"CR" (U+000D)</dt>-->
23947: <dt>U+0020 SPACE</dt>
23948: <dd>Ignore the character.</dd>
23949:
23950: <dt>"/" (U+002F)</dt>
23951: <dd>Switch to the <a href="#self-closing-start-tag-state">self-closing start tag state</a>.</dd>
23952:
23953: <dt>U+003E GREATER-THAN SIGN (>)</dt>
23954: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
23955: token.</dd>
23956:
23957: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
23958: <dd>Start a new attribute in the current tag token. Set that
23959: attribute's name to the lowercase version of the <a href="#current-input-character">current input
23960: character</a> (add 0x0020 to the character's code point), and its
23961: value to the empty string. Switch to the <a href="#attribute-name-state">attribute name
23962: state</a>.</dd>
23963:
23964: <dt>U+0000 NULL</dt>
23965: <dd><a href="#parse-error">Parse error</a>. Start a new attribute in the current
23966: tag token. Set that attribute's name to a U+FFFD REPLACEMENT
23967: CHARACTER character, and its value to the empty string. Switch to
23968: the <a href="#attribute-name-state">attribute name state</a>.</dd>
23969:
23970: <dt>U+0022 QUOTATION MARK (")</dt>
23971: <dt>"'" (U+0027)</dt>
23972: <dt>U+003C LESS-THAN SIGN (<)</dt>
23973: <dt>"=" (U+003D)</dt>
23974: <dd><a href="#parse-error">Parse error</a>. Treat it as per the "anything else"
23975: entry below.</dd>
23976:
23977: <dt>EOF</dt>
23978: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
23979: state</a>. Reconsume the EOF character.</dd>
23980:
23981: <dt>Anything else</dt>
23982: <dd>Start a new attribute in the current tag token. Set that
23983: attribute's name to the <a href="#current-input-character">current input character</a>, and
23984: its value to the empty string. Switch to the <a href="#attribute-name-state">attribute name
23985: state</a>.</dd>
23986:
23987: </dl><h5 id="attribute-name-state"><span class="secno">8.2.4.35 </span><dfn>Attribute name state</dfn></h5>
23988:
23989: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
23990:
23991: <dl class="switch"><dt>"tab" (U+0009)</dt>
23992: <dt>"LF" (U+000A)</dt>
23993: <dt>"FF" (U+000C)</dt>
23994: <!--<dt>"CR" (U+000D)</dt>-->
23995: <dt>U+0020 SPACE</dt>
23996: <dd>Switch to the <a href="#after-attribute-name-state">after attribute name state</a>.</dd>
23997:
23998: <dt>"/" (U+002F)</dt>
23999: <dd>Switch to the <a href="#self-closing-start-tag-state">self-closing start tag state</a>.</dd>
24000:
24001: <dt>"=" (U+003D)</dt>
24002: <dd>Switch to the <a href="#before-attribute-value-state">before attribute value state</a>.</dd>
24003:
24004: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24005: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
24006: token.</dd>
24007:
24008: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
24009: <dd>Append the lowercase version of the <a href="#current-input-character">current input
24010: character</a> (add 0x0020 to the character's code point) to the
24011: current attribute's name.</dd>
24012:
24013: <dt>U+0000 NULL</dt>
24014: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24015: character to the current attribute's name.</dd>
24016:
24017: <dt>U+0022 QUOTATION MARK (")</dt>
24018: <dt>"'" (U+0027)</dt>
24019: <dt>U+003C LESS-THAN SIGN (<)</dt>
24020: <dd><a href="#parse-error">Parse error</a>. Treat it as per the "anything else"
24021: entry below.</dd>
24022:
24023: <dt>EOF</dt>
24024: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24025: state</a>. Reconsume the EOF character.</dd>
24026:
24027: <dt>Anything else</dt>
24028: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24029: attribute's name.</dd>
24030:
24031: </dl><p>When the user agent leaves the attribute name state (and before
24032: emitting the tag token, if appropriate), the complete attribute's
24033: name must be compared to the other attributes on the same token;
24034: if there is already an attribute on the token with the exact same
24035: name, then this is a <a href="#parse-error">parse error</a> and the new
24036: attribute must be dropped, along with the value that gets
24037: associated with it (if any).</p>
24038:
24039:
24040: <h5 id="after-attribute-name-state"><span class="secno">8.2.4.36 </span><dfn>After attribute name state</dfn></h5>
24041:
24042: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24043:
24044: <dl class="switch"><dt>"tab" (U+0009)</dt>
24045: <dt>"LF" (U+000A)</dt>
24046: <dt>"FF" (U+000C)</dt>
24047: <!--<dt>"CR" (U+000D)</dt>-->
24048: <dt>U+0020 SPACE</dt>
24049: <dd>Ignore the character.</dd>
24050:
24051: <dt>"/" (U+002F)</dt>
24052: <dd>Switch to the <a href="#self-closing-start-tag-state">self-closing start tag state</a>.</dd>
24053:
24054: <dt>"=" (U+003D)</dt>
24055: <dd>Switch to the <a href="#before-attribute-value-state">before attribute value state</a>.</dd>
24056:
24057: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24058: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
24059: token.</dd>
24060:
24061: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
24062: <dd>Start a new attribute in the current tag token. Set that
24063: attribute's name to the lowercase version of the <a href="#current-input-character">current
24064: input character</a> (add 0x0020 to the character's code point),
24065: and its value to the empty string. Switch to the <a href="#attribute-name-state">attribute
24066: name state</a>.</dd>
24067:
24068: <dt>U+0000 NULL</dt>
24069: <dd><a href="#parse-error">Parse error</a>. Start a new attribute in the current
24070: tag token. Set that attribute's name to a U+FFFD REPLACEMENT
24071: CHARACTER character, and its value to the empty string. Switch to
24072: the <a href="#attribute-name-state">attribute name state</a>.</dd>
24073:
24074: <dt>U+0022 QUOTATION MARK (")</dt>
24075: <dt>"'" (U+0027)</dt>
24076: <dt>U+003C LESS-THAN SIGN (<)</dt>
24077: <dd><a href="#parse-error">Parse error</a>. Treat it as per the "anything else"
24078: entry below.</dd>
24079:
24080: <dt>EOF</dt>
24081: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24082: state</a>. Reconsume the EOF character.</dd>
24083:
24084: <dt>Anything else</dt>
24085: <dd>Start a new attribute in the current tag token. Set that
24086: attribute's name to the <a href="#current-input-character">current input character</a>, and
24087: its value to the empty string. Switch to the <a href="#attribute-name-state">attribute name
24088: state</a>.</dd>
24089:
24090: </dl><h5 id="before-attribute-value-state"><span class="secno">8.2.4.37 </span><dfn>Before attribute value state</dfn></h5>
24091:
24092: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24093:
24094: <dl class="switch"><dt>"tab" (U+0009)</dt>
24095: <dt>"LF" (U+000A)</dt>
24096: <dt>"FF" (U+000C)</dt>
24097: <!--<dt>"CR" (U+000D)</dt>-->
24098: <dt>U+0020 SPACE</dt>
24099: <dd>Ignore the character.</dd>
24100:
24101: <dt>U+0022 QUOTATION MARK (")</dt>
24102: <dd>Switch to the <a href="#attribute-value-(double-quoted)-state">attribute value (double-quoted) state</a>.</dd>
24103:
24104: <dt>U+0026 AMPERSAND (&)</dt>
24105: <dd>Switch to the <a href="#attribute-value-(unquoted)-state">attribute value (unquoted) state</a>.
24106: Reconsume the <a href="#current-input-character">current input character</a>.</dd>
24107:
24108: <dt>"'" (U+0027)</dt>
24109: <dd>Switch to the <a href="#attribute-value-(single-quoted)-state">attribute value (single-quoted) state</a>.</dd>
24110:
24111: <dt>U+0000 NULL</dt>
24112: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24113: character to the current attribute's value. Switch to the
24114: <a href="#attribute-value-(unquoted)-state">attribute value (unquoted) state</a>.</dd>
24115:
24116: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24117: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24118: state</a>. Emit the current tag token.</dd>
24119:
24120: <dt>U+003C LESS-THAN SIGN (<)</dt>
24121: <dt>"=" (U+003D)</dt>
24122: <dt>"`" (U+0060)</dt>
24123: <dd><a href="#parse-error">Parse error</a>. Treat it as per the "anything else"
24124: entry below.</dd>
24125:
24126: <dt>EOF</dt>
24127: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24128: state</a>. Reconsume the EOF character.</dd>
24129:
24130: <dt>Anything else</dt>
24131: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24132: attribute's value. Switch to the <a href="#attribute-value-(unquoted)-state">attribute value (unquoted)
24133: state</a>.</dd>
24134:
24135: </dl><h5 id="attribute-value-(double-quoted)-state"><span class="secno">8.2.4.38 </span><dfn>Attribute value (double-quoted) state</dfn></h5>
24136:
24137: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24138:
24139: <dl class="switch"><dt>U+0022 QUOTATION MARK (")</dt>
24140: <dd>Switch to the <a href="#after-attribute-value-(quoted)-state">after attribute value (quoted)
24141: state</a>.</dd>
24142:
24143: <dt>U+0026 AMPERSAND (&)</dt>
24144: <dd>Switch to the <a href="#character-reference-in-attribute-value-state">character reference in attribute value
24145: state</a>, with the <a href="#additional-allowed-character">additional allowed character</a>
24146: being U+0022 QUOTATION MARK (").</dd>
24147:
24148: <dt>U+0000 NULL</dt>
24149: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24150: character to the current attribute's value.</dd>
24151:
24152: <dt>EOF</dt>
24153: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24154: state</a>. Reconsume the EOF character.</dd>
24155:
24156: <dt>Anything else</dt>
24157: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24158: attribute's value.</dd>
24159:
24160: </dl><h5 id="attribute-value-(single-quoted)-state"><span class="secno">8.2.4.39 </span><dfn>Attribute value (single-quoted) state</dfn></h5>
24161:
24162: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24163:
24164: <dl class="switch"><dt>"'" (U+0027)</dt>
24165: <dd>Switch to the <a href="#after-attribute-value-(quoted)-state">after attribute value (quoted)
24166: state</a>.</dd>
24167:
24168: <dt>U+0026 AMPERSAND (&)</dt>
24169: <dd>Switch to the <a href="#character-reference-in-attribute-value-state">character reference in attribute value
24170: state</a>, with the <a href="#additional-allowed-character">additional allowed character</a>
24171: being "'" (U+0027).</dd>
24172:
24173: <dt>U+0000 NULL</dt>
24174: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24175: character to the current attribute's value.</dd>
24176:
24177: <dt>EOF</dt>
24178: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24179: state</a>. Reconsume the EOF character.</dd>
24180:
24181: <dt>Anything else</dt>
24182: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24183: attribute's value.</dd>
24184:
24185: </dl><h5 id="attribute-value-(unquoted)-state"><span class="secno">8.2.4.40 </span><dfn>Attribute value (unquoted) state</dfn></h5>
24186:
24187: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24188:
24189: <dl class="switch"><dt>"tab" (U+0009)</dt>
24190: <dt>"LF" (U+000A)</dt>
24191: <dt>"FF" (U+000C)</dt>
24192: <!--<dt>"CR" (U+000D)</dt>-->
24193: <dt>U+0020 SPACE</dt>
24194: <dd>Switch to the <a href="#before-attribute-name-state">before attribute name state</a>.</dd>
24195:
24196: <dt>U+0026 AMPERSAND (&)</dt>
24197: <dd>Switch to the <a href="#character-reference-in-attribute-value-state">character reference in attribute value
24198: state</a>, with the <a href="#additional-allowed-character">additional allowed character</a>
24199: being U+003E GREATER-THAN SIGN (>).</dd>
24200:
24201: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24202: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
24203: token.</dd>
24204:
24205: <dt>U+0000 NULL</dt>
24206: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24207: character to the current attribute's value.</dd>
24208:
24209: <dt>U+0022 QUOTATION MARK (")</dt>
24210: <dt>"'" (U+0027)</dt>
24211: <dt>U+003C LESS-THAN SIGN (<)</dt>
24212: <dt>"=" (U+003D)</dt>
24213: <dt>"`" (U+0060)</dt>
24214: <dd><a href="#parse-error">Parse error</a>. Treat it as per the "anything else"
24215: entry below.</dd>
24216:
24217: <dt>EOF</dt>
24218: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24219: state</a>. Reconsume the EOF character.</dd>
24220:
24221: <dt>Anything else</dt>
24222: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24223: attribute's value.</dd>
24224:
24225: </dl><h5 id="character-reference-in-attribute-value-state"><span class="secno">8.2.4.41 </span><dfn>Character reference in attribute value state</dfn></h5>
24226:
24227: <p>Attempt to <a href="#consume-a-character-reference">consume a character reference</a>.</p>
24228:
24229: <p>If nothing is returned, append a U+0026 AMPERSAND character
24230: (&) to the current attribute's value.</p>
24231:
24232: <p>Otherwise, append the returned character tokens to the current
24233: attribute's value.</p>
24234:
24235: <p>Finally, switch back to the attribute value state that switched
24236: into this state.</p>
24237:
24238:
24239: <h5 id="after-attribute-value-(quoted)-state"><span class="secno">8.2.4.42 </span><dfn>After attribute value (quoted) state</dfn></h5>
24240:
24241: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24242:
24243: <dl class="switch"><dt>"tab" (U+0009)</dt>
24244: <dt>"LF" (U+000A)</dt>
24245: <dt>"FF" (U+000C)</dt>
24246: <!--<dt>"CR" (U+000D)</dt>-->
24247: <dt>U+0020 SPACE</dt>
24248: <dd>Switch to the <a href="#before-attribute-name-state">before attribute name state</a>.</dd>
24249:
24250: <dt>"/" (U+002F)</dt>
24251: <dd>Switch to the <a href="#self-closing-start-tag-state">self-closing start tag state</a>.</dd>
24252:
24253: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24254: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current tag
24255: token.</dd>
24256:
24257: <dt>EOF</dt>
24258: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24259: state</a>. Reconsume the EOF character.</dd>
24260:
24261: <dt>Anything else</dt>
24262: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#before-attribute-name-state">before attribute
24263: name state</a>. Reconsume the character.</dd>
24264:
24265: </dl><h5 id="self-closing-start-tag-state"><span class="secno">8.2.4.43 </span><dfn>Self-closing start tag state</dfn></h5>
24266:
24267: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24268:
24269: <dl class="switch"><dt>U+003E GREATER-THAN SIGN (>)</dt>
24270: <dd>Set the <i>self-closing flag</i> of the current tag
24271: token. Switch to the <a href="#data-state">data state</a>. Emit the current tag
24272: token.</dd>
24273:
24274: <dt>EOF</dt>
24275: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24276: state</a>. Reconsume the EOF character.</dd>
24277:
24278: <dt>Anything else</dt>
24279: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#before-attribute-name-state">before attribute
24280: name state</a>. Reconsume the character.</dd>
24281:
24282: </dl><h5 id="bogus-comment-state"><span class="secno">8.2.4.44 </span><dfn>Bogus comment state</dfn></h5>
24283:
24284: <p>Consume every character up to and including the first U+003E
24285: GREATER-THAN SIGN character (>) or the end of the file (EOF),
24286: whichever comes first. Emit a comment token whose data is the
24287: concatenation of all the characters starting from and including the
24288: character that caused the state machine to switch into the bogus
24289: comment state, up to and including the character immediately before
24290: the last consumed character (i.e. up to the character just before
24291: the U+003E or EOF character), but with any U+0000 NULL characters
24292: replaced by U+FFFD REPLACEMENT CHARACTER characters. (If the comment
24293: was started by the end of the file (EOF), the token is empty.
24294: Similarly, the token is empty if it was generated by the string
24295: "<code title=""><!></code>".)</p>
24296:
24297: <p>Switch to the <a href="#data-state">data state</a>.</p>
24298:
24299: <p>If the end of the file was reached, reconsume the EOF
24300: character.</p>
24301:
24302:
24303: <h5 id="markup-declaration-open-state"><span class="secno">8.2.4.45 </span><dfn>Markup declaration open state</dfn></h5>
24304:
24305: <p>If the next two characters are both "-" (U+002D) characters, consume those two characters, create a comment token
24306: whose data is the empty string, and switch to the <a href="#comment-start-state">comment
24307: start state</a>.</p>
24308:
24309: <p>Otherwise, if the next seven characters are an <a href="infrastructure.html#ascii-case-insensitive">ASCII
24310: case-insensitive</a> match for the word "DOCTYPE", then consume
24311: those characters and switch to the <a href="#doctype-state">DOCTYPE state</a>.</p>
24312:
24313: <p>Otherwise, if there is a <a href="#current-node">current node</a> and it is not
24314: an element in the <a href="namespaces.html#html-namespace-0">HTML namespace</a> and the next seven
24315: characters are a <a href="infrastructure.html#case-sensitive">case-sensitive</a> match for the string
24316: "[CDATA[" (the five uppercase letters "CDATA" with a U+005B LEFT
24317: SQUARE BRACKET character before and after), then consume those
24318: characters and switch to the <a href="#cdata-section-state">CDATA section state</a>.</p>
24319:
24320: <p>Otherwise, this is a <a href="#parse-error">parse error</a>. Switch to the
24321: <a href="#bogus-comment-state">bogus comment state</a>. The next character that is
24322: consumed, if any, is the first character that will be in the
24323: comment.</p>
24324:
24325:
24326: <h5 id="comment-start-state"><span class="secno">8.2.4.46 </span><dfn>Comment start state</dfn></h5>
24327:
24328: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24329:
24330: <dl class="switch"><dt>"-" (U+002D)</dt>
24331: <dd>Switch to the <a href="#comment-start-dash-state">comment start dash state</a>.</dd>
24332:
24333: <dt>U+0000 NULL</dt>
24334: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24335: character to the comment token's data. Switch to the <a href="#comment-state">comment
24336: state</a>.</dd>
24337:
24338: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24339: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24340: state</a>. Emit the comment token.</dd> <!-- see comment in
24341: comment end state -->
24342:
24343: <dt>EOF</dt>
24344: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24345: state</a>. Emit the comment token. Reconsume the EOF character.</dd>
24346:
24347: <dt>Anything else</dt>
24348: <dd>Append the <a href="#current-input-character">current input character</a> to the comment
24349: token's data. Switch to the <a href="#comment-state">comment state</a>.</dd>
24350:
24351: </dl><h5 id="comment-start-dash-state"><span class="secno">8.2.4.47 </span><dfn>Comment start dash state</dfn></h5>
24352:
24353: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24354:
24355: <dl class="switch"><dt>"-" (U+002D)</dt>
24356: <dd>Switch to the <a href="#comment-end-state">comment end state</a></dd>
24357:
24358: <dt>U+0000 NULL</dt>
24359: <dd><a href="#parse-error">Parse error</a>. Append a "-" (U+002D) character and a U+FFFD REPLACEMENT CHARACTER character to the
24360: comment token's data. Switch to the <a href="#comment-state">comment
24361: state</a>.</dd>
24362:
24363: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24364: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24365: state</a>. Emit the comment token.</dd>
24366:
24367: <dt>EOF</dt>
24368: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24369: state</a>. Emit the comment token. Reconsume the EOF
24370: character.</dd> <!-- see comment in comment end state -->
24371:
24372: <dt>Anything else</dt>
24373: <dd>Append a "-" (U+002D) character and the
24374: <a href="#current-input-character">current input character</a> to the comment token's
24375: data. Switch to the <a href="#comment-state">comment state</a>.</dd>
24376:
24377: </dl><h5 id="comment-state"><span class="secno">8.2.4.48 </span><dfn id="comment">Comment state</dfn></h5>
24378:
24379: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24380:
24381: <dl class="switch"><dt>"-" (U+002D)</dt>
24382: <dd>Switch to the <a href="#comment-end-dash-state">comment end dash state</a></dd>
24383:
24384: <dt>U+0000 NULL</dt>
24385: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24386: character to the comment token's data.</dd>
24387:
24388: <dt>EOF</dt>
24389: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24390: state</a>. Emit the comment token. Reconsume the EOF
24391: character.</dd> <!-- see comment in comment end state -->
24392:
24393: <dt>Anything else</dt>
24394: <dd>Append the <a href="#current-input-character">current input character</a> to the comment
24395: token's data.</dd>
24396:
24397: </dl><h5 id="comment-end-dash-state"><span class="secno">8.2.4.49 </span><dfn>Comment end dash state</dfn></h5>
24398:
24399: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24400:
24401: <dl class="switch"><dt>"-" (U+002D)</dt>
24402: <dd>Switch to the <a href="#comment-end-state">comment end state</a></dd>
24403:
24404: <dt>U+0000 NULL</dt>
24405: <dd><a href="#parse-error">Parse error</a>. Append a "-" (U+002D) character and a U+FFFD REPLACEMENT CHARACTER character to the
24406: comment token's data. Switch to the <a href="#comment-state">comment
24407: state</a>.</dd>
24408:
24409: <dt>EOF</dt>
24410: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24411: state</a>. Emit the comment token. Reconsume the EOF
24412: character.</dd> <!-- see comment in comment end state -->
24413:
24414: <dt>Anything else</dt>
24415: <dd>Append a "-" (U+002D) character and the
24416: <a href="#current-input-character">current input character</a> to the comment token's
24417: data. Switch to the <a href="#comment-state">comment state</a>.</dd>
24418:
24419: </dl><h5 id="comment-end-state"><span class="secno">8.2.4.50 </span><dfn>Comment end state</dfn></h5>
24420:
24421: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24422:
24423: <dl class="switch"><dt>U+003E GREATER-THAN SIGN (>)</dt>
24424: <dd>Switch to the <a href="#data-state">data state</a>. Emit the comment
24425: token.</dd>
24426:
24427: <dt>U+0000 NULL</dt>
24428: <dd><a href="#parse-error">Parse error</a>. Append two "-" (U+002D) characters and a U+FFFD REPLACEMENT CHARACTER character to the
24429: comment token's data. Switch to the <a href="#comment-state">comment
24430: state</a>.</dd>
24431:
24432: <dt>"!" (U+0021)</dt>
24433: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#comment-end-bang-state">comment end bang
24434: state</a>.</dd>
24435:
24436: <dt>"-" (U+002D)</dt>
24437: <dd><a href="#parse-error">Parse error</a>. Append a "-" (U+002D) character to the comment token's data.</dd>
24438:
24439: <dt>EOF</dt>
24440: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24441: state</a>. Emit the comment token. Reconsume the EOF
24442: character.</dd> <!-- For security reasons: otherwise, hostile user
24443: could put a <script> in a comment e.g. in a blog comment and then
24444: DOS the server so that the end tag isn't read, and then the
24445: commented <script> tag would be treated as live code -->
24446:
24447: <dt>Anything else</dt>
24448: <dd><a href="#parse-error">Parse error</a>. Append two "-" (U+002D) characters and the <a href="#current-input-character">current input character</a> to the
24449: comment token's data. Switch to the <a href="#comment-state">comment
24450: state</a>.</dd>
24451:
24452: </dl><h5 id="comment-end-bang-state"><span class="secno">8.2.4.51 </span><dfn>Comment end bang state</dfn></h5>
24453:
24454: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24455:
24456: <dl class="switch"><dt>"-" (U+002D)</dt>
24457: <dd>Append two "-" (U+002D) characters and a "!" (U+0021) character to the comment token's data. Switch
24458: to the <a href="#comment-end-dash-state">comment end dash state</a>.</dd>
24459:
24460: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24461: <dd>Switch to the <a href="#data-state">data state</a>. Emit the comment
24462: token.</dd>
24463:
24464: <dt>U+0000 NULL</dt>
24465: <dd><a href="#parse-error">Parse error</a>. Append two "-" (U+002D) characters, a "!" (U+0021) character, and a
24466: U+FFFD REPLACEMENT CHARACTER character to the comment token's data.
24467: Switch to the <a href="#comment-state">comment state</a>.</dd>
24468:
24469: <dt>EOF</dt>
24470: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24471: state</a>. Emit the comment token. Reconsume the EOF
24472: character.</dd> <!-- see comment in comment end state -->
24473:
24474: <dt>Anything else</dt>
24475: <dd>Append two "-" (U+002D) characters, a "!" (U+0021) character, and the <a href="#current-input-character">current input
24476: character</a> to the comment token's data. Switch to the
24477: <a href="#comment-state">comment state</a>.</dd>
24478:
24479: </dl><h5 id="doctype-state"><span class="secno">8.2.4.52 </span><dfn>DOCTYPE state</dfn></h5>
24480:
24481: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24482:
24483: <dl class="switch"><dt>"tab" (U+0009)</dt>
24484: <dt>"LF" (U+000A)</dt>
24485: <dt>"FF" (U+000C)</dt>
24486: <!--<dt>"CR" (U+000D)</dt>-->
24487: <dt>U+0020 SPACE</dt>
24488: <dd>Switch to the <a href="#before-doctype-name-state">before DOCTYPE name state</a>.</dd>
24489:
24490: <dt>EOF</dt>
24491: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24492: state</a>. Create a new DOCTYPE token. Set its <i>force-quirks
24493: flag</i> to <i>on</i>. Emit the token. Reconsume the EOF
24494: character.</dd>
24495:
24496: <dt>Anything else</dt>
24497: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#before-doctype-name-state">before DOCTYPE
24498: name state</a>. Reconsume the character.</dd>
24499:
24500: </dl><h5 id="before-doctype-name-state"><span class="secno">8.2.4.53 </span><dfn>Before DOCTYPE name state</dfn></h5>
24501:
24502: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24503:
24504: <dl class="switch"><dt>"tab" (U+0009)</dt>
24505: <dt>"LF" (U+000A)</dt>
24506: <dt>"FF" (U+000C)</dt>
24507: <!--<dt>"CR" (U+000D)</dt>-->
24508: <dt>U+0020 SPACE</dt>
24509: <dd>Ignore the character.</dd>
24510:
24511: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
24512: <dd>Create a new DOCTYPE token. Set the token's name to the
24513: lowercase version of the <a href="#current-input-character">current input character</a> (add 0x0020 to the
24514: character's code point). Switch to the <a href="#doctype-name-state">DOCTYPE name
24515: state</a>.</dd>
24516:
24517: <dt>U+0000 NULL</dt>
24518: <dd><a href="#parse-error">Parse error</a>. Create a new DOCTYPE token. Set the
24519: token's name to a U+FFFD REPLACEMENT CHARACTER character. Switch to
24520: the <a href="#doctype-name-state">DOCTYPE name state</a>.</dd>
24521:
24522: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24523: <dd><a href="#parse-error">Parse error</a>. Create a new DOCTYPE token. Set its
24524: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24525: state</a>. Emit the token.</dd>
24526:
24527: <dt>EOF</dt>
24528: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24529: state</a>. Create a new DOCTYPE token. Set its <i>force-quirks
24530: flag</i> to <i>on</i>. Emit the token. Reconsume the EOF
24531: character.</dd>
24532:
24533: <dt>Anything else</dt>
24534: <dd>Create a new DOCTYPE token. Set the token's name to the
24535: <a href="#current-input-character">current input character</a>. Switch to the <a href="#doctype-name-state">DOCTYPE name
24536: state</a>.</dd>
24537:
24538: </dl><h5 id="doctype-name-state"><span class="secno">8.2.4.54 </span><dfn>DOCTYPE name state</dfn></h5>
24539:
24540: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24541:
24542: <dl class="switch"><dt>"tab" (U+0009)</dt>
24543: <dt>"LF" (U+000A)</dt>
24544: <dt>"FF" (U+000C)</dt>
24545: <!--<dt>"CR" (U+000D)</dt>-->
24546: <dt>U+0020 SPACE</dt>
24547: <dd>Switch to the <a href="#after-doctype-name-state">after DOCTYPE name state</a>.</dd>
24548:
24549: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24550: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current DOCTYPE
24551: token.</dd>
24552:
24553: <dt>U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z</dt>
24554: <dd>Append the lowercase version of the <a href="#current-input-character">current input
24555: character</a> (add 0x0020 to the character's code point) to the
24556: current DOCTYPE token's name.</dd>
24557:
24558: <dt>U+0000 NULL</dt>
24559: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24560: character to the current DOCTYPE token's name.</dd>
24561:
24562: <dt>EOF</dt>
24563: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24564: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24565: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24566:
24567: <dt>Anything else</dt>
24568: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24569: DOCTYPE token's name.</dd>
24570:
24571: </dl><h5 id="after-doctype-name-state"><span class="secno">8.2.4.55 </span><dfn>After DOCTYPE name state</dfn></h5>
24572:
24573: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24574:
24575: <dl class="switch"><dt>"tab" (U+0009)</dt>
24576: <dt>"LF" (U+000A)</dt>
24577: <dt>"FF" (U+000C)</dt>
24578: <!--<dt>"CR" (U+000D)</dt>-->
24579: <dt>U+0020 SPACE</dt>
24580: <dd>Ignore the character.</dd>
24581:
24582: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24583: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current DOCTYPE
24584: token.</dd>
24585:
24586: <dt>EOF</dt>
24587: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24588: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24589: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24590:
24591: <dt>Anything else</dt>
24592: <dd>
24593:
24594: <p>If the six characters starting from the <a href="#current-input-character">current input
24595: character</a> are an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match
24596: for the word "PUBLIC", then consume those characters and switch to
24597: the <a href="#after-doctype-public-keyword-state">after DOCTYPE public keyword state</a>.</p>
24598:
24599: <p>Otherwise, if the six characters starting from the
24600: <a href="#current-input-character">current input character</a> are an <a href="infrastructure.html#ascii-case-insensitive">ASCII
24601: case-insensitive</a> match for the word "SYSTEM", then consume
24602: those characters and switch to the <a href="#after-doctype-system-keyword-state">after DOCTYPE system
24603: keyword state</a>.</p>
24604:
24605: <p>Otherwise, this is a <a href="#parse-error">parse error</a>. Set the
24606: DOCTYPE token's <i>force-quirks flag</i> to <i>on</i>. Switch to
24607: the <a href="#bogus-doctype-state">bogus DOCTYPE state</a>.</p>
24608:
24609: </dd>
24610:
24611: </dl><h5 id="after-doctype-public-keyword-state"><span class="secno">8.2.4.56 </span><dfn>After DOCTYPE public keyword state</dfn></h5>
24612:
24613: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24614:
24615: <dl class="switch"><dt>"tab" (U+0009)</dt>
24616: <dt>"LF" (U+000A)</dt>
24617: <dt>"FF" (U+000C)</dt>
24618: <!--<dt>"CR" (U+000D)</dt>-->
24619: <dt>U+0020 SPACE</dt>
24620: <dd>Switch to the <a href="#before-doctype-public-identifier-state">before DOCTYPE public identifier
24621: state</a>.</dd>
24622:
24623: <dt>U+0022 QUOTATION MARK (")</dt>
24624: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's public
24625: identifier to the empty string (not missing), then switch to the
24626: <a href="#doctype-public-identifier-(double-quoted)-state">DOCTYPE public identifier (double-quoted) state</a>.</dd>
24627:
24628: <dt>"'" (U+0027)</dt>
24629: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's public
24630: identifier to the empty string (not missing), then switch to the
24631: <a href="#doctype-public-identifier-(single-quoted)-state">DOCTYPE public identifier (single-quoted) state</a>.</dd>
24632:
24633: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24634: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24635: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24636: state</a>. Emit that DOCTYPE token.</dd>
24637:
24638: <dt>EOF</dt>
24639: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24640: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24641: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24642:
24643: <dt>Anything else</dt>
24644: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24645: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24646: DOCTYPE state</a>.</dd>
24647:
24648: </dl><h5 id="before-doctype-public-identifier-state"><span class="secno">8.2.4.57 </span><dfn>Before DOCTYPE public identifier state</dfn></h5>
24649:
24650: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24651:
24652: <dl class="switch"><dt>"tab" (U+0009)</dt>
24653: <dt>"LF" (U+000A)</dt>
24654: <dt>"FF" (U+000C)</dt>
24655: <!--<dt>"CR" (U+000D)</dt>-->
24656: <dt>U+0020 SPACE</dt>
24657: <dd>Ignore the character.</dd>
24658:
24659: <dt>U+0022 QUOTATION MARK (")</dt>
24660: <dd>Set the DOCTYPE token's public identifier to the empty string
24661: (not missing), then switch to the <a href="#doctype-public-identifier-(double-quoted)-state">DOCTYPE public identifier
24662: (double-quoted) state</a>.</dd>
24663:
24664: <dt>"'" (U+0027)</dt>
24665: <dd>Set the DOCTYPE token's public identifier to the empty string
24666: (not missing), then switch to the <a href="#doctype-public-identifier-(single-quoted)-state">DOCTYPE public identifier
24667: (single-quoted) state</a>.</dd>
24668:
24669: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24670: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24671: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24672: state</a>. Emit that DOCTYPE token.</dd>
24673:
24674: <dt>EOF</dt>
24675: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24676: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24677: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24678:
24679: <dt>Anything else</dt>
24680: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24681: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24682: DOCTYPE state</a>.</dd>
24683:
24684: </dl><h5 id="doctype-public-identifier-(double-quoted)-state"><span class="secno">8.2.4.58 </span><dfn>DOCTYPE public identifier (double-quoted) state</dfn></h5>
24685:
24686: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24687:
24688: <dl class="switch"><dt>U+0022 QUOTATION MARK (")</dt>
24689: <dd>Switch to the <a href="#after-doctype-public-identifier-state">after DOCTYPE public identifier state</a>.</dd>
24690:
24691: <dt>U+0000 NULL</dt>
24692: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24693: character to the current DOCTYPE token's public identifier.</dd>
24694:
24695: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24696: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24697: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24698: state</a>. Emit that DOCTYPE token.</dd>
24699:
24700: <dt>EOF</dt>
24701: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24702: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24703: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24704:
24705: <dt>Anything else</dt>
24706: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24707: DOCTYPE token's public identifier.</dd>
24708:
24709: </dl><h5 id="doctype-public-identifier-(single-quoted)-state"><span class="secno">8.2.4.59 </span><dfn>DOCTYPE public identifier (single-quoted) state</dfn></h5>
24710:
24711: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24712:
24713: <dl class="switch"><dt>"'" (U+0027)</dt>
24714: <dd>Switch to the <a href="#after-doctype-public-identifier-state">after DOCTYPE public identifier state</a>.</dd>
24715:
24716: <dt>U+0000 NULL</dt>
24717: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24718: character to the current DOCTYPE token's public identifier.</dd>
24719:
24720: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24721: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24722: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24723: state</a>. Emit that DOCTYPE token.</dd>
24724:
24725: <dt>EOF</dt>
24726: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24727: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24728: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24729:
24730: <dt>Anything else</dt>
24731: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24732: DOCTYPE token's public identifier.</dd>
24733:
24734: </dl><h5 id="after-doctype-public-identifier-state"><span class="secno">8.2.4.60 </span><dfn>After DOCTYPE public identifier state</dfn></h5>
24735:
24736: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24737:
24738: <dl class="switch"><dt>"tab" (U+0009)</dt>
24739: <dt>"LF" (U+000A)</dt>
24740: <dt>"FF" (U+000C)</dt>
24741: <!--<dt>"CR" (U+000D)</dt>-->
24742: <dt>U+0020 SPACE</dt>
24743: <dd>Switch to the <a href="#between-doctype-public-and-system-identifiers-state">between DOCTYPE public and system
24744: identifiers state</a>.</dd>
24745:
24746: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24747: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current DOCTYPE
24748: token.</dd>
24749:
24750: <dt>U+0022 QUOTATION MARK (")</dt>
24751: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's system
24752: identifier to the empty string (not missing), then switch to the
24753: <a href="#doctype-system-identifier-(double-quoted)-state">DOCTYPE system identifier (double-quoted) state</a>.</dd>
24754:
24755: <dt>"'" (U+0027)</dt>
24756: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's system
24757: identifier to the empty string (not missing), then switch to the
24758: <a href="#doctype-system-identifier-(single-quoted)-state">DOCTYPE system identifier (single-quoted) state</a>.</dd>
24759:
24760: <dt>EOF</dt>
24761: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24762: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24763: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24764:
24765: <dt>Anything else</dt>
24766: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24767: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24768: DOCTYPE state</a>.</dd>
24769:
24770: </dl><h5 id="between-doctype-public-and-system-identifiers-state"><span class="secno">8.2.4.61 </span><dfn>Between DOCTYPE public and system identifiers state</dfn></h5>
24771:
24772: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24773:
24774: <dl class="switch"><dt>"tab" (U+0009)</dt>
24775: <dt>"LF" (U+000A)</dt>
24776: <dt>"FF" (U+000C)</dt>
24777: <!--<dt>"CR" (U+000D)</dt>-->
24778: <dt>U+0020 SPACE</dt>
24779: <dd>Ignore the character.</dd>
24780:
24781: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24782: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current DOCTYPE
24783: token.</dd>
24784:
24785: <dt>U+0022 QUOTATION MARK (")</dt>
24786: <dd>Set the DOCTYPE token's system identifier to the empty string
24787: (not missing), then switch to the <a href="#doctype-system-identifier-(double-quoted)-state">DOCTYPE system identifier
24788: (double-quoted) state</a>.</dd>
24789:
24790: <dt>"'" (U+0027)</dt>
24791: <dd>Set the DOCTYPE token's system identifier to the empty string
24792: (not missing), then switch to the <a href="#doctype-system-identifier-(single-quoted)-state">DOCTYPE system identifier
24793: (single-quoted) state</a>.</dd>
24794:
24795: <dt>EOF</dt>
24796: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24797: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24798: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24799:
24800: <dt>Anything else</dt>
24801: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24802: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24803: DOCTYPE state</a>.</dd>
24804:
24805: </dl><h5 id="after-doctype-system-keyword-state"><span class="secno">8.2.4.62 </span><dfn>After DOCTYPE system keyword state</dfn></h5>
24806:
24807: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24808:
24809: <dl class="switch"><dt>"tab" (U+0009)</dt>
24810: <dt>"LF" (U+000A)</dt>
24811: <dt>"FF" (U+000C)</dt>
24812: <!--<dt>"CR" (U+000D)</dt>-->
24813: <dt>U+0020 SPACE</dt>
24814: <dd>Switch to the <a href="#before-doctype-system-identifier-state">before DOCTYPE system identifier
24815: state</a>.</dd>
24816:
24817: <dt>U+0022 QUOTATION MARK (")</dt>
24818: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's system
24819: identifier to the empty string (not missing), then switch to the
24820: <a href="#doctype-system-identifier-(double-quoted)-state">DOCTYPE system identifier (double-quoted) state</a>.</dd>
24821:
24822: <dt>"'" (U+0027)</dt>
24823: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's system
24824: identifier to the empty string (not missing), then switch to the
24825: <a href="#doctype-system-identifier-(single-quoted)-state">DOCTYPE system identifier (single-quoted) state</a>.</dd>
24826:
24827: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24828: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24829: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24830: state</a>. Emit that DOCTYPE token.</dd>
24831:
24832: <dt>EOF</dt>
24833: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24834: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24835: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24836:
24837: <dt>Anything else</dt>
24838: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24839: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24840: DOCTYPE state</a>.</dd>
24841:
24842: </dl><h5 id="before-doctype-system-identifier-state"><span class="secno">8.2.4.63 </span><dfn>Before DOCTYPE system identifier state</dfn></h5>
24843:
24844: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24845:
24846: <dl class="switch"><dt>"tab" (U+0009)</dt>
24847: <dt>"LF" (U+000A)</dt>
24848: <dt>"FF" (U+000C)</dt>
24849: <!--<dt>"CR" (U+000D)</dt>-->
24850: <dt>U+0020 SPACE</dt>
24851: <dd>Ignore the character.</dd>
24852:
24853: <dt>U+0022 QUOTATION MARK (")</dt>
24854: <dd>Set the DOCTYPE token's system identifier to the empty string
24855: (not missing), then switch to the <a href="#doctype-system-identifier-(double-quoted)-state">DOCTYPE system identifier
24856: (double-quoted) state</a>.</dd>
24857:
24858: <dt>"'" (U+0027)</dt>
24859: <dd>Set the DOCTYPE token's system identifier to the empty string
24860: (not missing), then switch to the <a href="#doctype-system-identifier-(single-quoted)-state">DOCTYPE system identifier
24861: (single-quoted) state</a>.</dd>
24862:
24863: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24864: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24865: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24866: state</a>. Emit that DOCTYPE token.</dd>
24867:
24868: <dt>EOF</dt>
24869: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24870: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24871: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24872:
24873: <dt>Anything else</dt>
24874: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24875: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#bogus-doctype-state">bogus
24876: DOCTYPE state</a>.</dd>
24877:
24878: </dl><h5 id="doctype-system-identifier-(double-quoted)-state"><span class="secno">8.2.4.64 </span><dfn>DOCTYPE system identifier (double-quoted) state</dfn></h5>
24879:
24880: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24881:
24882: <dl class="switch"><dt>U+0022 QUOTATION MARK (")</dt>
24883: <dd>Switch to the <a href="#after-doctype-system-identifier-state">after DOCTYPE system identifier
24884: state</a>.</dd>
24885:
24886: <dt>U+0000 NULL</dt>
24887: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24888: character to the current DOCTYPE token's system identifier.</dd>
24889:
24890: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24891: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24892: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24893: state</a>. Emit that DOCTYPE token.</dd>
24894:
24895: <dt>EOF</dt>
24896: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24897: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24898: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24899:
24900: <dt>Anything else</dt>
24901: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24902: DOCTYPE token's system identifier.</dd>
24903:
24904: </dl><h5 id="doctype-system-identifier-(single-quoted)-state"><span class="secno">8.2.4.65 </span><dfn>DOCTYPE system identifier (single-quoted) state</dfn></h5>
24905:
24906: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24907:
24908: <dl class="switch"><dt>"'" (U+0027)</dt>
24909: <dd>Switch to the <a href="#after-doctype-system-identifier-state">after DOCTYPE system identifier
24910: state</a>.</dd>
24911:
24912: <dt>U+0000 NULL</dt>
24913: <dd><a href="#parse-error">Parse error</a>. Append a U+FFFD REPLACEMENT CHARACTER
24914: character to the current DOCTYPE token's system identifier.</dd>
24915:
24916: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24917: <dd><a href="#parse-error">Parse error</a>. Set the DOCTYPE token's
24918: <i>force-quirks flag</i> to <i>on</i>. Switch to the <a href="#data-state">data
24919: state</a>. Emit that DOCTYPE token.</dd>
24920:
24921: <dt>EOF</dt>
24922: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24923: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24924: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24925:
24926: <dt>Anything else</dt>
24927: <dd>Append the <a href="#current-input-character">current input character</a> to the current
24928: DOCTYPE token's system identifier.</dd>
24929:
24930: </dl><h5 id="after-doctype-system-identifier-state"><span class="secno">8.2.4.66 </span><dfn>After DOCTYPE system identifier state</dfn></h5>
24931:
24932: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24933:
24934: <dl class="switch"><dt>"tab" (U+0009)</dt>
24935: <dt>"LF" (U+000A)</dt>
24936: <dt>"FF" (U+000C)</dt>
24937: <!--<dt>"CR" (U+000D)</dt>-->
24938: <dt>U+0020 SPACE</dt>
24939: <dd>Ignore the character.</dd>
24940:
24941: <dt>U+003E GREATER-THAN SIGN (>)</dt>
24942: <dd>Switch to the <a href="#data-state">data state</a>. Emit the current DOCTYPE
24943: token.</dd>
24944:
24945: <dt>EOF</dt>
24946: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#data-state">data
24947: state</a>. Set the DOCTYPE token's <i>force-quirks flag</i> to
24948: <i>on</i>. Emit that DOCTYPE token. Reconsume the EOF character.</dd>
24949:
24950: <dt>Anything else</dt>
24951: <dd><a href="#parse-error">Parse error</a>. Switch to the <a href="#bogus-doctype-state">bogus DOCTYPE
24952: state</a>. (This does <em>not</em> set the DOCTYPE token's
24953: <i>force-quirks flag</i> to <i>on</i>.)</dd>
24954:
24955: </dl><h5 id="bogus-doctype-state"><span class="secno">8.2.4.67 </span><dfn>Bogus DOCTYPE state</dfn></h5>
24956:
24957: <p>Consume the <a href="#next-input-character">next input character</a>:</p>
24958:
24959: <dl class="switch"><dt>U+003E GREATER-THAN SIGN (>)</dt>
24960: <dd>Switch to the <a href="#data-state">data state</a>. Emit the DOCTYPE
24961: token.</dd>
24962:
24963: <dt>EOF</dt>
24964: <dd>Switch to the <a href="#data-state">data state</a>. Emit the DOCTYPE token.
24965: Reconsume the EOF character.</dd>
24966:
24967: <dt>Anything else</dt>
24968: <dd>Ignore the character.</dd>
24969:
24970: </dl><h5 id="cdata-section-state"><span class="secno">8.2.4.68 </span><dfn>CDATA section state</dfn></h5>
24971:
24972: <p>Switch to the <a href="#data-state">data state</a>.</p>
24973:
24974: <p>Consume every character up to the next occurrence of the three
24975: character sequence U+005D RIGHT SQUARE BRACKET U+005D RIGHT SQUARE
24976: BRACKET U+003E GREATER-THAN SIGN (<code title="">]]></code>), or the
24977: end of the file (EOF), whichever comes first. Emit a series of
24978: character tokens consisting of all the characters consumed except
24979: the matching three character sequence at the end (if one was found
24980: before the end of the file)<!--(not needed; taken care of by the
24981: tree constructor), but with any U+0000 NULL characters replaced by
24982: U+FFFD REPLACEMENT CHARACTER characters-->.</p>
24983:
24984: <p>If the end of the file was reached, reconsume the EOF
24985: character.</p>
24986:
24987:
24988:
24989: <h5 id="tokenizing-character-references"><span class="secno">8.2.4.69 </span>Tokenizing character references</h5>
24990:
24991: <p>This section defines how to <dfn id="consume-a-character-reference">consume a character
24992: reference</dfn>. This definition is used when parsing character
24993: references <a href="#character-reference-in-data-state" title="character reference in data state">in
24994: text</a> and <a href="#character-reference-in-attribute-value-state" title="character reference in attribute value
24995: state">in attributes</a>.</p>
24996:
24997: <p>The behavior depends on the identity of the next character (the
24998: one immediately after the U+0026 AMPERSAND character):</p>
24999:
25000: <dl class="switch"><dt>"tab" (U+0009)</dt>
25001: <dt>"LF" (U+000A)</dt>
25002: <dt>"FF" (U+000C)</dt>
25003: <!--<dt>"CR" (U+000D)</dt>-->
25004: <dt>U+0020 SPACE</dt>
25005: <dt>U+003C LESS-THAN SIGN</dt>
25006: <dt>U+0026 AMPERSAND</dt>
25007: <dt>EOF</dt>
25008: <dt>The <dfn id="additional-allowed-character">additional allowed character</dfn>, if there is one</dt>
25009:
25010: <dd>Not a character reference. No characters are consumed, and
25011: nothing is returned. (This is not an error, either.)</dd>
25012:
25013:
25014: <dt>"#" (U+0023)</dt>
25015:
25016: <dd>
25017:
25018: <p>Consume the U+0023 NUMBER SIGN.</p>
25019:
25020: <p>The behavior further depends on the character after the U+0023
25021: NUMBER SIGN:</p>
25022:
25023: <dl class="switch"><dt>U+0078 LATIN SMALL LETTER X</dt>
25024: <dt>U+0058 LATIN CAPITAL LETTER X</dt>
25025:
25026: <dd>
25027:
25028: <p>Consume the X.</p>
25029:
25030: <p>Follow the steps below, but using the range of characters
25031: <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, U+0061 LATIN
25032: SMALL LETTER A to U+0066 LATIN SMALL LETTER F, and U+0041 LATIN
25033: CAPITAL LETTER A to U+0046 LATIN CAPITAL LETTER F (in other
25034: words, 0-9, A-F, a-f).</p>
25035:
25036: <p>When it comes to interpreting the number, interpret it as a
25037: hexadecimal number.</p>
25038:
25039: </dd>
25040:
25041:
25042: <dt>Anything else</dt>
25043:
25044: <dd>
25045:
25046: <p>Follow the steps below, but using the range of characters
25047: <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>.</p>
25048:
25049: <p>When it comes to interpreting the number, interpret it as a
25050: decimal number.</p>
25051:
25052: </dd>
25053:
25054: </dl><p>Consume as many characters as match the range of characters
25055: given above.</p>
25056:
25057: <p>If no characters match the range, then don't consume any
25058: characters (and unconsume the U+0023 NUMBER SIGN character and, if
25059: appropriate, the X character). This is a <a href="#parse-error">parse
25060: error</a>; nothing is returned.</p>
25061:
25062: <p>Otherwise, if the next character is a U+003B SEMICOLON, consume
25063: that too. If it isn't, there is a <a href="#parse-error">parse
25064: error</a>.</p>
25065:
25066: <p>If one or more characters match the range, then take them all
25067: and interpret the string of characters as a number (either
25068: hexadecimal or decimal as appropriate).</p>
25069:
25070: <p>If that number is one of the numbers in the first column of the
25071: following table, then this is a <a href="#parse-error">parse error</a>. Find the
25072: row with that number in the first column, and return a character
25073: token for the Unicode character given in the second column of that
25074: row.</p>
25075:
25076: <table id="table-charref-overrides"><thead><tr><th>Number </th><th colspan="2">Unicode character
25077: </th></tr></thead><tbody><tr><td>0x00 </td><td>U+FFFD </td><td>REPLACEMENT CHARACTER
25078: </td></tr><tr><td>0x0D </td><td>U+000D </td><td>CARRIAGE RETURN (CR)
25079: </td></tr><tr><td>0x80 </td><td>U+20AC </td><td>EURO SIGN (€)
25080: </td></tr><tr><td>0x81 </td><td>U+0081 </td><td><control>
25081: </td></tr><tr><td>0x82 </td><td>U+201A </td><td>SINGLE LOW-9 QUOTATION MARK (‚)
25082: </td></tr><tr><td>0x83 </td><td>U+0192 </td><td>LATIN SMALL LETTER F WITH HOOK (ƒ)
25083: </td></tr><tr><td>0x84 </td><td>U+201E </td><td>DOUBLE LOW-9 QUOTATION MARK („)
25084: </td></tr><tr><td>0x85 </td><td>U+2026 </td><td>HORIZONTAL ELLIPSIS (…)
25085: </td></tr><tr><td>0x86 </td><td>U+2020 </td><td>DAGGER (†)
25086: </td></tr><tr><td>0x87 </td><td>U+2021 </td><td>DOUBLE DAGGER (‡)
25087: </td></tr><tr><td>0x88 </td><td>U+02C6 </td><td>MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ)
25088: </td></tr><tr><td>0x89 </td><td>U+2030 </td><td>PER MILLE SIGN (‰)
25089: </td></tr><tr><td>0x8A </td><td>U+0160 </td><td>LATIN CAPITAL LETTER S WITH CARON (Š)
25090: </td></tr><tr><td>0x8B </td><td>U+2039 </td><td>SINGLE LEFT-POINTING ANGLE QUOTATION MARK (‹)
25091: </td></tr><tr><td>0x8C </td><td>U+0152 </td><td>LATIN CAPITAL LIGATURE OE (Œ)
25092: </td></tr><tr><td>0x8D </td><td>U+008D </td><td><control>
25093: </td></tr><tr><td>0x8E </td><td>U+017D </td><td>LATIN CAPITAL LETTER Z WITH CARON (Ž)
25094: </td></tr><tr><td>0x8F </td><td>U+008F </td><td><control>
25095: </td></tr><tr><td>0x90 </td><td>U+0090 </td><td><control>
25096: </td></tr><tr><td>0x91 </td><td>U+2018 </td><td>LEFT SINGLE QUOTATION MARK (‘)
25097: </td></tr><tr><td>0x92 </td><td>U+2019 </td><td>RIGHT SINGLE QUOTATION MARK (’)
25098: </td></tr><tr><td>0x93 </td><td>U+201C </td><td>LEFT DOUBLE QUOTATION MARK (“)
25099: </td></tr><tr><td>0x94 </td><td>U+201D </td><td>RIGHT DOUBLE QUOTATION MARK (”)
25100: </td></tr><tr><td>0x95 </td><td>U+2022 </td><td>BULLET (•)
25101: </td></tr><tr><td>0x96 </td><td>U+2013 </td><td>EN DASH (–)
25102: </td></tr><tr><td>0x97 </td><td>U+2014 </td><td>EM DASH (—)
25103: </td></tr><tr><td>0x98 </td><td>U+02DC </td><td>SMALL TILDE (˜)
25104: </td></tr><tr><td>0x99 </td><td>U+2122 </td><td>TRADE MARK SIGN (™)
25105: </td></tr><tr><td>0x9A </td><td>U+0161 </td><td>LATIN SMALL LETTER S WITH CARON (š)
25106: </td></tr><tr><td>0x9B </td><td>U+203A </td><td>SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (›)
25107: </td></tr><tr><td>0x9C </td><td>U+0153 </td><td>LATIN SMALL LIGATURE OE (œ)
25108: </td></tr><tr><td>0x9D </td><td>U+009D </td><td><control>
25109: </td></tr><tr><td>0x9E </td><td>U+017E </td><td>LATIN SMALL LETTER Z WITH CARON (ž)
25110: </td></tr><tr><td>0x9F </td><td>U+0178 </td><td>LATIN CAPITAL LETTER Y WITH DIAERESIS (Ÿ)
25111: </td></tr></tbody></table><p>Otherwise, if the number is in the range 0xD800 to 0xDFFF<!--
25112: surrogates --> or is greater than 0x10FFFF, then this is a
25113: <a href="#parse-error">parse error</a>. Return a U+FFFD REPLACEMENT
25114: CHARACTER.</p>
25115:
25116: <p>Otherwise, return a character token for the Unicode character
25117: whose code point is that number.
25118:
25119: <!-- this is the same as the equivalent list in the input stream
25120: section -->
25121: Additionally, if the number is in the range 0x0001 to 0x0008, <!--
25122: HT, LF allowed --> <!-- U+000B is in the next list --> <!-- FF, CR
25123: allowed --> 0x000E to 0x001F, <!-- ASCII allowed --> 0x007F <!--to
25124: 0x0084, (0x0085 NEL not allowed), 0x0086--> to 0x009F, 0xFDD0 to
25125: 0xFDEF, or is one of 0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF,
25126: 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE,
25127: 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF,
25128: 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE,
25129: 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF,
25130: 0x10FFFE, or 0x10FFFF, then this is a <a href="#parse-error">parse
25131: error</a>.</p>
25132:
25133: </dd>
25134:
25135:
25136: <dt>Anything else</dt>
25137:
25138: <dd>
25139:
25140: <p>Consume the maximum number of characters possible, with the
25141: consumed characters matching one of the identifiers in the first
25142: column of the <a href="#named-character-references">named character references</a> table (in a
25143: <a href="infrastructure.html#case-sensitive">case-sensitive</a> manner).</p>
25144:
25145: <p>If no match can be made, then no characters are consumed, and
25146: nothing is returned. In this case, if the characters after the
25147: U+0026 AMPERSAND character (&) consist of a sequence of one or
25148: more characters in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, <a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>, and <a href="common-microsyntaxes.html#uppercase-ascii-letters">uppercase ASCII letters</a>, followed by a ";" (U+003B) character, then this
25149: is a <a href="#parse-error">parse error</a>.</p>
25150:
25151: <p>If the character reference is being consumed <a href="#character-reference-in-attribute-value-state" title="character reference in attribute value state">as part of an
25152: attribute</a>, and the last character matched is not a ";" (U+003B) character, and the next character is either a "=" (U+003D) character or in the range <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, <a href="common-microsyntaxes.html#uppercase-ascii-letters">uppercase ASCII letters</a>, or <a href="common-microsyntaxes.html#lowercase-ascii-letters">lowercase ASCII letters</a>, then, for historical reasons, all the
25153: characters that were matched after the U+0026 AMPERSAND character
25154: (&) must be unconsumed, and nothing is returned.</p>
25155: <!-- "=" added because of http://www.w3.org/Bugs/Public/show_bug.cgi?id=9207#c5 -->
25156:
25157: <p>Otherwise, a character reference is parsed. If the last
25158: character matched is not a ";" (U+003B) character, there
25159: is a <a href="#parse-error">parse error</a>.</p>
25160:
25161: <p>Return one or two character tokens for the character(s)
25162: corresponding to the character reference name (as given by the
25163: second column of the <a href="#named-character-references">named character references</a>
25164: table).</p>
25165:
25166: <div class="example">
25167:
25168: <p>If the markup contains (not in an attribute) the string <code title="">I'm &notit; I tell you</code>, the character
25169: reference is parsed as "not", as in, <code title="">I'm ¬it;
25170: I tell you</code> (and this is a parse error). But if the markup
25171: was <code title="">I'm &notin; I tell you</code>, the
25172: character reference would be parsed as "notin;", resulting in
25173: <code title="">I'm ∉ I tell you</code> (and no parse
25174: error).</p>
25175:
25176: </div>
25177:
25178: </dd>
25179:
25180: </dl></div>
25181:
25182:
25183: <div class="impl">
25184:
25185: <!-- v2: One thing that this doesn't define is handling deeply
25186: nested documents. There are compatibility requirements around that:
25187: you can't throw away the elements altogether, consider Tux made only
25188: with opening <font> elements, one per character. Seems that the best
25189: thing to do is to close some formatting elements from the middle of
25190: the stack when you hit a limit, or something. -->
25191:
25192: <h4 id="tree-construction"><span class="secno">8.2.5 </span><dfn>Tree construction</dfn></h4>
25193:
25194: <p>The input to the tree construction stage is a sequence of tokens
25195: from the <a href="#tokenization">tokenization</a> stage. The tree construction
25196: stage is associated with a DOM <code><a href="dom.html#document">Document</a></code> object when a
25197: parser is created. The "output" of this stage consists of
25198: dynamically modifying or extending that document's DOM tree.</p>
25199:
25200: <p>This specification does not define when an interactive user agent
25201: has to render the <code><a href="dom.html#document">Document</a></code> so that it is available to
25202: the user, or when it has to begin accepting user input.</p>
25203:
25204: <hr><p>As each token is emitted from the tokenizer, the user agent must
25205: follow the appropriate steps from the following list:</p>
25206:
25207: <dl class="switch"><dt>If there is no <a href="#current-node">current node</a></dt>
25208: <dt>If the <a href="#current-node">current node</a> is an element in the <a href="namespaces.html#html-namespace-0">HTML namespace</a></dt>
25209: <dt>If the <a href="#current-node">current node</a> is a <a href="#mathml-text-integration-point">MathML text integration point</a> and the token is a start tag whose tag name is neither "mglyph" nor "malignmark"</dt>
25210: <dt>If the <a href="#current-node">current node</a> is a <a href="#mathml-text-integration-point">MathML text integration point</a> and the token is a character token</dt>
25211: <dt>If the <a href="#current-node">current node</a> is an <code title="">annotation-xml</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a> and the token is a start tag whose tag name is "svg"</dt>
25212: <dt>If the <a href="#current-node">current node</a> is an <a href="#html-integration-point">HTML integration point</a> and the token is a start tag</dt>
25213: <dt>If the <a href="#current-node">current node</a> is an <a href="#html-integration-point">HTML integration point</a> and the token is a character token</dt>
25214: <dt>If the token is an end-of-file token</dt>
25215:
25216: <dd>Process the token according to the rules given in the section
25217: corresponding to the current <a href="#insertion-mode">insertion mode</a> in HTML
25218: content.</dd>
25219:
25220: <dt>Otherwise</dt>
25221:
25222: <dd>Process the token according to the rules given in the section
25223: for parsing tokens <a href="#parsing-main-inforeign" title="insertion mode: in foreign
25224: content">in foreign content</a>.</dd>
25225:
25226: </dl><p>When the specification says that a user agent is to <dfn id="act-as-if-a-token-had-been-seen">act as
25227: if a token had been seen</dfn>, it means that the user agent is to
25228: follow the appropriate steps from the above list.</p>
25229:
25230: <p>The <a href="#current-node">current node</a> is a <dfn id="mathml-text-integration-point">MathML text
25231: integration point</dfn> if it is one of the following elements:</p>
25232:
25233: <ul class="brief"><li>An <code title="">mi</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
25234: <li>An <code title="">mo</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
25235: <li>An <code title="">mn</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
25236: <li>An <code title="">ms</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
25237: <li>An <code title="">mtext</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a></li>
25238: </ul><p>The <a href="#current-node">current node</a> is an <dfn id="html-integration-point">HTML
25239: integration point</dfn> if it is one of the following elements:</p>
25240:
25241: <ul class="brief"><li>An <code title="">annotation-xml</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a> whose start tag token had an attribute with the name "encoding" whose value was an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">text/html</code>"</li>
25242: <li>An <code title="">annotation-xml</code> element in the <a href="namespaces.html#mathml-namespace">MathML namespace</a> whose start tag token had an attribute with the name "encoding" whose value was an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">application/xhtml+xml</code>"</li>
25243: <li>A <code title="">foreignObject</code> element in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
25244: <li>A <code title="">desc</code> element in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
25245: <li>A <code title="">title</code> element in the <a href="namespaces.html#svg-namespace">SVG namespace</a></li>
25246: </ul><hr><p>When the steps below require the UA to <dfn id="insert-a-character">insert a
25247: character</dfn> into a node, if that node has a child immediately
25248: before where the character is to be inserted, and that child is a
25249: <code><a href="infrastructure.html#text-0">Text</a></code> node, then the character must be appended to that
25250: <code><a href="infrastructure.html#text-0">Text</a></code> node; otherwise, a new <code><a href="infrastructure.html#text-0">Text</a></code> node
25251: whose data is just that character must be inserted in the
25252: appropriate place.</p>
25253:
25254: <div class="example">
25255:
25256: <p>Here are some sample inputs to the parser and the corresponding
25257: number of <code><a href="infrastructure.html#text-0">Text</a></code> nodes that they result in, assuming a user agent
25258: that executes scripts.</p>
25259:
25260: <table><thead><tr><th>Input </th><th>Number of <code><a href="infrastructure.html#text-0">Text</a></code> nodes
25261: </th></tr></thead><tbody><tr><td><pre>A<script>
25262: var script = document.getElementsByTagName('script')[0];
25263: document.body.removeChild(script);
25264: </script>B</pre>
25265: </td><td>One <code><a href="infrastructure.html#text-0">Text</a></code> node in the document, containing "AB".
25266: </td></tr><tr><td><pre>A<script>
25267: var text = document.createTextNode('B');
25268: document.body.appendChild(text);
25269: </script>C</pre>
25270: </td><td>Three <code><a href="infrastructure.html#text-0">Text</a></code> nodes; "A" before the script, the script's contents, and "BC" after the script (the parser appends to the <code><a href="infrastructure.html#text-0">Text</a></code> node created by the script).
25271: </td></tr><tr><td><pre>A<script>
25272: var text = document.getElementsByTagName('script')[0].firstChild;
25273: text.data = 'B';
25274: document.body.appendChild(text);
25275: </script>C</pre>
25276: </td><td>Two adjacent <code><a href="infrastructure.html#text-0">Text</a></code> nodes in the document, containing "A" and "BC".
25277: </td></tr><tr><td><pre>A<table>B<tr>C</tr>D</table></pre>
25278: </td><td>One <code><a href="infrastructure.html#text-0">Text</a></code> node before the table, containing "ABCD". (This is caused by <a href="#foster-parent" title="foster parent">foster parenting</a>.)
25279: </td></tr><tr><td><pre>A<table><tr> B</tr> C</table></pre>
25280: </td><td>One <code><a href="infrastructure.html#text-0">Text</a></code> node before the table, containing "A B C" (A-space-B-space-C). (This is caused by <a href="#foster-parent" title="foster parent">foster parenting</a>.)
25281: </td></tr><tr><td><pre>A<table><tr> B</tr> </em>C</table></pre>
25282: </td><td>One <code><a href="infrastructure.html#text-0">Text</a></code> node before the table, containing "A BC" (A-space-B-C), and one <code><a href="infrastructure.html#text-0">Text</a></code> node inside the table (as a child of a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>) with a single space character. (Space characters separated from non-space characters by non-character tokens are not affected by <a href="#foster-parent" title="foster parent">foster parenting</a>, even if those other tokens then get ignored.)
25283: </td></tr></tbody></table></div>
25284:
25285: <p id="mutation-during-parsing">DOM mutation events and mutation
25286: observers must not fire for changes caused by the UA parsing the
25287: document. (Conceptually, the parser is not mutating the DOM, it is
25288: constructing it.) This includes the parsing of any content inserted
25289: using <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> and
25290: <code title="dom-document-writeln"><a href="dynamic-markup-insertion.html#dom-document-writeln">document.writeln()</a></code> calls.
25291: <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
25292:
25293: <p class="note">Not all of the tag names mentioned below are
25294: conformant tag names in this specification; many are included to
25295: handle legacy content. They still form part of the algorithm that
25296: implementations are required to implement to claim conformance.</p>
25297:
25298: <p class="note">The algorithm described below places no limit on the
25299: depth of the DOM tree generated, or on the length of tag names,
25300: attribute names, attribute values, <code><a href="infrastructure.html#text-0">Text</a></code> nodes, etc. While
25301: implementors are encouraged to avoid arbitrary limits, it is
25302: recognized that <a href="infrastructure.html#hardwareLimitations">practical
25303: concerns</a> will likely force user agents to impose nesting depth
25304: constraints.</p>
25305:
25306:
25307: <h5 id="creating-and-inserting-elements"><span class="secno">8.2.5.1 </span>Creating and inserting elements</h5>
25308:
25309: <p>When the steps below require the UA to <dfn id="create-an-element-for-the-token" title="create an
25310: element for the token">create an element for a token</dfn> in a
25311: particular namespace, the UA must create a node implementing the
25312: interface appropriate for the element type corresponding to the tag
25313: name of the token in the given namespace (as given in the
25314: specification that defines that element, e.g. for an <code><a href="the-a-element.html#the-a-element">a</a></code>
25315: element in the <a href="namespaces.html#html-namespace-0">HTML namespace</a>, this specification
25316: defines it to be the <code><a href="the-a-element.html#htmlanchorelement">HTMLAnchorElement</a></code> interface), with
25317: the tag name being the name of that element, with the node being in
25318: the given namespace, and with the attributes on the node being those
25319: given in the given token.</p>
25320:
25321: <p>The interface appropriate for an element in the <a href="namespaces.html#html-namespace-0">HTML
25322: namespace</a> that is not defined in this specification (or
25323: <a href="infrastructure.html#other-applicable-specifications">other applicable specifications</a>) is
25324: <code><a href="elements.html#htmlunknownelement">HTMLUnknownElement</a></code>. Elements in other namespaces whose
25325: interface is not defined by that namespace's specification must use
25326: the interface <code><a href="infrastructure.html#element">Element</a></code>.</p>
25327:
25328: <p>When a <a href="forms.html#category-reset" title="category-reset">resettable element</a> is
25329: created in this manner, its <a href="#concept-form-reset-control" title="concept-form-reset-control">reset algorithm</a> must be
25330: invoked once the attributes are set. (This initializes the element's
25331: <a href="attributes-common-to-form-controls.html#concept-fe-value" title="concept-fe-value">value</a> and <a href="attributes-common-to-form-controls.html#concept-fe-checked" title="concept-fe-checked">checkedness</a> based on the element's
25332: attributes.)</p>
25333:
25334: <hr><p>When the steps below require the UA to <dfn id="insert-an-html-element">insert an HTML
25335: element</dfn> for a token, the UA must first <a href="#create-an-element-for-the-token">create an element
25336: for the token</a> in the <a href="namespaces.html#html-namespace-0">HTML namespace</a>, and then
25337: append this node to the <a href="#current-node">current node</a>, and push it onto
25338: the <a href="#stack-of-open-elements">stack of open elements</a> so that it is the new
25339: <a href="#current-node">current node</a>.</p>
25340:
25341: <p>The steps below may also require that the UA insert an HTML
25342: element in a particular place, in which case the UA must follow the
25343: same steps except that it must insert or append the new node in the
25344: location specified instead of appending it to the <a href="#current-node">current
25345: node</a>. (This happens in particular during the parsing of
25346: tables with invalid content.)</p>
25347:
25348: <p>If an element created by the <a href="#insert-an-html-element">insert an HTML element</a>
25349: algorithm is a <a href="forms.html#form-associated-element">form-associated element</a>, and the
25350: <a href="#form-element-pointer"><code title="">form</code> element pointer</a> is not null,
25351: and the newly created element doesn't have a <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code> attribute, the user agent must
25352: <a href="association-of-controls-and-forms.html#concept-form-association" title="concept-form-association">associate</a> the newly
25353: created element with the <code><a href="the-form-element.html#the-form-element">form</a></code> element pointed to by the
25354: <a href="#form-element-pointer"><code title="">form</code> element pointer</a> when the
25355: element is inserted, instead of running the <a href="association-of-controls-and-forms.html#reset-the-form-owner">reset the form
25356: owner</a> algorithm.</p>
25357:
25358: <hr><p>When the steps below require the UA to <dfn id="insert-a-foreign-element">insert a foreign
25359: element</dfn> for a token, the UA must first <a href="#create-an-element-for-the-token">create an element
25360: for the token</a> in the given namespace, and then append this
25361: node to the <a href="#current-node">current node</a>, and push it onto the
25362: <a href="#stack-of-open-elements">stack of open elements</a> so that it is the new
25363: <a href="#current-node">current node</a>. If the newly created element has an <code title="">xmlns</code> attribute in the <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a>
25364: whose value is not exactly the same as the element's namespace, that
25365: is a <a href="#parse-error">parse error</a>. Similarly, if the newly created
25366: element has an <code title="">xmlns:xlink</code> attribute in the
25367: <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a> whose value is not the <a href="namespaces.html#xlink-namespace">XLink
25368: Namespace</a>, that is a <a href="#parse-error">parse error</a>.</p>
25369:
25370: <p>When the steps below require the user agent to <dfn id="adjust-mathml-attributes">adjust MathML
25371: attributes</dfn> for a token, then, if the token has an attribute
25372: named <code title="">definitionurl</code>, change its name to <code title="">definitionURL</code> (note the case difference).</p>
25373:
25374: <p>When the steps below require the user agent to <dfn id="adjust-svg-attributes">adjust SVG
25375: attributes</dfn> for a token, then, for each attribute on the token
25376: whose attribute name is one of the ones in the first column of the
25377: following table, change the attribute's name to the name given in
25378: the corresponding cell in the second column. (This fixes the case of
25379: SVG attributes that are not all lowercase.)</p>
25380:
25381: <table><thead><tr><th> Attribute name on token </th><th> Attribute name on element
25382: </th></tr></thead><tbody><tr><td> <code title="">attributename</code> </td><td> <code title="">attributeName</code>
25383: </td></tr><tr><td> <code title="">attributetype</code> </td><td> <code title="">attributeType</code>
25384: </td></tr><tr><td> <code title="">basefrequency</code> </td><td> <code title="">baseFrequency</code>
25385: </td></tr><tr><td> <code title="">baseprofile</code> </td><td> <code title="">baseProfile</code>
25386: </td></tr><tr><td> <code title="">calcmode</code> </td><td> <code title="">calcMode</code>
25387: </td></tr><tr><td> <code title="">clippathunits</code> </td><td> <code title="">clipPathUnits</code>
25388: </td></tr><tr><td> <code title="">contentscripttype</code> </td><td> <code title="">contentScriptType</code>
25389: </td></tr><tr><td> <code title="">contentstyletype</code> </td><td> <code title="">contentStyleType</code>
25390: </td></tr><tr><td> <code title="">diffuseconstant</code> </td><td> <code title="">diffuseConstant</code>
25391: </td></tr><tr><td> <code title="">edgemode</code> </td><td> <code title="">edgeMode</code>
25392: </td></tr><tr><td> <code title="">externalresourcesrequired</code> </td><td> <code title="">externalResourcesRequired</code>
25393: </td></tr><tr><td> <code title="">filterres</code> </td><td> <code title="">filterRes</code>
25394: </td></tr><tr><td> <code title="">filterunits</code> </td><td> <code title="">filterUnits</code>
25395: </td></tr><tr><td> <code title="">glyphref</code> </td><td> <code title="">glyphRef</code>
25396: </td></tr><tr><td> <code title="">gradienttransform</code> </td><td> <code title="">gradientTransform</code>
25397: </td></tr><tr><td> <code title="">gradientunits</code> </td><td> <code title="">gradientUnits</code>
25398: </td></tr><tr><td> <code title="">kernelmatrix</code> </td><td> <code title="">kernelMatrix</code>
25399: </td></tr><tr><td> <code title="">kernelunitlength</code> </td><td> <code title="">kernelUnitLength</code>
25400: </td></tr><tr><td> <code title="">keypoints</code> </td><td> <code title="">keyPoints</code>
25401: </td></tr><tr><td> <code title="">keysplines</code> </td><td> <code title="">keySplines</code>
25402: </td></tr><tr><td> <code title="">keytimes</code> </td><td> <code title="">keyTimes</code>
25403: </td></tr><tr><td> <code title="">lengthadjust</code> </td><td> <code title="">lengthAdjust</code>
25404: </td></tr><tr><td> <code title="">limitingconeangle</code> </td><td> <code title="">limitingConeAngle</code>
25405: </td></tr><tr><td> <code title="">markerheight</code> </td><td> <code title="">markerHeight</code>
25406: </td></tr><tr><td> <code title="">markerunits</code> </td><td> <code title="">markerUnits</code>
25407: </td></tr><tr><td> <code title="">markerwidth</code> </td><td> <code title="">markerWidth</code>
25408: </td></tr><tr><td> <code title="">maskcontentunits</code> </td><td> <code title="">maskContentUnits</code>
25409: </td></tr><tr><td> <code title="">maskunits</code> </td><td> <code title="">maskUnits</code>
25410: </td></tr><tr><td> <code title="">numoctaves</code> </td><td> <code title="">numOctaves</code>
25411: </td></tr><tr><td> <code title="">pathlength</code> </td><td> <code title="">pathLength</code>
25412: </td></tr><tr><td> <code title="">patterncontentunits</code> </td><td> <code title="">patternContentUnits</code>
25413: </td></tr><tr><td> <code title="">patterntransform</code> </td><td> <code title="">patternTransform</code>
25414: </td></tr><tr><td> <code title="">patternunits</code> </td><td> <code title="">patternUnits</code>
25415: </td></tr><tr><td> <code title="">pointsatx</code> </td><td> <code title="">pointsAtX</code>
25416: </td></tr><tr><td> <code title="">pointsaty</code> </td><td> <code title="">pointsAtY</code>
25417: </td></tr><tr><td> <code title="">pointsatz</code> </td><td> <code title="">pointsAtZ</code>
25418: </td></tr><tr><td> <code title="">preservealpha</code> </td><td> <code title="">preserveAlpha</code>
25419: </td></tr><tr><td> <code title="">preserveaspectratio</code> </td><td> <code title="">preserveAspectRatio</code>
25420: </td></tr><tr><td> <code title="">primitiveunits</code> </td><td> <code title="">primitiveUnits</code>
25421: </td></tr><tr><td> <code title="">refx</code> </td><td> <code title="">refX</code>
25422: </td></tr><tr><td> <code title="">refy</code> </td><td> <code title="">refY</code>
25423: </td></tr><tr><td> <code title="">repeatcount</code> </td><td> <code title="">repeatCount</code>
25424: </td></tr><tr><td> <code title="">repeatdur</code> </td><td> <code title="">repeatDur</code>
25425: </td></tr><tr><td> <code title="">requiredextensions</code> </td><td> <code title="">requiredExtensions</code>
25426: </td></tr><tr><td> <code title="">requiredfeatures</code> </td><td> <code title="">requiredFeatures</code>
25427: </td></tr><tr><td> <code title="">specularconstant</code> </td><td> <code title="">specularConstant</code>
25428: </td></tr><tr><td> <code title="">specularexponent</code> </td><td> <code title="">specularExponent</code>
25429: </td></tr><tr><td> <code title="">spreadmethod</code> </td><td> <code title="">spreadMethod</code>
25430: </td></tr><tr><td> <code title="">startoffset</code> </td><td> <code title="">startOffset</code>
25431: </td></tr><tr><td> <code title="">stddeviation</code> </td><td> <code title="">stdDeviation</code>
25432: </td></tr><tr><td> <code title="">stitchtiles</code> </td><td> <code title="">stitchTiles</code>
25433: </td></tr><tr><td> <code title="">surfacescale</code> </td><td> <code title="">surfaceScale</code>
25434: </td></tr><tr><td> <code title="">systemlanguage</code> </td><td> <code title="">systemLanguage</code>
25435: </td></tr><tr><td> <code title="">tablevalues</code> </td><td> <code title="">tableValues</code>
25436: </td></tr><tr><td> <code title="">targetx</code> </td><td> <code title="">targetX</code>
25437: </td></tr><tr><td> <code title="">targety</code> </td><td> <code title="">targetY</code>
25438: </td></tr><tr><td> <code title="">textlength</code> </td><td> <code title="">textLength</code>
25439: </td></tr><tr><td> <code title="">viewbox</code> </td><td> <code title="">viewBox</code>
25440: </td></tr><tr><td> <code title="">viewtarget</code> </td><td> <code title="">viewTarget</code>
25441: </td></tr><tr><td> <code title="">xchannelselector</code> </td><td> <code title="">xChannelSelector</code>
25442: </td></tr><tr><td> <code title="">ychannelselector</code> </td><td> <code title="">yChannelSelector</code>
25443: </td></tr><tr><td> <code title="">zoomandpan</code> </td><td> <code title="">zoomAndPan</code>
25444: </td></tr></tbody></table><p>When the steps below require the user agent to <dfn id="adjust-foreign-attributes">adjust
25445: foreign attributes</dfn> for a token, then, if any of the attributes
25446: on the token match the strings given in the first column of the
25447: following table, let the attribute be a namespaced attribute, with
25448: the prefix being the string given in the corresponding cell in the
25449: second column, the local name being the string given in the
25450: corresponding cell in the third column, and the namespace being the
25451: namespace given in the corresponding cell in the fourth
25452: column. (This fixes the use of namespaced attributes, in particular
25453: <a href="global-attributes.html#attr-xml-lang" title="attr-xml-lang"><code title="">lang</code> attributes in
25454: the <span>XML namespace</span></a>.)</p>
25455:
25456: <table><thead><tr><th> Attribute name </th><th> Prefix </th><th> Local name </th><th> Namespace
25457: </th></tr></thead><tbody><tr><td> <code title="">xlink:actuate</code> </td><td> <code title="">xlink</code> </td><td> <code title="">actuate</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25458: </td></tr><tr><td> <code title="">xlink:arcrole</code> </td><td> <code title="">xlink</code> </td><td> <code title="">arcrole</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25459: </td></tr><tr><td> <code title="">xlink:href</code> </td><td> <code title="">xlink</code> </td><td> <code title="">href</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25460: </td></tr><tr><td> <code title="">xlink:role</code> </td><td> <code title="">xlink</code> </td><td> <code title="">role</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25461: </td></tr><tr><td> <code title="">xlink:show</code> </td><td> <code title="">xlink</code> </td><td> <code title="">show</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25462: </td></tr><tr><td> <code title="">xlink:title</code> </td><td> <code title="">xlink</code> </td><td> <code title="">title</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25463: </td></tr><tr><td> <code title="">xlink:type</code> </td><td> <code title="">xlink</code> </td><td> <code title="">type</code> </td><td> <a href="namespaces.html#xlink-namespace">XLink namespace</a>
25464: </td></tr><tr><td> <code title="">xml:base</code> </td><td> <code title="">xml</code> </td><td> <code title="">base</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a> <!-- attr-xml-base -->
25465: </td></tr><tr><td> <code title="">xml:lang</code> </td><td> <code title="">xml</code> </td><td> <code title="">lang</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a>
25466: </td></tr><tr><td> <code title="">xml:space</code> </td><td> <code title="">xml</code> </td><td> <code title="">space</code> </td><td> <a href="namespaces.html#xml-namespace">XML namespace</a>
25467: </td></tr><tr><td> <code title="">xmlns</code> </td><td> (none) </td><td> <code title="">xmlns</code> </td><td> <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a>
25468: </td></tr><tr><td> <code title="">xmlns:xlink</code> </td><td> <code title="">xmlns</code> </td><td> <code title="">xlink</code> </td><td> <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a>
25469: </td></tr></tbody></table><hr><p>The <dfn id="generic-raw-text-element-parsing-algorithm">generic raw text element parsing algorithm</dfn> and the
25470: <dfn id="generic-rcdata-element-parsing-algorithm">generic RCDATA element parsing algorithm</dfn> consist of the
25471: following steps. These algorithms are always invoked in response to
25472: a start tag token.</p>
25473:
25474: <ol><li><p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p></li>
25475:
25476: <li><p>If the algorithm that was invoked is the <a href="#generic-raw-text-element-parsing-algorithm">generic raw
25477: text element parsing algorithm</a>, switch the tokenizer to the
25478: <a href="#rawtext-state">RAWTEXT state</a>; otherwise the algorithm invoked
25479: was the <a href="#generic-rcdata-element-parsing-algorithm">generic RCDATA element parsing algorithm</a>,
25480: switch the tokenizer to the <a href="#rcdata-state">RCDATA state</a>.</p></li>
25481:
25482: <li><p>Let the <a href="#original-insertion-mode">original insertion mode</a> be the current
25483: <a href="#insertion-mode">insertion mode</a>.</p>
25484:
25485: </li><li><p>Then, switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incdata" title="insertion mode: text">text</a>".</p></li>
25486:
25487: </ol><h5 id="closing-elements-that-have-implied-end-tags"><span class="secno">8.2.5.2 </span>Closing elements that have implied end tags</h5>
25488:
25489: <p>When the steps below require the UA to <dfn id="generate-implied-end-tags">generate implied end
25490: tags</dfn>, then, while the <a href="#current-node">current node</a> is a
25491: <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element, a <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element, an
25492: <code><a href="the-li-element.html#the-li-element">li</a></code> element, an <code><a href="the-option-element.html#the-option-element">option</a></code> element, an
25493: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, a <code><a href="the-p-element.html#the-p-element">p</a></code> element, an
25494: <code><a href="the-rp-element.html#the-rp-element">rp</a></code> element, or an <code><a href="the-rt-element.html#the-rt-element">rt</a></code> element, the UA must
25495: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
25496: elements</a>.</p>
25497:
25498: <p>If a step requires the UA to generate implied end tags but lists
25499: an element to exclude from the process, then the UA must perform the
25500: above steps as if that element was not in the above list.</p>
25501:
25502:
25503: <h5 id="foster-parenting"><span class="secno">8.2.5.3 </span>Foster parenting</h5>
25504:
25505: <p>Foster parenting happens when content is misnested in tables.</p>
25506:
25507: <p>When a node <var title="">node</var> is to be <dfn id="foster-parent" title="foster
25508: parent">foster parented</dfn>, the node <var title="">node</var>
25509: must be inserted into the <i><a href="#foster-parent-element">foster parent element</a></i>.</p>
25510:
25511: <p>The <dfn id="foster-parent-element">foster parent element</dfn> is the parent element of the
25512: last <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of open
25513: elements</a>, if there is a <code><a href="the-table-element.html#the-table-element">table</a></code> element and it has
25514: such a parent element.</p>
25515:
25516: <p class="note">It might have no parent or some other kind parent if
25517: a script manipulated the DOM after the element was inserted by the
25518: parser.</p>
25519:
25520: <p>If there is no <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of
25521: open elements</a> (<a href="#fragment-case">fragment case</a>), then the
25522: <i><a href="#foster-parent-element">foster parent element</a></i> is the first element in the <a href="#stack-of-open-elements">stack
25523: of open elements</a> (the <code><a href="the-html-element.html#the-html-element">html</a></code> element). Otherwise,
25524: if there is a <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of open
25525: elements</a>, but the last <code><a href="the-table-element.html#the-table-element">table</a></code> element in the
25526: <a href="#stack-of-open-elements">stack of open elements</a> has no parent, or its parent
25527: node is not an element, then the <i><a href="#foster-parent-element">foster parent element</a></i> is the
25528: element before the last <code><a href="the-table-element.html#the-table-element">table</a></code> element in the
25529: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
25530:
25531: <p>If the <i><a href="#foster-parent-element">foster parent element</a></i> is the parent element of the
25532: last <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of open
25533: elements</a>, then <var title="">node</var> must be inserted into
25534: the <i><a href="#foster-parent-element">foster parent element</a></i>, immediately <em>before</em> the
25535: last <code><a href="the-table-element.html#the-table-element">table</a></code> element in the <a href="#stack-of-open-elements">stack of open
25536: elements</a>; otherwise, <var title="">node</var> must be
25537: <em>appended</em> to the <i><a href="#foster-parent-element">foster parent element</a></i>.</p>
25538:
25539:
25540:
25541: <h5 id="parsing-main-inhtml"><span class="secno">8.2.5.4 </span>The rules for parsing tokens in HTML content</h5>
25542:
25543:
25544: <h6 id="the-initial-insertion-mode"><span class="secno">8.2.5.4.1 </span>The "<dfn title="insertion mode: initial">initial</dfn>" insertion mode</h6>
25545:
25546: <p>When the user agent is to apply the rules for the "<a href="#the-initial-insertion-mode" title="insertion mode: initial">initial</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
25547:
25548: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
25549: TABULATION, "LF" (U+000A), "FF" (U+000C),
25550: "CR" (U+000D), or U+0020 SPACE</dt>
25551: <dd>
25552: <p>Ignore the token.</p>
25553: </dd>
25554:
25555: <dt>A comment token</dt>
25556: <dd>
25557: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <code><a href="dom.html#document">Document</a></code>
25558: object with the <code title="">data</code> attribute set to the
25559: data given in the comment token.</p>
25560: </dd>
25561:
25562: <dt>A DOCTYPE token</dt>
25563: <dd>
25564:
25565: <p>If the DOCTYPE token's name is not a
25566: <a href="infrastructure.html#case-sensitive">case-sensitive</a> match for the string "<code title="">html</code>", or the token's public identifier is not
25567: missing, or the token's system identifier is neither missing nor a
25568: <a href="infrastructure.html#case-sensitive">case-sensitive</a> match for the string
25569: "<code><a href="urls.html#about:legacy-compat">about:legacy-compat</a></code>", and none of the sets of
25570: conditions in the following list are matched, then there is a
25571: <a href="#parse-error">parse error</a>.</p>
25572:
25573: <ul><!-- only things that trigger no-quirks mode and were valid in
25574: some other spec are allowed in this list --><li>The DOCTYPE token's name is a <a href="infrastructure.html#case-sensitive">case-sensitive</a>
25575: match for the string "<code title="">html</code>", the token's
25576: public identifier is the <a href="infrastructure.html#case-sensitive">case-sensitive</a> string
25577: "<code title="">-//W3C//DTD HTML 4.0//EN</code>", and
25578: the token's system identifier is either missing or the
25579: <a href="infrastructure.html#case-sensitive">case-sensitive</a> string "<code title="">http://www.w3.org/TR/REC-html40/strict.dtd</code>".</li>
25580:
25581: <li>The DOCTYPE token's name is a <a href="infrastructure.html#case-sensitive">case-sensitive</a>
25582: match for the string "<code title="">html</code>", the token's
25583: public identifier is the <a href="infrastructure.html#case-sensitive">case-sensitive</a> string
25584: "<code title="">-//W3C//DTD HTML 4.01//EN</code>", and
25585: the token's system identifier is either missing or the
25586: <a href="infrastructure.html#case-sensitive">case-sensitive</a> string "<code title="">http://www.w3.org/TR/html4/strict.dtd</code>".</li>
25587:
25588: <li>The DOCTYPE token's name is a <a href="infrastructure.html#case-sensitive">case-sensitive</a>
25589: match for the string "<code title="">html</code>", the token's
25590: public identifier is the <a href="infrastructure.html#case-sensitive">case-sensitive</a> string
25591: "<code title="">-//W3C//DTD XHTML 1.0 Strict//EN</code>",
25592: and the token's system identifier is the
25593: <a href="infrastructure.html#case-sensitive">case-sensitive</a> string "<code title="">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</code>".</li>
25594:
25595: <li>The DOCTYPE token's name is a <a href="infrastructure.html#case-sensitive">case-sensitive</a>
25596: match for the string "<code title="">html</code>", the token's
25597: public identifier is the <a href="infrastructure.html#case-sensitive">case-sensitive</a> string
25598: "<code title="">-//W3C//DTD XHTML 1.1//EN</code>", and
25599: the token's system identifier is the <a href="infrastructure.html#case-sensitive">case-sensitive</a>
25600: string "<code title="">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd</code>".</li>
25601:
25602: </ul><p>Conformance checkers may, based on the values (including
25603: presence or lack thereof) of the DOCTYPE token's name, public
25604: identifier, or system identifier, switch to a conformance checking
25605: mode for another language (e.g. based on the DOCTYPE token a
25606: conformance checker could recognize that the document is an
25607: HTML4-era document, and defer to an HTML4 conformance
25608: checker.)</p>
25609:
25610: <p>Append a <code><a href="infrastructure.html#documenttype">DocumentType</a></code> node to the
25611: <code><a href="dom.html#document">Document</a></code> node, with the <code title="">name</code>
25612: attribute set to the name given in the DOCTYPE token, or the empty
25613: string if the name was missing; the <code title="">publicId</code>
25614: attribute set to the public identifier given in the DOCTYPE token,
25615: or the empty string if the public identifier was missing; the
25616: <code title="">systemId</code> attribute set to the system
25617: identifier given in the DOCTYPE token, or the empty string if the
25618: system identifier was missing; and the other attributes specific
25619: to <code><a href="infrastructure.html#documenttype">DocumentType</a></code> objects set to null and empty lists
25620: as appropriate. Associate the <code><a href="infrastructure.html#documenttype">DocumentType</a></code> node with
25621: the <code><a href="dom.html#document">Document</a></code> object so that it is returned as the
25622: value of the <code title="">doctype</code> attribute of the
25623: <code><a href="dom.html#document">Document</a></code> object.</p>
25624:
25625: <p id="quirks-mode-doctypes">Then, if the DOCTYPE token matches
25626: one of the conditions in the following list, then set the
25627: <code><a href="dom.html#document">Document</a></code> to <a href="infrastructure.html#quirks-mode">quirks mode</a>:</p>
25628:
25629: <ul class="brief"><li> The <i>force-quirks flag</i> is set to <i>on</i>. </li>
25630: <li> The name is set to anything other than "<code title="">html</code>" (compared <a href="infrastructure.html#case-sensitive" title="case-sensitive">case-sensitively</a>). </li>
25631: <li> The public identifier starts with: "<code title="">+//Silmaril//dtd html Pro v0r11 19970101//<!--EN--></code>" </li>
25632: <li> The public identifier starts with: "<code title="">-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//<!--EN--></code>" </li>
25633: <li> The public identifier starts with: "<code title="">-//AS//DTD HTML 3.0 asWedit + extensions//<!--EN--></code>" </li>
25634: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0 Level 1//<!--EN--></code>" </li>
25635: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0 Level 2//<!--EN--></code>" </li>
25636: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0 Strict Level 1//<!--EN--></code>" </li>
25637: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0 Strict Level 2//<!--EN--></code>" </li>
25638: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0 Strict//<!--EN--></code>" </li>
25639: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.0//<!--EN--></code>" </li>
25640: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 2.1E//<!--EN--></code>" </li>
25641: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 3.0//<!--EN--></code>" </li>
25642: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML 3.0//EN//</code>" </li>-->
25643: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 3.2 Final//<!--EN--></code>" </li>
25644: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 3.2//<!--EN--></code>" </li>
25645: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML 3//<!--EN--></code>" </li>
25646: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Level 0//<!--EN--></code>" </li>
25647: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Level 0//EN//2.0</code>" </li>-->
25648: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Level 1//<!--EN--></code>" </li>
25649: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Level 1//EN//2.0</code>" </li>-->
25650: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Level 2//<!--EN--></code>" </li>
25651: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Level 2//EN//2.0</code>" </li>-->
25652: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Level 3//<!--EN--></code>" </li>
25653: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Level 3//EN//3.0</code>" </li>-->
25654: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Strict Level 0//<!--EN--></code>" </li>
25655: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict Level 0//EN//2.0</code>" </li>-->
25656: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Strict Level 1//<!--EN--></code>" </li>
25657: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict Level 1//EN//2.0</code>" </li>-->
25658: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Strict Level 2//<!--EN--></code>" </li>
25659: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict Level 2//EN//2.0</code>" </li>-->
25660: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Strict Level 3//<!--EN--></code>" </li>
25661: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict Level 3//EN//3.0</code>" </li>-->
25662: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML Strict//<!--EN--></code>" </li>
25663: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict//EN//2.0</code>" </li>-->
25664: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML Strict//EN//3.0</code>" </li>-->
25665: <li> The public identifier starts with: "<code title="">-//IETF//DTD HTML//<!--EN--></code>" </li>
25666: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML//EN//2.0</code>" </li>-->
25667: <!--<li> The public identifier is set to: "<code title="">-//IETF//DTD HTML//EN//3.0</code>" </li>-->
25668: <li> The public identifier starts with: "<code title="">-//Metrius//DTD Metrius Presentational//<!--EN--></code>" </li>
25669: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//<!--EN--></code>" </li>
25670: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 2.0 HTML//<!--EN--></code>" </li>
25671: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 2.0 Tables//<!--EN--></code>" </li>
25672: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//<!--EN--></code>" </li>
25673: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 3.0 HTML//<!--EN--></code>" </li>
25674: <li> The public identifier starts with: "<code title="">-//Microsoft//DTD Internet Explorer 3.0 Tables//<!--EN--></code>" </li>
25675: <li> The public identifier starts with: "<code title="">-//Netscape Comm. Corp.//DTD HTML//<!--EN--></code>" </li>
25676: <li> The public identifier starts with: "<code title="">-//Netscape Comm. Corp.//DTD Strict HTML//<!--EN--></code>" </li>
25677: <li> The public identifier starts with: "<code title="">-//O'Reilly and Associates//DTD HTML 2.0//<!--EN--></code>" </li>
25678: <li> The public identifier starts with: "<code title="">-//O'Reilly and Associates//DTD HTML Extended 1.0//<!--EN--></code>" </li>
25679: <li> The public identifier starts with: "<code title="">-//O'Reilly and Associates//DTD HTML Extended Relaxed 1.0//<!--EN--></code>" </li>
25680: <li> The public identifier starts with: "<code title="">-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//<!--EN--></code>" </li>
25681: <li> The public identifier starts with: "<code title="">-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//<!--EN--></code>" </li>
25682: <li> The public identifier starts with: "<code title="">-//Spyglass//DTD HTML 2.0 Extended//<!--EN--></code>" </li>
25683: <li> The public identifier starts with: "<code title="">-//SQ//DTD HTML 2.0 HoTMetaL + extensions//<!--EN--></code>" </li>
25684: <li> The public identifier starts with: "<code title="">-//Sun Microsystems Corp.//DTD HotJava HTML//<!--EN--></code>" </li>
25685: <li> The public identifier starts with: "<code title="">-//Sun Microsystems Corp.//DTD HotJava Strict HTML//<!--EN--></code>" </li>
25686: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 3 1995-03-24//<!--EN--></code>" </li>
25687: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 3.2 Draft//<!--EN--></code>" </li>
25688: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 3.2 Final//<!--EN--></code>" </li>
25689: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 3.2//<!--EN--></code>" </li>
25690: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 3.2S Draft//<!--EN--></code>" </li>
25691: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 4.0 Frameset//<!--EN--></code>" </li>
25692: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML 4.0 Transitional//<!--EN--></code>" </li>
25693: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML Experimental 19960712//<!--EN--></code>" </li>
25694: <li> The public identifier starts with: "<code title="">-//W3C//DTD HTML Experimental 970421//<!--EN--></code>" </li>
25695: <li> The public identifier starts with: "<code title="">-//W3C//DTD W3 HTML//<!--EN--></code>" </li>
25696: <li> The public identifier starts with: "<code title="">-//W3O//DTD W3 HTML 3.0//<!--EN--></code>" </li>
25697: <!--<li> The public identifier is set to: "<code title="">-//W3O//DTD W3 HTML 3.0//EN//</code>" </li>-->
25698: <li> The public identifier is set to: "<code title="">-//W3O//DTD W3 HTML Strict 3.0//EN//</code>" </li>
25699: <li> The public identifier starts with: "<code title="">-//WebTechs//DTD Mozilla HTML 2.0//<!--EN--></code>" </li>
25700: <li> The public identifier starts with: "<code title="">-//WebTechs//DTD Mozilla HTML//<!--EN--></code>" </li>
25701: <li> The public identifier is set to: "<code title="">-/W3C/DTD HTML 4.0 Transitional/EN</code>" </li>
25702: <li> The public identifier is set to: "<code title="">HTML</code>" </li>
25703: <li> The system identifier is set to: "<code title="">http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd</code>" </li>
25704: <li> The system identifier is missing and the public identifier starts with: "<code title="">-//W3C//DTD HTML 4.01 Frameset//<!--EN--></code>" </li>
25705: <li> The system identifier is missing and the public identifier starts with: "<code title="">-//W3C//DTD HTML 4.01 Transitional//<!--EN--></code>" </li>
25706: </ul><p>Otherwise, if the DOCTYPE token matches one of the conditions
25707: in the following list, then set the <code><a href="dom.html#document">Document</a></code> to
25708: <a href="infrastructure.html#limited-quirks-mode">limited-quirks mode</a>:</p>
25709:
25710: <ul class="brief"><li> The public identifier starts with: "<code title="">-//W3C//DTD XHTML 1.0 Frameset//<!--EN--></code>" </li>
25711: <li> The public identifier starts with: "<code title="">-//W3C//DTD XHTML 1.0 Transitional//<!--EN--></code>" </li>
25712: <li> The system identifier is not missing and the public identifier starts with: "<code title="">-//W3C//DTD HTML 4.01 Frameset//<!--EN--></code>" </li>
25713: <li> The system identifier is not missing and the public identifier starts with: "<code title="">-//W3C//DTD HTML 4.01 Transitional//<!--EN--></code>" </li>
25714: </ul><p>The system identifier and public identifier strings must be
25715: compared to the values given in the lists above in an <a href="infrastructure.html#ascii-case-insensitive">ASCII
25716: case-insensitive</a> manner. A system identifier whose value is
25717: the empty string is not considered missing for the purposes of the
25718: conditions above.</p>
25719:
25720: <p>Then, switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-before-html-insertion-mode" title="insertion mode: before html">before html</a>".</p>
25721:
25722: </dd>
25723:
25724: <dt>Anything else</dt>
25725: <dd>
25726:
25727: <p>If the document is <em>not</em> <a href="the-iframe-element.html#an-iframe-srcdoc-document">an <code>iframe</code>
25728: <code title="attr-iframe-srcdoc">srcdoc</code> document</a>,
25729: then this is a <a href="#parse-error">parse error</a>; set the
25730: <code><a href="dom.html#document">Document</a></code> to <a href="infrastructure.html#quirks-mode">quirks mode</a>.</p>
25731:
25732: <p>In any case, switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-before-html-insertion-mode" title="insertion mode: before html">before html</a>", then
25733: reprocess the current token.</p>
25734:
25735: </dd>
25736:
25737: </dl><h6 id="the-before-html-insertion-mode"><span class="secno">8.2.5.4.2 </span>The "<dfn title="insertion mode: before html">before html</dfn>" insertion mode</h6>
25738:
25739: <p>When the user agent is to apply the rules for the "<a href="#the-before-html-insertion-mode" title="insertion mode: before html">before html</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
25740:
25741: <dl class="switch"><dt>A DOCTYPE token</dt>
25742: <dd>
25743: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
25744: </dd>
25745:
25746: <dt>A comment token</dt>
25747: <dd>
25748: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <code><a href="dom.html#document">Document</a></code>
25749: object with the <code title="">data</code> attribute set to the
25750: data given in the comment token.</p>
25751: </dd>
25752:
25753: <dt>A character token that is one of U+0009 CHARACTER
25754: TABULATION, "LF" (U+000A), "FF" (U+000C),
25755: "CR" (U+000D), or U+0020 SPACE</dt>
25756: <dd>
25757: <p>Ignore the token.</p>
25758: </dd>
25759:
25760: <dt>A start tag whose tag name is "html"</dt>
25761: <dd>
25762:
25763: <p><a href="#create-an-element-for-the-token">Create an element for the token</a> in the <a href="namespaces.html#html-namespace-0">HTML
25764: namespace</a>. Append it to the <code><a href="dom.html#document">Document</a></code>
25765: object. Put this element in the <a href="#stack-of-open-elements">stack of open
25766: elements</a>.</p>
25767:
25768: <p id="parser-appcache">If the <code><a href="dom.html#document">Document</a></code> is being
25769: loaded as part of <a href="#navigate" title="navigate">navigation</a> of a
25770: <a href="#browsing-context">browsing context</a>, then: if the newly created element
25771: has a <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code> attribute
25772: whose value is not the empty string, then <a href="urls.html#resolve-a-url" title="resolve a
25773: url">resolve</a> the value of that attribute to an
25774: <a href="urls.html#absolute-url">absolute URL</a>, relative to the newly created element,
25775: and if that is successful, run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache selection
25776: algorithm</a> with the resulting <a href="urls.html#absolute-url">absolute URL</a> with
25777: any <a href="urls.html#url-fragment" title="url-fragment"><fragment></a> component
25778: removed; otherwise, if there is no such attribute, or its value is
25779: the empty string, or resolving its value fails, run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache selection
25780: algorithm</a> with no manifest. The algorithm must be passed
25781: the <code><a href="dom.html#document">Document</a></code> object.</p>
25782:
25783: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-before-head-insertion-mode" title="insertion mode: before head">before head</a>".</p>
25784:
25785: </dd>
25786:
25787: <dt>An end tag whose tag name is one of: "head", "body", "html", "br"</dt>
25788: <dd>
25789: <p>Act as described in the "anything else" entry below.</p>
25790: </dd>
25791:
25792: <dt>Any other end tag</dt>
25793: <dd>
25794: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
25795: </dd>
25796:
25797: <dt>Anything else</dt>
25798: <dd>
25799:
25800: <p>Create an <code><a href="the-html-element.html#the-html-element">html</a></code> element. Append it to the
25801: <code><a href="dom.html#document">Document</a></code> object. Put this element in the <a href="#stack-of-open-elements">stack
25802: of open elements</a>.</p>
25803:
25804: <p>If the <code><a href="dom.html#document">Document</a></code> is being loaded as part of <a href="#navigate" title="navigate">navigation</a> of a <a href="#browsing-context">browsing
25805: context</a>, then: run the <a href="#concept-appcache-init" title="concept-appcache-init">application cache selection
25806: algorithm</a> with no manifest, passing it the
25807: <code><a href="dom.html#document">Document</a></code> object.</p>
25808:
25809: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-before-head-insertion-mode" title="insertion mode: before head">before head</a>", then
25810: reprocess the current token.</p>
25811:
25812: </dd>
25813:
25814: </dl><p>The root element can end up being removed from the
25815: <code><a href="dom.html#document">Document</a></code> object, e.g. by scripts; nothing in particular
25816: happens in such cases, content continues being appended to the nodes
25817: as described in the next section.</p>
25818:
25819:
25820: <h6 id="the-before-head-insertion-mode"><span class="secno">8.2.5.4.3 </span>The "<dfn title="insertion mode: before head">before head</dfn>" insertion mode</h6>
25821:
25822: <p>When the user agent is to apply the rules for the "<a href="#the-before-head-insertion-mode" title="insertion mode: before head">before head</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
25823:
25824: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
25825: TABULATION, "LF" (U+000A), "FF" (U+000C),
25826: "CR" (U+000D), or U+0020 SPACE</dt>
25827: <dd>
25828: <p>Ignore the token.</p> <!-- :-( -->
25829: </dd>
25830:
25831: <dt>A comment token</dt>
25832: <dd>
25833: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
25834: node</a> with the <code title="">data</code> attribute set to
25835: the data given in the comment token.</p>
25836: </dd>
25837:
25838: <dt>A DOCTYPE token</dt>
25839: <dd>
25840: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
25841: </dd>
25842:
25843: <dt>A start tag whose tag name is "html"</dt>
25844: <dd>
25845: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
25846: mode</a>.</p>
25847: </dd>
25848:
25849: <dt>A start tag whose tag name is "head"</dt>
25850: <dd>
25851:
25852: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
25853:
25854: <p>Set the <a href="#head-element-pointer"><code title="">head</code> element pointer</a>
25855: to the newly created <code><a href="the-head-element.html#the-head-element">head</a></code> element.</p>
25856:
25857: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>".</p>
25858:
25859: </dd>
25860:
25861: <dt>An end tag whose tag name is one of: "head", "body", "html", "br"</dt>
25862: <dd>
25863:
25864: <p>Act as if a start tag token with the tag name "head" and no
25865: attributes had been seen, then reprocess the current token.</p>
25866:
25867: </dd>
25868:
25869: <dt>Any other end tag</dt>
25870: <dd>
25871:
25872: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
25873:
25874: </dd>
25875:
25876: <dt>Anything else</dt>
25877: <dd>
25878:
25879: <p>Act as if a start tag token with the tag name "head" and no
25880: attributes had been seen, then reprocess the current
25881: token.</p>
25882:
25883: </dd>
25884:
25885: </dl><h6 id="parsing-main-inhead"><span class="secno">8.2.5.4.4 </span>The "<dfn title="insertion mode: in head">in head</dfn>" insertion mode</h6>
25886:
25887: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
25888:
25889: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
25890: TABULATION, "LF" (U+000A), "FF" (U+000C),
25891: "CR" (U+000D), or U+0020 SPACE</dt>
25892: <dd>
25893: <p><a href="#insert-a-character" title="insert a character">Insert the character</a> into
25894: the <a href="#current-node">current node</a>.</p>
25895: </dd>
25896:
25897: <dt>A comment token</dt>
25898: <dd>
25899: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
25900: node</a> with the <code title="">data</code> attribute set to
25901: the data given in the comment token.</p>
25902: </dd>
25903:
25904: <dt>A DOCTYPE token</dt>
25905: <dd>
25906: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
25907: </dd>
25908:
25909: <dt>A start tag whose tag name is "html"</dt>
25910: <dd>
25911: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
25912: mode</a>.</p>
25913: </dd>
25914:
25915: <dt>A start tag whose tag name is one of: "base", "basefont",
25916: "bgsound", "command", "link"</dt>
25917: <dd>
25918:
25919: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
25920: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
25921: elements</a>.</p>
25922:
25923: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
25924: token's <i>self-closing flag</i></a>, if it is set.</p>
25925:
25926: </dd>
25927:
25928: <dt>A start tag whose tag name is "meta"</dt>
25929: <dd>
25930:
25931: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
25932: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
25933: elements</a>.</p>
25934:
25935: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
25936: token's <i>self-closing flag</i></a>, if it is set.</p>
25937:
25938: <p id="meta-charset-during-parse">If the element has a <code title="attr-meta-charset"><a href="the-meta-element.html#attr-meta-charset">charset</a></code> attribute, and its value
25939: is either a supported <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character
25940: encoding</a> or <a href="infrastructure.html#a-utf-16-encoding">a UTF-16 encoding</a>, and the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> is currently
25941: <i>tentative</i>, then <a href="#change-the-encoding">change the encoding</a> to the
25942: encoding given by the value of the <code title="attr-meta-charset"><a href="the-meta-element.html#attr-meta-charset">charset</a></code> attribute.</p>
25943:
25944: <p>Otherwise, if the element has an <code title="attr-meta-http-equiv"><a href="the-meta-element.html#attr-meta-http-equiv">http-equiv</a></code> attribute whose
25945: value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the
25946: string "<code title="">Content-Type</code>", and the element has a
25947: <code title="attr-meta-content"><a href="the-meta-element.html#attr-meta-content">content</a></code> attribute, and
25948: applying the <a href="urls.html#algorithm-for-extracting-an-encoding-from-a-meta-element">algorithm for extracting an encoding from a
25949: <code>meta</code> element</a> to that attribute's value returns
25950: a supported <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a> or
25951: <a href="infrastructure.html#a-utf-16-encoding">a UTF-16 encoding</a>, and the <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> is currently
25952: <i>tentative</i>, then <a href="#change-the-encoding">change the encoding</a> to the
25953: extracted encoding.</p>
25954:
25955: </dd>
25956:
25957: <dt>A start tag whose tag name is "title"</dt>
25958: <dd>
25959: <p>Follow the <a href="#generic-rcdata-element-parsing-algorithm">generic RCDATA element parsing algorithm</a>.</p>
25960: </dd>
25961:
25962: <dt>A start tag whose tag name is "noscript", if the <a href="#scripting-flag">scripting flag</a> is enabled</dt>
25963: <dt>A start tag whose tag name is one of: "noframes", "style"</dt>
25964: <dd>
25965: <p>Follow the <a href="#generic-raw-text-element-parsing-algorithm">generic raw text element parsing algorithm</a>.</p>
25966: </dd>
25967:
25968: <dt>A start tag whose tag name is "noscript", if the <a href="#scripting-flag">scripting flag</a> is disabled</dt>
25969: <dd>
25970:
25971: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
25972:
25973: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inheadnoscript" title="insertion mode: in head noscript">in head
25974: noscript</a>".</p>
25975:
25976: </dd>
25977:
25978: <dt id="scriptTag">A start tag whose tag name is "script"</dt>
25979: <dd>
25980:
25981: <p>Run these steps:</p>
25982:
25983: <ol><li><p><a href="#create-an-element-for-the-token">Create an element for the token</a> in the
25984: <a href="namespaces.html#html-namespace-0">HTML namespace</a>.</p></li>
25985:
25986: <li>
25987:
25988: <p>Mark the element as being <a href="the-script-element.html#parser-inserted">"parser-inserted"</a> and
25989: unset the element's <a href="the-script-element.html#force-async">"force-async"</a> flag.</p>
25990:
25991: <p class="note">This ensures that, if the script is external,
25992: any <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code>
25993: calls in the script will execute in-line, instead of blowing the
25994: document away, as would happen in most other cases. It also
25995: prevents the script from executing until the end tag is
25996: seen.</p>
25997:
25998: </li>
25999:
26000: <li><p>If the parser was originally created for the <a href="#html-fragment-parsing-algorithm">HTML
26001: fragment parsing algorithm</a>, then mark the
26002: <code><a href="the-script-element.html#the-script-element">script</a></code> element as <a href="the-script-element.html#already-started">"already
26003: started"</a>. (<a href="#fragment-case">fragment case</a>)</p></li>
26004:
26005: <li><p>Append the new element to the <a href="#current-node">current node</a>
26006: and push it onto the <a href="#stack-of-open-elements">stack of open
26007: elements</a>.</p></li>
26008:
26009: <li><p>Switch the tokenizer to the <a href="#script-data-state">script data
26010: state</a>.</p></li>
26011:
26012: <li><p>Let the <a href="#original-insertion-mode">original insertion mode</a> be the current
26013: <a href="#insertion-mode">insertion mode</a>.</p>
26014:
26015: </li><li><p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incdata" title="insertion mode: text">text</a>".</p></li>
26016:
26017: </ol></dd>
26018:
26019: <dt>An end tag whose tag name is "head"</dt>
26020: <dd>
26021:
26022: <p>Pop the <a href="#current-node">current node</a> (which will be the
26023: <code><a href="the-head-element.html#the-head-element">head</a></code> element) off the <a href="#stack-of-open-elements">stack of open
26024: elements</a>.</p>
26025:
26026: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-after-head-insertion-mode" title="insertion mode: after head">after head</a>".</p>
26027:
26028: </dd>
26029:
26030: <dt>An end tag whose tag name is one of: "body", "html", "br"</dt>
26031: <dd>
26032: <p>Act as described in the "anything else" entry below.</p>
26033: </dd>
26034:
26035: <dt>A start tag whose tag name is "head"</dt>
26036: <dt>Any other end tag</dt>
26037: <dd>
26038: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26039: </dd>
26040:
26041: <dt>Anything else</dt>
26042: <dd>
26043:
26044: <!-- can't get here with an EOF and a fragment case -->
26045:
26046: <p>Act as if an end tag token with the tag name "head" had
26047: been seen, and reprocess the current token.</p>
26048:
26049: </dd>
26050:
26051: </dl><h6 id="parsing-main-inheadnoscript"><span class="secno">8.2.5.4.5 </span>The "<dfn title="insertion mode: in head noscript">in head noscript</dfn>" insertion mode</h6>
26052:
26053: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inheadnoscript" title="insertion mode: in head noscript">in head noscript</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
26054:
26055: <dl class="switch"><dt>A DOCTYPE token</dt>
26056: <dd>
26057: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26058: </dd>
26059:
26060: <dt>A start tag whose tag name is "html"</dt>
26061: <dd>
26062: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
26063: mode</a>.</p>
26064: </dd>
26065:
26066: <dt>An end tag whose tag name is "noscript"</dt>
26067: <dd>
26068:
26069: <p>Pop the <a href="#current-node">current node</a> (which will be a
26070: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code> element) from the <a href="#stack-of-open-elements">stack of open
26071: elements</a>; the new <a href="#current-node">current node</a> will be a
26072: <code><a href="the-head-element.html#the-head-element">head</a></code> element.</p>
26073:
26074: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>".</p>
26075:
26076: </dd>
26077:
26078: <dt>A character token that is one of U+0009 CHARACTER
26079: TABULATION, "LF" (U+000A), "FF" (U+000C),
26080: "CR" (U+000D), or U+0020 SPACE</dt>
26081: <dt>A comment token</dt>
26082: <dt>A start tag whose tag name is one of: "basefont", "bgsound",
26083: "link", "meta", "noframes", "style"</dt>
26084: <dd>
26085: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
26086: mode</a>.</p>
26087: </dd>
26088:
26089: <dt>An end tag whose tag name is "br"</dt>
26090: <dd>
26091: <p>Act as described in the "anything else" entry below.</p>
26092: </dd>
26093:
26094: <dt>A start tag whose tag name is one of: "head", "noscript"</dt>
26095: <dt>Any other end tag</dt>
26096: <dd>
26097: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26098: </dd>
26099:
26100: <dt>Anything else</dt>
26101: <dd>
26102:
26103: <!-- can't get here with an EOF and a fragment case -->
26104:
26105: <p><a href="#parse-error">Parse error</a>. Act as if an end tag with the tag
26106: name "noscript" had been seen and reprocess the current
26107: token.</p>
26108:
26109: </dd>
26110:
26111: </dl><h6 id="the-after-head-insertion-mode"><span class="secno">8.2.5.4.6 </span>The "<dfn title="insertion mode: after head">after head</dfn>" insertion mode</h6>
26112:
26113: <p>When the user agent is to apply the rules for the "<a href="#the-after-head-insertion-mode" title="insertion mode: after head">after head</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
26114:
26115: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
26116: TABULATION, "LF" (U+000A), "FF" (U+000C),
26117: "CR" (U+000D), or U+0020 SPACE</dt>
26118: <dd>
26119: <p><a href="#insert-a-character" title="insert a character">Insert the character</a> into
26120: the <a href="#current-node">current node</a>.</p>
26121: </dd>
26122:
26123: <dt>A comment token</dt>
26124: <dd>
26125: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
26126: node</a> with the <code title="">data</code> attribute set to
26127: the data given in the comment token.</p>
26128: </dd>
26129:
26130: <dt>A DOCTYPE token</dt>
26131: <dd>
26132: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26133: </dd>
26134:
26135: <dt>A start tag whose tag name is "html"</dt>
26136: <dd>
26137: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
26138: mode</a>.</p>
26139: </dd>
26140:
26141: <dt>A start tag whose tag name is "body"</dt>
26142: <dd>
26143:
26144: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26145:
26146: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
26147:
26148: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>".</p>
26149:
26150: </dd>
26151:
26152: <dt>A start tag whose tag name is "frameset"</dt>
26153: <dd>
26154:
26155: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26156:
26157: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inframeset" title="insertion mode: in frameset">in frameset</a>".</p>
26158:
26159: </dd>
26160:
26161: <dt>A start tag token whose tag name is one of: "base", "basefont",
26162: "bgsound", "link", "meta", "noframes", "script", "style",
26163: "title"</dt>
26164: <dd>
26165:
26166: <p><a href="#parse-error">Parse error</a>.</p>
26167:
26168: <p>Push the node pointed to by the <a href="#head-element-pointer"><code title="">head</code> element pointer</a> onto the
26169: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
26170:
26171: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
26172: mode</a>.</p>
26173:
26174: <p>Remove the node pointed to by the <a href="#head-element-pointer"><code title="">head</code> element pointer</a> from the <a href="#stack-of-open-elements">stack
26175: of open elements</a>.</p>
26176:
26177: <p class="note">The <a href="#head-element-pointer"><code title="">head</code> element
26178: pointer</a> cannot be null at this point.</p>
26179:
26180: </dd>
26181:
26182: <dt>An end tag whose tag name is one of: "body", "html", "br"</dt>
26183: <dd>
26184: <p>Act as described in the "anything else" entry below.</p>
26185: </dd>
26186:
26187: <dt>A start tag whose tag name is "head"</dt>
26188: <dt>Any other end tag</dt>
26189: <dd>
26190: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26191: </dd>
26192:
26193: <dt>Anything else</dt>
26194: <dd>
26195: <p>Act as if a start tag token with the tag name "body" and no
26196: attributes had been seen, then set the <a href="#frameset-ok-flag">frameset-ok
26197: flag</a> back to "ok", and then reprocess the current
26198: token.</p>
26199: </dd>
26200:
26201: </dl><h6 id="parsing-main-inbody"><span class="secno">8.2.5.4.7 </span>The "<dfn title="insertion mode: in body">in body</dfn>" insertion mode</h6>
26202:
26203: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
26204:
26205: <dl class="switch"><dt>A character token that is U+0000 NULL</dt>
26206: <dd>
26207:
26208: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26209:
26210: <!-- The D-Link DSL-G604T ADSL router has a zero byte in its
26211: configuration UI before a <frameset>, which is why U+0000 is
26212: special-cased here.
26213: refs: https://bugzilla.mozilla.org/show_bug.cgi?id=563526
26214: http://www.w3.org/Bugs/Public/show_bug.cgi?id=9659
26215: -->
26216:
26217: </dd>
26218:
26219: <dt>A character token that is one of U+0009 CHARACTER TABULATION,
26220: "LF" (U+000A), "FF" (U+000C), "CR" (U+000D), or U+0020 SPACE</dt>
26221: <dd>
26222:
26223: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26224: any.</p>
26225:
26226: <p><a href="#insert-a-character" title="insert a character">Insert the token's
26227: character</a> into the <a href="#current-node">current node</a>.</p>
26228:
26229: </dd>
26230:
26231: <dt>Any other character token</dt>
26232: <dd>
26233:
26234: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26235: any.</p>
26236:
26237: <p><a href="#insert-a-character" title="insert a character">Insert the token's
26238: character</a> into the <a href="#current-node">current node</a>.</p>
26239:
26240: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
26241:
26242: </dd>
26243:
26244: <dt>A comment token</dt>
26245: <dd>
26246: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
26247: node</a> with the <code title="">data</code> attribute set to
26248: the data given in the comment token.</p>
26249: </dd>
26250:
26251: <dt>A DOCTYPE token</dt>
26252: <dd>
26253: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
26254: </dd>
26255:
26256: <dt>A start tag whose tag name is "html"</dt>
26257: <dd>
26258: <p><a href="#parse-error">Parse error</a>. For each attribute on the token,
26259: check to see if the attribute is already present on the top
26260: element of the <a href="#stack-of-open-elements">stack of open elements</a>. If it is not,
26261: add the attribute and its corresponding value to that element.</p>
26262: </dd>
26263:
26264: <dt>A start tag token whose tag name is one of: "base", "basefont",
26265: "bgsound", "command", "link", "meta", "noframes", "script",
26266: "style", "title"</dt>
26267: <dd>
26268: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
26269: mode</a>.</p>
26270: </dd>
26271:
26272: <dt>A start tag whose tag name is "body"</dt>
26273: <dd>
26274:
26275: <p><a href="#parse-error">Parse error</a>.</p>
26276:
26277: <p>If the second element on the <a href="#stack-of-open-elements">stack of open
26278: elements</a> is not a <code><a href="the-body-element.html#the-body-element">body</a></code> element, or, if the
26279: <a href="#stack-of-open-elements">stack of open elements</a> has only one node on it,
26280: then ignore the token. (<a href="#fragment-case">fragment case</a>)</p>
26281:
26282: <p>Otherwise, set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok";
26283: then, for each attribute on the token, check to see if the
26284: attribute is already present on the <code><a href="the-body-element.html#the-body-element">body</a></code> element (the
26285: second element) on the <a href="#stack-of-open-elements">stack of open elements</a>, and if
26286: it is not, add the attribute and its corresponding value to that
26287: element.</p>
26288:
26289: </dd>
26290:
26291: <dt>A start tag whose tag name is "frameset"</dt>
26292: <dd>
26293:
26294: <p><a href="#parse-error">Parse error</a>.</p>
26295:
26296: <p>If the second element on the <a href="#stack-of-open-elements">stack of open
26297: elements</a> is not a <code><a href="the-body-element.html#the-body-element">body</a></code> element, or, if the
26298: <a href="#stack-of-open-elements">stack of open elements</a> has only one node on it,
26299: then ignore the token. (<a href="#fragment-case">fragment case</a>)</p>
26300:
26301: <p>If the <a href="#frameset-ok-flag">frameset-ok flag</a> is set to "not ok", ignore
26302: the token.</p>
26303:
26304: <p>Otherwise, run the following steps:</p>
26305:
26306: <ol><li><p>Remove the second element on the <a href="#stack-of-open-elements">stack of open
26307: elements</a> from its parent node, if it has one.</p></li>
26308:
26309: <li><p>Pop all the nodes from the bottom of the <a href="#stack-of-open-elements">stack of
26310: open elements</a>, from the <a href="#current-node">current node</a> up to,
26311: but not including, the root <code><a href="the-html-element.html#the-html-element">html</a></code> element.</p>
26312:
26313: </li><li><p><a href="#insert-an-html-element">Insert an HTML element</a> for the
26314: token.</p></li>
26315:
26316: <li><p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inframeset" title="insertion mode: in frameset">in frameset</a>".</p>
26317:
26318: </li></ol></dd>
26319:
26320: <dt>An end-of-file token</dt>
26321: <dd>
26322:
26323: <p>If there is a node in the <a href="#stack-of-open-elements">stack of open elements</a>
26324: that is not either a <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element, a <code><a href="the-dt-element.html#the-dt-element">dt</a></code>
26325: element, an <code><a href="the-li-element.html#the-li-element">li</a></code> element, a <code><a href="the-p-element.html#the-p-element">p</a></code> element, a
26326: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element, a <code><a href="the-td-element.html#the-td-element">td</a></code> element, a
26327: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element, a <code><a href="the-th-element.html#the-th-element">th</a></code> element, a
26328: <code><a href="the-thead-element.html#the-thead-element">thead</a></code> element, a <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, the
26329: <code><a href="the-body-element.html#the-body-element">body</a></code> element, or the <code><a href="the-html-element.html#the-html-element">html</a></code> element, then
26330: this is a <a href="#parse-error">parse error</a>.</p> <!-- (some of those are
26331: fragment cases) -->
26332:
26333: <p><a href="#stop-parsing">Stop parsing</a>.</p>
26334:
26335: </dd>
26336:
26337: <dt>An end tag whose tag name is "body"</dt>
26338: <dd>
26339:
26340: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have a <code>body</code> element
26341: in scope</a>, this is a <a href="#parse-error">parse error</a>; ignore the
26342: token.</p>
26343:
26344: <!-- if we get here, the insertion mode here is forcibly "in
26345: body". -->
26346:
26347: <p>Otherwise, if there is a node in the <a href="#stack-of-open-elements">stack of open
26348: elements</a> that is not either a <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element, a
26349: <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element, an <code><a href="the-li-element.html#the-li-element">li</a></code> element, an
26350: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, an <code><a href="the-option-element.html#the-option-element">option</a></code> element, a
26351: <code><a href="the-p-element.html#the-p-element">p</a></code> element, an <code><a href="the-rp-element.html#the-rp-element">rp</a></code> element, an
26352: <code><a href="the-rt-element.html#the-rt-element">rt</a></code> element, a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element, a
26353: <code><a href="the-td-element.html#the-td-element">td</a></code> element, a <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element, a
26354: <code><a href="the-th-element.html#the-th-element">th</a></code> element, a <code><a href="the-thead-element.html#the-thead-element">thead</a></code> element, a
26355: <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, the <code><a href="the-body-element.html#the-body-element">body</a></code> element, or the
26356: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
26357: error</a>.</p> <!-- (some of those are fragment cases, e.g. for
26358: <tbody> you'd have hit the first paragraph since the <body>
26359: wouldn't be in scope, unless it was a fragment case) -->
26360:
26361: <!-- If we ever change the frameset-ok flag to an insertion mode,
26362: then we'd have to somehow keep track of its state when we switch
26363: to after-body. -->
26364:
26365: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-afterbody" title="insertion mode: after body">after body</a>".</p>
26366:
26367: </dd>
26368:
26369: <dt>An end tag whose tag name is "html"</dt>
26370: <dd>
26371:
26372: <p>Act as if an end tag with tag name "body" had been seen,
26373: then, if that token wasn't ignored, reprocess the current
26374: token.</p>
26375:
26376: </dd>
26377:
26378: <!-- start tags for non-phrasing flow content elements -->
26379:
26380: <!-- the normal ones -->
26381: <dt>A start tag whose tag name is one of: "address", "article",
26382: "aside", "blockquote", "center", "details", "dialog", "dir", "div",
26383: "dl", "fieldset", "figcaption", "figure", "footer", "header",
26384: "hgroup", "menu", "nav", "ol", "p", "section", "summary", "ul"</dt>
26385: <dd>
26386:
26387: <!-- As of May 2008 this doesn't match any browser exactly, but is
26388: as close to what IE does as I can get without doing the non-tree
26389: DOM nonsense, and thus should actually afford better compatibility
26390: when implemented by the other browsers. -->
26391:
26392: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has an
26393: element in button scope">has a <code>p</code> element in button
26394: scope</a>, then act as if an end tag with the tag name "p" had
26395: been seen.</p>
26396:
26397: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26398:
26399: </dd>
26400:
26401: <!-- as normal, but close h1-h6 if it's the current node -->
26402: <dt>A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
26403: "h5", "h6"</dt>
26404: <dd>
26405:
26406: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26407: an element in button scope">has a <code>p</code> element in button
26408: scope</a>, then act as if an end tag with the tag name
26409: "p" had been seen.</p>
26410:
26411: <p>If the <a href="#current-node">current node</a> is an element whose tag name
26412: is one of "h1", "h2", "h3", "h4", "h5", or "h6", then this is a
26413: <a href="#parse-error">parse error</a>; pop the <a href="#current-node">current node</a> off
26414: the <a href="#stack-of-open-elements">stack of open elements</a>.</p>
26415: <!-- See https://bugs.webkit.org/show_bug.cgi?id=12646 -->
26416:
26417: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26418:
26419: </dd>
26420:
26421: <!-- as normal, but drops leading newline -->
26422: <dt>A start tag whose tag name is one of: "pre", "listing"</dt>
26423: <dd>
26424:
26425: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26426: an element in button scope">has a <code>p</code> element in button
26427: scope</a>, then act as if an end tag with the tag name
26428: "p" had been seen.</p>
26429:
26430: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26431:
26432: <p>If the next token is a "LF" (U+000A) character
26433: token, then ignore that token and move on to the next
26434: one. (Newlines at the start of <code><a href="the-pre-element.html#the-pre-element">pre</a></code> blocks are
26435: ignored as an authoring convenience.)</p>
26436:
26437: <!-- <pre>[CR]X will eat the [CR], <pre>X will eat the
26438: , but <pre>X will not eat the . -->
26439:
26440: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
26441:
26442: </dd>
26443:
26444: <!-- as normal, but interacts with the form element pointer -->
26445: <dt>A start tag whose tag name is "form"</dt>
26446: <dd>
26447:
26448: <p>If the <a href="#form-element-pointer"><code title="form">form</code> element
26449: pointer</a> is not null, then this is a <a href="#parse-error">parse
26450: error</a>; ignore the token.</p>
26451:
26452: <p>Otherwise:</p>
26453:
26454: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26455: an element in button scope">has a <code>p</code> element in button
26456: scope</a>, then act as if an end tag with the tag name
26457: "p" had been seen.</p>
26458:
26459: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, and set the
26460: <a href="#form-element-pointer"><code title="form">form</code> element pointer</a> to
26461: point to the element created.</p>
26462:
26463: </dd>
26464:
26465: <!-- as normal, but imply </li> when there's another <li> open in weird cases -->
26466: <dt>A start tag whose tag name is "li"</dt>
26467: <dd>
26468:
26469: <p>Run these steps:</p>
26470:
26471: <ol><li><p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p></li>
26472:
26473: <li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
26474: node</a> (the bottommost node of the stack).</p></li>
26475:
26476: <li><p><i>Loop</i>: If <var title="">node</var> is an
26477: <code><a href="the-li-element.html#the-li-element">li</a></code> element, then act as if an end tag with the tag
26478: name "li" had been seen, then jump to the last step.</p></li>
26479:
26480: <li><p>If <var title="">node</var> is in the <a href="#special">special</a>
26481: category, but is not an <code><a href="the-address-element.html#the-address-element">address</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>,
26482: or <code><a href="the-p-element.html#the-p-element">p</a></code> element, then jump to the last step.</p></li>
26483: <!-- an element <foo> is in this list if the following markup:
26484:
26485: <!DOCTYPE html><body><ol><li><foo><li>
26486:
26487: ...results in the second <li> not being (in any way) a descendant
26488: of the first <li>, or if <foo> is a formatting element that gets
26489: reopened later. -->
26490:
26491: <li><p>Otherwise, set <var title="">node</var> to the previous
26492: entry in the <a href="#stack-of-open-elements">stack of open elements</a> and return to
26493: the step labeled <i>loop</i>.</p></li>
26494:
26495: <li>
26496:
26497: <p>This is the last step.</p>
26498:
26499: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26500: an element in button scope">has a <code>p</code> element in button
26501: scope</a>, then act as if an end tag with the tag name
26502: "p" had been seen.</p>
26503:
26504: <p>Finally, <a href="#insert-an-html-element">insert an HTML element</a> for the
26505: token.</p>
26506:
26507: </li>
26508:
26509: </ol></dd>
26510:
26511: <!-- as normal, but imply </dt> or </dd> when there's another <dt> or <dd> open in weird cases -->
26512: <dt>A start tag whose tag name is one of: "dd", "dt"</dt>
26513: <dd>
26514:
26515: <p>Run these steps:</p>
26516:
26517: <ol><li><p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p></li>
26518:
26519: <li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
26520: node</a> (the bottommost node of the stack).</p></li>
26521:
26522: <li><p><i>Loop</i>: If <var title="">node</var> is a
26523: <code><a href="the-dd-element.html#the-dd-element">dd</a></code> or <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element, then act as if an end
26524: tag with the same tag name as <var title="">node</var> had been
26525: seen, then jump to the last step.</p></li>
26526:
26527: <li><p>If <var title="">node</var> is in the <a href="#special">special</a>
26528: category, but is not an <code><a href="the-address-element.html#the-address-element">address</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>,
26529: or <code><a href="the-p-element.html#the-p-element">p</a></code> element, then jump to the last step.</p></li>
26530: <!-- an element <foo> is in this list if the following markup:
26531:
26532: <!DOCTYPE html><body><dl><dt><foo><dt>
26533:
26534: ...results in the second <dt> not being (in any way) a descendant
26535: of the first <dt>, or if <foo> is a formatting element that gets
26536: reopened later. -->
26537:
26538: <li><p>Otherwise, set <var title="">node</var> to the previous
26539: entry in the <a href="#stack-of-open-elements">stack of open elements</a> and return to
26540: the step labeled <i>loop</i>.</p></li>
26541:
26542: <li>
26543:
26544: <p>This is the last step.</p>
26545:
26546: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26547: an element in button scope">has a <code>p</code> element in button
26548: scope</a>, then act as if an end tag with the tag name
26549: "p" had been seen.</p>
26550:
26551: <p>Finally, <a href="#insert-an-html-element">insert an HTML element</a> for the
26552: token.</p>
26553:
26554: </li>
26555:
26556: </ol></dd>
26557:
26558: <!-- same as normal, but effectively ends parsing -->
26559: <dt>A start tag whose tag name is "plaintext"</dt>
26560: <dd>
26561:
26562: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
26563: an element in button scope">has a <code>p</code> element in button
26564: scope</a>, then act as if an end tag with the tag name
26565: "p" had been seen.</p>
26566:
26567: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26568:
26569: <p>Switch the tokenizer to the <a href="#plaintext-state">PLAINTEXT state</a>.</p>
26570:
26571: <p class="note">Once a start tag with the tag name "plaintext" has
26572: been seen, that will be the last token ever seen other than
26573: character tokens (and the end-of-file token), because there is no
26574: way to switch out of the <a href="#plaintext-state">PLAINTEXT state</a>.</p>
26575:
26576: </dd>
26577:
26578: <!-- button is a hybrid -->
26579: <dt>A start tag whose tag name is "button"</dt>
26580: <dd>
26581:
26582: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-scope" title="has
26583: an element in scope">has a <code>button</code> element in
26584: scope</a>, then this is a <a href="#parse-error">parse error</a>;
26585: act as if an end tag with the tag name "button" had been seen,
26586: then reprocess the token.</p>
26587:
26588: <p>Otherwise:</p>
26589:
26590: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26591: any.</p>
26592:
26593: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
26594:
26595: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
26596:
26597: </dd>
26598:
26599: <!-- end tags for non-phrasing flow content elements (and button) -->
26600:
26601: <!-- the normal ones -->
26602: <dt>An end tag whose tag name is one of: "address", "article",
26603: "aside", "blockquote", "button", "center", "details", "dialog",
26604: "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer",
26605: "header", "hgroup", "listing", "menu", "nav", "ol", "pre",
26606: "section", "summary", "ul"</dt>
26607: <dd>
26608:
26609: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have an element in scope</a>
26610: with the same tag name as that of the token, then this is a
26611: <a href="#parse-error">parse error</a>; ignore the token.</p>
26612:
26613: <p>Otherwise, run these steps:</p>
26614:
26615: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p></li>
26616:
26617: <li><p>If the <a href="#current-node">current node</a> is not an element with
26618: the same tag name as that of the token, then this is a
26619: <a href="#parse-error">parse error</a>.</p></li>
26620:
26621: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
26622: until an element with the same tag name as the token has been
26623: popped from the stack.</p></li>
26624:
26625: </ol></dd>
26626:
26627: <!-- removes the form element pointer instead of the matching node -->
26628: <dt>An end tag whose tag name is "form"</dt>
26629: <dd>
26630:
26631: <p>Let <var title="">node</var> be the element that the
26632: <a href="#form-element-pointer"><code title="">form</code> element pointer</a> is set
26633: to.</p>
26634:
26635: <p>Set the <a href="#form-element-pointer"><code title="">form</code> element pointer</a>
26636: to null.</p>
26637:
26638: <p>If <var title="">node</var> is null or the <a href="#stack-of-open-elements">stack of open
26639: elements</a> does not <a href="#has-an-element-in-scope" title="has an element in
26640: scope">have <var title="">node</var> in scope</a>, then this is
26641: a <a href="#parse-error">parse error</a>; ignore the token.</p>
26642:
26643: <p>Otherwise, run these steps:</p>
26644:
26645: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p></li>
26646:
26647: <li><p>If the <a href="#current-node">current node</a> is not <var title="">node</var>, then this is a <a href="#parse-error">parse
26648: error</a>.</p></li>
26649:
26650: <li><p>Remove <var title="">node</var> from the <a href="#stack-of-open-elements">stack of
26651: open elements</a>.</p></li>
26652:
26653: </ol></dd>
26654:
26655: <!-- as normal, except </p> implies <p> if there's no <p> in scope, and needs care as the elements have optional tags -->
26656: <dt>An end tag whose tag name is "p"</dt>
26657: <dd>
26658:
26659: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-button-scope" title="has an element in button scope">have an element in button
26660: scope</a> with the same tag name as that of the token, then this
26661: is a <a href="#parse-error">parse error</a>; act as if a start tag with the tag
26662: name "p" had been seen, then reprocess the current token.</p>
26663:
26664: <p>Otherwise, run these steps:</p>
26665:
26666: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>, except
26667: for elements with the same tag name as the token.</p></li>
26668:
26669: <li><p>If the <a href="#current-node">current node</a> is not an element with
26670: the same tag name as that of the token, then this is a
26671: <a href="#parse-error">parse error</a>.</p></li>
26672:
26673: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
26674: until an element with the same tag name as the token has been
26675: popped from the stack.</p></li>
26676:
26677: </ol></dd>
26678:
26679: <!-- as normal, but needs care as the elements have optional tags, and are further scoped by <ol>/<ul> -->
26680: <dt>An end tag whose tag name is "li"</dt>
26681: <dd>
26682:
26683: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-list-item-scope" title="has an element in list item scope">have an element in list
26684: item scope</a> with the same tag name as that of the token,
26685: then this is a <a href="#parse-error">parse error</a>; ignore the token.</p>
26686:
26687: <p>Otherwise, run these steps:</p>
26688:
26689: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>, except
26690: for elements with the same tag name as the token.</p></li>
26691:
26692: <li><p>If the <a href="#current-node">current node</a> is not an element with
26693: the same tag name as that of the token, then this is a
26694: <a href="#parse-error">parse error</a>.</p></li>
26695:
26696: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
26697: until an element with the same tag name as the token has been
26698: popped from the stack.</p></li>
26699:
26700: </ol></dd>
26701:
26702: <!-- as normal, but needs care as the elements have optional tags -->
26703: <dt>An end tag whose tag name is one of: "dd", "dt"</dt>
26704: <dd>
26705:
26706: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have an element in scope</a>
26707: with the same tag name as that of the token, then this is a
26708: <a href="#parse-error">parse error</a>; ignore the token.</p>
26709:
26710: <p>Otherwise, run these steps:</p>
26711:
26712: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>, except
26713: for elements with the same tag name as the token.</p></li>
26714:
26715: <li><p>If the <a href="#current-node">current node</a> is not an element with
26716: the same tag name as that of the token, then this is a
26717: <a href="#parse-error">parse error</a>.</p></li>
26718:
26719: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
26720: until an element with the same tag name as the token has been
26721: popped from the stack.</p></li>
26722:
26723: </ol></dd>
26724:
26725: <!-- as normal, except acts as a closer for any of the h1-h6 elements -->
26726: <dt>An end tag whose tag name is one of: "h1", "h2", "h3", "h4", "h5", "h6"</dt>
26727: <dd>
26728:
26729: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have an element in scope</a>
26730: whose tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6",
26731: then this is a <a href="#parse-error">parse error</a>; ignore the token.</p>
26732:
26733: <p>Otherwise, run these steps:</p>
26734:
26735: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p></li>
26736:
26737: <li><p>If the <a href="#current-node">current node</a> is not an element with
26738: the same tag name as that of the token, then this is a
26739: <a href="#parse-error">parse error</a>.</p></li>
26740:
26741: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
26742: until an element whose tag name is one of "h1", "h2", "h3", "h4",
26743: "h5", or "h6" has been popped from the stack.</p></li>
26744:
26745: </ol></dd>
26746:
26747: <!-- see also applet/marquee/object lower down -->
26748:
26749: <dt>An end tag whose tag name is "sarcasm"</dt>
26750: <dd>
26751: <p>Take a deep breath, then act as described in the "any other end
26752: tag" entry below.</p>
26753: </dd>
26754:
26755: <!-- ADOPTION AGENCY ELEMENTS
26756: Mozilla-only: bdo blink del ins sub sup q
26757: Safari-only: code dfn kbd nobr samp var wbr
26758: Both: a b big em font i s small strike strong tt u -->
26759:
26760: <dt>A start tag whose tag name is "a"</dt>
26761: <dd>
26762:
26763: <p>If the <a href="#list-of-active-formatting-elements">list of active formatting elements</a>
26764: contains an element whose tag name is "a" between the end of
26765: the list and the last marker on the list (or the start of the
26766: list if there is no marker on the list), then this is a
26767: <a href="#parse-error">parse error</a>; act as if an end tag with the tag
26768: name "a" had been seen, then remove that element from the
26769: <a href="#list-of-active-formatting-elements">list of active formatting elements</a> and the
26770: <a href="#stack-of-open-elements">stack of open elements</a> if the end tag didn't
26771: already remove it (it might not have if the element is not
26772: <a href="#has-an-element-in-table-scope" title="has an element in table scope">in table
26773: scope</a>).</p>
26774:
26775: <p class="example">In the non-conforming stream
26776: <code><a href="a">a<table><a href="b">b</table>x</code>,
26777: the first <code><a href="the-a-element.html#the-a-element">a</a></code> element would be closed upon seeing the
26778: second one, and the "x" character would be inside a link to "b",
26779: not to "a". This is despite the fact that the outer <code><a href="the-a-element.html#the-a-element">a</a></code>
26780: element is not in table scope (meaning that a regular
26781: <code><a href="the-a-element.html#the-a-element"></a></a></code> end tag at the start of the table wouldn't
26782: close the outer <code><a href="the-a-element.html#the-a-element">a</a></code> element). The result is that the
26783: two <code><a href="the-a-element.html#the-a-element">a</a></code> elements are indirectly nested inside each
26784: other — non-conforming markup will often result in
26785: non-conforming DOMs when parsed.</p>
26786:
26787: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26788: any.</p>
26789:
26790: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. <a href="#push-onto-the-list-of-active-formatting-elements">Push
26791: onto the list of active formatting elements</a> that
26792: element.</p>
26793:
26794: </dd>
26795:
26796: <dt>A start tag whose tag name is one of: "b", "big", "code", "em",
26797: "font", "i", "s", "small", "strike", "strong", "tt", "u"</dt>
26798: <dd>
26799:
26800: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26801: any.</p>
26802:
26803: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. <a href="#push-onto-the-list-of-active-formatting-elements">Push
26804: onto the list of active formatting elements</a> that
26805: element.</p>
26806:
26807: </dd>
26808:
26809: <dt>A start tag whose tag name is "nobr"</dt>
26810: <dd>
26811:
26812: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
26813: any.</p>
26814:
26815: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-scope" title="has an
26816: element in scope">has a <code>nobr</code> element in scope</a>,
26817: then this is a <a href="#parse-error">parse error</a>; act as if an end tag with
26818: the tag name "nobr" had been seen, then once again
26819: <a href="#reconstruct-the-active-formatting-elements">reconstruct the active formatting elements</a>, if
26820: any.</p>
26821:
26822: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. <a href="#push-onto-the-list-of-active-formatting-elements">Push
26823: onto the list of active formatting elements</a> that
26824: element.</p>
26825:
26826: </dd>
26827:
26828: <dt id="adoptionAgency">An end tag whose tag name is one of: "a",
26829: "b", "big", "code", "em", "font", "i", "nobr", "s", "small",
26830: "strike", "strong", "tt", "u"</dt>
26831: <dd>
26832:
26833: <p>Run these steps:</p>
26834:
26835: <ol><li><p>Let <var title="">outer loop counter</var> be
26836: zero.</p></li>
26837:
26838: <li><p><i>Outer loop</i>: If <var title="">outer loop
26839: counter</var> is greater than or equal to eight, then abort these
26840: steps.</p></li>
26841:
26842: <li><p>Increment <var title="">outer loop counter</var> by
26843: one.</p></li>
26844:
26845: <li>
26846:
26847: <p>Let the <var title="">formatting element</var> be the last
26848: element in the <a href="#list-of-active-formatting-elements">list of active formatting elements</a>
26849: that:</p>
26850:
26851: <ul><li>is between the end of the list and the last scope
26852: marker in the list, if any, or the start of the list
26853: otherwise, and</li>
26854:
26855: <li>has the same tag name as the token.</li>
26856:
26857: </ul><p>If there is no such node, then abort these steps and instead
26858: act as described in the "any other end tag" entry below.</p>
26859:
26860: <p>Otherwise, if there is such a node, but that node is not
26861: in the <a href="#stack-of-open-elements">stack of open elements</a>, then this is a
26862: <a href="#parse-error">parse error</a>; remove the element from the list,
26863: and abort these steps.</p>
26864:
26865: <p>Otherwise, if there is such a node, and that node is also in
26866: the <a href="#stack-of-open-elements">stack of open elements</a>, but the element is not
26867: <a href="#has-an-element-in-scope" title="has an element in scope">in scope</a>, then this
26868: is a <a href="#parse-error">parse error</a>; ignore the token, and abort these
26869: steps.</p>
26870:
26871: <p>Otherwise, there is a <var title="">formatting
26872: element</var> and that element is in <a href="#stack-of-open-elements" title="stack of
26873: open elements">the stack</a> and is <a href="#has-an-element-in-scope" title="has an
26874: element in scope">in scope</a>. If the element is not the
26875: <a href="#current-node">current node</a>, this is a <a href="#parse-error">parse
26876: error</a>. In any case, proceed with the algorithm as
26877: written in the following steps.</p>
26878:
26879: </li>
26880:
26881: <li><p>Let the <var title="">furthest block</var> be the topmost
26882: node in the <a href="#stack-of-open-elements">stack of open elements</a> that is lower in
26883: the stack than the <var title="">formatting element</var>, and is
26884: an element in the <a href="#special">special</a> category. There might not
26885: be one.</p></li>
26886:
26887: <li><p>If there is no <var title="">furthest block</var>, then
26888: the UA must first pop all the nodes from the bottom of the
26889: <a href="#stack-of-open-elements">stack of open elements</a>, from the <a href="#current-node">current
26890: node</a> up to and including the <var title="">formatting
26891: element</var>, then remove the <var title="">formatting
26892: element</var> from the <a href="#list-of-active-formatting-elements">list of active formatting
26893: elements</a>, and finally abort these steps.</p></li>
26894:
26895: <li><p>Let the <var title="">common ancestor</var> be the element
26896: immediately above the <var title="">formatting element</var> in the
26897: <a href="#stack-of-open-elements">stack of open elements</a>.</p></li>
26898:
26899: <li><p>Let a bookmark note the position of the <var title="">formatting element</var> in the <a href="#list-of-active-formatting-elements">list of active
26900: formatting elements</a> relative to the elements on either
26901: side of it in the list.</p></li>
26902:
26903: <li>
26904:
26905: <p>Let <var title="">node</var> and <var title="">last node</var> be the
26906: <var title="">furthest block</var>. Follow these steps:</p>
26907:
26908: <ol><li><p>Let <var title="">inner loop counter</var> be
26909: zero.</p></li>
26910:
26911: <li><p><i>Inner loop</i>: If <var title="">inner loop
26912: counter</var> is greater than or equal to three, then abort these
26913: steps.</p></li>
26914:
26915: <li><p>Increment <var title="">inner loop counter</var> by
26916: one.</p></li>
26917:
26918: <li>Let <var title="">node</var> be the element immediately
26919: above <var title="">node</var> in the <a href="#stack-of-open-elements">stack of open
26920: elements</a>, or if <var title="">node</var> is no longer in
26921: the <a href="#stack-of-open-elements">stack of open elements</a> (e.g. because it got
26922: removed by the next step), the element that was immediately
26923: above <var title="">node</var> in the <a href="#stack-of-open-elements">stack of open
26924: elements</a> before <var title="">node</var> was
26925: removed.</li>
26926:
26927: <li>If <var title="">node</var> is not in the <a href="#list-of-active-formatting-elements">list of
26928: active formatting elements</a>, then remove <var title="">node</var> from the <a href="#stack-of-open-elements">stack of open
26929: elements</a> and then go back to the step labeled <i>inner
26930: loop</i>.</li>
26931:
26932: <li>Otherwise, if <var title="">node</var> is the <var title="">formatting element</var>, then go to the next step
26933: in the overall algorithm.</li>
26934:
26935: <li><a href="#create-an-element-for-the-token">Create an element for the token</a> for which the
26936: element <var title="">node</var> was created, replace the entry
26937: for <var title="">node</var> in the <a href="#list-of-active-formatting-elements">list of active
26938: formatting elements</a> with an entry for the new element,
26939: replace the entry for <var title="">node</var> in the
26940: <a href="#stack-of-open-elements">stack of open elements</a> with an entry for the new
26941: element, and let <var title="">node</var> be the new
26942: element.</li>
26943:
26944: <li>If <var title="">last node</var> is the <var title="">furthest block</var>, then move the aforementioned
26945: bookmark to be immediately after the new <var title="">node</var> in the <a href="#list-of-active-formatting-elements">list of active formatting
26946: elements</a>.</li>
26947:
26948: <li>Insert <var title="">last node</var> into <var title="">node</var>, first removing it from its previous
26949: parent node if any.</li>
26950:
26951: <li>Let <var title="">last node</var> be <var title="">node</var>.</li>
26952:
26953: <li>Return to the step labeled <i>inner loop</i>.</li>
26954:
26955: </ol></li>
26956:
26957: <li>
26958:
26959: <p>If the <var title="">common ancestor</var> node is a
26960: <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>,
26961: <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, then,
26962: <a href="#foster-parent">foster parent</a> whatever <var title="">last
26963: node</var> ended up being in the previous step, first removing
26964: it from its previous parent node if any.</p>
26965:
26966: <p>Otherwise, append whatever <var title="">last node</var>
26967: ended up being in the previous step to the <var title="">common
26968: ancestor</var> node, first removing it from its previous parent
26969: node if any.</p>
26970:
26971: </li>
26972:
26973: <li><p><a href="#create-an-element-for-the-token">Create an element for the token</a> for which the
26974: <var title="">formatting element</var> was created.</p></li>
26975:
26976: <li><p>Take all of the child nodes of the <var title="">furthest
26977: block</var> and append them to the element created in the last
26978: step.</p></li>
26979:
26980: <li><p>Append that new element to the <var title="">furthest
26981: block</var>.</p></li>
26982:
26983: <li><p>Remove the <var title="">formatting element</var> from the
26984: <a href="#list-of-active-formatting-elements">list of active formatting elements</a>, and insert the
26985: new element into the <a href="#list-of-active-formatting-elements">list of active formatting
26986: elements</a> at the position of the aforementioned
26987: bookmark.</p></li>
26988:
26989: <li><p>Remove the <var title="">formatting element</var> from the
26990: <a href="#stack-of-open-elements">stack of open elements</a>, and insert the new element
26991: into the <a href="#stack-of-open-elements">stack of open elements</a> immediately below
26992: the position of the <var title="">furthest block</var> in that
26993: stack.</p></li>
26994:
26995: <li><p>Jump back to the step labeled <i>outer loop</i>.</p></li>
26996:
26997: </ol><p class="note">Because of the way this algorithm causes elements
26998: to change parents, it has been dubbed the "adoption agency
26999: algorithm" (in contrast with other possible algorithms for dealing
27000: with misnested content, which included the "incest algorithm", the
27001: "secret affair algorithm", and the "Heisenberg algorithm").</p>
27002:
27003: </dd>
27004:
27005: <dt>A start tag token whose tag name is one of: "applet",
27006: "marquee", "object"</dt>
27007: <dd>
27008:
27009: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27010: any.</p>
27011:
27012: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27013:
27014: <p>Insert a marker at the end of the <a href="#list-of-active-formatting-elements">list of active
27015: formatting elements</a>.</p>
27016:
27017: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27018:
27019: </dd>
27020:
27021: <dt>An end tag token whose tag name is one of: "applet",
27022: "marquee", "object"</dt>
27023: <dd>
27024:
27025: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have an element in scope</a>
27026: with the same tag name as that of the token, then this is a
27027: <a href="#parse-error">parse error</a>; ignore the token.</p>
27028:
27029: <p>Otherwise, run these steps:</p>
27030:
27031: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p></li>
27032:
27033: <li><p>If the <a href="#current-node">current node</a> is not an element with
27034: the same tag name as that of the token, then this is a
27035: <a href="#parse-error">parse error</a>.</p></li>
27036:
27037: <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
27038: until an element with the same tag name as the token has been
27039: popped from the stack.</p></li>
27040:
27041: <li><a href="#clear-the-list-of-active-formatting-elements-up-to-the-last-marker">Clear the list of active formatting elements up to the
27042: last marker</a>.</li>
27043:
27044: </ol></dd>
27045:
27046: <dt>A start tag whose tag name is "table"</dt>
27047: <dd>
27048:
27049: <p>If the <code><a href="dom.html#document">Document</a></code> is <em>not</em> set to
27050: <a href="infrastructure.html#quirks-mode">quirks mode</a>, and the <a href="#stack-of-open-elements">stack of open
27051: elements</a> <a href="#has-an-element-in-button-scope" title="has an element in button scope">has a
27052: <code>p</code> element in button scope</a>, then act as if an
27053: end tag with the tag name "p" had been seen.</p> <!-- i hate
27054: myself (this quirk was basically caused by acid2; if i'd realised
27055: we could change the specs when i wrote acid2, we could have
27056: avoided having any parsing-mode quirks) -Hixie -->
27057:
27058: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27059:
27060: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27061:
27062: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>".</p>
27063:
27064: </dd>
27065:
27066: <dt>A start tag whose tag name is one of: "area", "br", "embed",
27067: "img", "keygen", "wbr"</dt>
27068: <dd>
27069:
27070: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27071: any.</p>
27072:
27073: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
27074: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27075: elements</a>.</p>
27076:
27077: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27078: token's <i>self-closing flag</i></a>, if it is set.</p>
27079:
27080: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27081: <!-- shouldn't really do this for <area> -->
27082:
27083: </dd>
27084:
27085: <dt>A start tag whose tag name is "input"</dt>
27086: <dd>
27087:
27088: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27089: any.</p>
27090:
27091: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
27092: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27093: elements</a>.</p>
27094:
27095: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27096: token's <i>self-closing flag</i></a>, if it is set.</p>
27097:
27098: <p>If the token does not have an attribute with the name "type",
27099: or if it does, but that attribute's value is not an <a href="infrastructure.html#ascii-case-insensitive">ASCII
27100: case-insensitive</a> match for the string "<code title="">hidden</code>", then: set the <a href="#frameset-ok-flag">frameset-ok
27101: flag</a> to "not ok".</p>
27102:
27103: </dd>
27104:
27105: <dt>A start tag whose tag name is one of: "param", "source", "track"</dt>
27106: <dd>
27107:
27108: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
27109: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27110: elements</a>.</p>
27111:
27112: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27113: token's <i>self-closing flag</i></a>, if it is set.</p>
27114:
27115: </dd>
27116:
27117: <dt>A start tag whose tag name is "hr"</dt>
27118: <dd>
27119:
27120: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
27121: an element in button scope">has a <code>p</code> element in button
27122: scope</a>, then act as if an end tag with the tag name
27123: "p" had been seen.</p>
27124:
27125: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
27126: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27127: elements</a>.</p>
27128:
27129: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27130: token's <i>self-closing flag</i></a>, if it is set.</p>
27131:
27132: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27133:
27134: </dd>
27135:
27136: <dt>A start tag whose tag name is "image"</dt>
27137: <dd>
27138: <p><a href="#parse-error">Parse error</a>. Change the token's tag name
27139: to "img" and reprocess it. (Don't ask.)</p> <!-- As of
27140: 2005-12, studies showed that around 0.2% of pages used the
27141: <image> element. -->
27142: </dd>
27143:
27144: <dt id="isindex">A start tag whose tag name is "isindex"</dt>
27145: <dd>
27146:
27147: <p><a href="#parse-error">Parse error</a>.</p>
27148:
27149: <p>If the <a href="#form-element-pointer"><code title="">form</code> element
27150: pointer</a> is not null, then ignore the token.</p>
27151:
27152: <p>Otherwise:</p>
27153:
27154: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27155: token's <i>self-closing flag</i></a>, if it is set.</p> <!--
27156: purely to reduce the number of errors (we don't care if they
27157: included the /, they're not supposed to be including the tag at
27158: all! -->
27159:
27160: <p>Act as if a start tag token with the tag name "form" had been seen.</p>
27161:
27162: <p>If the token has an attribute called "action", set the
27163: <code title="attr-fs-action"><a href="form-submission.html#attr-fs-action">action</a></code> attribute on the
27164: resulting <code><a href="the-form-element.html#the-form-element">form</a></code> element to the value of the
27165: "action" attribute of the token.</p>
27166:
27167: <p>Act as if a start tag token with the tag name "hr" had been
27168: seen.</p>
27169:
27170: <p>Act as if a start tag token with the tag name "label" had been
27171: seen.</p>
27172:
27173: <p>Act as if a stream of character tokens had been seen (see below
27174: for what they should say).</p>
27175:
27176: <p>Act as if a start tag token with the tag name "input" had been
27177: seen, with all the attributes from the "isindex" token except
27178: "name", "action", and "prompt". Set the <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code> attribute of the resulting
27179: <code><a href="the-input-element.html#the-input-element">input</a></code> element to the value "<code title="attr-fe-name-isindex"><a href="attributes-common-to-form-controls.html#attr-fe-name-isindex">isindex</a></code>".</p>
27180:
27181: <p>Act as if a stream of character tokens had been seen (see
27182: below for what they should say).</p>
27183:
27184: <p>Act as if an end tag token with the tag name "label" had been
27185: seen.</p>
27186:
27187: <p>Act as if a start tag token with the tag name "hr" had been
27188: seen.</p>
27189:
27190: <p>Act as if an end tag token with the tag name "form" had been
27191: seen.</p>
27192:
27193: <p>If the token has an attribute with the name "prompt", then the
27194: first stream of characters must be the same string as given in
27195: that attribute, and the second stream of characters must be
27196: empty. Otherwise, the two streams of character tokens together
27197: should, together with the <code><a href="the-input-element.html#the-input-element">input</a></code> element, express the
27198: equivalent of "This is a searchable index. Enter search keywords:
27199: (input field)" in the user's preferred language.</p>
27200:
27201: </dd>
27202:
27203: <dt>A start tag whose tag name is "textarea"</dt>
27204: <dd>
27205:
27206: <p>Run these steps:</p>
27207:
27208: <ol><li><p><a href="#insert-an-html-element">Insert an HTML element</a> for the
27209: token.</p></li>
27210:
27211: <li><p>If the next token is a "LF" (U+000A) character
27212: token, then ignore that token and move on to the next
27213: one. (Newlines at the start of <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements are
27214: ignored as an authoring convenience.)</p></li>
27215:
27216: <!-- see comment in <pre> start tag bit -->
27217:
27218: <li><p>Switch the tokenizer to the <a href="#rcdata-state">RCDATA
27219: state</a>.</p></li>
27220:
27221: <li><p>Let the <a href="#original-insertion-mode">original insertion mode</a> be the
27222: current <a href="#insertion-mode">insertion mode</a>.</p>
27223:
27224: </li><li><p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not
27225: ok".</p></li>
27226:
27227: <li><p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incdata" title="insertion mode: text">text</a>".</p></li>
27228:
27229: </ol></dd>
27230:
27231: <dt>A start tag whose tag name is "xmp"</dt>
27232: <dd>
27233:
27234: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-button-scope" title="has
27235: an element in button scope">has a <code>p</code> element in button
27236: scope</a>, then act as if an end tag with the tag name
27237: "p" had been seen.</p>
27238:
27239: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27240: any.</p>
27241:
27242: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27243:
27244: <p>Follow the <a href="#generic-raw-text-element-parsing-algorithm">generic raw text element parsing algorithm</a>.</p>
27245:
27246: </dd>
27247:
27248: <dt>A start tag whose tag name is "iframe"</dt>
27249: <dd>
27250:
27251: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27252:
27253: <p>Follow the <a href="#generic-raw-text-element-parsing-algorithm">generic raw text element parsing algorithm</a>.</p>
27254:
27255: </dd>
27256:
27257: <dt>A start tag whose tag name is "noembed"</dt>
27258: <dt>A start tag whose tag name is "noscript", if the <a href="#scripting-flag">scripting flag</a> is enabled</dt>
27259: <dd>
27260:
27261: <p>Follow the <a href="#generic-raw-text-element-parsing-algorithm">generic raw text element parsing algorithm</a>.</p>
27262:
27263: </dd>
27264:
27265: <dt>A start tag whose tag name is "select"</dt>
27266: <dd>
27267:
27268: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27269: any.</p>
27270:
27271: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27272:
27273: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
27274:
27275: <p>If the <a href="#insertion-mode">insertion mode</a> is one of "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>", "<a href="#parsing-main-incaption" title="insertion mode: in caption">in caption</a>", "<a href="#parsing-main-intbody" title="insertion mode: in table body">in table body</a>",
27276: "<a href="#parsing-main-intr" title="insertion mode: in row">in row</a>", or "<a href="#parsing-main-intd" title="insertion mode: in cell">in cell</a>", then switch the
27277: <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inselectintable" title="insertion mode: in
27278: select in table">in select in table</a>". Otherwise, switch the
27279: <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-inselect" title="insertion mode: in
27280: select">in select</a>".</p>
27281:
27282: </dd>
27283:
27284: <dt>A start tag whose tag name is one of: "optgroup", "option"</dt>
27285: <dd>
27286:
27287: <p>If the <a href="#current-node">current node</a> is an <code><a href="the-option-element.html#the-option-element">option</a></code>
27288: element, then act as if an end tag with the tag name "option" had
27289: been seen.</p>
27290:
27291: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27292: any.</p>
27293:
27294: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27295:
27296: </dd>
27297:
27298: <dt>A start tag whose tag name is one of: "rp", "rt"</dt>
27299: <dd>
27300:
27301: <!-- the parsing rules for ruby really don't match IE much at all,
27302: but in practice the markup used is very simple and so strict
27303: compatibility with IE isn't required. For example, as defined
27304: here we get very, very different behaviour than IE for
27305: pathological cases like:
27306:
27307: <ruby><ol><li><p>a<rt>b
27308: <ruby>a<rt>b<p>c
27309:
27310: But in practice most ruby markup falls into these cases:
27311:
27312: <ruby>a<rt>b</ruby>
27313: <ruby>a<rp>b<rt>c<rp>d</ruby>
27314: <ruby>a<rt>b</rt></ruby>
27315: <ruby>a<rp>b</rp><rt>c</rt><rp>d</rp></ruby>
27316:
27317: (Note: the comment above was written when this section did
27318: something slightly more radical for handling <rp> and <rt>
27319: elements, so it might be out of date now.)
27320:
27321: -->
27322:
27323: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-scope" title="has an
27324: element in scope">has a <code>ruby</code> element in scope</a>,
27325: then <a href="#generate-implied-end-tags">generate implied end tags</a>. If the <a href="#current-node">current
27326: node</a> is not then a <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code> element, this is a
27327: <a href="#parse-error">parse error</a>.</p>
27328:
27329: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27330:
27331: </dd>
27332:
27333: <dt>An end tag whose tag name is "br"</dt>
27334: <dd>
27335: <p><a href="#parse-error">Parse error</a>. Act as if a start tag token with
27336: the tag name "br" had been seen. Ignore the end tag token.</p>
27337: </dd>
27338:
27339: <dt>A start tag whose tag name is "math"</dt>
27340: <dd>
27341:
27342: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27343: any.</p>
27344:
27345: <p><a href="#adjust-mathml-attributes">Adjust MathML attributes</a> for the token. (This
27346: fixes the case of MathML attributes that are not all
27347: lowercase.)</p>
27348:
27349: <p><a href="#adjust-foreign-attributes">Adjust foreign attributes</a> for the token. (This
27350: fixes the use of namespaced attributes, in particular XLink.)</p>
27351:
27352: <p><a href="#insert-a-foreign-element">Insert a foreign element</a> for the token, in the
27353: <a href="namespaces.html#mathml-namespace">MathML namespace</a>.</p>
27354:
27355: <!-- If we ever change the frameset-ok flag to an insertion mode,
27356: the following change would be implied, except we'd have to do it
27357: even in the face of a self-closed tag:
27358: <p>Set the <span>frameset-ok flag</span> to "not ok".</p>
27359: -->
27360:
27361: <p>If the token has its <i>self-closing flag</i> set, pop the
27362: <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27363: elements</a> and <a href="#acknowledge-self-closing-flag" title="acknowledge self-closing
27364: flag">acknowledge the token's <i>self-closing flag</i></a>.</p>
27365:
27366: </dd>
27367:
27368: <dt>A start tag whose tag name is "svg"</dt>
27369: <dd>
27370:
27371: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27372: any.</p>
27373:
27374: <p><a href="#adjust-svg-attributes">Adjust SVG attributes</a> for the token. (This fixes
27375: the case of SVG attributes that are not all lowercase.)</p>
27376:
27377: <p><a href="#adjust-foreign-attributes">Adjust foreign attributes</a> for the token. (This
27378: fixes the use of namespaced attributes, in particular XLink in
27379: SVG.)</p>
27380:
27381: <p><a href="#insert-a-foreign-element">Insert a foreign element</a> for the token, in the
27382: <a href="namespaces.html#svg-namespace">SVG namespace</a>.</p>
27383:
27384: <!-- If we ever change the frameset-ok flag to an insertion mode,
27385: the following change would be implied, except we'd have to do it
27386: even in the face of a self-closed tag:
27387: <p>Set the <span>frameset-ok flag</span> to "not ok".</p>
27388: -->
27389:
27390: <p>If the token has its <i>self-closing flag</i> set, pop the
27391: <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27392: elements</a> and <a href="#acknowledge-self-closing-flag" title="acknowledge self-closing
27393: flag">acknowledge the token's <i>self-closing flag</i></a>.</p>
27394:
27395: </dd>
27396:
27397: <dt>A start <!--or end--> tag whose tag name is one of: "caption",
27398: "col", "colgroup", "frame", "head", "tbody", "td", "tfoot", "th",
27399: "thead", "tr"</dt>
27400: <!--<dt>An end tag whose tag name is one of: "area", "base",
27401: "basefont", "bgsound", "command", "embed", "hr", "iframe", "image",
27402: "img", "input", "isindex", "keygen", "link", "meta", "noembed",
27403: "noframes", "param", "script", "select", "source", "style",
27404: "table", "textarea", "title", "track", "wbr"</dt>-->
27405: <!--<dt>An end tag whose tag name is "noscript", if the
27406: <span>scripting flag</span> is enabled</dt>-->
27407: <dd>
27408: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27409: <!-- end tags are commented out because since they can never end
27410: up on the stack anyway, the default end tag clause will
27411: automatically handle them. we don't want to have text in the spec
27412: that is just an optimisation, as that detracts from the spec
27413: itself -->
27414: </dd>
27415:
27416: <dt>Any other start tag</dt>
27417: <dd>
27418:
27419: <p><a href="#reconstruct-the-active-formatting-elements">Reconstruct the active formatting elements</a>, if
27420: any.</p>
27421:
27422: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27423:
27424: <p class="note">This element will be an <a href="#ordinary">ordinary</a>
27425: element.</p>
27426:
27427: </dd>
27428:
27429: <dt>Any other end tag</dt>
27430: <dd>
27431:
27432: <p>Run these steps:</p>
27433:
27434: <ol><li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
27435: node</a> (the bottommost node of the stack).</p></li>
27436:
27437: <li><p><i>Loop</i>: If <var title="">node</var> has the same tag
27438: name as the token, then:</p>
27439:
27440: <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>, except
27441: for elements with the same tag name as the token.</p></li>
27442:
27443: <li><p>If the tag name of the end tag token does not match
27444: the tag name of the <a href="#current-node">current node</a>, this is a
27445: <a href="#parse-error">parse error</a>.</p></li>
27446:
27447: <li><p>Pop all the nodes from the <a href="#current-node">current node</a> up
27448: to <var title="">node</var>, including <var title="">node</var>, then stop these steps.</p></li>
27449:
27450: </ol></li>
27451:
27452: <li><p>Otherwise, if <var title="">node</var> is in the
27453: <a href="#special">special</a> category, then this is a <a href="#parse-error">parse
27454: error</a>; ignore the token, and abort these steps.</p></li>
27455:
27456: <li><p>Set <var title="">node</var> to the previous entry in the
27457: <a href="#stack-of-open-elements">stack of open elements</a>.</p></li>
27458:
27459: <li><p>Return to the step labeled <i>loop</i>.</p></li>
27460:
27461: </ol></dd>
27462:
27463: </dl><h6 id="parsing-main-incdata"><span class="secno">8.2.5.4.8 </span>The "<dfn title="insertion mode: text">text</dfn>" insertion mode</h6>
27464:
27465: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-incdata" title="insertion mode: text">text</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
27466:
27467: <dl class="switch"><dt>A character token</dt>
27468: <dd>
27469:
27470: <p><a href="#insert-a-character" title="insert a character">Insert the token's
27471: character</a> into the <a href="#current-node">current node</a>.</p>
27472:
27473: <p class="note">This can never be a U+0000 NULL character; the
27474: tokenizer converts those to U+FFFD REPLACEMENT CHARACTER
27475: characters.</p>
27476:
27477: </dd>
27478:
27479: <dt>An end-of-file token</dt>
27480: <dd>
27481:
27482: <!-- can't be the fragment case -->
27483: <p><a href="#parse-error">Parse error</a>.</p>
27484:
27485: <p>If the <a href="#current-node">current node</a> is a <code><a href="the-script-element.html#the-script-element">script</a></code>
27486: element, mark the <code><a href="the-script-element.html#the-script-element">script</a></code> element as <a href="the-script-element.html#already-started">"already
27487: started"</a>.</p>
27488:
27489: <p>Pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27490: elements</a>.</p>
27491:
27492: <p>Switch the <a href="#insertion-mode">insertion mode</a> to the <a href="#original-insertion-mode">original
27493: insertion mode</a> and reprocess the current token.</p>
27494:
27495: </dd>
27496:
27497: <dt id="scriptEndTag">An end tag whose tag name is "script"</dt>
27498: <dd>
27499:
27500: <p><a href="#provide-a-stable-state">Provide a stable state</a>.</p>
27501:
27502: <p>Let <var title="">script</var> be the <a href="#current-node">current node</a>
27503: (which will be a <code><a href="the-script-element.html#the-script-element">script</a></code> element).</p>
27504:
27505: <p>Pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27506: elements</a>.</p>
27507:
27508: <p>Switch the <a href="#insertion-mode">insertion mode</a> to the <a href="#original-insertion-mode">original
27509: insertion mode</a>.</p>
27510:
27511: <p>Let the <var title="">old insertion point</var> have the
27512: same value as the current <a href="#insertion-point">insertion point</a>. Let
27513: the <a href="#insertion-point">insertion point</a> be just before the <a href="#next-input-character">next
27514: input character</a>.</p>
27515:
27516: <p>Increment the parser's <a href="#script-nesting-level">script nesting level</a> by
27517: one.</p>
27518:
27519: <p><a href="the-script-element.html#prepare-a-script" title="prepare a script">Prepare</a> the <var title="">script</var>. This might cause some script to execute,
27520: which might cause <a href="dynamic-markup-insertion.html#dom-document-write" title="dom-document-write">new characters
27521: to be inserted into the tokenizer</a>, and might cause the
27522: tokenizer to output more tokens, resulting in a <a href="#nestedParsing">reentrant invocation of the parser</a>.</p>
27523:
27524: <p>Decrement the parser's <a href="#script-nesting-level">script nesting level</a> by
27525: one. If the parser's <a href="#script-nesting-level">script nesting level</a> is zero,
27526: then set the <a href="#parser-pause-flag">parser pause flag</a> to false.</p>
27527:
27528: <p>Let the <a href="#insertion-point">insertion point</a> have the value of the <var title="">old insertion point</var>. (In other words, restore the
27529: <a href="#insertion-point">insertion point</a> to its previous value. This value
27530: might be the "undefined" value.)</p>
27531:
27532: <p id="scriptTagParserResumes">At this stage, if there is a
27533: <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking script</a>, then:</p>
27534:
27535: <dl class="switch"><dt>If the <a href="#script-nesting-level">script nesting level</a> is not zero:</dt>
27536:
27537: <dd>
27538:
27539: <p>Set the <a href="#parser-pause-flag">parser pause flag</a> to true, and abort the
27540: processing of any nested invocations of the tokenizer, yielding
27541: control back to the caller. (Tokenization will resume when the
27542: caller returns to the "outer" tree construction stage.)</p>
27543:
27544: <p class="note">The tree construction stage of this particular
27545: parser is <a href="#nestedParsing">being called reentrantly</a>,
27546: say from a call to <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code>.</p>
27547:
27548: </dd>
27549:
27550:
27551: <dt>Otherwise:</dt>
27552:
27553: <dd>
27554:
27555: <p>Run these steps:</p>
27556:
27557: <ol><li><p>Let <var title="">the script</var> be the <a href="the-script-element.html#pending-parsing-blocking-script">pending
27558: parsing-blocking script</a>. There is no longer a <a href="the-script-element.html#pending-parsing-blocking-script">pending
27559: parsing-blocking script</a>.</p></li>
27560:
27561: <li><p>Block the <a href="#tokenization" title="tokenization">tokenizer</a>
27562: for this instance of the <a href="#html-parser">HTML parser</a>, such that
27563: the <a href="#event-loop">event loop</a> will not run <a href="#concept-task" title="concept-task">tasks</a> that invoke the <a href="#tokenization" title="tokenization">tokenizer</a>.</p></li>
27564:
27565: <li><p>If the parser's <code><a href="dom.html#document">Document</a></code> <a href="styling.html#has-a-style-sheet-that-is-blocking-scripts">has a style
27566: sheet that is blocking scripts</a> or <var title="">the
27567: script</var>'s <a href="the-script-element.html#ready-to-be-parser-executed">"ready to be parser-executed"</a> flag
27568: is not set: <a href="#spin-the-event-loop">spin the event loop</a> until the parser's
27569: <code><a href="dom.html#document">Document</a></code> <a href="styling.html#has-no-style-sheet-that-is-blocking-scripts">has no style sheet that is blocking
27570: scripts</a> and <var title="">the script</var>'s
27571: <a href="the-script-element.html#ready-to-be-parser-executed">"ready to be parser-executed"</a> flag is
27572: set.</p></li>
27573:
27574: <li><p>Unblock the <a href="#tokenization" title="tokenization">tokenizer</a>
27575: for this instance of the <a href="#html-parser">HTML parser</a>, such that
27576: <a href="#concept-task" title="concept-task">tasks</a> that invoke the <a href="#tokenization" title="tokenization">tokenizer</a> can again be
27577: run.</p></li>
27578:
27579: <li><p>Let the <a href="#insertion-point">insertion point</a> be just before the
27580: <a href="#next-input-character">next input character</a>.</p></li>
27581:
27582: <li><p>Increment the parser's <a href="#script-nesting-level">script nesting level</a>
27583: by one (it should be zero before this step, so this sets it to
27584: one).</p></li>
27585:
27586: <li><p><a href="the-script-element.html#execute-the-script-block" title="execute the script block">Execute</a>
27587: <var title="">the script</var>.</p></li>
27588:
27589: <li><p>Decrement the parser's <a href="#script-nesting-level">script nesting level</a>
27590: by one. If the parser's <a href="#script-nesting-level">script nesting level</a> is
27591: zero (which it always should be at this point), then set the
27592: <a href="#parser-pause-flag">parser pause flag</a> to false.</p>
27593:
27594: </li><li><p>Let the <a href="#insertion-point">insertion point</a> be undefined
27595: again.</p></li>
27596:
27597: <li><p>If there is once again a <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking
27598: script</a>, then repeat these steps from step 1.</p></li>
27599:
27600: </ol></dd>
27601:
27602: </dl></dd>
27603:
27604: <dt>Any other end tag</dt>
27605: <dd>
27606:
27607: <p>Pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27608: elements</a>.</p>
27609:
27610: <p>Switch the <a href="#insertion-mode">insertion mode</a> to the <a href="#original-insertion-mode">original
27611: insertion mode</a>.</p>
27612:
27613: </dd>
27614:
27615: </dl><h6 id="parsing-main-intable"><span class="secno">8.2.5.4.9 </span>The "<dfn title="insertion mode: in table">in table</dfn>" insertion mode</h6>
27616:
27617: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
27618:
27619: <dl class="switch"><dt>A character token, if the <a href="#current-node">current node</a> is <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element</dt>
27620: <dd>
27621:
27622: <p>Let the <dfn id="pending-table-character-tokens"><var>pending table character tokens</var></dfn>
27623: be an empty list of tokens.</p>
27624:
27625: <p>Let the <a href="#original-insertion-mode">original insertion mode</a> be the current
27626: <a href="#insertion-mode">insertion mode</a>.</p>
27627:
27628: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intabletext" title="insertion mode: in table text">in table text</a>" and
27629: reprocess the token.</p>
27630:
27631: </dd>
27632:
27633: <dt>A comment token</dt>
27634: <dd>
27635: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
27636: node</a> with the <code title="">data</code> attribute set to
27637: the data given in the comment token.</p>
27638: </dd>
27639:
27640: <dt>A DOCTYPE token</dt>
27641: <dd>
27642: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27643: </dd>
27644:
27645: <dt>A start tag whose tag name is "caption"</dt>
27646: <dd>
27647:
27648: <p><a href="#clear-the-stack-back-to-a-table-context">Clear the stack back to a table context</a>. (See
27649: below.)</p>
27650:
27651: <p>Insert a marker at the end of the <a href="#list-of-active-formatting-elements">list of active
27652: formatting elements</a>.</p>
27653:
27654: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, then
27655: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incaption" title="insertion mode: in caption">in caption</a>".</p>
27656:
27657: </dd>
27658:
27659: <dt>A start tag whose tag name is "colgroup"</dt>
27660: <dd>
27661:
27662: <p><a href="#clear-the-stack-back-to-a-table-context">Clear the stack back to a table context</a>. (See
27663: below.)</p>
27664:
27665: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, then
27666: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-incolgroup" title="insertion mode: in column group">in column
27667: group</a>".</p>
27668:
27669: </dd>
27670:
27671: <dt>A start tag whose tag name is "col"</dt>
27672: <dd>
27673: <p>Act as if a start tag token with the tag name "colgroup"
27674: had been seen, then reprocess the current token.</p>
27675: </dd>
27676:
27677: <dt>A start tag whose tag name is one of: "tbody", "tfoot", "thead"</dt>
27678: <dd>
27679:
27680: <p><a href="#clear-the-stack-back-to-a-table-context">Clear the stack back to a table context</a>. (See
27681: below.)</p>
27682:
27683: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, then
27684: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intbody" title="insertion mode: in table body">in table
27685: body</a>".</p>
27686:
27687: </dd>
27688:
27689: <dt>A start tag whose tag name is one of: "td", "th", "tr"</dt>
27690: <dd>
27691: <p>Act as if a start tag token with the tag name "tbody" had
27692: been seen, then reprocess the current token.</p>
27693: </dd>
27694:
27695: <dt>A start tag whose tag name is "table"</dt>
27696: <dd>
27697:
27698: <p><a href="#parse-error">Parse error</a>. Act as if an end tag token with
27699: the tag name "table" had been seen, then, if that token wasn't
27700: ignored, reprocess the current token.</p>
27701:
27702: <p class="note">The fake end tag token here can only be
27703: ignored in the <a href="#fragment-case">fragment case</a>.</p>
27704:
27705: </dd>
27706:
27707: <dt>An end tag whose tag name is "table"</dt>
27708: <dd>
27709:
27710: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
27711: scope</a> with the same tag name as the token, this is a
27712: <a href="#parse-error">parse error</a>. Ignore the token. (<a href="#fragment-case">fragment
27713: case</a>)</p>
27714:
27715: <p>Otherwise:</p>
27716:
27717: <p>Pop elements from this stack until a <code><a href="the-table-element.html#the-table-element">table</a></code>
27718: element has been popped from the stack.</p>
27719:
27720: <p><a href="#reset-the-insertion-mode-appropriately">Reset the insertion mode appropriately</a>.</p>
27721:
27722: </dd>
27723:
27724: <dt>An end tag whose tag name is one of: "body", "caption",
27725: "col", "colgroup", "html", "tbody", "td", "tfoot", "th",
27726: "thead", "tr"</dt>
27727: <dd>
27728: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27729: </dd>
27730:
27731: <dt>A start tag whose tag name is one of: "style", "script"</dt>
27732: <dd>
27733:
27734: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
27735: mode</a>.</p>
27736:
27737: </dd>
27738:
27739: <dt>A start tag whose tag name is "input"</dt>
27740: <dd>
27741:
27742: <p>If the token does not have an attribute with the name "type",
27743: or if it does, but that attribute's value is not an <a href="infrastructure.html#ascii-case-insensitive">ASCII
27744: case-insensitive</a> match for the string "<code title="">hidden</code>", then: act as described in the "anything
27745: else" entry below.</p>
27746:
27747: <p>Otherwise:</p>
27748:
27749: <p><a href="#parse-error">Parse error</a>.</p>
27750:
27751: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
27752:
27753: <p>Pop that <code><a href="the-input-element.html#the-input-element">input</a></code> element off the <a href="#stack-of-open-elements">stack of
27754: open elements</a>.</p>
27755:
27756: </dd>
27757:
27758: <dt>A start tag whose tag name is "form"</dt>
27759: <dd>
27760:
27761: <p><a href="#parse-error">Parse error</a>.</p>
27762:
27763: <p>If the <a href="#form-element-pointer"><code title="form">form</code> element
27764: pointer</a> is not null, ignore the token.</p>
27765:
27766: <p>Otherwise:</p>
27767:
27768: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, and set the
27769: <a href="#form-element-pointer"><code title="form">form</code> element pointer</a> to
27770: point to the element created.</p>
27771:
27772: <p>Pop that <code><a href="the-form-element.html#the-form-element">form</a></code> element off the <a href="#stack-of-open-elements">stack of
27773: open elements</a>.</p>
27774:
27775: </dd>
27776:
27777: <!-- "form" end tag falls through to in-body, which does the right thing -->
27778:
27779: <dt>An end-of-file token</dt>
27780: <dd>
27781:
27782: <p>If the <a href="#current-node">current node</a> is not the root
27783: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
27784: error</a>.</p>
27785:
27786: <p class="note">The <a href="#current-node">current node</a> can only be the root
27787: <code><a href="the-html-element.html#the-html-element">html</a></code> element in the <a href="#fragment-case">fragment case</a>.</p>
27788:
27789: <p><a href="#stop-parsing">Stop parsing</a>.</p>
27790:
27791: </dd>
27792:
27793: <dt>Anything else</dt>
27794: <dd>
27795:
27796: <p><a href="#parse-error">Parse error</a>. Process the token <a href="#using-the-rules-for">using the
27797: rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in
27798: body</a>" <a href="#insertion-mode">insertion mode</a>, except that whenever a
27799: node would be inserted into the <a href="#current-node">current node</a> when the
27800: <a href="#current-node">current node</a> is a <code><a href="the-table-element.html#the-table-element">table</a></code>,
27801: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or
27802: <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element, then it must instead be <a href="#foster-parent" title="foster parent">foster parented</a>.</p>
27803:
27804: </dd>
27805:
27806: </dl><p>When the steps above require the UA to <dfn id="clear-the-stack-back-to-a-table-context">clear the stack
27807: back to a table context</dfn>, it means that the UA must, while
27808: the <a href="#current-node">current node</a> is not a <code><a href="the-table-element.html#the-table-element">table</a></code>
27809: element or an <code><a href="the-html-element.html#the-html-element">html</a></code> element, pop elements from the
27810: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
27811:
27812: <p class="note">The <a href="#current-node">current node</a> being an
27813: <code><a href="the-html-element.html#the-html-element">html</a></code> element after this process is a <a href="#fragment-case">fragment
27814: case</a>.</p>
27815:
27816:
27817:
27818: <h6 id="parsing-main-intabletext"><span class="secno">8.2.5.4.10 </span>The "<dfn title="insertion mode: in table text">in table text</dfn>" insertion mode</h6>
27819:
27820: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-intabletext" title="insertion mode: in table text">in table text</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
27821:
27822: <dl class="switch"><dt>A character token that is U+0000 NULL</dt>
27823: <dd>
27824:
27825: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27826:
27827: </dd>
27828:
27829:
27830: <dt>Any other character token</dt>
27831: <dd>
27832:
27833: <p>Append the character token to the <var><a href="#pending-table-character-tokens">pending table character
27834: tokens</a></var> list.</p>
27835:
27836: </dd>
27837:
27838:
27839: <dt>Anything else</dt>
27840: <dd>
27841:
27842: <!-- this can only be called if the current node is one of the
27843: table model elements -->
27844:
27845: <p>If any of the tokens in the <var><a href="#pending-table-character-tokens">pending table character
27846: tokens</a></var> list are character tokens that are not <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a>, then reprocess
27847: the character tokens in the <var><a href="#pending-table-character-tokens">pending table character
27848: tokens</a></var> list using the rules given in the "anything else"
27849: entry in the "<a href="#parsing-main-intable" title="insertion mode: in table">in
27850: table</a>" insertion mode.</p>
27851:
27852: <!-- if there's active formatting elements, it'll recreate those
27853: and foster parent the top one and then put the text nodes in the
27854: formatting elements; otherwise, it'll foster parent the character
27855: tokens. -->
27856:
27857: <p>Otherwise, <a href="#insert-a-character" title="insert a character">insert the
27858: characters</a> given by the <var><a href="#pending-table-character-tokens">pending table character
27859: tokens</a></var> list into the <a href="#current-node">current node</a>.</p> <!--
27860: i.e. inter-element whitespace in the table model isn't foster
27861: parented -->
27862:
27863: <!-- no need to empty the list, we're leaving the insertion mode
27864: and the list is always emptied before we reenter the mode -->
27865:
27866: <p>Switch the <a href="#insertion-mode">insertion mode</a> to the <a href="#original-insertion-mode">original
27867: insertion mode</a> and reprocess the token.</p>
27868:
27869: </dd>
27870:
27871: </dl><h6 id="parsing-main-incaption"><span class="secno">8.2.5.4.11 </span>The "<dfn title="insertion mode: in caption">in caption</dfn>" insertion mode</h6>
27872:
27873: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-incaption" title="insertion mode: in caption">in caption</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
27874:
27875: <dl class="switch"><dt>An end tag whose tag name is "caption"</dt>
27876: <dd>
27877:
27878: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
27879: scope</a> with the same tag name as the token, this is a
27880: <a href="#parse-error">parse error</a>. Ignore the token. (<a href="#fragment-case">fragment
27881: case</a>)</p>
27882:
27883: <p>Otherwise:</p>
27884:
27885: <p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p>
27886:
27887: <p>Now, if the <a href="#current-node">current node</a> is not a
27888: <code><a href="the-caption-element.html#the-caption-element">caption</a></code> element, then this is a <a href="#parse-error">parse
27889: error</a>.</p>
27890:
27891: <p>Pop elements from this stack until a <code><a href="the-caption-element.html#the-caption-element">caption</a></code>
27892: element has been popped from the stack.</p>
27893:
27894: <p><a href="#clear-the-list-of-active-formatting-elements-up-to-the-last-marker">Clear the list of active formatting elements up to
27895: the last marker</a>.</p>
27896:
27897: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>".</p>
27898:
27899: </dd>
27900:
27901: <dt>A start tag whose tag name is one of: "caption", "col",
27902: "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr"</dt>
27903: <dt>An end tag whose tag name is "table"</dt>
27904: <dd>
27905:
27906: <p><a href="#parse-error">Parse error</a>. Act as if an end tag with the tag
27907: name "caption" had been seen, then, if that token wasn't
27908: ignored, reprocess the current token.</p>
27909:
27910: <p class="note">The fake end tag token here can only be
27911: ignored in the <a href="#fragment-case">fragment case</a>.</p>
27912:
27913: </dd>
27914:
27915: <dt>An end tag whose tag name is one of: "body", "col",
27916: "colgroup", "html", "tbody", "td", "tfoot", "th", "thead",
27917: "tr"</dt>
27918: <dd>
27919: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27920: </dd>
27921:
27922: <dt>Anything else</dt>
27923: <dd>
27924: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
27925: mode</a>.</p>
27926: </dd>
27927:
27928: </dl><h6 id="parsing-main-incolgroup"><span class="secno">8.2.5.4.12 </span>The "<dfn title="insertion mode: in column group">in column group</dfn>" insertion mode</h6>
27929:
27930: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-incolgroup" title="insertion mode: in column group">in column group</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
27931:
27932: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
27933: TABULATION, "LF" (U+000A), "FF" (U+000C),
27934: "CR" (U+000D), or U+0020 SPACE</dt>
27935: <dd>
27936: <p><a href="#insert-a-character" title="insert a character">Insert the character</a> into
27937: the <a href="#current-node">current node</a>.</p>
27938: </dd>
27939:
27940: <dt>A comment token</dt>
27941: <dd>
27942: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
27943: node</a> with the <code title="">data</code> attribute set to
27944: the data given in the comment token.</p>
27945: </dd>
27946:
27947: <dt>A DOCTYPE token</dt>
27948: <dd>
27949: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27950: </dd>
27951:
27952: <dt>A start tag whose tag name is "html"</dt>
27953: <dd>
27954: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
27955: mode</a>.</p>
27956: </dd>
27957:
27958: <dt>A start tag whose tag name is "col"</dt>
27959: <dd>
27960:
27961: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token. Immediately
27962: pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
27963: elements</a>.</p>
27964:
27965: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
27966: token's <i>self-closing flag</i></a>, if it is set.</p>
27967:
27968: </dd>
27969:
27970: <dt>An end tag whose tag name is "colgroup"</dt>
27971: <dd>
27972:
27973: <p>If the <a href="#current-node">current node</a> is the root
27974: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
27975: error</a>; ignore the token. (<a href="#fragment-case">fragment
27976: case</a>)</p>
27977:
27978: <p>Otherwise, pop the <a href="#current-node">current node</a> (which will be
27979: a <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element) from the <a href="#stack-of-open-elements">stack of open
27980: elements</a>. Switch the <a href="#insertion-mode">insertion mode</a> to
27981: "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>".</p>
27982:
27983: </dd>
27984:
27985: <dt>An end tag whose tag name is "col"</dt>
27986: <dd>
27987: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
27988: </dd>
27989:
27990: <dt>An end-of-file token</dt>
27991: <dd>
27992:
27993: <p>If the <a href="#current-node">current node</a> is the root <code><a href="the-html-element.html#the-html-element">html</a></code>
27994: element, then <a href="#stop-parsing">stop parsing</a>. (<a href="#fragment-case">fragment
27995: case</a>)</p>
27996:
27997: <p>Otherwise, act as described in the "anything else" entry
27998: below.</p>
27999:
28000: </dd>
28001:
28002: <dt>Anything else</dt>
28003: <dd>
28004:
28005: <p>Act as if an end tag with the tag name "colgroup" had been
28006: seen, and then, if that token wasn't ignored, reprocess the
28007: current token.</p>
28008:
28009: <p class="note">The fake end tag token here can only be
28010: ignored in the <a href="#fragment-case">fragment case</a>.</p>
28011:
28012: </dd>
28013:
28014: </dl><h6 id="parsing-main-intbody"><span class="secno">8.2.5.4.13 </span>The "<dfn title="insertion mode: in table body">in table body</dfn>" insertion mode</h6>
28015:
28016: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-intbody" title="insertion mode: in table body">in table body</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28017:
28018: <dl class="switch"><dt>A start tag whose tag name is "tr"</dt>
28019: <dd>
28020:
28021: <p><a href="#clear-the-stack-back-to-a-table-body-context">Clear the stack back to a table body
28022: context</a>. (See below.)</p>
28023:
28024: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, then switch
28025: the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intr" title="insertion mode:
28026: in row">in row</a>".</p>
28027:
28028: </dd>
28029:
28030: <dt>A start tag whose tag name is one of: "th", "td"</dt>
28031: <dd>
28032: <p><a href="#parse-error">Parse error</a>. Act as if a start tag with
28033: the tag name "tr" had been seen, then reprocess the current
28034: token.</p>
28035: </dd>
28036:
28037: <dt>An end tag whose tag name is one of: "tbody", "tfoot",
28038: "thead"</dt>
28039: <dd>
28040:
28041: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
28042: scope</a> with the same tag name as the token, this is a
28043: <a href="#parse-error">parse error</a>. Ignore the token.</p>
28044:
28045: <p>Otherwise:</p>
28046:
28047: <p><a href="#clear-the-stack-back-to-a-table-body-context">Clear the stack back to a table body
28048: context</a>. (See below.)</p>
28049:
28050: <p>Pop the <a href="#current-node">current node</a> from the <a href="#stack-of-open-elements">stack of
28051: open elements</a>. Switch the <a href="#insertion-mode">insertion mode</a>
28052: to "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>".</p>
28053:
28054: </dd>
28055:
28056: <dt>A start tag whose tag name is one of: "caption", "col",
28057: "colgroup", "tbody", "tfoot", "thead"</dt>
28058: <dt>An end tag whose tag name is "table"</dt>
28059: <dd>
28060:
28061: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have a
28062: <code>tbody</code>, <code>thead</code>, or <code>tfoot</code>
28063: element in table scope</a>, this is a <a href="#parse-error">parse
28064: error</a>. Ignore the token. (<a href="#fragment-case">fragment
28065: case</a>)</p>
28066:
28067: <p>Otherwise:</p>
28068:
28069: <p><a href="#clear-the-stack-back-to-a-table-body-context">Clear the stack back to a table body
28070: context</a>. (See below.)</p>
28071:
28072: <p>Act as if an end tag with the same tag name as the
28073: <a href="#current-node">current node</a> ("tbody", "tfoot", or "thead") had
28074: been seen, then reprocess the current token.</p>
28075:
28076: </dd>
28077:
28078: <dt>An end tag whose tag name is one of: "body", "caption",
28079: "col", "colgroup", "html", "td", "th", "tr"</dt>
28080: <dd>
28081: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28082: </dd>
28083:
28084: <dt>Anything else</dt>
28085: <dd>
28086: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>" <a href="#insertion-mode">insertion
28087: mode</a>.</p>
28088: </dd>
28089:
28090: </dl><p>When the steps above require the UA to <dfn id="clear-the-stack-back-to-a-table-body-context">clear the stack
28091: back to a table body context</dfn>, it means that the UA must,
28092: while the <a href="#current-node">current node</a> is not a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
28093: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, or <code><a href="the-html-element.html#the-html-element">html</a></code>
28094: element, pop elements from the <a href="#stack-of-open-elements">stack of open
28095: elements</a>.</p>
28096:
28097: <p class="note">The <a href="#current-node">current node</a> being an
28098: <code><a href="the-html-element.html#the-html-element">html</a></code> element after this process is a <a href="#fragment-case">fragment
28099: case</a>.</p>
28100:
28101:
28102: <h6 id="parsing-main-intr"><span class="secno">8.2.5.4.14 </span>The "<dfn title="insertion mode: in row">in row</dfn>" insertion mode</h6>
28103:
28104: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-intr" title="insertion mode: in row">in row</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28105:
28106: <dl class="switch"><dt>A start tag whose tag name is one of: "th", "td"</dt>
28107: <dd>
28108:
28109: <p><a href="#clear-the-stack-back-to-a-table-row-context">Clear the stack back to a table row
28110: context</a>. (See below.)</p>
28111:
28112: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token, then switch
28113: the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intd" title="insertion mode:
28114: in cell">in cell</a>".</p>
28115:
28116: <p>Insert a marker at the end of the <a href="#list-of-active-formatting-elements">list of active
28117: formatting elements</a>.</p>
28118:
28119: </dd>
28120:
28121: <dt>An end tag whose tag name is "tr"</dt>
28122: <dd>
28123:
28124: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
28125: scope</a> with the same tag name as the token, this is a
28126: <a href="#parse-error">parse error</a>. Ignore the token. (<a href="#fragment-case">fragment
28127: case</a>)</p>
28128:
28129: <p>Otherwise:</p>
28130:
28131: <p><a href="#clear-the-stack-back-to-a-table-row-context">Clear the stack back to a table row
28132: context</a>. (See below.)</p>
28133:
28134: <p>Pop the <a href="#current-node">current node</a> (which will be a
28135: <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element) from the <a href="#stack-of-open-elements">stack of open
28136: elements</a>. Switch the <a href="#insertion-mode">insertion mode</a> to
28137: "<a href="#parsing-main-intbody" title="insertion mode: in table body">in table
28138: body</a>".</p>
28139:
28140: </dd>
28141:
28142: <dt>A start tag whose tag name is one of: "caption", "col",
28143: "colgroup", "tbody", "tfoot", "thead", "tr"</dt>
28144: <dt>An end tag whose tag name is "table"</dt>
28145: <dd>
28146:
28147: <p>Act as if an end tag with the tag name "tr" had been seen,
28148: then, if that token wasn't ignored, reprocess the current
28149: token.</p>
28150:
28151: <p class="note">The fake end tag token here can only be
28152: ignored in the <a href="#fragment-case">fragment case</a>.</p>
28153:
28154: </dd>
28155:
28156: <dt>An end tag whose tag name is one of: "tbody", "tfoot",
28157: "thead"</dt>
28158: <dd>
28159:
28160: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
28161: scope</a> with the same tag name as the token, this is a
28162: <a href="#parse-error">parse error</a>. Ignore the token.</p>
28163:
28164: <p>Otherwise, act as if an end tag with the tag name "tr" had
28165: been seen, then reprocess the current token.</p>
28166:
28167: </dd>
28168:
28169: <dt>An end tag whose tag name is one of: "body", "caption",
28170: "col", "colgroup", "html", "td", "th"</dt>
28171: <dd>
28172: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28173: </dd>
28174:
28175: <dt>Anything else</dt>
28176: <dd>
28177: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>" <a href="#insertion-mode">insertion
28178: mode</a>.</p>
28179: </dd>
28180:
28181: </dl><p>When the steps above require the UA to <dfn id="clear-the-stack-back-to-a-table-row-context">clear the stack
28182: back to a table row context</dfn>, it means that the UA must,
28183: while the <a href="#current-node">current node</a> is not a <code><a href="the-tr-element.html#the-tr-element">tr</a></code>
28184: element or an <code><a href="the-html-element.html#the-html-element">html</a></code> element, pop elements from the
28185: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
28186:
28187: <p class="note">The <a href="#current-node">current node</a> being an
28188: <code><a href="the-html-element.html#the-html-element">html</a></code> element after this process is a <a href="#fragment-case">fragment
28189: case</a>.</p>
28190:
28191:
28192: <h6 id="parsing-main-intd"><span class="secno">8.2.5.4.15 </span>The "<dfn title="insertion mode: in cell">in cell</dfn>" insertion mode</h6>
28193:
28194: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-intd" title="insertion mode: in cell">in cell</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28195:
28196: <dl class="switch"><dt>An end tag whose tag name is one of: "td", "th"</dt>
28197: <dd>
28198:
28199: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
28200: scope</a> with the same tag name as that of the token, then
28201: this is a <a href="#parse-error">parse error</a> and the token must be
28202: ignored.</p>
28203:
28204: <p>Otherwise:</p>
28205:
28206: <p><a href="#generate-implied-end-tags">Generate implied end tags</a>.</p>
28207:
28208: <p>Now, if the <a href="#current-node">current node</a> is not an element
28209: with the same tag name as the token, then this is a
28210: <a href="#parse-error">parse error</a>.</p>
28211:
28212: <p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a> stack
28213: until an element with the same tag name as the token has been
28214: popped from the stack.</p>
28215:
28216: <p><a href="#clear-the-list-of-active-formatting-elements-up-to-the-last-marker">Clear the list of active formatting elements up to
28217: the last marker</a>.</p>
28218:
28219: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-intr" title="insertion mode: in row">in row</a>".</p> <!-- current
28220: node here will be a <tr> normally; but could be <html> in the
28221: fragment case -->
28222:
28223: </dd>
28224:
28225: <dt>A start tag whose tag name is one of: "caption", "col",
28226: "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr"</dt>
28227: <dd>
28228:
28229: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does
28230: <em>not</em> <a href="#has-an-element-in-table-scope" title="has an element in table scope">have
28231: a <code>td</code> or <code>th</code> element in table
28232: scope</a>, then this is a <a href="#parse-error">parse error</a>; ignore
28233: the token. (<a href="#fragment-case">fragment case</a>)</p>
28234:
28235: <p>Otherwise, <a href="#close-the-cell">close the cell</a> (see below) and
28236: reprocess the current token.</p>
28237:
28238: </dd>
28239:
28240: <dt>An end tag whose tag name is one of: "body", "caption",
28241: "col", "colgroup", "html"</dt>
28242: <dd>
28243: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28244: </dd>
28245:
28246: <dt>An end tag whose tag name is one of: "table", "tbody",
28247: "tfoot", "thead", "tr"</dt>
28248: <dd>
28249:
28250: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-table-scope" title="has an element in table scope">have an element in table
28251: scope</a> with the same tag name as that of the token (which
28252: can only happen for "tbody", "tfoot" and "thead", or in the
28253: <a href="#fragment-case">fragment case</a>), then this is a <a href="#parse-error">parse
28254: error</a> and the token must be ignored.</p>
28255:
28256: <p>Otherwise, <a href="#close-the-cell">close the cell</a> (see below) and
28257: reprocess the current token.</p>
28258:
28259: </dd>
28260:
28261: <dt>Anything else</dt>
28262: <dd>
28263: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28264: mode</a>.</p>
28265: </dd>
28266:
28267: </dl><p>Where the steps above say to <dfn id="close-the-cell">close the cell</dfn>, they
28268: mean to run the following algorithm:</p>
28269:
28270: <ol><li><p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-table-scope" title="has an element in table scope">has a <code>td</code>
28271: element in table scope</a>, then act as if an end tag token
28272: with the tag name "td" had been seen.</p></li>
28273:
28274: <li><p>Otherwise, the <a href="#stack-of-open-elements">stack of open elements</a> will
28275: <a href="#has-an-element-in-table-scope" title="has an element in table scope">have a
28276: <code>th</code> element in table scope</a>; act as if an end
28277: tag token with the tag name "th" had been seen.</p></li>
28278:
28279: </ol><p class="note">The <a href="#stack-of-open-elements">stack of open elements</a> cannot have
28280: both a <code><a href="the-td-element.html#the-td-element">td</a></code> and a <code><a href="the-th-element.html#the-th-element">th</a></code> element <a href="#has-an-element-in-table-scope" title="has an element in table scope">in table scope</a> at the
28281: same time, nor can it have neither when the <a href="#close-the-cell">close the
28282: cell</a> algorithm is invoked.</p>
28283:
28284:
28285: <h6 id="parsing-main-inselect"><span class="secno">8.2.5.4.16 </span>The "<dfn title="insertion mode: in select">in select</dfn>" insertion mode</h6>
28286:
28287: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inselect" title="insertion mode: in select">in select</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28288:
28289: <dl class="switch"><dt>A character token that is U+0000 NULL</dt>
28290: <dd>
28291: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28292: </dd>
28293:
28294: <dt>Any other character token</dt>
28295: <dd>
28296: <p><a href="#insert-a-character" title="insert a character">Insert the token's
28297: character</a> into the <a href="#current-node">current node</a>.</p>
28298: </dd>
28299:
28300: <dt>A comment token</dt>
28301: <dd>
28302: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
28303: node</a> with the <code title="">data</code> attribute set to
28304: the data given in the comment token.</p>
28305: </dd>
28306:
28307: <dt>A DOCTYPE token</dt>
28308: <dd>
28309: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28310: </dd>
28311:
28312: <dt>A start tag whose tag name is "html"</dt>
28313: <dd>
28314: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28315: mode</a>.</p>
28316: </dd>
28317:
28318: <dt>A start tag whose tag name is "option"</dt>
28319: <dd>
28320:
28321: <p>If the <a href="#current-node">current node</a> is an <code><a href="the-option-element.html#the-option-element">option</a></code>
28322: element, act as if an end tag with the tag name "option" had
28323: been seen.</p>
28324:
28325: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
28326:
28327: </dd>
28328:
28329: <dt>A start tag whose tag name is "optgroup"</dt>
28330: <dd>
28331:
28332: <p>If the <a href="#current-node">current node</a> is an <code><a href="the-option-element.html#the-option-element">option</a></code>
28333: element, act as if an end tag with the tag name "option" had
28334: been seen.</p>
28335:
28336: <p>If the <a href="#current-node">current node</a> is an
28337: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, act as if an end tag with the
28338: tag name "optgroup" had been seen.</p>
28339:
28340: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
28341:
28342: </dd>
28343:
28344: <dt>An end tag whose tag name is "optgroup"</dt>
28345: <dd>
28346:
28347: <p>First, if the <a href="#current-node">current node</a> is an
28348: <code><a href="the-option-element.html#the-option-element">option</a></code> element, and the node immediately before
28349: it in the <a href="#stack-of-open-elements">stack of open elements</a> is an
28350: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, then act as if an end tag with
28351: the tag name "option" had been seen.</p>
28352:
28353: <p>If the <a href="#current-node">current node</a> is an
28354: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element, then pop that node from the
28355: <a href="#stack-of-open-elements">stack of open elements</a>. Otherwise, this is a
28356: <a href="#parse-error">parse error</a>; ignore the token.</p>
28357:
28358: </dd>
28359:
28360: <dt>An end tag whose tag name is "option"</dt>
28361: <dd>
28362:
28363: <p>If the <a href="#current-node">current node</a> is an <code><a href="the-option-element.html#the-option-element">option</a></code>
28364: element, then pop that node from the <a href="#stack-of-open-elements">stack of open
28365: elements</a>. Otherwise, this is a <a href="#parse-error">parse
28366: error</a>; ignore the token.</p>
28367:
28368: </dd>
28369:
28370: <dt>An end tag whose tag name is "select"</dt>
28371: <dd>
28372:
28373: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-select-scope" title="has an element in select scope">have an element in select
28374: scope</a> with the same tag name as the token, this is a
28375: <a href="#parse-error">parse error</a>. Ignore the token. (<a href="#fragment-case">fragment
28376: case</a>)</p>
28377:
28378: <p>Otherwise:</p>
28379:
28380: <p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
28381: until a <code><a href="the-select-element.html#the-select-element">select</a></code> element has been popped from the
28382: stack.</p>
28383:
28384: <p><a href="#reset-the-insertion-mode-appropriately">Reset the insertion mode appropriately</a>.</p>
28385:
28386: </dd>
28387:
28388: <dt>A start tag whose tag name is "select"</dt>
28389: <dd>
28390:
28391: <p><a href="#parse-error">Parse error</a>. Act as if the token had been
28392: an end tag with the tag name "select" instead.</p>
28393:
28394: </dd>
28395:
28396: <dt>A start tag whose tag name is one of: "input", "keygen", "textarea"</dt>
28397: <dd>
28398:
28399: <p><a href="#parse-error">Parse error</a>.</p>
28400:
28401: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-select-scope" title="has an element in select scope">have a <code>select</code>
28402: element in select scope</a>, ignore the token. (<a href="#fragment-case">fragment
28403: case</a>)</p>
28404:
28405: <p>Otherwise, act as if an end tag with the tag name "select" had
28406: been seen, and reprocess the token.</p>
28407:
28408: </dd>
28409:
28410: <dt>A start tag token whose tag name is "script"</dt>
28411: <dd>
28412: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
28413: mode</a>.</p>
28414: </dd>
28415:
28416: <dt>An end-of-file token</dt>
28417: <dd>
28418:
28419: <p>If the <a href="#current-node">current node</a> is not the root
28420: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
28421: error</a>.</p>
28422:
28423: <p class="note">The <a href="#current-node">current node</a> can only be the root
28424: <code><a href="the-html-element.html#the-html-element">html</a></code> element in the <a href="#fragment-case">fragment case</a>.</p>
28425:
28426: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28427:
28428: </dd>
28429:
28430: <dt>Anything else</dt>
28431: <dd>
28432: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28433: </dd>
28434:
28435: </dl><h6 id="parsing-main-inselectintable"><span class="secno">8.2.5.4.17 </span>The "<dfn title="insertion mode: in select in table">in select in table</dfn>" insertion mode</h6>
28436:
28437: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inselectintable" title="insertion mode: in select in table">in select in table</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28438:
28439: <dl class="switch"><dt>A start tag whose tag name is one of: "caption", "table",
28440: "tbody", "tfoot", "thead", "tr", "td", "th"</dt>
28441: <dd>
28442: <p><a href="#parse-error">Parse error</a>. Act as if an end tag with the tag
28443: name "select" had been seen, and reprocess the token.</p>
28444: </dd>
28445:
28446: <dt>An end tag whose tag name is one of: "caption", "table",
28447: "tbody", "tfoot", "thead", "tr", "td", "th"</dt>
28448: <dd>
28449:
28450: <p><a href="#parse-error">Parse error</a>.</p>
28451:
28452: <p>If the <a href="#stack-of-open-elements">stack of open elements</a> <a href="#has-an-element-in-table-scope">has an
28453: element in table scope</a> with the same tag name as that
28454: of the token, then act as if an end tag with the tag name
28455: "select" had been seen, and reprocess the token. Otherwise,
28456: ignore the token.</p>
28457:
28458: </dd>
28459:
28460: <dt>Anything else</dt>
28461: <dd>
28462: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inselect" title="insertion mode: in select">in select</a>" <a href="#insertion-mode">insertion
28463: mode</a>.</p>
28464: </dd>
28465:
28466: </dl><h6 id="parsing-main-afterbody"><span class="secno">8.2.5.4.18 </span>The "<dfn title="insertion mode: after body">after body</dfn>" insertion mode</h6>
28467:
28468: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-afterbody" title="insertion mode: after body">after body</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28469:
28470: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
28471: TABULATION, "LF" (U+000A), "FF" (U+000C),
28472: "CR" (U+000D), or U+0020 SPACE</dt>
28473: <dd>
28474: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28475: mode</a>.</p>
28476: </dd>
28477:
28478: <dt>A comment token</dt>
28479: <dd>
28480: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the first element in
28481: the <a href="#stack-of-open-elements">stack of open elements</a> (the <code><a href="the-html-element.html#the-html-element">html</a></code>
28482: element), with the <code title="">data</code> attribute set to
28483: the data given in the comment token.</p>
28484: </dd>
28485:
28486: <dt>A DOCTYPE token</dt>
28487: <dd>
28488: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28489: </dd>
28490:
28491: <dt>A start tag whose tag name is "html"</dt>
28492: <dd>
28493: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28494: mode</a>.</p>
28495: </dd>
28496:
28497: <dt>An end tag whose tag name is "html"</dt>
28498: <dd>
28499:
28500: <p>If the parser was originally created as part of the <a href="#html-fragment-parsing-algorithm">HTML
28501: fragment parsing algorithm</a>, this is a <a href="#parse-error">parse
28502: error</a>; ignore the token. (<a href="#fragment-case">fragment case</a>)</p>
28503:
28504: <p>Otherwise, switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-after-after-body-insertion-mode" title="insertion mode: after after body">after after
28505: body</a>".</p>
28506:
28507: </dd>
28508:
28509: <dt>An end-of-file token</dt>
28510: <dd>
28511: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28512: </dd>
28513:
28514: <dt>Anything else</dt>
28515: <dd>
28516:
28517: <p><a href="#parse-error">Parse error</a>. Switch the <a href="#insertion-mode">insertion
28518: mode</a> to "<a href="#parsing-main-inbody" title="insertion mode: in body">in
28519: body</a>" and reprocess the token.</p>
28520:
28521: </dd>
28522:
28523: </dl><h6 id="parsing-main-inframeset"><span class="secno">8.2.5.4.19 </span>The "<dfn title="insertion mode: in frameset">in frameset</dfn>" insertion mode</h6>
28524:
28525: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-inframeset" title="insertion mode: in frameset">in frameset</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28526:
28527: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
28528: TABULATION, "LF" (U+000A), "FF" (U+000C),
28529: "CR" (U+000D), or U+0020 SPACE</dt>
28530: <dd>
28531: <p><a href="#insert-a-character" title="insert a character">Insert the character</a> into
28532: the <a href="#current-node">current node</a>.</p>
28533: </dd>
28534:
28535: <dt>A comment token</dt>
28536: <dd>
28537: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
28538: node</a> with the <code title="">data</code> attribute set to
28539: the data given in the comment token.</p>
28540: </dd>
28541:
28542: <dt>A DOCTYPE token</dt>
28543: <dd>
28544: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28545: </dd>
28546:
28547: <dt>A start tag whose tag name is "html"</dt>
28548: <dd>
28549: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28550: mode</a>.</p>
28551: </dd>
28552:
28553: <dt>A start tag whose tag name is "frameset"</dt>
28554: <dd>
28555: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.</p>
28556: </dd>
28557:
28558: <dt>An end tag whose tag name is "frameset"</dt>
28559: <dd>
28560:
28561: <p>If the <a href="#current-node">current node</a> is the root
28562: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
28563: error</a>; ignore the token. (<a href="#fragment-case">fragment
28564: case</a>)</p>
28565:
28566: <p>Otherwise, pop the <a href="#current-node">current node</a> from the
28567: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
28568:
28569: <p>If the parser was <em>not</em> originally created as part
28570: of the <a href="#html-fragment-parsing-algorithm">HTML fragment parsing algorithm</a>
28571: (<a href="#fragment-case">fragment case</a>), and the <a href="#current-node">current
28572: node</a> is no longer a <code><a href="#frameset">frameset</a></code> element, then
28573: switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#parsing-main-afterframeset" title="insertion mode: after frameset">after
28574: frameset</a>".</p>
28575:
28576: </dd>
28577:
28578: <dt>A start tag whose tag name is "frame"</dt>
28579: <dd>
28580:
28581: <p><a href="#insert-an-html-element">Insert an HTML element</a> for the token.
28582: Immediately pop the <a href="#current-node">current node</a> off the
28583: <a href="#stack-of-open-elements">stack of open elements</a>.</p>
28584:
28585: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
28586: token's <i>self-closing flag</i></a>, if it is set.</p>
28587:
28588: </dd>
28589:
28590: <dt>A start tag whose tag name is "noframes"</dt>
28591: <dd>
28592: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
28593: mode</a>.</p>
28594: </dd>
28595:
28596: <dt>An end-of-file token</dt>
28597: <dd>
28598:
28599: <p>If the <a href="#current-node">current node</a> is not the root
28600: <code><a href="the-html-element.html#the-html-element">html</a></code> element, then this is a <a href="#parse-error">parse
28601: error</a>.</p>
28602:
28603: <p class="note">The <a href="#current-node">current node</a> can only be the root
28604: <code><a href="the-html-element.html#the-html-element">html</a></code> element in the <a href="#fragment-case">fragment case</a>.</p>
28605:
28606: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28607:
28608: </dd>
28609:
28610: <dt>Anything else</dt>
28611: <dd>
28612: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28613: </dd>
28614:
28615: </dl><h6 id="parsing-main-afterframeset"><span class="secno">8.2.5.4.20 </span>The "<dfn title="insertion mode: after frameset">after frameset</dfn>" insertion mode</h6>
28616:
28617: <p>When the user agent is to apply the rules for the "<a href="#parsing-main-afterframeset" title="insertion mode: after frameset">after frameset</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28618:
28619: <!-- due to rules in the "in frameset" mode, this can't be entered in the fragment case -->
28620: <dl class="switch"><dt>A character token that is one of U+0009 CHARACTER
28621: TABULATION, "LF" (U+000A), "FF" (U+000C),
28622: "CR" (U+000D), or U+0020 SPACE</dt>
28623: <dd>
28624: <p><a href="#insert-a-character" title="insert a character">Insert the character</a> into
28625: the <a href="#current-node">current node</a>.</p>
28626: </dd>
28627:
28628: <dt>A comment token</dt>
28629: <dd>
28630: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
28631: node</a> with the <code title="">data</code> attribute set to
28632: the data given in the comment token.</p>
28633: </dd>
28634:
28635: <dt>A DOCTYPE token</dt>
28636: <dd>
28637: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28638: </dd>
28639:
28640: <dt>A start tag whose tag name is "html"</dt>
28641: <dd>
28642: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28643: mode</a>.</p>
28644: </dd>
28645:
28646: <dt>An end tag whose tag name is "html"</dt>
28647: <dd>
28648: <p>Switch the <a href="#insertion-mode">insertion mode</a> to "<a href="#the-after-after-frameset-insertion-mode" title="insertion mode: after after frameset">after after
28649: frameset</a>".</p>
28650: </dd>
28651:
28652: <dt>A start tag whose tag name is "noframes"</dt>
28653: <dd>
28654: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
28655: mode</a>.</p>
28656: </dd>
28657:
28658: <dt>An end-of-file token</dt>
28659: <dd>
28660: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28661: </dd>
28662:
28663: <dt>Anything else</dt>
28664: <dd>
28665: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28666: </dd>
28667:
28668: </dl><h6 id="the-after-after-body-insertion-mode"><span class="secno">8.2.5.4.21 </span>The "<dfn title="insertion mode: after after body">after after body</dfn>" insertion mode</h6>
28669:
28670: <p>When the user agent is to apply the rules for the "<a href="#the-after-after-body-insertion-mode" title="insertion mode: after after body">after after body</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28671:
28672: <dl class="switch"><dt>A comment token</dt>
28673: <dd>
28674: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <code><a href="dom.html#document">Document</a></code>
28675: object with the <code title="">data</code> attribute set to the
28676: data given in the comment token.</p>
28677: </dd>
28678:
28679: <dt>A DOCTYPE token</dt>
28680: <dt>A character token that is one of U+0009 CHARACTER
28681: TABULATION, "LF" (U+000A), "FF" (U+000C),
28682: "CR" (U+000D), or U+0020 SPACE</dt>
28683: <dt>A start tag whose tag name is "html"</dt>
28684: <dd>
28685: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28686: mode</a>.</p>
28687: </dd>
28688:
28689: <dt>An end-of-file token</dt>
28690: <dd>
28691: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28692: </dd>
28693:
28694: <dt>Anything else</dt>
28695: <dd>
28696: <p><a href="#parse-error">Parse error</a>. Switch the <a href="#insertion-mode">insertion mode</a>
28697: to "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" and
28698: reprocess the token.</p>
28699: </dd>
28700:
28701: </dl><h6 id="the-after-after-frameset-insertion-mode"><span class="secno">8.2.5.4.22 </span>The "<dfn title="insertion mode: after after frameset">after after frameset</dfn>" insertion mode</h6>
28702:
28703: <p>When the user agent is to apply the rules for the "<a href="#the-after-after-frameset-insertion-mode" title="insertion mode: after after frameset">after after frameset</a>" <a href="#insertion-mode">insertion mode</a>, the user agent must handle the token as follows:</p>
28704:
28705: <dl class="switch"><dt>A comment token</dt>
28706: <dd>
28707: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <code><a href="dom.html#document">Document</a></code>
28708: object with the <code title="">data</code> attribute set to the
28709: data given in the comment token.</p>
28710: </dd>
28711:
28712: <dt>A DOCTYPE token</dt>
28713: <dt>A character token that is one of U+0009 CHARACTER
28714: TABULATION, "LF" (U+000A), "FF" (U+000C),
28715: "CR" (U+000D), or U+0020 SPACE</dt>
28716: <dt>A start tag whose tag name is "html"</dt>
28717: <dd>
28718: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>" <a href="#insertion-mode">insertion
28719: mode</a>.</p>
28720: </dd>
28721:
28722: <dt>An end-of-file token</dt>
28723: <dd>
28724: <p><a href="#stop-parsing">Stop parsing</a>.</p>
28725: </dd>
28726:
28727: <dt>A start tag whose tag name is "noframes"</dt>
28728: <dd>
28729: <p>Process the token <a href="#using-the-rules-for">using the rules for</a> the "<a href="#parsing-main-inhead" title="insertion mode: in head">in head</a>" <a href="#insertion-mode">insertion
28730: mode</a>.</p>
28731: </dd>
28732:
28733: <dt>Anything else</dt>
28734: <dd>
28735: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28736: </dd>
28737:
28738: </dl><h5 id="parsing-main-inforeign"><span class="secno">8.2.5.5 </span>The rules for parsing tokens <dfn title="insertion mode: in foreign content">in foreign content</dfn></h5>
28739:
28740: <p>When the user agent is to apply the rules for parsing tokens in foreign content, the user agent must handle the token as follows:</p>
28741:
28742: <dl class="switch"><dt>A character token that is U+0000 NULL</dt>
28743: <dd>
28744:
28745: <p><a href="#parse-error">Parse error</a>. <a href="#insert-a-character" title="insert a
28746: character">Insert a U+FFFD REPLACEMENT CHARACTER character</a>
28747: into the <a href="#current-node">current node</a>.</p>
28748:
28749: </dd>
28750:
28751: <dt>A character token that is one of U+0009 CHARACTER TABULATION,
28752: "LF" (U+000A), "FF" (U+000C), "CR" (U+000D), or U+0020 SPACE</dt>
28753: <dd>
28754:
28755: <p><a href="#insert-a-character" title="insert a character">Insert the token's
28756: character</a> into the <a href="#current-node">current node</a>.</p>
28757:
28758: </dd>
28759:
28760: <dt>Any other character token</dt>
28761: <dd>
28762:
28763: <p><a href="#insert-a-character" title="insert a character">Insert the token's
28764: character</a> into the <a href="#current-node">current node</a>.</p>
28765:
28766: <p>Set the <a href="#frameset-ok-flag">frameset-ok flag</a> to "not ok".</p>
28767:
28768: </dd>
28769:
28770: <dt>A comment token</dt>
28771: <dd>
28772: <p>Append a <code><a href="infrastructure.html#comment-0">Comment</a></code> node to the <a href="#current-node">current
28773: node</a> with the <code title="">data</code> attribute set to
28774: the data given in the comment token.</p>
28775: </dd>
28776:
28777: <dt>A DOCTYPE token</dt>
28778: <dd>
28779: <p><a href="#parse-error">Parse error</a>. Ignore the token.</p>
28780: </dd>
28781:
28782: <dt>A start tag whose tag name is one of: <!--"a",--> "b", "big",
28783: "blockquote", "body"<!--by inspection-->, "br", "center", "code",
28784: "dd", "div", "dl", "dt"<!-- so that dd and dt can be handled
28785: uniformly throughout the parser -->, "em", "embed", "h1", "h2",
28786: "h3", "h4"<!--for completeness-->, "h5", "h6"<!--for
28787: completeness-->, "head"<!--by inspection-->, "hr", "i", "img",
28788: "li", "listing"<!-- so that pre and listing can be handled
28789: uniformly throughout the parser -->, "menu", "meta", "nobr",
28790: "ol"<!-- so that dl, ul, and ol can be handled uniformly throughout
28791: the parser -->, "p", "pre", "ruby", "s", <!--"script",--> "small",
28792: "span", "strong", "strike"<!-- so that s and strike can be handled
28793: uniformly throughout the parser -->, <!--"style",--> "sub", "sup",
28794: "table"<!--by inspection-->, "tt", "u", "ul", "var"</dt> <!-- this
28795: list was determined empirically by studying over 6,000,000,000
28796: pages that were specifically not XML pages -->
28797: <dt>A start tag whose tag name is "font", if the token has any
28798: attributes named "color", "face", or "size"</dt> <!-- the
28799: attributes here are required so that SVG <font> will go through as
28800: SVG but legacy <font>s won't -->
28801:
28802: <dd>
28803:
28804: <p><a href="#parse-error">Parse error</a>.</p>
28805:
28806: <p>Pop an element from the <a href="#stack-of-open-elements">stack of open elements</a>,
28807: and then keep popping more elements from the <a href="#stack-of-open-elements">stack of open
28808: elements</a> until the <a href="#current-node">current node</a> is a
28809: <a href="#mathml-text-integration-point">MathML text integration point</a>, an <a href="#html-integration-point">HTML
28810: integration point</a>, or an element in the <a href="namespaces.html#html-namespace-0">HTML
28811: namespace</a>.</p>
28812:
28813: <p>Then, reprocess the token.</p>
28814:
28815: </dd>
28816:
28817: <dt>Any other start tag</dt>
28818: <dd>
28819:
28820: <p>If the <a href="#current-node">current node</a> is an element in the
28821: <a href="namespaces.html#mathml-namespace">MathML namespace</a>, <a href="#adjust-mathml-attributes">adjust MathML
28822: attributes</a> for the token. (This fixes the case of MathML
28823: attributes that are not all lowercase.)</p>
28824:
28825: <p>If the <a href="#current-node">current node</a> is an element in the <a href="namespaces.html#svg-namespace">SVG
28826: namespace</a>, and the token's tag name is one of the ones in
28827: the first column of the following table, change the tag name to
28828: the name given in the corresponding cell in the second
28829: column. (This fixes the case of SVG elements that are not all
28830: lowercase.)</p>
28831:
28832: <table><thead><tr><th> Tag name </th><th> Element name
28833: </th></tr></thead><tbody><tr><td> <code title="">altglyph</code> </td><td> <code title="">altGlyph</code>
28834: </td></tr><tr><td> <code title="">altglyphdef</code> </td><td> <code title="">altGlyphDef</code>
28835: </td></tr><tr><td> <code title="">altglyphitem</code> </td><td> <code title="">altGlyphItem</code>
28836: </td></tr><tr><td> <code title="">animatecolor</code> </td><td> <code title="">animateColor</code>
28837: </td></tr><tr><td> <code title="">animatemotion</code> </td><td> <code title="">animateMotion</code>
28838: </td></tr><tr><td> <code title="">animatetransform</code> </td><td> <code title="">animateTransform</code>
28839: </td></tr><tr><td> <code title="">clippath</code> </td><td> <code title="">clipPath</code>
28840: </td></tr><tr><td> <code title="">feblend</code> </td><td> <code title="">feBlend</code>
28841: </td></tr><tr><td> <code title="">fecolormatrix</code> </td><td> <code title="">feColorMatrix</code>
28842: </td></tr><tr><td> <code title="">fecomponenttransfer</code> </td><td> <code title="">feComponentTransfer</code>
28843: </td></tr><tr><td> <code title="">fecomposite</code> </td><td> <code title="">feComposite</code>
28844: </td></tr><tr><td> <code title="">feconvolvematrix</code> </td><td> <code title="">feConvolveMatrix</code>
28845: </td></tr><tr><td> <code title="">fediffuselighting</code> </td><td> <code title="">feDiffuseLighting</code>
28846: </td></tr><tr><td> <code title="">fedisplacementmap</code> </td><td> <code title="">feDisplacementMap</code>
28847: </td></tr><tr><td> <code title="">fedistantlight</code> </td><td> <code title="">feDistantLight</code>
28848: </td></tr><tr><td> <code title="">feflood</code> </td><td> <code title="">feFlood</code>
28849: </td></tr><tr><td> <code title="">fefunca</code> </td><td> <code title="">feFuncA</code>
28850: </td></tr><tr><td> <code title="">fefuncb</code> </td><td> <code title="">feFuncB</code>
28851: </td></tr><tr><td> <code title="">fefuncg</code> </td><td> <code title="">feFuncG</code>
28852: </td></tr><tr><td> <code title="">fefuncr</code> </td><td> <code title="">feFuncR</code>
28853: </td></tr><tr><td> <code title="">fegaussianblur</code> </td><td> <code title="">feGaussianBlur</code>
28854: </td></tr><tr><td> <code title="">feimage</code> </td><td> <code title="">feImage</code>
28855: </td></tr><tr><td> <code title="">femerge</code> </td><td> <code title="">feMerge</code>
28856: </td></tr><tr><td> <code title="">femergenode</code> </td><td> <code title="">feMergeNode</code>
28857: </td></tr><tr><td> <code title="">femorphology</code> </td><td> <code title="">feMorphology</code>
28858: </td></tr><tr><td> <code title="">feoffset</code> </td><td> <code title="">feOffset</code>
28859: </td></tr><tr><td> <code title="">fepointlight</code> </td><td> <code title="">fePointLight</code>
28860: </td></tr><tr><td> <code title="">fespecularlighting</code> </td><td> <code title="">feSpecularLighting</code>
28861: </td></tr><tr><td> <code title="">fespotlight</code> </td><td> <code title="">feSpotLight</code>
28862: </td></tr><tr><td> <code title="">fetile</code> </td><td> <code title="">feTile</code>
28863: </td></tr><tr><td> <code title="">feturbulence</code> </td><td> <code title="">feTurbulence</code>
28864: </td></tr><tr><td> <code title="">foreignobject</code> </td><td> <code title="">foreignObject</code>
28865: </td></tr><tr><td> <code title="">glyphref</code> </td><td> <code title="">glyphRef</code>
28866: </td></tr><tr><td> <code title="">lineargradient</code> </td><td> <code title="">linearGradient</code>
28867: </td></tr><tr><td> <code title="">radialgradient</code> </td><td> <code title="">radialGradient</code>
28868: <!--<tr> <td> <code title="">solidcolor</code> <td> <code title="">solidColor</code> (SVG 1.2)-->
28869: </td></tr><tr><td> <code title="">textpath</code> </td><td> <code title="">textPath</code>
28870: </td></tr></tbody></table><p>If the <a href="#current-node">current node</a> is an element in the <a href="namespaces.html#svg-namespace">SVG
28871: namespace</a>, <a href="#adjust-svg-attributes">adjust SVG attributes</a> for the
28872: token. (This fixes the case of SVG attributes that are not all
28873: lowercase.)</p>
28874:
28875: <p><a href="#adjust-foreign-attributes">Adjust foreign attributes</a> for the token. (This
28876: fixes the use of namespaced attributes, in particular XLink in
28877: SVG.)</p>
28878:
28879: <p><a href="#insert-a-foreign-element">Insert a foreign element</a> for the token, in the
28880: same namespace as the <a href="#current-node">current node</a>.</p>
28881:
28882: <p>If the token has its <i>self-closing flag</i> set, then run the
28883: appropriate steps from the following list:</p>
28884:
28885: <dl class="switch"><dt>If the token's tag name is "script"</dt>
28886:
28887: <dd>
28888:
28889: <p><a href="#acknowledge-self-closing-flag" title="acknowledge self-closing flag">Acknowledge the
28890: token's <i>self-closing flag</i></a>, and then act as if an
28891: end tag with the tag name "script" had been seen.</p>
28892:
28893: </dd>
28894:
28895: <dt>Otherwise</dt>
28896:
28897: <dd>
28898:
28899: <p>Pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
28900: elements</a> and <a href="#acknowledge-self-closing-flag" title="acknowledge self-closing
28901: flag">acknowledge the token's <i>self-closing
28902: flag</i></a>.</p>
28903:
28904: </dd>
28905:
28906: </dl></dd>
28907:
28908: <dt id="scriptForeignEndTag">An end tag whose tag name is "script", if the <a href="#current-node">current node</a> is a <code title="">script</code> element in the <a href="namespaces.html#svg-namespace">SVG namespace</a></dt>
28909: <dd>
28910:
28911: <p>Pop the <a href="#current-node">current node</a> off the <a href="#stack-of-open-elements">stack of open
28912: elements</a>.</p>
28913:
28914: <p>Let the <var title="">old insertion point</var> have the
28915: same value as the current <a href="#insertion-point">insertion point</a>. Let
28916: the <a href="#insertion-point">insertion point</a> be just before the <a href="#next-input-character">next
28917: input character</a>.</p>
28918:
28919: <p>Increment the parser's <a href="#script-nesting-level">script nesting level</a> by
28920: one. Set the <a href="#parser-pause-flag">parser pause flag</a> to true.</p>
28921:
28922: <p><a href="http://www.w3.org/TR/SVGMobile12/script.html#ScriptContentProcessing">Process
28923: the <code title="">script</code> element</a> according to the SVG
28924: rules, if the user agent supports SVG. <a href="#refsSVG">[SVG]</a></p>
28925:
28926: <p class="note">Even if this causes <a href="dynamic-markup-insertion.html#dom-document-write" title="dom-document-write">new characters to be inserted into the
28927: tokenizer</a>, the parser will not be executed reentrantly,
28928: since the <a href="#parser-pause-flag">parser pause flag</a> is true.</p>
28929:
28930: <p>Decrement the parser's <a href="#script-nesting-level">script nesting level</a> by
28931: one. If the parser's <a href="#script-nesting-level">script nesting level</a> is zero,
28932: then set the <a href="#parser-pause-flag">parser pause flag</a> to false.</p>
28933:
28934: <p>Let the <a href="#insertion-point">insertion point</a> have the value of the <var title="">old insertion point</var>. (In other words, restore the
28935: <a href="#insertion-point">insertion point</a> to its previous value. This value
28936: might be the "undefined" value.)</p>
28937:
28938: </dd>
28939:
28940: <dt>Any other end tag</dt>
28941:
28942: <dd>
28943:
28944: <p>Run these steps:</p>
28945:
28946: <ol><li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
28947: node</a> (the bottommost node of the stack).</p></li>
28948:
28949: <li><p>If <var title="">node</var> is not an element with the
28950: same tag name as the token, then this is a <a href="#parse-error">parse
28951: error</a>.</p></li>
28952:
28953: <li><p><i>Loop</i>: If <var title="">node</var>'s tag name,
28954: <a href="infrastructure.html#converted-to-ascii-lowercase">converted to ASCII lowercase</a>, is the same as the tag
28955: name of the token, pop elements from the <a href="#stack-of-open-elements">stack of open
28956: elements</a> until <var title="">node</var> has been popped
28957: from the stack, and then abort these steps.</p></li>
28958:
28959: <li><p>Set <var title="">node</var> to the previous entry in the
28960: <a href="#stack-of-open-elements">stack of open elements</a>.</p></li>
28961:
28962: <li><p>If <var title="">node</var> is not an element in the
28963: <a href="namespaces.html#html-namespace-0">HTML namespace</a>, return to the step labeled
28964: <i>loop</i>.</p></li>
28965:
28966: <li><p>Otherwise, process the token according to the rules given
28967: in the section corresponding to the current <a href="#insertion-mode">insertion
28968: mode</a> in HTML content.</p></li>
28969:
28970: </ol></dd>
28971:
28972: </dl></div>
28973:
28974:
28975: <div class="impl">
28976:
28977: <h4 id="the-end"><span class="secno">8.2.6 </span>The end</h4>
28978:
28979: <p>Once the user agent <dfn id="stop-parsing" title="stop parsing">stops parsing</dfn>
28980: the document, the user agent must run the following steps:</p>
28981:
28982: <ol><!-- this happens as part of one of the tasks that runs the parser --><li><p>Set the <a href="dom.html#current-document-readiness">current document readiness</a> to "<code title="">interactive</code>" <!-- this also synchronously fires an
28983: event --> and the <a href="#insertion-point">insertion point</a> to
28984: undefined.</p></li>
28985:
28986: <li><p>Pop <em>all</em> the nodes off the <a href="#stack-of-open-elements">stack of open
28987: elements</a>.</p></li>
28988:
28989: <li><p>If the <a href="the-script-element.html#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing">list of scripts that will execute when the
28990: document has finished parsing</a> is not empty, run these
28991: substeps:</p>
28992:
28993: <ol><li><p><a href="#spin-the-event-loop">Spin the event loop</a> until the first
28994: <code><a href="the-script-element.html#the-script-element">script</a></code> in the <a href="the-script-element.html#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing">list of scripts that will
28995: execute when the document has finished parsing</a> has its
28996: <a href="the-script-element.html#ready-to-be-parser-executed">"ready to be parser-executed"</a> flag set <em>and</em>
28997: the parser's <code><a href="dom.html#document">Document</a></code> <a href="styling.html#has-no-style-sheet-that-is-blocking-scripts">has no style sheet that
28998: is blocking scripts</a>.</p></li>
28999:
29000: <li><p><a href="the-script-element.html#execute-the-script-block" title="execute the script block">Execute</a> the
29001: first <code><a href="the-script-element.html#the-script-element">script</a></code> in the <a href="the-script-element.html#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing">list of scripts that will
29002: execute when the document has finished parsing</a>.</p></li>
29003:
29004: <li><p>Remove the first <code><a href="the-script-element.html#the-script-element">script</a></code> element from the
29005: <a href="the-script-element.html#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing">list of scripts that will execute when the document has
29006: finished parsing</a> (i.e. shift out the first entry in the
29007: list).</p></li>
29008:
29009: <li><p>If the <a href="the-script-element.html#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing">list of scripts that will execute when the
29010: document has finished parsing</a> is still not empty, repeat
29011: these substeps again from substep 1.</p>
29012:
29013: </li></ol></li>
29014:
29015: <li><p><a href="#queue-a-task">Queue a task</a> to <a href="#fire-a-simple-event">fire a simple
29016: event</a> that bubbles named <code title="event-DOMContentLoaded">DOMContentLoaded</code> at the
29017: <code><a href="dom.html#document">Document</a></code>.</p></li>
29018:
29019: <li><p><a href="#spin-the-event-loop">Spin the event loop</a> until the <a href="the-script-element.html#set-of-scripts-that-will-execute-as-soon-as-possible">set of
29020: scripts that will execute as soon as possible</a> and the
29021: <a href="the-script-element.html#list-of-scripts-that-will-execute-in-order-as-soon-as-possible">list of scripts that will execute in order as soon as
29022: possible</a> are empty.</p></li> <!-- this step is not redundant
29023: with the next one, since <script> nodes delay the load event of the
29024: document they are in, but they might change document between being
29025: added to one document's set/list and executing those scripts, so
29026: they might be delaying another document but still be in this
29027: document's set/list. -->
29028:
29029: <li><p><a href="#spin-the-event-loop">Spin the event loop</a> until there is nothing that
29030: <dfn id="delay-the-load-event" title="delay the load event">delays the load event</dfn> in
29031: the <code><a href="dom.html#document">Document</a></code>.</p></li>
29032:
29033: <li><p><a href="#queue-a-task">Queue a task</a> to set the <a href="dom.html#current-document-readiness">current document
29034: readiness</a> to "<code title="">complete</code>"<!-- this also
29035: fires an event synchronously during the task -->, and then, if the
29036: <code><a href="dom.html#document">Document</a></code> is in a <a href="#browsing-context">browsing context</a>, to
29037: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-load">load</code> at the <code><a href="dom.html#document">Document</a></code>'s
29038: <code><a href="#window">Window</a></code> object, but with its <code title="dom-event-target"><a href="infrastructure.html#dom-event-target">target</a></code> set to the
29039: <code><a href="dom.html#document">Document</a></code> object (and the <code title="dom-event-currentTarget">currentTarget</code> set to the
29040: <code><a href="#window">Window</a></code> object).</p></li>
29041:
29042: <li>
29043:
29044: <p>If the <code><a href="dom.html#document">Document</a></code> is in a <a href="#browsing-context">browsing
29045: context</a>, then <a href="#queue-a-task">queue a task</a> to run the
29046: following substeps:</p>
29047:
29048: <ol><li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page showing</a>
29049: flag is true, then abort this task (i.e. don't fire the event
29050: below).</p></li> <!-- i don't see how this could be, but just to
29051: be sure... -->
29052:
29053: <li><p>Set the <code><a href="dom.html#document">Document</a></code>'s <a href="#page-showing">page showing</a>
29054: flag to true.</p></li>
29055:
29056: <li><p>Fire a <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code> event
29057: at the <code><a href="#window">Window</a></code> object of the <code><a href="dom.html#document">Document</a></code>,
29058: but with its <code title="dom-event-target"><a href="infrastructure.html#dom-event-target">target</a></code> set to
29059: the <code><a href="dom.html#document">Document</a></code> object (and the <code title="dom-event-currentTarget">currentTarget</code> set to the
29060: <code><a href="#window">Window</a></code> object), using the
29061: <code><a href="#pagetransitionevent">PageTransitionEvent</a></code> interface, with the <code title="dom-PageTransitionEvent-persisted"><a href="#dom-pagetransitionevent-persisted">persisted</a></code>
29062: attribute initialized to false. This event must not bubble, must
29063: not be cancelable, and has no default action.</p></li>
29064:
29065: </ol></li>
29066:
29067: <li><p>If the <code><a href="dom.html#document">Document</a></code> has any <a href="#pending-application-cache-download-process-tasks">pending
29068: application cache download process tasks</a>, then <a href="#queue-a-task" title="queue a task">queue</a> each such <a href="#concept-task" title="concept-task">task</a> in the order they were added to
29069: the list of <a href="#pending-application-cache-download-process-tasks">pending application cache download process
29070: tasks</a>, and then empty the list of <a href="#pending-application-cache-download-process-tasks">pending application
29071: cache download process tasks</a>. The <a href="#task-source">task source</a>
29072: for these <a href="#concept-task" title="concept-task">tasks</a> is the
29073: <a href="#networking-task-source">networking task source</a>.</p></li>
29074:
29075: <li><p>If the <code><a href="dom.html#document">Document</a></code>'s <a href="#print-when-loaded">print when
29076: loaded</a> flag is set, then run the <a href="#printing-steps">printing
29077: steps</a>.</p></li>
29078:
29079: <li><p>The <code><a href="dom.html#document">Document</a></code> is now <dfn id="ready-for-post-load-tasks">ready for post-load
29080: tasks</dfn>.</p></li>
29081:
29082: <li><p><a href="#queue-a-task">Queue a task</a> to mark the <code><a href="dom.html#document">Document</a></code>
29083: as <dfn id="completely-loaded">completely loaded</dfn>.</p></li>
29084:
29085: </ol><p>When the user agent is to <dfn id="abort-a-parser">abort a parser</dfn>, it must run
29086: the following steps:</p>
29087:
29088: <ol><li><p>Throw away any pending content in the <a href="#input-stream">input
29089: stream</a>, and discard any future content that would have been
29090: added to it.</p></li>
29091:
29092: <li><p>Set the <a href="dom.html#current-document-readiness">current document readiness</a> to "<code title="">interactive</code>"<!-- this synchronously fires an event
29093: -->.</p></li>
29094:
29095: <li><p>Pop <em>all</em> the nodes off the <a href="#stack-of-open-elements">stack of open
29096: elements</a>.</p></li>
29097:
29098: <li><p>Set the <a href="dom.html#current-document-readiness">current document readiness</a> to "<code title="">complete</code>"<!-- this also synchronously fires an
29099: event -->.</p></li>
29100:
29101: <!-- anything else? this is things that happen when you call
29102: document.open() on a document that's still being parsed, or when
29103: you navigate a document that's still parsing, or navigate the
29104: parent of a frame with a document that's still parsing, or the user
29105: hits "stop". Should the pending scripts be blown away or anything?
29106: -->
29107:
29108: </ol><p>Except where otherwise specified, the <a href="#task-source">task source</a>
29109: for the <a href="#concept-task" title="concept-task">tasks</a> mentioned in this
29110: section is the <a href="#dom-manipulation-task-source">DOM manipulation task source</a>.</p>
29111:
29112: </div>
29113:
29114:
29115: <div class="impl">
29116:
29117: <h4 id="coercing-an-html-dom-into-an-infoset"><span class="secno">8.2.7 </span>Coercing an HTML DOM into an infoset</h4>
29118:
29119: <p>When an application uses an <a href="#html-parser">HTML parser</a> in
29120: conjunction with an XML pipeline, it is possible that the
29121: constructed DOM is not compatible with the XML tool chain in certain
29122: subtle ways. For example, an XML toolchain might not be able to
29123: represent attributes with the name <code title="">xmlns</code>,
29124: since they conflict with the Namespaces in XML syntax. There is also
29125: some data that the <a href="#html-parser">HTML parser</a> generates that isn't
29126: included in the DOM itself. This section specifies some rules for
29127: handling these issues.</p>
29128:
29129: <p>If the XML API being used doesn't support DOCTYPEs, the tool may
29130: drop DOCTYPEs altogether.</p>
29131:
29132: <p>If the XML API doesn't support attributes in no namespace that
29133: are named "<code title="">xmlns</code>", attributes whose names
29134: start with "<code title="">xmlns:</code>", or attributes in the
29135: <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a>, then the tool may drop such
29136: attributes.</p>
29137:
29138: <p>The tool may annotate the output with any namespace declarations
29139: required for proper operation.</p>
29140:
29141: <p>If the XML API being used restricts the allowable characters in
29142: the local names of elements and attributes, then the tool may map
29143: all element and attribute local names that the API wouldn't support
29144: to a set of names that <em>are</em> allowed, by replacing any
29145: character that isn't supported with the uppercase letter U and the
29146: six digits of the character's Unicode code point when expressed in
29147: hexadecimal, using digits 0-9 and capital letters A-F as the
29148: symbols, in increasing numeric order.</p>
29149:
29150: <p class="example">For example, the element name <code title="">foo<bar</code>, which can be output by the <a href="#html-parser">HTML
29151: parser</a>, though it is neither a legal HTML element name nor a
29152: well-formed XML element name, would be converted into <code title="">fooU00003Cbar</code>, which <em>is</em> a well-formed XML
29153: element name (though it's still not legal in HTML by any means).</p>
29154:
29155: <p class="example">As another example, consider the attribute
29156: <code>xlink:href</code>. Used on a MathML element, it becomes, after
29157: being <a href="#adjust-foreign-attributes" title="adjust foreign attributes">adjusted</a>, an
29158: attribute with a prefix "<code title="">xlink</code>" and a local
29159: name "<code title="">href</code>". However, used on an HTML element,
29160: it becomes an attribute with no prefix and the local name "<code title="">xlink:href</code>", which is not a valid NCName, and thus
29161: might not be accepted by an XML API. It could thus get converted,
29162: becoming "<code title="">xlinkU00003Ahref</code>".</p>
29163:
29164: <p class="note">The resulting names from this conversion
29165: conveniently can't clash with any attribute generated by the
29166: <a href="#html-parser">HTML parser</a>, since those are all either lowercase or
29167: those listed in the <a href="#adjust-foreign-attributes">adjust foreign attributes</a>
29168: algorithm's table.</p>
29169:
29170: <p>If the XML API restricts comments from having two consecutive
29171: "--" (U+002D) characters, the tool may insert a single
29172: U+0020 SPACE character between any such offending characters.</p>
29173:
29174: <p>If the XML API restricts comments from ending in a
29175: "-" (U+002D) character, the tool may insert a single
29176: U+0020 SPACE character at the end of such comments.</p>
29177:
29178: <p>If the XML API restricts allowed characters in character data,
29179: attribute values, or comments, the tool may replace any "FF" (U+000C) character with a U+0020 SPACE character, and any other
29180: literal non-XML character with a U+FFFD REPLACEMENT CHARACTER.</p>
29181:
29182: <p>If the tool has no way to convey out-of-band information, then
29183: the tool may drop the following information:</p>
29184:
29185: <ul><li>Whether the document is set to <i><a href="infrastructure.html#no-quirks-mode">no-quirks mode</a></i>,
29186: <i><a href="infrastructure.html#limited-quirks-mode">limited-quirks mode</a></i>, or <i><a href="infrastructure.html#quirks-mode">quirks mode</a></i></li>
29187:
29188: <li>The association between form controls and forms that aren't
29189: their nearest <code><a href="the-form-element.html#the-form-element">form</a></code> element ancestor (use of the
29190: <a href="#form-element-pointer"><code>form</code> element pointer</a> in the parser)</li>
29191:
29192: </ul><p class="note">The mutations allowed by this section apply
29193: <em>after</em> the <a href="#html-parser">HTML parser</a>'s rules have been
29194: applied. For example, a <code title=""><a::></code> start tag
29195: will be closed by a <code title=""></a::></code> end tag, and
29196: never by a <code title=""></aU00003AU00003A></code> end tag, even
29197: if the user agent is using the rules above to then generate an
29198: actual element in the DOM with the name <code title="">aU00003AU00003A</code> for that start tag.</p>
29199:
29200: </div>
29201:
29202:
29203: <div class="impl">
29204:
29205: <h4 id="an-introduction-to-error-handling-and-strange-cases-in-the-parser"><span class="secno">8.2.8 </span>An introduction to error handling and strange cases in the parser</h4>
29206:
29207: <p><i>This section is non-normative.</i></p>
29208: <p>This section examines some erroneous markup and discusses how
29209: the <a href="#html-parser">HTML parser</a> handles these cases.</p>
29210:
29211:
29212: <h5 id="misnested-tags:-b-i-/b-/i"><span class="secno">8.2.8.1 </span>Misnested tags: <b><i></b></i></h5>
29213:
29214: <p><i>This section is non-normative.</i></p>
29215: <p>The most-often discussed example of erroneous markup is as
29216: follows:</p>
29217:
29218: <pre><p>1<b>2<i>3</b>4</i>5</p></pre>
29219:
29220: <p>The parsing of this markup is straightforward up to the "3". At
29221: this point, the DOM looks like this:</p>
29222:
29223: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li><li class="t1"><code><a href="the-i-element.html#the-i-element">i</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">3</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul><p>Here, the <a href="#stack-of-open-elements">stack of open elements</a> has five elements
29224: on it: <code><a href="the-html-element.html#the-html-element">html</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-p-element.html#the-p-element">p</a></code>,
29225: <code><a href="the-b-element.html#the-b-element">b</a></code>, and <code><a href="the-i-element.html#the-i-element">i</a></code>. The <a href="#list-of-active-formatting-elements">list of active
29226: formatting elements</a> just has two: <code><a href="the-b-element.html#the-b-element">b</a></code> and
29227: <code><a href="the-i-element.html#the-i-element">i</a></code>. The <a href="#insertion-mode">insertion mode</a> is "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>".</p>
29228:
29229: <p>Upon receiving the end tag token with the tag name "b", the "<a href="#adoptionAgency">adoption agency algorithm</a>" is
29230: invoked. This is a simple case, in that the <var title="">formatting
29231: element</var> is the <code><a href="the-b-element.html#the-b-element">b</a></code> element, and there is no
29232: <var title="">furthest block</var>. Thus, the <a href="#stack-of-open-elements">stack of open
29233: elements</a> ends up with just three elements: <code><a href="the-html-element.html#the-html-element">html</a></code>,
29234: <code><a href="the-body-element.html#the-body-element">body</a></code>, and <code><a href="the-p-element.html#the-p-element">p</a></code>, while the <a href="#list-of-active-formatting-elements">list of
29235: active formatting elements</a> has just one: <code><a href="the-i-element.html#the-i-element">i</a></code>. The
29236: DOM tree is unmodified at this point.</p>
29237:
29238: <p>The next token is a character ("4"), triggers the <a href="#reconstruct-the-active-formatting-elements" title="reconstruct the active formatting elements">reconstruction of
29239: the active formatting elements</a>, in this case just the
29240: <code><a href="the-i-element.html#the-i-element">i</a></code> element. A new <code><a href="the-i-element.html#the-i-element">i</a></code> element is thus created
29241: for the "4" <code><a href="infrastructure.html#text-0">Text</a></code> node. After the end tag token for the
29242: "i" is also received, and the "5" <code><a href="infrastructure.html#text-0">Text</a></code> node is
29243: inserted, the DOM looks as follows:</p>
29244:
29245: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li><li class="t1"><code><a href="the-i-element.html#the-i-element">i</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">3</span></li></ul></li></ul></li><li class="t1"><code><a href="the-i-element.html#the-i-element">i</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">4</span></li></ul></li><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">5</span></li></ul></li></ul></li></ul></li></ul><h5 id="misnested-tags:-b-p-/b-/p"><span class="secno">8.2.8.2 </span>Misnested tags: <b><p></b></p></h5>
29246:
29247: <p><i>This section is non-normative.</i></p>
29248: <p>A case similar to the previous one is the following:</p>
29249:
29250: <pre><b>1<p>2</b>3</p></pre>
29251:
29252: <p>Up to the "2" the parsing here is straightforward:</p>
29253:
29254: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li></ul></li></ul></li></ul></li></ul></li></ul><p>The interesting part is when the end tag token with the tag name
29255: "b" is parsed.</p>
29256:
29257: <p>Before that token is seen, the <a href="#stack-of-open-elements">stack of open
29258: elements</a> has four elements on it: <code><a href="the-html-element.html#the-html-element">html</a></code>,
29259: <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-b-element.html#the-b-element">b</a></code>, and <code><a href="the-p-element.html#the-p-element">p</a></code>. The
29260: <a href="#list-of-active-formatting-elements">list of active formatting elements</a> just has the one:
29261: <code><a href="the-b-element.html#the-b-element">b</a></code>. The <a href="#insertion-mode">insertion mode</a> is "<a href="#parsing-main-inbody" title="insertion mode: in body">in body</a>".</p>
29262:
29263: <p>Upon receiving the end tag token with the tag name "b", the "<a href="#adoptionAgency">adoption agency algorithm</a>" is invoked, as
29264: in the previous example. However, in this case, there <em>is</em> a
29265: <var title="">furthest block</var>, namely the <code><a href="the-p-element.html#the-p-element">p</a></code> element. Thus,
29266: this time the adoption agency algorithm isn't skipped over.</p>
29267:
29268: <p>The <var title="">common ancestor</var> is the <code><a href="the-body-element.html#the-body-element">body</a></code>
29269: element. A conceptual "bookmark" marks the position of the
29270: <code><a href="the-b-element.html#the-b-element">b</a></code> in the <a href="#list-of-active-formatting-elements">list of active formatting
29271: elements</a>, but since that list has only one element in it,
29272: the bookmark won't have much effect.</p>
29273:
29274: <p>As the algorithm progresses, <var title="">node</var> ends up set
29275: to the formatting element (<code><a href="the-b-element.html#the-b-element">b</a></code>), and <var title="">last
29276: node</var> ends up set to the <var title="">furthest block</var>
29277: (<code><a href="the-p-element.html#the-p-element">p</a></code>).</p>
29278:
29279: <p>The <var title="">last node</var> gets appended (moved) to the
29280: <var title="">common ancestor</var>, so that the DOM looks like:</p>
29281:
29282: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li></ul></li></ul></li></ul></li></ul><p>A new <code><a href="the-b-element.html#the-b-element">b</a></code> element is created, and the children of the
29283: <code><a href="the-p-element.html#the-p-element">p</a></code> element are moved to it:</p>
29284:
29285: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code></li></ul></li></ul></li></ul><ul class="domTree"><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li></ul></li></ul><p>Finally, the new <code><a href="the-b-element.html#the-b-element">b</a></code> element is appended to the
29286: <code><a href="the-p-element.html#the-p-element">p</a></code> element, so that the DOM looks like:</p>
29287:
29288: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li></ul></li></ul></li></ul></li></ul></li></ul><p>The <code><a href="the-b-element.html#the-b-element">b</a></code> element is removed from the <a href="#list-of-active-formatting-elements">list of
29289: active formatting elements</a> and the <a href="#stack-of-open-elements">stack of open
29290: elements</a>, so that when the "3" is parsed, it is appended to
29291: the <code><a href="the-p-element.html#the-p-element">p</a></code> element:</p>
29292:
29293: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">1</span></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">2</span></li></ul></li><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">3</span></li></ul></li></ul></li></ul></li></ul><h5 id="unexpected-markup-in-tables"><span class="secno">8.2.8.3 </span>Unexpected markup in tables</h5>
29294:
29295: <p><i>This section is non-normative.</i></p>
29296: <p>Error handling in tables is, for historical reasons, especially
29297: strange. For example, consider the following markup:</p>
29298:
29299: <pre><table><strong><a href="the-b-element.html#the-b-element"><b></a></strong><tr><td>aaa</td></tr><strong>bbb</strong></table>ccc</pre>
29300:
29301: <p>The highlighted <code><a href="the-b-element.html#the-b-element">b</a></code> element start tag is not allowed
29302: directly inside a table like that, and the parser handles this case
29303: by placing the element <em>before</em> the table. (This is called <i title="foster parent"><a href="#foster-parent">foster parenting</a></i>.) This can be seen by
29304: examining the DOM tree as it stands just after the
29305: <code><a href="the-table-element.html#the-table-element">table</a></code> element's start tag has been seen:</p>
29306:
29307: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code></li></ul></li></ul></li></ul><p>...and then immediately after the <code><a href="the-b-element.html#the-b-element">b</a></code> element start
29308: tag has been seen:</p>
29309:
29310: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code></li></ul></li></ul></li></ul><p>At this point, the <a href="#stack-of-open-elements">stack of open elements</a> has on it
29311: the elements <code><a href="the-html-element.html#the-html-element">html</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>,
29312: <code><a href="the-table-element.html#the-table-element">table</a></code>, and <code><a href="the-b-element.html#the-b-element">b</a></code> (in that order, despite the
29313: resulting DOM tree); the <a href="#list-of-active-formatting-elements">list of active formatting
29314: elements</a> just has the <code><a href="the-b-element.html#the-b-element">b</a></code> element in it; and the
29315: <a href="#insertion-mode">insertion mode</a> is "<a href="#parsing-main-intable" title="insertion mode: in
29316: table">in table</a>".</p>
29317:
29318: <p>The <code><a href="the-tr-element.html#the-tr-element">tr</a></code> start tag causes the <code><a href="the-b-element.html#the-b-element">b</a></code> element
29319: to be popped off the stack and a <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> start tag to be
29320: implied; the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> and <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements are
29321: then handled in a rather straight-forward manner, taking the parser
29322: through the "<a href="#parsing-main-intbody" title="insertion mode: in table body">in table
29323: body</a>" and "<a href="#parsing-main-intr" title="insertion mode: in row">in
29324: row</a>" insertion modes, after which the DOM looks as
29325: follows:</p>
29326:
29327: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code><ul><li class="t1"><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code><ul><li class="t1"><code><a href="the-tr-element.html#the-tr-element">tr</a></code></li></ul></li></ul></li></ul></li></ul></li></ul><p>Here, the <a href="#stack-of-open-elements">stack of open elements</a> has on it the
29328: elements <code><a href="the-html-element.html#the-html-element">html</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>,
29329: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, and <code><a href="the-tr-element.html#the-tr-element">tr</a></code>; the <a href="#list-of-active-formatting-elements">list of active
29330: formatting elements</a> still has the <code><a href="the-b-element.html#the-b-element">b</a></code> element in
29331: it; and the <a href="#insertion-mode">insertion mode</a> is "<a href="#parsing-main-intr" title="insertion
29332: mode: in row">in row</a>".</p>
29333:
29334: <p>The <code><a href="the-td-element.html#the-td-element">td</a></code> element start tag token, after putting a
29335: <code><a href="the-td-element.html#the-td-element">td</a></code> element on the tree, puts a marker on the <a href="#list-of-active-formatting-elements">list
29336: of active formatting elements</a> (it also switches to the "<a href="#parsing-main-intd" title="insertion mode: in cell">in cell</a>" <a href="#insertion-mode">insertion
29337: mode</a>).</p>
29338:
29339: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code><ul><li class="t1"><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code><ul><li class="t1"><code><a href="the-tr-element.html#the-tr-element">tr</a></code><ul><li class="t1"><code><a href="the-td-element.html#the-td-element">td</a></code></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul><p>The marker means that when the "aaa" character tokens are seen,
29340: no <code><a href="the-b-element.html#the-b-element">b</a></code> element is created to hold the resulting <code><a href="infrastructure.html#text-0">Text</a></code> node:</p>
29341:
29342: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code><ul><li class="t1"><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code><ul><li class="t1"><code><a href="the-tr-element.html#the-tr-element">tr</a></code><ul><li class="t1"><code><a href="the-td-element.html#the-td-element">td</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">aaa</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul><p>The end tags are handled in a straight-forward manner; after
29343: handling them, the <a href="#stack-of-open-elements">stack of open elements</a> has on it the
29344: elements <code><a href="the-html-element.html#the-html-element">html</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>,
29345: and <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>; the <a href="#list-of-active-formatting-elements">list of active formatting
29346: elements</a> still has the <code><a href="the-b-element.html#the-b-element">b</a></code> element in it (the
29347: marker having been removed by the "td" end tag token); and the
29348: <a href="#insertion-mode">insertion mode</a> is "<a href="#parsing-main-intbody" title="insertion mode: in
29349: table body">in table body</a>".</p>
29350:
29351: <p>Thus it is that the "bbb" character tokens are found. These
29352: trigger the "<a href="#parsing-main-intabletext" title="insertion mode: in table text">in table
29353: text</a>" insertion mode to be used (with the <a href="#original-insertion-mode">original
29354: insertion mode</a> set to "<a href="#parsing-main-intbody" title="insertion mode: in table
29355: body">in table body</a>"). The character tokens are collected,
29356: and when the next token (the <code><a href="the-table-element.html#the-table-element">table</a></code> element end tag) is
29357: seen, they are processed as a group. Since they are not all spaces,
29358: they are handled as per the "anything else" rules in the "<a href="#parsing-main-intable" title="insertion mode: in table">in table</a>" insertion mode,
29359: which defer to the "<a href="#parsing-main-inbody" title="insertion mode: in body">in
29360: body</a>" insertion mode but with <a href="#foster-parent" title="foster
29361: parent">foster parenting</a>.</p>
29362:
29363: <p>When <a href="#reconstruct-the-active-formatting-elements" title="reconstruct the active formatting elements">the
29364: active formatting elements are reconstructed</a>, a
29365: <code><a href="the-b-element.html#the-b-element">b</a></code> element is created and <a href="#foster-parent" title="foster
29366: parent">foster parented</a>, and then the "bbb" <code><a href="infrastructure.html#text-0">Text</a></code>
29367: node is appended to it:</p>
29368:
29369: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">bbb</span></li></ul></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code><ul><li class="t1"><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code><ul><li class="t1"><code><a href="the-tr-element.html#the-tr-element">tr</a></code><ul><li class="t1"><code><a href="the-td-element.html#the-td-element">td</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">aaa</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> has on it the elements
29370: <code><a href="the-html-element.html#the-html-element">html</a></code>, <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>,
29371: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, and the new <code><a href="the-b-element.html#the-b-element">b</a></code> (again, note that
29372: this doesn't match the resulting tree!); the <a href="#list-of-active-formatting-elements">list of active
29373: formatting elements</a> has the new <code><a href="the-b-element.html#the-b-element">b</a></code> element in it;
29374: and the <a href="#insertion-mode">insertion mode</a> is still "<a href="#parsing-main-intbody" title="insertion
29375: mode: in table body">in table body</a>".</p>
29376:
29377: <p>Had the character tokens been only <a href="common-microsyntaxes.html#space-character" title="space
29378: character">space characters</a> instead of "bbb", then those
29379: <a href="common-microsyntaxes.html#space-character" title="space character">space characters</a> would just be
29380: appended to the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code> element.</p>
29381:
29382: <p>Finally, the <code><a href="the-table-element.html#the-table-element">table</a></code> is closed by a "table" end
29383: tag. This pops all the nodes from the <a href="#stack-of-open-elements">stack of open
29384: elements</a> up to and including the <code><a href="the-table-element.html#the-table-element">table</a></code> element,
29385: but it doesn't affect the <a href="#list-of-active-formatting-elements">list of active formatting
29386: elements</a>, so the "ccc" character tokens after the table
29387: result in yet another <code><a href="the-b-element.html#the-b-element">b</a></code> element being created, this
29388: time after the table:</p>
29389:
29390: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code></li><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">bbb</span></li></ul></li><li class="t1"><code><a href="the-table-element.html#the-table-element">table</a></code><ul><li class="t1"><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code><ul><li class="t1"><code><a href="the-tr-element.html#the-tr-element">tr</a></code><ul><li class="t1"><code><a href="the-td-element.html#the-td-element">td</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">aaa</span></li></ul></li></ul></li></ul></li></ul></li><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">ccc</span></li></ul></li></ul></li></ul></li></ul><h5 id="scripts-that-modify-the-page-as-it-is-being-parsed"><span class="secno">8.2.8.4 </span>Scripts that modify the page as it is being parsed</h5>
29391:
29392: <p><i>This section is non-normative.</i></p>
29393: <p>Consider the following markup, which for this example we will
29394: assume is the document with <a href="urls.html#url">URL</a> <code title="">http://example.com/inner</code>, being rendered as the
29395: content of an <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> in another document with the
29396: <a href="urls.html#url">URL</a> <code title="">http://example.com/outer</code>:</p>
29397:
29398: <pre><div id=a>
29399: <script>
29400: var div = document.getElementById('a');
29401: parent.document.body.appendChild(div);
29402: </script>
29403: <script>
29404: alert(document.URL);
29405: </script>
29406: </div>
29407: <script>
29408: alert(document.URL);
29409: </script></pre>
29410:
29411: <p>Up to the first "script" end tag, before the script is parsed,
29412: the result is relatively straightforward:</p>
29413:
29414: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-div-element.html#the-div-element">div</a></code> <span class="t2" title=""><code class="attribute name">id</code>="<code class="attribute value"><a href="the-a-element.html#the-a-element">a</a></code>"</span><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">
29415: </span></li><li class="t1"><code><a href="the-script-element.html#the-script-element">script</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">var div = document.getElementById('a'); ⏎ parent.document.body.appendChild(div);</span></li></ul></li></ul></li></ul></li></ul></li></ul><p>After the script is parsed, though, the <code><a href="the-div-element.html#the-div-element">div</a></code> element
29416: and its child <code><a href="the-script-element.html#the-script-element">script</a></code> element are gone:</p>
29417:
29418: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code></li></ul></li></ul><p>They are, at this point, in the <code><a href="dom.html#document">Document</a></code> of the
29419: aforementioned outer <a href="#browsing-context">browsing context</a>. However, the
29420: <a href="#stack-of-open-elements">stack of open elements</a> <em>still contains the
29421: <code><a href="the-div-element.html#the-div-element">div</a></code> element</em>.</p>
29422:
29423: <p>Thus, when the second <code><a href="the-script-element.html#the-script-element">script</a></code> element is parsed, it
29424: is inserted <em>into the outer <code><a href="dom.html#document">Document</a></code>
29425: object</em>.</p>
29426:
29427: <p>Those parsed into different <code><a href="dom.html#document">Document</a></code>s than the one
29428: the parser was created for do not execute, so the first alert does
29429: not show.</p>
29430:
29431: <p>Once the <code><a href="the-div-element.html#the-div-element">div</a></code> element's end tag is parsed, the
29432: <code><a href="the-div-element.html#the-div-element">div</a></code> element is popped off the stack, and so the next
29433: <code><a href="the-script-element.html#the-script-element">script</a></code> element is in the inner <code><a href="dom.html#document">Document</a></code>:</p>
29434:
29435: <ul class="domTree"><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-script-element.html#the-script-element">script</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">alert(document.URL);</span></li></ul></li></ul></li></ul></li></ul><p>This script does execute, resulting in an alert that says "http://example.com/inner".</p>
29436:
29437:
29438: <h5 id="the-execution-of-scripts-that-are-moving-across-multiple-documents"><span class="secno">8.2.8.5 </span>The execution of scripts that are moving across multiple documents</h5>
29439:
29440: <p><i>This section is non-normative.</i></p>
29441: <p>Elaborating on the example in the previous section, consider the
29442: case where the second <code><a href="the-script-element.html#the-script-element">script</a></code> element is an external
29443: script (i.e. one with a <code title="attr-script-src"><a href="the-script-element.html#attr-script-src">src</a></code>
29444: attribute). Since the element was not in the parser's
29445: <code><a href="dom.html#document">Document</a></code> when it was created, that external script is
29446: not even downloaded.</p>
29447:
29448: <p>In a case where a <code><a href="the-script-element.html#the-script-element">script</a></code> element with a <code title="attr-script-src"><a href="the-script-element.html#attr-script-src">src</a></code> attribute is parsed normally into
29449: its parser's <code><a href="dom.html#document">Document</a></code>, but while the external script is
29450: being downloaded, the element is moved to another document, the
29451: script continues to download, but does not execute.</p>
29452:
29453: <p class="note">In general, moving <code><a href="the-script-element.html#the-script-element">script</a></code> elements
29454: between <code><a href="dom.html#document">Document</a></code>s is considered a bad practice.</p>
29455:
29456:
29457:
29458: <h5 id="unclosed-formatting-elements"><span class="secno">8.2.8.6 </span>Unclosed formatting elements</h5>
29459:
29460: <p><i>This section is non-normative.</i></p>
29461: <p>The following markup shows how nested formatting elements (such
29462: as <code><a href="the-b-element.html#the-b-element">b</a></code>) get collected and continue to be applied even as
29463: the elements they are contained in are closed, but that excessive
29464: duplicates are thrown away.</p>
29465:
29466: <pre><!DOCTYPE html>
29467: <p><b class=x><b class=x><b><b class=x><b class=x><b>X
29468: <p>X
29469: <p><b><b class=x><b>X
29470: <p></b></b></b></b></b></b>X</pre>
29471:
29472: <p>The resulting DOM tree is as follows:</p>
29473:
29474: <ul class="domTree"><li class="t10">DOCTYPE: <code><a href="the-html-element.html#the-html-element">html</a></code></li><li class="t1"><code><a href="the-html-element.html#the-html-element">html</a></code><ul><li class="t1"><code><a href="the-head-element.html#the-head-element">head</a></code></li><li class="t1"><code><a href="the-body-element.html#the-body-element">body</a></code><ul><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">X⏎</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">X⏎</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code> <span class="t2" title=""><code class="attribute name">class</code>="<code class="attribute value">x</code>"</span><ul><li class="t1"><code><a href="the-b-element.html#the-b-element">b</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">X⏎</span></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="t1"><code><a href="the-p-element.html#the-p-element">p</a></code><ul><li class="t3"><code><a href="infrastructure.html#text-0">#text</a></code>: <span title="">X⏎</span></li></ul></li></ul></li></ul></li></ul><p>Note how the second <code><a href="the-p-element.html#the-p-element">p</a></code> element in the markup has no
29475: explicit <code><a href="the-b-element.html#the-b-element">b</a></code> elements, but in the resulting DOM, up to
29476: three of each kind of formatting element (in this case three
29477: <code><a href="the-b-element.html#the-b-element">b</a></code> elements with the class attribute, and two unadorned
29478: <code><a href="the-b-element.html#the-b-element">b</a></code> elements) get reconstructed before the element's
29479: "X".</p>
29480:
29481: <p>Also note how this means that in the final paragraph only six
29482: <code><a href="the-b-element.html#the-b-element">b</a></code> end tags are needed to completely clear the list of
29483: formatting elements, even though nine <code><a href="the-b-element.html#the-b-element">b</a></code> start tags have
29484: been seen up to this point.</p>
29485:
29486:
29487:
29488:
29489: <h3 id="serializing-html-fragments"><span class="secno">8.3 </span>Serializing HTML fragments</h3>
29490:
29491: <p>The following steps form the <dfn id="html-fragment-serialization-algorithm">HTML fragment serialization
29492: algorithm</dfn>. The algorithm takes as input a DOM
29493: <code><a href="infrastructure.html#element">Element</a></code>, <code><a href="dom.html#document">Document</a></code>, or
29494: <code><a href="infrastructure.html#documentfragment">DocumentFragment</a></code> referred to as <var title="">the
29495: node</var>, and either returns a string or throws an exception.</p>
29496:
29497: <p class="note">This algorithm serializes the <em>children</em> of
29498: the node being serialized, not the node itself.</p>
29499:
29500: <ol><li><p>Let <var title="">s</var> be a string, and initialize it to
29501: the empty string.</p></li>
29502:
29503: <li>
29504:
29505: <p>For each child node of <var title="">the node</var>, in
29506: <a href="infrastructure.html#tree-order">tree order</a>, run the following steps:
29507:
29508: </p><ol><li><p>Let <var title="">current node</var> be the child node
29509: being processed.</p></li>
29510:
29511: <li>
29512:
29513: <p>Append the appropriate string from the following list to
29514: <var title="">s</var>:</p>
29515:
29516: <dl class="switch"><dt>If <var title="">current node</var> is an <code title="">Element</code></dt>
29517:
29518: <dd>
29519:
29520: <p>If <var title="">current node</var> is an element in the
29521: <a href="namespaces.html#html-namespace-0">HTML namespace</a>, the <a href="namespaces.html#mathml-namespace">MathML
29522: namespace</a>, or the <a href="namespaces.html#svg-namespace">SVG namespace</a>, then let
29523: <var title="">tagname</var> be <var title="">current
29524: node</var>'s local name. Otherwise, let <var title="">tagname</var> be <var title="">current node</var>'s
29525: qualified name.</p>
29526:
29527: <p>Append a U+003C LESS-THAN SIGN character (<), followed
29528: by <var title="">tagname</var>.</p>
29529:
29530: <p class="note">For <a href="infrastructure.html#html-elements">HTML elements</a> created by the
29531: <a href="#html-parser">HTML parser</a> or <code title="">Document.createElement()</code>, <var title="">tagname</var> will be lowercase.</p>
29532:
29533: <p>For each attribute that the element has, append a U+0020
29534: SPACE character, the <a href="#attribute's-serialized-name" title="attribute's serialized
29535: name">attribute's serialized name as described below</a>, a
29536: "=" (U+003D) character, a U+0022 QUOTATION MARK
29537: character ("), the attribute's value, <a href="#escapingString" title="escaping a string">escaped as described below</a> in
29538: <i>attribute mode</i>, and a second U+0022 QUOTATION MARK
29539: character (").</p>
29540:
29541: <p>An <dfn id="attribute's-serialized-name">attribute's serialized name</dfn> for the purposes
29542: of the previous paragraph must be determined as follows:</p>
29543:
29544: <dl class="switch"><dt>If the attribute has no namespace</dt>
29545:
29546: <dd>
29547:
29548: <p>The attribute's serialized name is the attribute's local
29549: name.</p>
29550:
29551: <p class="note">For attributes on <a href="infrastructure.html#html-elements">HTML elements</a>
29552: set by the <a href="#html-parser">HTML parser</a> or by <code title="">Element.setAttributeNode()</code> or <code title="">Element.setAttribute()</code>, the local name will
29553: be lowercase.</p>
29554:
29555: </dd>
29556:
29557:
29558: <dt>If the attribute is in the <a href="namespaces.html#xml-namespace">XML namespace</a></dt>
29559:
29560: <dd><p>The attribute's serialized name is the string "<code title="">xml:</code>" followed by the attribute's local
29561: name.</p></dd>
29562:
29563:
29564: <dt>If the attribute is in the <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a> and the attribute's local name is <code title="">xmlns</code></dt>
29565:
29566: <dd><p>The attribute's serialized name is the string "<code title="">xmlns</code>".</p></dd>
29567:
29568:
29569: <dt>If the attribute is in the <a href="namespaces.html#xmlns-namespace">XMLNS namespace</a> and the attribute's local name is not <code title="">xmlns</code></dt>
29570:
29571: <dd><p>The attribute's serialized name is the string "<code title="">xmlns:</code>" followed by the attribute's local
29572: name.</p></dd>
29573:
29574:
29575: <dt>If the attribute is in the <a href="namespaces.html#xlink-namespace">XLink namespace</a></dt>
29576:
29577: <dd><p>The attribute's serialized name is the string "<code title="">xlink:</code>" followed by the attribute's local
29578: name.</p></dd>
29579:
29580:
29581: <dt>If the attribute is in some other namespace</dt>
29582:
29583: <dd><p>The attribute's serialized name is the attribute's
29584: qualified name.</p></dd>
29585:
29586: </dl><p>While the exact order of attributes is UA-defined, and may
29587: depend on factors such as the order that the attributes were
29588: given in the original markup, the sort order must be stable,
29589: such that consecutive invocations of this algorithm serialize an
29590: element's attributes in the same order.</p>
29591:
29592: <p>Append a U+003E GREATER-THAN SIGN character (>).</p>
29593:
29594: <p>If <var title="">current node</var> is an
29595: <code><a href="the-area-element.html#the-area-element">area</a></code>, <code><a href="the-base-element.html#the-base-element">base</a></code>, <code><a href="#basefont">basefont</a></code>,
29596: <code><a href="#bgsound">bgsound</a></code>, <code><a href="the-br-element.html#the-br-element">br</a></code>, <code><a href="the-col-element.html#the-col-element">col</a></code>,
29597: <code><a href="#the-command-element">command</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="#frame">frame</a></code>,
29598: <code><a href="the-hr-element.html#the-hr-element">hr</a></code>, <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>,
29599: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>, <code><a href="the-link-element.html#the-link-element">link</a></code>, <code><a href="the-meta-element.html#the-meta-element">meta</a></code>,
29600: <code><a href="the-param-element.html#the-param-element">param</a></code>, <code><a href="the-source-element.html#the-source-element">source</a></code>, <code><a href="the-track-element.html#the-track-element">track</a></code> or
29601: <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code> element, then continue on to the next child
29602: node at this point.</p> <!-- VOIDLIST superset -->
29603: <!-- also, i guess: image and isindex, but we don't list those
29604: because we don't consider those "elements", more "macros", and
29605: thus we should never serialize them -->
29606:
29607: <p>If <var title="">current node</var> is a <code><a href="the-pre-element.html#the-pre-element">pre</a></code>,
29608: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>, or <code><a href="#listing">listing</a></code> element, and
29609: the first child node of the element, if any, is a
29610: <code><a href="infrastructure.html#text-0">Text</a></code> node whose character data has as its first
29611: character a "LF" (U+000A) character, then append a
29612: "LF" (U+000A) character.</p>
29613:
29614: <p>Append the value of running the <a href="#html-fragment-serialization-algorithm">HTML fragment
29615: serialization algorithm</a> on the <var title="">current
29616: node</var> element (thus recursing into this algorithm for
29617: that element), followed by a U+003C LESS-THAN SIGN character
29618: (<), a "/" (U+002F) character, <var title="">tagname</var> again, and finally a U+003E
29619: GREATER-THAN SIGN character (>).</p>
29620:
29621: </dd>
29622:
29623:
29624: <dt>If <var title="">current node</var> is a <code title="">Text</code> node</dt>
29625:
29626: <dd>
29627:
29628: <p>If the parent of <var title="">current node</var> is a
29629: <code><a href="the-style-element.html#the-style-element">style</a></code>, <code><a href="the-script-element.html#the-script-element">script</a></code>, <code><a href="#xmp">xmp</a></code>,
29630: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <code><a href="#noembed">noembed</a></code>,
29631: <code><a href="#noframes">noframes</a></code>, or <code><a href="#plaintext">plaintext</a></code> element, or
29632: if the parent of <var title="">current node</var> is
29633: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code> element and <a href="#concept-n-script" title="concept-n-script">scripting is enabled</a> for the
29634: node, then append the value of <var title="">current
29635: node</var>'s <code title="">data</code> IDL attribute
29636: literally.</p>
29637:
29638: <p>Otherwise, append the value of <var title="">current
29639: node</var>'s <code title="">data</code> IDL attribute, <a href="#escapingString" title="escaping a string">escaped as described
29640: below</a>.</p>
29641:
29642: </dd>
29643:
29644:
29645: <dt>If <var title="">current node</var> is a <code title="">Comment</code></dt>
29646:
29647: <dd>
29648:
29649: <p>Append the literal string <code><!--</code> (U+003C
29650: LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
29651: U+002D HYPHEN-MINUS), followed by the value of <var title="">current node</var>'s <code title="">data</code> IDL
29652: attribute, followed by the literal string <code>--></code>
29653: (U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN
29654: SIGN).</p>
29655:
29656: </dd>
29657:
29658:
29659: <dt>If <var title="">current node</var> is a <code title="">ProcessingInstruction</code></dt>
29660:
29661: <dd>
29662:
29663: <p>Append the literal string <code><?</code> (U+003C
29664: LESS-THAN SIGN, U+003F QUESTION MARK), followed by the value
29665: of <var title="">current node</var>'s <code title="">target</code> IDL attribute, followed by a single
29666: U+0020 SPACE character, followed by the value of <var title="">current node</var>'s <code title="">data</code> IDL
29667: attribute, followed by a single ">" (U+003E) character.</p>
29668:
29669: </dd>
29670:
29671:
29672: <dt>If <var title="">current node</var> is a <code title="">DocumentType</code></dt>
29673:
29674: <dd>
29675:
29676: <p>Append the literal string <code><!DOCTYPE</code> (U+003C
29677: LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+0044 LATIN CAPITAL
29678: LETTER D, U+004F LATIN CAPITAL LETTER O, U+0043 LATIN CAPITAL
29679: LETTER C, U+0054 LATIN CAPITAL LETTER T, U+0059 LATIN CAPITAL
29680: LETTER Y, U+0050 LATIN CAPITAL LETTER P, U+0045 LATIN CAPITAL
29681: LETTER E), followed by a space (U+0020 SPACE), followed by the
29682: value of <var title="">current node</var>'s <code title="">name</code> IDL attribute, followed by the literal
29683: string <code>></code> (U+003E GREATER-THAN SIGN).</p>
29684:
29685: </dd>
29686:
29687:
29688: </dl><!--
29689: <p>Other node types (e.g. <code title="">Attr</code>) cannot
29690: occur as children of elements. If, despite this, they somehow do
29691: occur, this algorithm must throw an
29692: <code>InvalidStateError</code> exception.</p>
29693: --></li>
29694:
29695: </ol></li>
29696:
29697: <li><p>The result of the algorithm is the string <var title="">s</var>.</p></li>
29698:
29699: </ol><p class="warning">It is possible that the output of this algorithm, if
29700: parsed with an <a href="#html-parser">HTML parser</a>, will not return the
29701: original tree structure.</p>
29702:
29703: <div class="example">
29704:
29705: <p>For instance, if a <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element to which a
29706: <code title="">Comment</code> node has been appended is serialized
29707: and the output is then reparsed, the comment will end up being
29708: displayed in the text field. Similarly, if, as a result of DOM
29709: manipulation, an element contains a comment that contains the
29710: literal string "<code title="">--></code>", then when the result
29711: of serializing the element is parsed, the comment will be truncated
29712: at that point and the rest of the comment will be interpreted as
29713: markup. More examples would be making a <code><a href="the-script-element.html#the-script-element">script</a></code> element
29714: contain a <code><a href="infrastructure.html#text-0">Text</a></code> node with the text string
29715: "<code><a href="the-script-element.html#the-script-element"></script></a></code>", or having a <code><a href="the-p-element.html#the-p-element">p</a></code> element
29716: that contains a <code><a href="the-ul-element.html#the-ul-element">ul</a></code> element (as the <code><a href="the-ul-element.html#the-ul-element">ul</a></code>
29717: element's <a href="#syntax-start-tag" title="syntax-start-tag">start tag</a> would
29718: imply the end tag for the <code><a href="the-p-element.html#the-p-element">p</a></code>).</p>
29719:
29720: <p>This can enable cross-site scripting attacks. An example of this
29721: would be a page that lets the user enter some font names that are
29722: then inserted into a CSS <code><a href="the-style-element.html#the-style-element">style</a></code> block via the DOM and
29723: which then uses the <code title="dom-innerHTML"><a href="infrastructure.html#dom-innerhtml">innerHTML</a></code>
29724: IDL attribute to get the HTML serialization of that
29725: <code><a href="the-style-element.html#the-style-element">style</a></code> element: if the user enters
29726: "<code></style><script>attack</script></code>" as a font
29727: name, <code title="dom-innerHTML"><a href="infrastructure.html#dom-innerhtml">innerHTML</a></code> will return
29728: markup that, if parsed in a different context, would contain a
29729: <code><a href="the-script-element.html#the-script-element">script</a></code> node, even though no <code><a href="the-script-element.html#the-script-element">script</a></code> node
29730: existed in the original DOM.</p>
29731:
29732: </div>
29733:
29734: <p><dfn id="escapingString">Escaping a string</dfn> (for the
29735: purposes of the algorithm above) consists of running the following
29736: steps:</p>
29737:
29738: <ol><li><p>Replace any occurrence of the "<code title="">&</code>"
29739: character by the string "<code title="">&amp;</code>".</p></li>
29740:
29741: <li><p>Replace any occurrences of the U+00A0 NO-BREAK SPACE
29742: character by the string "<code title="">&nbsp;</code>".</p></li>
29743:
29744: <li><p>If the algorithm was invoked in the <i>attribute mode</i>,
29745: replace any occurrences of the "<code title="">"</code>"
29746: character by the string "<code title="">&quot;</code>".</p></li>
29747:
29748: <li><p>If the algorithm was <em>not</em> invoked in the
29749: <i>attribute mode</i>, replace any occurrences of the "<code title=""><</code>" character by the string "<code title="">&lt;</code>", and any occurrences of the "<code title="">></code>" character by the string "<code title="">&gt;</code>".</p></li>
29750:
29751: </ol><h3 id="parsing-html-fragments"><span class="secno">8.4 </span>Parsing HTML fragments</h3>
29752:
29753: <p>The following steps form the <dfn id="html-fragment-parsing-algorithm">HTML fragment parsing
29754: algorithm</dfn>. The algorithm optionally takes as input an
29755: <code><a href="infrastructure.html#element">Element</a></code> node, referred to as the <dfn id="concept-frag-parse-context" title="concept-frag-parse-context"><var>context</var></dfn> element,
29756: which gives the context for the parser, as well as <var title="">input</var>, a string to parse, and returns a list of zero
29757: or more nodes.</p>
29758:
29759: <p class="note">Parts marked <dfn id="fragment-case">fragment case</dfn> in algorithms
29760: in the parser section are parts that only occur if the parser was
29761: created for the purposes of this algorithm (and with a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element). The
29762: algorithms have been annotated with such markings for informational
29763: purposes only; such markings have no normative weight. If it is
29764: possible for a condition described as a <a href="#fragment-case">fragment case</a>
29765: to occur even when the parser wasn't created for the purposes of
29766: handling this algorithm, then that is an error in the
29767: specification.</p>
29768:
29769: <ol><li>
29770:
29771: <p>Create a new <code><a href="dom.html#document">Document</a></code> node, and mark it as being
29772: an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>.</p>
29773:
29774: </li>
29775:
29776: <li>
29777:
29778: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, and the
29779: <code><a href="dom.html#document">Document</a></code> of the <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element is in
29780: <a href="infrastructure.html#quirks-mode">quirks mode</a>, then let the <code><a href="dom.html#document">Document</a></code> be in
29781: <a href="infrastructure.html#quirks-mode">quirks mode</a>. Otherwise, if there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, and the
29782: <code><a href="dom.html#document">Document</a></code> of the <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element is in
29783: <a href="infrastructure.html#limited-quirks-mode">limited-quirks mode</a>, then let the
29784: <code><a href="dom.html#document">Document</a></code> be in <a href="infrastructure.html#limited-quirks-mode">limited-quirks mode</a>.
29785: Otherwise, leave the <code><a href="dom.html#document">Document</a></code> in <a href="infrastructure.html#no-quirks-mode">no-quirks
29786: mode</a>.</p>
29787:
29788: </li>
29789:
29790: <li>
29791:
29792: <p>Create a new <a href="#html-parser">HTML parser</a>, and associate it with
29793: the just created <code><a href="dom.html#document">Document</a></code> node.</p>
29794:
29795: </li>
29796:
29797: <li>
29798:
29799: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, run
29800: these substeps:</p>
29801:
29802: <ol><li>
29803:
29804: <p>Set the state of the <a href="#html-parser">HTML parser</a>'s
29805: <a href="#tokenization">tokenization</a> stage as follows:</p>
29806:
29807: <dl class="switch"><dt>If it is a <code><a href="the-title-element.html#the-title-element">title</a></code> or <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
29808: element</dt>
29809:
29810: <dd>Switch the tokenizer to the <a href="#rcdata-state">RCDATA state</a>.</dd>
29811:
29812:
29813: <dt>If it is a <code><a href="the-style-element.html#the-style-element">style</a></code>, <code><a href="#xmp">xmp</a></code>,
29814: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <code><a href="#noembed">noembed</a></code>, or
29815: <code><a href="#noframes">noframes</a></code> element</dt>
29816:
29817: <dd>Switch the tokenizer to the <a href="#rawtext-state">RAWTEXT state</a>.</dd>
29818:
29819:
29820: <dt>If it is a <code><a href="the-script-element.html#the-script-element">script</a></code> element</dt>
29821:
29822: <dd>Switch the tokenizer to the <a href="#script-data-state">script data state</a>.</dd>
29823:
29824:
29825: <dt>If it is a <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code> element</dt>
29826:
29827: <dd>If the <a href="#scripting-flag">scripting flag</a> is enabled, switch the
29828: tokenizer to the <a href="#rawtext-state">RAWTEXT state</a>. Otherwise,
29829: leave the tokenizer in the <a href="#data-state">data state</a>.</dd>
29830:
29831:
29832: <dt>If it is a <code><a href="#plaintext">plaintext</a></code> element</dt>
29833:
29834: <dd>Switch the tokenizer to the <a href="#plaintext-state">PLAINTEXT
29835: state</a>.</dd>
29836:
29837:
29838: <dt>Otherwise</dt>
29839:
29840: <dd>Leave the tokenizer in the <a href="#data-state">data state</a>.</dd>
29841:
29842: </dl><p class="note">For performance reasons, an implementation that
29843: does not report errors and that uses the actual state machine
29844: described in this specification directly could use the PLAINTEXT
29845: state instead of the RAWTEXT and script data states where those
29846: are mentioned in the list above. Except for rules regarding
29847: parse errors, they are equivalent, since there is no
29848: <a href="#appropriate-end-tag-token">appropriate end tag token</a> in the fragment case, yet
29849: they involve far fewer state transitions.</p>
29850:
29851: </li>
29852:
29853: <li>
29854:
29855: <p>Let <var title="">root</var> be a new <code><a href="the-html-element.html#the-html-element">html</a></code> element
29856: with no attributes.</p>
29857:
29858: </li>
29859:
29860: <li>
29861:
29862: <p>Append the element <var title="">root</var> to the
29863: <code><a href="dom.html#document">Document</a></code> node created above.</p>
29864:
29865: </li>
29866:
29867: <li>
29868:
29869: <p>Set up the parser's <a href="#stack-of-open-elements">stack of open elements</a> so that
29870: it contains just the single element <var title="">root</var>.</p>
29871:
29872: </li>
29873:
29874: <li>
29875:
29876: <p><a href="#reset-the-insertion-mode-appropriately" title="reset the insertion mode appropriately">Reset the
29877: parser's insertion mode appropriately</a>.</p>
29878:
29879: <p class="note">The parser will reference the <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element as part
29880: of that algorithm.</p>
29881:
29882: </li>
29883:
29884: <li>
29885:
29886: <p>Set the parser's <a href="#form-element-pointer"><code>form</code> element
29887: pointer</a> to the nearest node to the <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element that is
29888: a <code><a href="the-form-element.html#the-form-element">form</a></code> element (going straight up the ancestor
29889: chain, and including the element itself, if it is a
29890: <code><a href="the-form-element.html#the-form-element">form</a></code> element), or, if there is no such
29891: <code><a href="the-form-element.html#the-form-element">form</a></code> element, to null.</p>
29892:
29893: </li>
29894:
29895: </ol></li>
29896:
29897: <li>
29898:
29899: <p>Place into the <a href="#input-stream">input stream</a> for the <a href="#html-parser">HTML
29900: parser</a> just created the <var title="">input</var>. The
29901: encoding <a href="#concept-encoding-confidence" title="concept-encoding-confidence">confidence</a> is
29902: <i>irrelevant</i>.</p>
29903:
29904: </li>
29905:
29906: <li>
29907:
29908: <p>Start the parser and let it run until it has consumed all the
29909: characters just inserted into the input stream.</p>
29910:
29911: </li>
29912:
29913: <li>
29914:
29915: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, return
29916: the child nodes of <var title="">root</var>, in <a href="infrastructure.html#tree-order">tree
29917: order</a>.</p>
29918:
29919: <p>Otherwise, return the children of the <code><a href="dom.html#document">Document</a></code>
29920: object, in <a href="infrastructure.html#tree-order">tree order</a>.</p>
29921:
29922: </li>
29923:
29924: </ol><p class="note">This algorithm is invoked without a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element in the case
29925: of <code title="dom-Document-innerHTML">Document.innerHTML</code>.</p>
29926:
29927: </div>
29928:
29929:
29930:
29931: <h3 id="named-character-references"><span class="secno">8.5 </span><dfn>Named character references</dfn></h3>
29932:
29933: <p>This table lists the character reference names that are supported
29934: by HTML, and the code points to which they refer. It is referenced
29935: by the previous sections.</p>
29936:
29937: <div id="named-character-references-table">
1.193 sruby 29938: <table><thead><tr><th> Name </th> <th> Character(s) </th> <th> Glyph </th> </tr></thead>
29939:  <tr id="entity-Aacute"><td> <code title="">Aacute;</code> </td> <td> U+000C1 </td> <td> <span class="glyph" title="">Á</span> </td> </tr><tr class="impl" id="entity-Aacute-legacy"><td> <code title="">Aacute</code> </td> <td> U+000C1 </td> <td> <span title="">Á</span> </td> </tr><tr id="entity-aacute"><td> <code title="">aacute;</code> </td> <td> U+000E1 </td> <td> <span class="glyph" title="">á</span> </td> </tr><tr class="impl" id="entity-aacute-legacy"><td> <code title="">aacute</code> </td> <td> U+000E1 </td> <td> <span title="">á</span> </td> </tr><tr id="entity-Abreve"><td> <code title="">Abreve;</code> </td> <td> U+00102 </td> <td> <span class="glyph" title="">Ä‚</span> </td> </tr><tr id="entity-abreve"><td> <code title="">abreve;</code> </td> <td> U+00103 </td> <td> <span class="glyph" title="">ă</span> </td> </tr><tr id="entity-ac"><td> <code title="">ac;</code> </td> <td> U+0223E </td> <td> <span class="glyph" title="">∾</span> </td> </tr><tr id="entity-acd"><td> <code title="">acd;</code> </td> <td> U+0223F </td> <td> <span class="glyph" title="">∿</span> </td> </tr><tr id="entity-acE"><td> <code title="">acE;</code> </td> <td> U+0223E U+00333 </td> <td> <span class="glyph compound" title="">∾̳</span> </td> </tr><tr id="entity-Acirc"><td> <code title="">Acirc;</code> </td> <td> U+000C2 </td> <td> <span class="glyph" title="">Â</span> </td> </tr><tr class="impl" id="entity-Acirc-legacy"><td> <code title="">Acirc</code> </td> <td> U+000C2 </td> <td> <span title="">Â</span> </td> </tr><tr id="entity-acirc"><td> <code title="">acirc;</code> </td> <td> U+000E2 </td> <td> <span class="glyph" title="">â</span> </td> </tr><tr class="impl" id="entity-acirc-legacy"><td> <code title="">acirc</code> </td> <td> U+000E2 </td> <td> <span title="">â</span> </td> </tr><tr id="entity-acute"><td> <code title="">acute;</code> </td> <td> U+000B4 </td> <td> <span class="glyph" title="">´</span> </td> </tr><tr class="impl" id="entity-acute-legacy"><td> <code title="">acute</code> </td> <td> U+000B4 </td> <td> <span title="">´</span> </td> </tr><tr id="entity-Acy"><td> <code title="">Acy;</code> </td> <td> U+00410 </td> <td> <span class="glyph" title="">А</span> </td> </tr><tr id="entity-acy"><td> <code title="">acy;</code> </td> <td> U+00430 </td> <td> <span class="glyph" title="">а</span> </td> </tr><tr id="entity-AElig"><td> <code title="">AElig;</code> </td> <td> U+000C6 </td> <td> <span class="glyph" title="">Æ</span> </td> </tr><tr class="impl" id="entity-AElig-legacy"><td> <code title="">AElig</code> </td> <td> U+000C6 </td> <td> <span title="">Æ</span> </td> </tr><tr id="entity-aelig"><td> <code title="">aelig;</code> </td> <td> U+000E6 </td> <td> <span class="glyph" title="">æ</span> </td> </tr><tr class="impl" id="entity-aelig-legacy"><td> <code title="">aelig</code> </td> <td> U+000E6 </td> <td> <span title="">æ</span> </td> </tr><tr id="entity-af"><td> <code title="">af;</code> </td> <td> U+02061 </td> <td> <span class="glyph" title="">⁡</span> </td> </tr><tr id="entity-Afr"><td> <code title="">Afr;</code> </td> <td> U+1D504 </td> <td> <span class="glyph" title="">𝔄</span> </td> </tr><tr id="entity-afr"><td> <code title="">afr;</code> </td> <td> U+1D51E </td> <td> <span class="glyph" title="">𝔞</span> </td> </tr><tr id="entity-Agrave"><td> <code title="">Agrave;</code> </td> <td> U+000C0 </td> <td> <span class="glyph" title="">À</span> </td> </tr><tr class="impl" id="entity-Agrave-legacy"><td> <code title="">Agrave</code> </td> <td> U+000C0 </td> <td> <span title="">À</span> </td> </tr><tr id="entity-agrave"><td> <code title="">agrave;</code> </td> <td> U+000E0 </td> <td> <span class="glyph" title="">à</span> </td> </tr><tr class="impl" id="entity-agrave-legacy"><td> <code title="">agrave</code> </td> <td> U+000E0 </td> <td> <span title="">à</span> </td> </tr><tr id="entity-alefsym"><td> <code title="">alefsym;</code> </td> <td> U+02135 </td> <td> <span class="glyph" title="">ℵ</span> </td> </tr><tr id="entity-aleph"><td> <code title="">aleph;</code> </td> <td> U+02135 </td> <td> <span class="glyph" title="">ℵ</span> </td> </tr><tr id="entity-Alpha"><td> <code title="">Alpha;</code> </td> <td> U+00391 </td> <td> <span class="glyph" title="">Α</span> </td> </tr><tr id="entity-alpha"><td> <code title="">alpha;</code> </td> <td> U+003B1 </td> <td> <span class="glyph" title="">α</span> </td> </tr><tr id="entity-Amacr"><td> <code title="">Amacr;</code> </td> <td> U+00100 </td> <td> <span class="glyph" title="">Ä€</span> </td> </tr><tr id="entity-amacr"><td> <code title="">amacr;</code> </td> <td> U+00101 </td> <td> <span class="glyph" title="">ā</span> </td> </tr><tr id="entity-amalg"><td> <code title="">amalg;</code> </td> <td> U+02A3F </td> <td> <span class="glyph" title="">⨿</span> </td> </tr><tr id="entity-AMP"><td> <code title="">AMP;</code> </td> <td> U+00026 </td> <td> <span class="glyph" title="">&</span> </td> </tr><tr class="impl" id="entity-AMP-legacy"><td> <code title="">AMP</code> </td> <td> U+00026 </td> <td> <span title="">&</span> </td> </tr><tr id="entity-amp"><td> <code title="">amp;</code> </td> <td> U+00026 </td> <td> <span class="glyph" title="">&</span> </td> </tr><tr class="impl" id="entity-amp-legacy"><td> <code title="">amp</code> </td> <td> U+00026 </td> <td> <span title="">&</span> </td> </tr><tr id="entity-And"><td> <code title="">And;</code> </td> <td> U+02A53 </td> <td> <span class="glyph" title="">â©“</span> </td> </tr><tr id="entity-and"><td> <code title="">and;</code> </td> <td> U+02227 </td> <td> <span class="glyph" title="">∧</span> </td> </tr><tr id="entity-andand"><td> <code title="">andand;</code> </td> <td> U+02A55 </td> <td> <span class="glyph" title="">â©•</span> </td> </tr><tr id="entity-andd"><td> <code title="">andd;</code> </td> <td> U+02A5C </td> <td> <span class="glyph" title="">⩜</span> </td> </tr><tr id="entity-andslope"><td> <code title="">andslope;</code> </td> <td> U+02A58 </td> <td> <span class="glyph" title="">⩘</span> </td> </tr><tr id="entity-andv"><td> <code title="">andv;</code> </td> <td> U+02A5A </td> <td> <span class="glyph" title="">⩚</span> </td> </tr><tr id="entity-ang"><td> <code title="">ang;</code> </td> <td> U+02220 </td> <td> <span class="glyph" title="">∠</span> </td> </tr><tr id="entity-ange"><td> <code title="">ange;</code> </td> <td> U+029A4 </td> <td> <span class="glyph" title="">⦤</span> </td> </tr><tr id="entity-angle"><td> <code title="">angle;</code> </td> <td> U+02220 </td> <td> <span class="glyph" title="">∠</span> </td> </tr><tr id="entity-angmsd"><td> <code title="">angmsd;</code> </td> <td> U+02221 </td> <td> <span class="glyph" title="">∡</span> </td> </tr><tr id="entity-angmsdaa"><td> <code title="">angmsdaa;</code> </td> <td> U+029A8 </td> <td> <span class="glyph" title="">⦨</span> </td> </tr><tr id="entity-angmsdab"><td> <code title="">angmsdab;</code> </td> <td> U+029A9 </td> <td> <span class="glyph" title="">⦩</span> </td> </tr><tr id="entity-angmsdac"><td> <code title="">angmsdac;</code> </td> <td> U+029AA </td> <td> <span class="glyph" title="">⦪</span> </td> </tr><tr id="entity-angmsdad"><td> <code title="">angmsdad;</code> </td> <td> U+029AB </td> <td> <span class="glyph" title="">⦫</span> </td> </tr><tr id="entity-angmsdae"><td> <code title="">angmsdae;</code> </td> <td> U+029AC </td> <td> <span class="glyph" title="">⦬</span> </td> </tr><tr id="entity-angmsdaf"><td> <code title="">angmsdaf;</code> </td> <td> U+029AD </td> <td> <span class="glyph" title="">⦭</span> </td> </tr><tr id="entity-angmsdag"><td> <code title="">angmsdag;</code> </td> <td> U+029AE </td> <td> <span class="glyph" title="">⦮</span> </td> </tr><tr id="entity-angmsdah"><td> <code title="">angmsdah;</code> </td> <td> U+029AF </td> <td> <span class="glyph" title="">⦯</span> </td> </tr><tr id="entity-angrt"><td> <code title="">angrt;</code> </td> <td> U+0221F </td> <td> <span class="glyph" title="">∟</span> </td> </tr><tr id="entity-angrtvb"><td> <code title="">angrtvb;</code> </td> <td> U+022BE </td> <td> <span class="glyph" title="">⊾</span> </td> </tr><tr id="entity-angrtvbd"><td> <code title="">angrtvbd;</code> </td> <td> U+0299D </td> <td> <span class="glyph" title="">⦝</span> </td> </tr><tr id="entity-angsph"><td> <code title="">angsph;</code> </td> <td> U+02222 </td> <td> <span class="glyph" title="">∢</span> </td> </tr><tr id="entity-angst"><td> <code title="">angst;</code> </td> <td> U+000C5 </td> <td> <span class="glyph" title="">Ã…</span> </td> </tr><tr id="entity-angzarr"><td> <code title="">angzarr;</code> </td> <td> U+0237C </td> <td> <span class="glyph" title="">⍼</span> </td> </tr><tr id="entity-Aogon"><td> <code title="">Aogon;</code> </td> <td> U+00104 </td> <td> <span class="glyph" title="">Ä„</span> </td> </tr><tr id="entity-aogon"><td> <code title="">aogon;</code> </td> <td> U+00105 </td> <td> <span class="glyph" title="">Ä…</span> </td> </tr><tr id="entity-Aopf"><td> <code title="">Aopf;</code> </td> <td> U+1D538 </td> <td> <span class="glyph" title="">𝔸</span> </td> </tr><tr id="entity-aopf"><td> <code title="">aopf;</code> </td> <td> U+1D552 </td> <td> <span class="glyph" title="">𝕒</span> </td> </tr><tr id="entity-ap"><td> <code title="">ap;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-apacir"><td> <code title="">apacir;</code> </td> <td> U+02A6F </td> <td> <span class="glyph" title="">⩯</span> </td> </tr><tr id="entity-apE"><td> <code title="">apE;</code> </td> <td> U+02A70 </td> <td> <span class="glyph" title="">â©°</span> </td> </tr><tr id="entity-ape"><td> <code title="">ape;</code> </td> <td> U+0224A </td> <td> <span class="glyph" title="">≊</span> </td> </tr><tr id="entity-apid"><td> <code title="">apid;</code> </td> <td> U+0224B </td> <td> <span class="glyph" title="">≋</span> </td> </tr><tr id="entity-apos"><td> <code title="">apos;</code> </td> <td> U+00027 </td> <td> <span class="glyph" title="">'</span> </td> </tr><tr id="entity-ApplyFunction"><td> <code title="">ApplyFunction;</code> </td> <td> U+02061 </td> <td> <span class="glyph" title="">⁡</span> </td> </tr><tr id="entity-approx"><td> <code title="">approx;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-approxeq"><td> <code title="">approxeq;</code> </td> <td> U+0224A </td> <td> <span class="glyph" title="">≊</span> </td> </tr><tr id="entity-Aring"><td> <code title="">Aring;</code> </td> <td> U+000C5 </td> <td> <span class="glyph" title="">Ã…</span> </td> </tr><tr class="impl" id="entity-Aring-legacy"><td> <code title="">Aring</code> </td> <td> U+000C5 </td> <td> <span title="">Ã…</span> </td> </tr><tr id="entity-aring"><td> <code title="">aring;</code> </td> <td> U+000E5 </td> <td> <span class="glyph" title="">Ã¥</span> </td> </tr><tr class="impl" id="entity-aring-legacy"><td> <code title="">aring</code> </td> <td> U+000E5 </td> <td> <span title="">Ã¥</span> </td> </tr><tr id="entity-Ascr"><td> <code title="">Ascr;</code> </td> <td> U+1D49C </td> <td> <span class="glyph" title="">𝒜</span> </td> </tr><tr id="entity-ascr"><td> <code title="">ascr;</code> </td> <td> U+1D4B6 </td> <td> <span class="glyph" title="">𝒶</span> </td> </tr><tr id="entity-Assign"><td> <code title="">Assign;</code> </td> <td> U+02254 </td> <td> <span class="glyph" title="">≔</span> </td> </tr><tr id="entity-ast"><td> <code title="">ast;</code> </td> <td> U+0002A </td> <td> <span class="glyph" title="">*</span> </td> </tr><tr id="entity-asymp"><td> <code title="">asymp;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-asympeq"><td> <code title="">asympeq;</code> </td> <td> U+0224D </td> <td> <span class="glyph" title="">≍</span> </td> </tr><tr id="entity-Atilde"><td> <code title="">Atilde;</code> </td> <td> U+000C3 </td> <td> <span class="glyph" title="">Ã</span> </td> </tr><tr class="impl" id="entity-Atilde-legacy"><td> <code title="">Atilde</code> </td> <td> U+000C3 </td> <td> <span title="">Ã</span> </td> </tr><tr id="entity-atilde"><td> <code title="">atilde;</code> </td> <td> U+000E3 </td> <td> <span class="glyph" title="">ã</span> </td> </tr><tr class="impl" id="entity-atilde-legacy"><td> <code title="">atilde</code> </td> <td> U+000E3 </td> <td> <span title="">ã</span> </td> </tr><tr id="entity-Auml"><td> <code title="">Auml;</code> </td> <td> U+000C4 </td> <td> <span class="glyph" title="">Ä</span> </td> </tr><tr class="impl" id="entity-Auml-legacy"><td> <code title="">Auml</code> </td> <td> U+000C4 </td> <td> <span title="">Ä</span> </td> </tr><tr id="entity-auml"><td> <code title="">auml;</code> </td> <td> U+000E4 </td> <td> <span class="glyph" title="">ä</span> </td> </tr><tr class="impl" id="entity-auml-legacy"><td> <code title="">auml</code> </td> <td> U+000E4 </td> <td> <span title="">ä</span> </td> </tr><tr id="entity-awconint"><td> <code title="">awconint;</code> </td> <td> U+02233 </td> <td> <span class="glyph" title="">∳</span> </td> </tr><tr id="entity-awint"><td> <code title="">awint;</code> </td> <td> U+02A11 </td> <td> <span class="glyph" title="">⨑</span> </td> </tr><tr id="entity-backcong"><td> <code title="">backcong;</code> </td> <td> U+0224C </td> <td> <span class="glyph" title="">≌</span> </td> </tr><tr id="entity-backepsilon"><td> <code title="">backepsilon;</code> </td> <td> U+003F6 </td> <td> <span class="glyph" title="">϶</span> </td> </tr><tr id="entity-backprime"><td> <code title="">backprime;</code> </td> <td> U+02035 </td> <td> <span class="glyph" title="">‵</span> </td> </tr><tr id="entity-backsim"><td> <code title="">backsim;</code> </td> <td> U+0223D </td> <td> <span class="glyph" title="">∽</span> </td> </tr><tr id="entity-backsimeq"><td> <code title="">backsimeq;</code> </td> <td> U+022CD </td> <td> <span class="glyph" title="">⋍</span> </td> </tr><tr id="entity-Backslash"><td> <code title="">Backslash;</code> </td> <td> U+02216 </td> <td> <span class="glyph" title="">∖</span> </td> </tr><tr id="entity-Barv"><td> <code title="">Barv;</code> </td> <td> U+02AE7 </td> <td> <span class="glyph" title="">â«§</span> </td> </tr><tr id="entity-barvee"><td> <code title="">barvee;</code> </td> <td> U+022BD </td> <td> <span class="glyph" title="">⊽</span> </td> </tr><tr id="entity-Barwed"><td> <code title="">Barwed;</code> </td> <td> U+02306 </td> <td> <span class="glyph" title="">⌆</span> </td> </tr><tr id="entity-barwed"><td> <code title="">barwed;</code> </td> <td> U+02305 </td> <td> <span class="glyph" title="">⌅</span> </td> </tr><tr id="entity-barwedge"><td> <code title="">barwedge;</code> </td> <td> U+02305 </td> <td> <span class="glyph" title="">⌅</span> </td> </tr><tr id="entity-bbrk"><td> <code title="">bbrk;</code> </td> <td> U+023B5 </td> <td> <span class="glyph" title="">⎵</span> </td> </tr><tr id="entity-bbrktbrk"><td> <code title="">bbrktbrk;</code> </td> <td> U+023B6 </td> <td> <span class="glyph" title="">⎶</span> </td> </tr><tr id="entity-bcong"><td> <code title="">bcong;</code> </td> <td> U+0224C </td> <td> <span class="glyph" title="">≌</span> </td> </tr><tr id="entity-Bcy"><td> <code title="">Bcy;</code> </td> <td> U+00411 </td> <td> <span class="glyph" title="">Б</span> </td> </tr><tr id="entity-bcy"><td> <code title="">bcy;</code> </td> <td> U+00431 </td> <td> <span class="glyph" title="">б</span> </td> </tr><tr id="entity-bdquo"><td> <code title="">bdquo;</code> </td> <td> U+0201E </td> <td> <span class="glyph" title="">„</span> </td> </tr><tr id="entity-becaus"><td> <code title="">becaus;</code> </td> <td> U+02235 </td> <td> <span class="glyph" title="">∵</span> </td> </tr><tr id="entity-Because"><td> <code title="">Because;</code> </td> <td> U+02235 </td> <td> <span class="glyph" title="">∵</span> </td> </tr><tr id="entity-because"><td> <code title="">because;</code> </td> <td> U+02235 </td> <td> <span class="glyph" title="">∵</span> </td> </tr><tr id="entity-bemptyv"><td> <code title="">bemptyv;</code> </td> <td> U+029B0 </td> <td> <span class="glyph" title="">⦰</span> </td> </tr><tr id="entity-bepsi"><td> <code title="">bepsi;</code> </td> <td> U+003F6 </td> <td> <span class="glyph" title="">϶</span> </td> </tr><tr id="entity-bernou"><td> <code title="">bernou;</code> </td> <td> U+0212C </td> <td> <span class="glyph" title="">ℬ</span> </td> </tr><tr id="entity-Bernoullis"><td> <code title="">Bernoullis;</code> </td> <td> U+0212C </td> <td> <span class="glyph" title="">ℬ</span> </td> </tr><tr id="entity-Beta"><td> <code title="">Beta;</code> </td> <td> U+00392 </td> <td> <span class="glyph" title="">Î’</span> </td> </tr><tr id="entity-beta"><td> <code title="">beta;</code> </td> <td> U+003B2 </td> <td> <span class="glyph" title="">β</span> </td> </tr><tr id="entity-beth"><td> <code title="">beth;</code> </td> <td> U+02136 </td> <td> <span class="glyph" title="">â„¶</span> </td> </tr><tr id="entity-between"><td> <code title="">between;</code> </td> <td> U+0226C </td> <td> <span class="glyph" title="">≬</span> </td> </tr><tr id="entity-Bfr"><td> <code title="">Bfr;</code> </td> <td> U+1D505 </td> <td> <span class="glyph" title="">𝔅</span> </td> </tr><tr id="entity-bfr"><td> <code title="">bfr;</code> </td> <td> U+1D51F </td> <td> <span class="glyph" title="">𝔟</span> </td> </tr><tr id="entity-bigcap"><td> <code title="">bigcap;</code> </td> <td> U+022C2 </td> <td> <span class="glyph" title="">â‹‚</span> </td> </tr><tr id="entity-bigcirc"><td> <code title="">bigcirc;</code> </td> <td> U+025EF </td> <td> <span class="glyph" title="">â—¯</span> </td> </tr><tr id="entity-bigcup"><td> <code title="">bigcup;</code> </td> <td> U+022C3 </td> <td> <span class="glyph" title="">⋃</span> </td> </tr><tr id="entity-bigodot"><td> <code title="">bigodot;</code> </td> <td> U+02A00 </td> <td> <span class="glyph" title="">⨀</span> </td> </tr><tr id="entity-bigoplus"><td> <code title="">bigoplus;</code> </td> <td> U+02A01 </td> <td> <span class="glyph" title="">⨁</span> </td> </tr><tr id="entity-bigotimes"><td> <code title="">bigotimes;</code> </td> <td> U+02A02 </td> <td> <span class="glyph" title="">⨂</span> </td> </tr><tr id="entity-bigsqcup"><td> <code title="">bigsqcup;</code> </td> <td> U+02A06 </td> <td> <span class="glyph" title="">⨆</span> </td> </tr><tr id="entity-bigstar"><td> <code title="">bigstar;</code> </td> <td> U+02605 </td> <td> <span class="glyph" title="">★</span> </td> </tr><tr id="entity-bigtriangledown"><td> <code title="">bigtriangledown;</code> </td> <td> U+025BD </td> <td> <span class="glyph" title="">â–½</span> </td> </tr><tr id="entity-bigtriangleup"><td> <code title="">bigtriangleup;</code> </td> <td> U+025B3 </td> <td> <span class="glyph" title="">â–³</span> </td> </tr><tr id="entity-biguplus"><td> <code title="">biguplus;</code> </td> <td> U+02A04 </td> <td> <span class="glyph" title="">⨄</span> </td> </tr><tr id="entity-bigvee"><td> <code title="">bigvee;</code> </td> <td> U+022C1 </td> <td> <span class="glyph" title="">⋁</span> </td> </tr><tr id="entity-bigwedge"><td> <code title="">bigwedge;</code> </td> <td> U+022C0 </td> <td> <span class="glyph" title="">â‹€</span> </td> </tr><tr id="entity-bkarow"><td> <code title="">bkarow;</code> </td> <td> U+0290D </td> <td> <span class="glyph" title="">⤍</span> </td> </tr><tr id="entity-blacklozenge"><td> <code title="">blacklozenge;</code> </td> <td> U+029EB </td> <td> <span class="glyph" title="">â§«</span> </td> </tr><tr id="entity-blacksquare"><td> <code title="">blacksquare;</code> </td> <td> U+025AA </td> <td> <span class="glyph" title="">â–ª</span> </td> </tr><tr id="entity-blacktriangle"><td> <code title="">blacktriangle;</code> </td> <td> U+025B4 </td> <td> <span class="glyph" title="">â–´</span> </td> </tr><tr id="entity-blacktriangledown"><td> <code title="">blacktriangledown;</code> </td> <td> U+025BE </td> <td> <span class="glyph" title="">â–¾</span> </td> </tr><tr id="entity-blacktriangleleft"><td> <code title="">blacktriangleleft;</code> </td> <td> U+025C2 </td> <td> <span class="glyph" title="">â—‚</span> </td> </tr><tr id="entity-blacktriangleright"><td> <code title="">blacktriangleright;</code> </td> <td> U+025B8 </td> <td> <span class="glyph" title="">â–¸</span> </td> </tr><tr id="entity-blank"><td> <code title="">blank;</code> </td> <td> U+02423 </td> <td> <span class="glyph" title="">␣</span> </td> </tr><tr id="entity-blk12"><td> <code title="">blk12;</code> </td> <td> U+02592 </td> <td> <span class="glyph" title="">â–’</span> </td> </tr><tr id="entity-blk14"><td> <code title="">blk14;</code> </td> <td> U+02591 </td> <td> <span class="glyph" title="">â–‘</span> </td> </tr><tr id="entity-blk34"><td> <code title="">blk34;</code> </td> <td> U+02593 </td> <td> <span class="glyph" title="">â–“</span> </td> </tr><tr id="entity-block"><td> <code title="">block;</code> </td> <td> U+02588 </td> <td> <span class="glyph" title="">â–ˆ</span> </td> </tr><tr id="entity-bne"><td> <code title="">bne;</code> </td> <td> U+0003D U+020E5 </td> <td> <span class="glyph compound" title="">=⃥</span> </td> </tr><tr id="entity-bnequiv"><td> <code title="">bnequiv;</code> </td> <td> U+02261 U+020E5 </td> <td> <span class="glyph compound" title="">≡⃥</span> </td> </tr><tr id="entity-bNot"><td> <code title="">bNot;</code> </td> <td> U+02AED </td> <td> <span class="glyph" title="">â«­</span> </td> </tr><tr id="entity-bnot"><td> <code title="">bnot;</code> </td> <td> U+02310 </td> <td> <span class="glyph" title="">⌐</span> </td> </tr><tr id="entity-Bopf"><td> <code title="">Bopf;</code> </td> <td> U+1D539 </td> <td> <span class="glyph" title="">𝔹</span> </td> </tr><tr id="entity-bopf"><td> <code title="">bopf;</code> </td> <td> U+1D553 </td> <td> <span class="glyph" title="">𝕓</span> </td> </tr><tr id="entity-bot"><td> <code title="">bot;</code> </td> <td> U+022A5 </td> <td> <span class="glyph" title="">⊥</span> </td> </tr><tr id="entity-bottom"><td> <code title="">bottom;</code> </td> <td> U+022A5 </td> <td> <span class="glyph" title="">⊥</span> </td> </tr><tr id="entity-bowtie"><td> <code title="">bowtie;</code> </td> <td> U+022C8 </td> <td> <span class="glyph" title="">⋈</span> </td> </tr><tr id="entity-boxbox"><td> <code title="">boxbox;</code> </td> <td> U+029C9 </td> <td> <span class="glyph" title="">⧉</span> </td> </tr><tr id="entity-boxDL"><td> <code title="">boxDL;</code> </td> <td> U+02557 </td> <td> <span class="glyph" title="">â•—</span> </td> </tr><tr id="entity-boxDl"><td> <code title="">boxDl;</code> </td> <td> U+02556 </td> <td> <span class="glyph" title="">â•–</span> </td> </tr><tr id="entity-boxdL"><td> <code title="">boxdL;</code> </td> <td> U+02555 </td> <td> <span class="glyph" title="">â••</span> </td> </tr><tr id="entity-boxdl"><td> <code title="">boxdl;</code> </td> <td> U+02510 </td> <td> <span class="glyph" title="">┐</span> </td> </tr><tr id="entity-boxDR"><td> <code title="">boxDR;</code> </td> <td> U+02554 </td> <td> <span class="glyph" title="">â•”</span> </td> </tr><tr id="entity-boxDr"><td> <code title="">boxDr;</code> </td> <td> U+02553 </td> <td> <span class="glyph" title="">â•“</span> </td> </tr><tr id="entity-boxdR"><td> <code title="">boxdR;</code> </td> <td> U+02552 </td> <td> <span class="glyph" title="">â•’</span> </td> </tr><tr id="entity-boxdr"><td> <code title="">boxdr;</code> </td> <td> U+0250C </td> <td> <span class="glyph" title="">┌</span> </td> </tr><tr id="entity-boxH"><td> <code title="">boxH;</code> </td> <td> U+02550 </td> <td> <span class="glyph" title="">═</span> </td> </tr><tr id="entity-boxh"><td> <code title="">boxh;</code> </td> <td> U+02500 </td> <td> <span class="glyph" title="">─</span> </td> </tr><tr id="entity-boxHD"><td> <code title="">boxHD;</code> </td> <td> U+02566 </td> <td> <span class="glyph" title="">╦</span> </td> </tr><tr id="entity-boxHd"><td> <code title="">boxHd;</code> </td> <td> U+02564 </td> <td> <span class="glyph" title="">╤</span> </td> </tr><tr id="entity-boxhD"><td> <code title="">boxhD;</code> </td> <td> U+02565 </td> <td> <span class="glyph" title="">â•¥</span> </td> </tr><tr id="entity-boxhd"><td> <code title="">boxhd;</code> </td> <td> U+0252C </td> <td> <span class="glyph" title="">┬</span> </td> </tr><tr id="entity-boxHU"><td> <code title="">boxHU;</code> </td> <td> U+02569 </td> <td> <span class="glyph" title="">â•©</span> </td> </tr><tr id="entity-boxHu"><td> <code title="">boxHu;</code> </td> <td> U+02567 </td> <td> <span class="glyph" title="">â•§</span> </td> </tr><tr id="entity-boxhU"><td> <code title="">boxhU;</code> </td> <td> U+02568 </td> <td> <span class="glyph" title="">╨</span> </td> </tr><tr id="entity-boxhu"><td> <code title="">boxhu;</code> </td> <td> U+02534 </td> <td> <span class="glyph" title="">â”´</span> </td> </tr><tr id="entity-boxminus"><td> <code title="">boxminus;</code> </td> <td> U+0229F </td> <td> <span class="glyph" title="">⊟</span> </td> </tr><tr id="entity-boxplus"><td> <code title="">boxplus;</code> </td> <td> U+0229E </td> <td> <span class="glyph" title="">⊞</span> </td> </tr><tr id="entity-boxtimes"><td> <code title="">boxtimes;</code> </td> <td> U+022A0 </td> <td> <span class="glyph" title="">⊠</span> </td> </tr><tr id="entity-boxUL"><td> <code title="">boxUL;</code> </td> <td> U+0255D </td> <td> <span class="glyph" title="">╝</span> </td> </tr><tr id="entity-boxUl"><td> <code title="">boxUl;</code> </td> <td> U+0255C </td> <td> <span class="glyph" title="">╜</span> </td> </tr><tr id="entity-boxuL"><td> <code title="">boxuL;</code> </td> <td> U+0255B </td> <td> <span class="glyph" title="">â•›</span> </td> </tr><tr id="entity-boxul"><td> <code title="">boxul;</code> </td> <td> U+02518 </td> <td> <span class="glyph" title="">┘</span> </td> </tr><tr id="entity-boxUR"><td> <code title="">boxUR;</code> </td> <td> U+0255A </td> <td> <span class="glyph" title="">╚</span> </td> </tr><tr id="entity-boxUr"><td> <code title="">boxUr;</code> </td> <td> U+02559 </td> <td> <span class="glyph" title="">â•™</span> </td> </tr><tr id="entity-boxuR"><td> <code title="">boxuR;</code> </td> <td> U+02558 </td> <td> <span class="glyph" title="">╘</span> </td> </tr><tr id="entity-boxur"><td> <code title="">boxur;</code> </td> <td> U+02514 </td> <td> <span class="glyph" title="">â””</span> </td> </tr><tr id="entity-boxV"><td> <code title="">boxV;</code> </td> <td> U+02551 </td> <td> <span class="glyph" title="">â•‘</span> </td> </tr><tr id="entity-boxv"><td> <code title="">boxv;</code> </td> <td> U+02502 </td> <td> <span class="glyph" title="">│</span> </td> </tr><tr id="entity-boxVH"><td> <code title="">boxVH;</code> </td> <td> U+0256C </td> <td> <span class="glyph" title="">╬</span> </td> </tr><tr id="entity-boxVh"><td> <code title="">boxVh;</code> </td> <td> U+0256B </td> <td> <span class="glyph" title="">â•«</span> </td> </tr><tr id="entity-boxvH"><td> <code title="">boxvH;</code> </td> <td> U+0256A </td> <td> <span class="glyph" title="">╪</span> </td> </tr><tr id="entity-boxvh"><td> <code title="">boxvh;</code> </td> <td> U+0253C </td> <td> <span class="glyph" title="">┼</span> </td> </tr><tr id="entity-boxVL"><td> <code title="">boxVL;</code> </td> <td> U+02563 </td> <td> <span class="glyph" title="">â•£</span> </td> </tr><tr id="entity-boxVl"><td> <code title="">boxVl;</code> </td> <td> U+02562 </td> <td> <span class="glyph" title="">â•¢</span> </td> </tr><tr id="entity-boxvL"><td> <code title="">boxvL;</code> </td> <td> U+02561 </td> <td> <span class="glyph" title="">â•¡</span> </td> </tr><tr id="entity-boxvl"><td> <code title="">boxvl;</code> </td> <td> U+02524 </td> <td> <span class="glyph" title="">┤</span> </td> </tr><tr id="entity-boxVR"><td> <code title="">boxVR;</code> </td> <td> U+02560 </td> <td> <span class="glyph" title="">â• </span> </td> </tr><tr id="entity-boxVr"><td> <code title="">boxVr;</code> </td> <td> U+0255F </td> <td> <span class="glyph" title="">╟</span> </td> </tr><tr id="entity-boxvR"><td> <code title="">boxvR;</code> </td> <td> U+0255E </td> <td> <span class="glyph" title="">╞</span> </td> </tr><tr id="entity-boxvr"><td> <code title="">boxvr;</code> </td> <td> U+0251C </td> <td> <span class="glyph" title="">├</span> </td> </tr><tr id="entity-bprime"><td> <code title="">bprime;</code> </td> <td> U+02035 </td> <td> <span class="glyph" title="">‵</span> </td> </tr><tr id="entity-Breve"><td> <code title="">Breve;</code> </td> <td> U+002D8 </td> <td> <span class="glyph" title="">˘</span> </td> </tr><tr id="entity-breve"><td> <code title="">breve;</code> </td> <td> U+002D8 </td> <td> <span class="glyph" title="">˘</span> </td> </tr><tr id="entity-brvbar"><td> <code title="">brvbar;</code> </td> <td> U+000A6 </td> <td> <span class="glyph" title="">¦</span> </td> </tr><tr class="impl" id="entity-brvbar-legacy"><td> <code title="">brvbar</code> </td> <td> U+000A6 </td> <td> <span title="">¦</span> </td> </tr><tr id="entity-Bscr"><td> <code title="">Bscr;</code> </td> <td> U+0212C </td> <td> <span class="glyph" title="">ℬ</span> </td> </tr><tr id="entity-bscr"><td> <code title="">bscr;</code> </td> <td> U+1D4B7 </td> <td> <span class="glyph" title="">𝒷</span> </td> </tr><tr id="entity-bsemi"><td> <code title="">bsemi;</code> </td> <td> U+0204F </td> <td> <span class="glyph" title="">⁏</span> </td> </tr><tr id="entity-bsim"><td> <code title="">bsim;</code> </td> <td> U+0223D </td> <td> <span class="glyph" title="">∽</span> </td> </tr><tr id="entity-bsime"><td> <code title="">bsime;</code> </td> <td> U+022CD </td> <td> <span class="glyph" title="">⋍</span> </td> </tr><tr id="entity-bsol"><td> <code title="">bsol;</code> </td> <td> U+0005C </td> <td> <span class="glyph" title="">\</span> </td> </tr><tr id="entity-bsolb"><td> <code title="">bsolb;</code> </td> <td> U+029C5 </td> <td> <span class="glyph" title="">â§…</span> </td> </tr><tr id="entity-bsolhsub"><td> <code title="">bsolhsub;</code> </td> <td> U+027C8 </td> <td> <span class="glyph" title="">⟈</span> </td> </tr><tr id="entity-bull"><td> <code title="">bull;</code> </td> <td> U+02022 </td> <td> <span class="glyph" title="">•</span> </td> </tr><tr id="entity-bullet"><td> <code title="">bullet;</code> </td> <td> U+02022 </td> <td> <span class="glyph" title="">•</span> </td> </tr><tr id="entity-bump"><td> <code title="">bump;</code> </td> <td> U+0224E </td> <td> <span class="glyph" title="">≎</span> </td> </tr><tr id="entity-bumpE"><td> <code title="">bumpE;</code> </td> <td> U+02AAE </td> <td> <span class="glyph" title="">⪮</span> </td> </tr><tr id="entity-bumpe"><td> <code title="">bumpe;</code> </td> <td> U+0224F </td> <td> <span class="glyph" title="">≏</span> </td> </tr><tr id="entity-Bumpeq"><td> <code title="">Bumpeq;</code> </td> <td> U+0224E </td> <td> <span class="glyph" title="">≎</span> </td> </tr><tr id="entity-bumpeq"><td> <code title="">bumpeq;</code> </td> <td> U+0224F </td> <td> <span class="glyph" title="">≏</span> </td> </tr><tr id="entity-Cacute"><td> <code title="">Cacute;</code> </td> <td> U+00106 </td> <td> <span class="glyph" title="">Ć</span> </td> </tr><tr id="entity-cacute"><td> <code title="">cacute;</code> </td> <td> U+00107 </td> <td> <span class="glyph" title="">ć</span> </td> </tr><tr id="entity-Cap"><td> <code title="">Cap;</code> </td> <td> U+022D2 </td> <td> <span class="glyph" title="">â‹’</span> </td> </tr><tr id="entity-cap"><td> <code title="">cap;</code> </td> <td> U+02229 </td> <td> <span class="glyph" title="">∩</span> </td> </tr><tr id="entity-capand"><td> <code title="">capand;</code> </td> <td> U+02A44 </td> <td> <span class="glyph" title="">â©„</span> </td> </tr><tr id="entity-capbrcup"><td> <code title="">capbrcup;</code> </td> <td> U+02A49 </td> <td> <span class="glyph" title="">⩉</span> </td> </tr><tr id="entity-capcap"><td> <code title="">capcap;</code> </td> <td> U+02A4B </td> <td> <span class="glyph" title="">â©‹</span> </td> </tr><tr id="entity-capcup"><td> <code title="">capcup;</code> </td> <td> U+02A47 </td> <td> <span class="glyph" title="">⩇</span> </td> </tr><tr id="entity-capdot"><td> <code title="">capdot;</code> </td> <td> U+02A40 </td> <td> <span class="glyph" title="">â©€</span> </td> </tr><tr id="entity-CapitalDifferentialD"><td> <code title="">CapitalDifferentialD;</code> </td> <td> U+02145 </td> <td> <span class="glyph" title="">â……</span> </td> </tr><tr id="entity-caps"><td> <code title="">caps;</code> </td> <td> U+02229 U+0FE00 </td> <td> <span class="glyph compound" title="">∩︀</span> </td> </tr><tr id="entity-caret"><td> <code title="">caret;</code> </td> <td> U+02041 </td> <td> <span class="glyph" title="">⁁</span> </td> </tr><tr id="entity-caron"><td> <code title="">caron;</code> </td> <td> U+002C7 </td> <td> <span class="glyph" title="">ˇ</span> </td> </tr><tr id="entity-Cayleys"><td> <code title="">Cayleys;</code> </td> <td> U+0212D </td> <td> <span class="glyph" title="">â„­</span> </td> </tr><tr id="entity-ccaps"><td> <code title="">ccaps;</code> </td> <td> U+02A4D </td> <td> <span class="glyph" title="">⩍</span> </td> </tr><tr id="entity-Ccaron"><td> <code title="">Ccaron;</code> </td> <td> U+0010C </td> <td> <span class="glyph" title="">ÄŒ</span> </td> </tr><tr id="entity-ccaron"><td> <code title="">ccaron;</code> </td> <td> U+0010D </td> <td> <span class="glyph" title="">č</span> </td> </tr><tr id="entity-Ccedil"><td> <code title="">Ccedil;</code> </td> <td> U+000C7 </td> <td> <span class="glyph" title="">Ç</span> </td> </tr><tr class="impl" id="entity-Ccedil-legacy"><td> <code title="">Ccedil</code> </td> <td> U+000C7 </td> <td> <span title="">Ç</span> </td> </tr><tr id="entity-ccedil"><td> <code title="">ccedil;</code> </td> <td> U+000E7 </td> <td> <span class="glyph" title="">ç</span> </td> </tr><tr class="impl" id="entity-ccedil-legacy"><td> <code title="">ccedil</code> </td> <td> U+000E7 </td> <td> <span title="">ç</span> </td> </tr><tr id="entity-Ccirc"><td> <code title="">Ccirc;</code> </td> <td> U+00108 </td> <td> <span class="glyph" title="">Ĉ</span> </td> </tr><tr id="entity-ccirc"><td> <code title="">ccirc;</code> </td> <td> U+00109 </td> <td> <span class="glyph" title="">ĉ</span> </td> </tr><tr id="entity-Cconint"><td> <code title="">Cconint;</code> </td> <td> U+02230 </td> <td> <span class="glyph" title="">∰</span> </td> </tr><tr id="entity-ccups"><td> <code title="">ccups;</code> </td> <td> U+02A4C </td> <td> <span class="glyph" title="">⩌</span> </td> </tr><tr id="entity-ccupssm"><td> <code title="">ccupssm;</code> </td> <td> U+02A50 </td> <td> <span class="glyph" title="">⩐</span> </td> </tr><tr id="entity-Cdot"><td> <code title="">Cdot;</code> </td> <td> U+0010A </td> <td> <span class="glyph" title="">ÄŠ</span> </td> </tr><tr id="entity-cdot"><td> <code title="">cdot;</code> </td> <td> U+0010B </td> <td> <span class="glyph" title="">Ä‹</span> </td> </tr><tr id="entity-cedil"><td> <code title="">cedil;</code> </td> <td> U+000B8 </td> <td> <span class="glyph" title="">¸</span> </td> </tr><tr class="impl" id="entity-cedil-legacy"><td> <code title="">cedil</code> </td> <td> U+000B8 </td> <td> <span title="">¸</span> </td> </tr><tr id="entity-Cedilla"><td> <code title="">Cedilla;</code> </td> <td> U+000B8 </td> <td> <span class="glyph" title="">¸</span> </td> </tr><tr id="entity-cemptyv"><td> <code title="">cemptyv;</code> </td> <td> U+029B2 </td> <td> <span class="glyph" title="">⦲</span> </td> </tr><tr id="entity-cent"><td> <code title="">cent;</code> </td> <td> U+000A2 </td> <td> <span class="glyph" title="">¢</span> </td> </tr><tr class="impl" id="entity-cent-legacy"><td> <code title="">cent</code> </td> <td> U+000A2 </td> <td> <span title="">¢</span> </td> </tr><tr id="entity-CenterDot"><td> <code title="">CenterDot;</code> </td> <td> U+000B7 </td> <td> <span class="glyph" title="">·</span> </td> </tr><tr id="entity-centerdot"><td> <code title="">centerdot;</code> </td> <td> U+000B7 </td> <td> <span class="glyph" title="">·</span> </td> </tr><tr id="entity-Cfr"><td> <code title="">Cfr;</code> </td> <td> U+0212D </td> <td> <span class="glyph" title="">â„­</span> </td> </tr><tr id="entity-cfr"><td> <code title="">cfr;</code> </td> <td> U+1D520 </td> <td> <span class="glyph" title="">𝔠</span> </td> </tr><tr id="entity-CHcy"><td> <code title="">CHcy;</code> </td> <td> U+00427 </td> <td> <span class="glyph" title="">Ч</span> </td> </tr><tr id="entity-chcy"><td> <code title="">chcy;</code> </td> <td> U+00447 </td> <td> <span class="glyph" title="">ч</span> </td> </tr><tr id="entity-check"><td> <code title="">check;</code> </td> <td> U+02713 </td> <td> <span class="glyph" title="">✓</span> </td> </tr><tr id="entity-checkmark"><td> <code title="">checkmark;</code> </td> <td> U+02713 </td> <td> <span class="glyph" title="">✓</span> </td> </tr><tr id="entity-Chi"><td> <code title="">Chi;</code> </td> <td> U+003A7 </td> <td> <span class="glyph" title="">Χ</span> </td> </tr><tr id="entity-chi"><td> <code title="">chi;</code> </td> <td> U+003C7 </td> <td> <span class="glyph" title="">χ</span> </td> </tr><tr id="entity-cir"><td> <code title="">cir;</code> </td> <td> U+025CB </td> <td> <span class="glyph" title="">â—‹</span> </td> </tr><tr id="entity-circ"><td> <code title="">circ;</code> </td> <td> U+002C6 </td> <td> <span class="glyph" title="">ˆ</span> </td> </tr><tr id="entity-circeq"><td> <code title="">circeq;</code> </td> <td> U+02257 </td> <td> <span class="glyph" title="">≗</span> </td> </tr><tr id="entity-circlearrowleft"><td> <code title="">circlearrowleft;</code> </td> <td> U+021BA </td> <td> <span class="glyph" title="">↺</span> </td> </tr><tr id="entity-circlearrowright"><td> <code title="">circlearrowright;</code> </td> <td> U+021BB </td> <td> <span class="glyph" title="">↻</span> </td> </tr><tr id="entity-circledast"><td> <code title="">circledast;</code> </td> <td> U+0229B </td> <td> <span class="glyph" title="">⊛</span> </td> </tr><tr id="entity-circledcirc"><td> <code title="">circledcirc;</code> </td> <td> U+0229A </td> <td> <span class="glyph" title="">⊚</span> </td> </tr><tr id="entity-circleddash"><td> <code title="">circleddash;</code> </td> <td> U+0229D </td> <td> <span class="glyph" title="">⊝</span> </td> </tr><tr id="entity-CircleDot"><td> <code title="">CircleDot;</code> </td> <td> U+02299 </td> <td> <span class="glyph" title="">⊙</span> </td> </tr><tr id="entity-circledR"><td> <code title="">circledR;</code> </td> <td> U+000AE </td> <td> <span class="glyph" title="">®</span> </td> </tr><tr id="entity-circledS"><td> <code title="">circledS;</code> </td> <td> U+024C8 </td> <td> <span class="glyph" title="">Ⓢ</span> </td> </tr><tr id="entity-CircleMinus"><td> <code title="">CircleMinus;</code> </td> <td> U+02296 </td> <td> <span class="glyph" title="">⊖</span> </td> </tr><tr id="entity-CirclePlus"><td> <code title="">CirclePlus;</code> </td> <td> U+02295 </td> <td> <span class="glyph" title="">⊕</span> </td> </tr><tr id="entity-CircleTimes"><td> <code title="">CircleTimes;</code> </td> <td> U+02297 </td> <td> <span class="glyph" title="">⊗</span> </td> </tr><tr id="entity-cirE"><td> <code title="">cirE;</code> </td> <td> U+029C3 </td> <td> <span class="glyph" title="">⧃</span> </td> </tr><tr id="entity-cire"><td> <code title="">cire;</code> </td> <td> U+02257 </td> <td> <span class="glyph" title="">≗</span> </td> </tr><tr id="entity-cirfnint"><td> <code title="">cirfnint;</code> </td> <td> U+02A10 </td> <td> <span class="glyph" title="">⨐</span> </td> </tr><tr id="entity-cirmid"><td> <code title="">cirmid;</code> </td> <td> U+02AEF </td> <td> <span class="glyph" title="">⫯</span> </td> </tr><tr id="entity-cirscir"><td> <code title="">cirscir;</code> </td> <td> U+029C2 </td> <td> <span class="glyph" title="">â§‚</span> </td> </tr><tr id="entity-ClockwiseContourIntegral"><td> <code title="">ClockwiseContourIntegral;</code> </td> <td> U+02232 </td> <td> <span class="glyph" title="">∲</span> </td> </tr><tr id="entity-CloseCurlyDoubleQuote"><td> <code title="">CloseCurlyDoubleQuote;</code> </td> <td> U+0201D </td> <td> <span class="glyph" title="">”</span> </td> </tr><tr id="entity-CloseCurlyQuote"><td> <code title="">CloseCurlyQuote;</code> </td> <td> U+02019 </td> <td> <span class="glyph" title="">’</span> </td> </tr><tr id="entity-clubs"><td> <code title="">clubs;</code> </td> <td> U+02663 </td> <td> <span class="glyph" title="">♣</span> </td> </tr><tr id="entity-clubsuit"><td> <code title="">clubsuit;</code> </td> <td> U+02663 </td> <td> <span class="glyph" title="">♣</span> </td> </tr><tr id="entity-Colon"><td> <code title="">Colon;</code> </td> <td> U+02237 </td> <td> <span class="glyph" title="">∷</span> </td> </tr><tr id="entity-colon"><td> <code title="">colon;</code> </td> <td> U+0003A </td> <td> <span class="glyph" title="">:</span> </td> </tr><tr id="entity-Colone"><td> <code title="">Colone;</code> </td> <td> U+02A74 </td> <td> <span class="glyph" title="">â©´</span> </td> </tr><tr id="entity-colone"><td> <code title="">colone;</code> </td> <td> U+02254 </td> <td> <span class="glyph" title="">≔</span> </td> </tr><tr id="entity-coloneq"><td> <code title="">coloneq;</code> </td> <td> U+02254 </td> <td> <span class="glyph" title="">≔</span> </td> </tr><tr id="entity-comma"><td> <code title="">comma;</code> </td> <td> U+0002C </td> <td> <span class="glyph" title="">,</span> </td> </tr><tr id="entity-commat"><td> <code title="">commat;</code> </td> <td> U+00040 </td> <td> <span class="glyph" title="">@</span> </td> </tr><tr id="entity-comp"><td> <code title="">comp;</code> </td> <td> U+02201 </td> <td> <span class="glyph" title="">∁</span> </td> </tr><tr id="entity-compfn"><td> <code title="">compfn;</code> </td> <td> U+02218 </td> <td> <span class="glyph" title="">∘</span> </td> </tr><tr id="entity-complement"><td> <code title="">complement;</code> </td> <td> U+02201 </td> <td> <span class="glyph" title="">∁</span> </td> </tr><tr id="entity-complexes"><td> <code title="">complexes;</code> </td> <td> U+02102 </td> <td> <span class="glyph" title="">â„‚</span> </td> </tr><tr id="entity-cong"><td> <code title="">cong;</code> </td> <td> U+02245 </td> <td> <span class="glyph" title="">≅</span> </td> </tr><tr id="entity-congdot"><td> <code title="">congdot;</code> </td> <td> U+02A6D </td> <td> <span class="glyph" title="">â©­</span> </td> </tr><tr id="entity-Congruent"><td> <code title="">Congruent;</code> </td> <td> U+02261 </td> <td> <span class="glyph" title="">≡</span> </td> </tr><tr id="entity-Conint"><td> <code title="">Conint;</code> </td> <td> U+0222F </td> <td> <span class="glyph" title="">∯</span> </td> </tr><tr id="entity-conint"><td> <code title="">conint;</code> </td> <td> U+0222E </td> <td> <span class="glyph" title="">∮</span> </td> </tr><tr id="entity-ContourIntegral"><td> <code title="">ContourIntegral;</code> </td> <td> U+0222E </td> <td> <span class="glyph" title="">∮</span> </td> </tr><tr id="entity-Copf"><td> <code title="">Copf;</code> </td> <td> U+02102 </td> <td> <span class="glyph" title="">â„‚</span> </td> </tr><tr id="entity-copf"><td> <code title="">copf;</code> </td> <td> U+1D554 </td> <td> <span class="glyph" title="">𝕔</span> </td> </tr><tr id="entity-coprod"><td> <code title="">coprod;</code> </td> <td> U+02210 </td> <td> <span class="glyph" title="">∐</span> </td> </tr><tr id="entity-Coproduct"><td> <code title="">Coproduct;</code> </td> <td> U+02210 </td> <td> <span class="glyph" title="">∐</span> </td> </tr><tr id="entity-COPY"><td> <code title="">COPY;</code> </td> <td> U+000A9 </td> <td> <span class="glyph" title="">©</span> </td> </tr><tr class="impl" id="entity-COPY-legacy"><td> <code title="">COPY</code> </td> <td> U+000A9 </td> <td> <span title="">©</span> </td> </tr><tr id="entity-copy"><td> <code title="">copy;</code> </td> <td> U+000A9 </td> <td> <span class="glyph" title="">©</span> </td> </tr><tr class="impl" id="entity-copy-legacy"><td> <code title="">copy</code> </td> <td> U+000A9 </td> <td> <span title="">©</span> </td> </tr><tr id="entity-copysr"><td> <code title="">copysr;</code> </td> <td> U+02117 </td> <td> <span class="glyph" title="">â„—</span> </td> </tr><tr id="entity-CounterClockwiseContourIntegral"><td> <code title="">CounterClockwiseContourIntegral;</code> </td> <td> U+02233 </td> <td> <span class="glyph" title="">∳</span> </td> </tr><tr id="entity-crarr"><td> <code title="">crarr;</code> </td> <td> U+021B5 </td> <td> <span class="glyph" title="">↵</span> </td> </tr><tr id="entity-Cross"><td> <code title="">Cross;</code> </td> <td> U+02A2F </td> <td> <span class="glyph" title="">⨯</span> </td> </tr><tr id="entity-cross"><td> <code title="">cross;</code> </td> <td> U+02717 </td> <td> <span class="glyph" title="">✗</span> </td> </tr><tr id="entity-Cscr"><td> <code title="">Cscr;</code> </td> <td> U+1D49E </td> <td> <span class="glyph" title="">𝒞</span> </td> </tr><tr id="entity-cscr"><td> <code title="">cscr;</code> </td> <td> U+1D4B8 </td> <td> <span class="glyph" title="">𝒸</span> </td> </tr><tr id="entity-csub"><td> <code title="">csub;</code> </td> <td> U+02ACF </td> <td> <span class="glyph" title="">⫏</span> </td> </tr><tr id="entity-csube"><td> <code title="">csube;</code> </td> <td> U+02AD1 </td> <td> <span class="glyph" title="">â«‘</span> </td> </tr><tr id="entity-csup"><td> <code title="">csup;</code> </td> <td> U+02AD0 </td> <td> <span class="glyph" title="">⫐</span> </td> </tr><tr id="entity-csupe"><td> <code title="">csupe;</code> </td> <td> U+02AD2 </td> <td> <span class="glyph" title="">â«’</span> </td> </tr><tr id="entity-ctdot"><td> <code title="">ctdot;</code> </td> <td> U+022EF </td> <td> <span class="glyph" title="">⋯</span> </td> </tr><tr id="entity-cudarrl"><td> <code title="">cudarrl;</code> </td> <td> U+02938 </td> <td> <span class="glyph" title="">⤸</span> </td> </tr><tr id="entity-cudarrr"><td> <code title="">cudarrr;</code> </td> <td> U+02935 </td> <td> <span class="glyph" title="">⤵</span> </td> </tr><tr id="entity-cuepr"><td> <code title="">cuepr;</code> </td> <td> U+022DE </td> <td> <span class="glyph" title="">⋞</span> </td> </tr><tr id="entity-cuesc"><td> <code title="">cuesc;</code> </td> <td> U+022DF </td> <td> <span class="glyph" title="">⋟</span> </td> </tr><tr id="entity-cularr"><td> <code title="">cularr;</code> </td> <td> U+021B6 </td> <td> <span class="glyph" title="">↶</span> </td> </tr><tr id="entity-cularrp"><td> <code title="">cularrp;</code> </td> <td> U+0293D </td> <td> <span class="glyph" title="">⤽</span> </td> </tr><tr id="entity-Cup"><td> <code title="">Cup;</code> </td> <td> U+022D3 </td> <td> <span class="glyph" title="">â‹“</span> </td> </tr><tr id="entity-cup"><td> <code title="">cup;</code> </td> <td> U+0222A </td> <td> <span class="glyph" title="">∪</span> </td> </tr><tr id="entity-cupbrcap"><td> <code title="">cupbrcap;</code> </td> <td> U+02A48 </td> <td> <span class="glyph" title="">⩈</span> </td> </tr><tr id="entity-CupCap"><td> <code title="">CupCap;</code> </td> <td> U+0224D </td> <td> <span class="glyph" title="">≍</span> </td> </tr><tr id="entity-cupcap"><td> <code title="">cupcap;</code> </td> <td> U+02A46 </td> <td> <span class="glyph" title="">⩆</span> </td> </tr><tr id="entity-cupcup"><td> <code title="">cupcup;</code> </td> <td> U+02A4A </td> <td> <span class="glyph" title="">⩊</span> </td> </tr><tr id="entity-cupdot"><td> <code title="">cupdot;</code> </td> <td> U+0228D </td> <td> <span class="glyph" title="">⊍</span> </td> </tr><tr id="entity-cupor"><td> <code title="">cupor;</code> </td> <td> U+02A45 </td> <td> <span class="glyph" title="">â©…</span> </td> </tr><tr id="entity-cups"><td> <code title="">cups;</code> </td> <td> U+0222A U+0FE00 </td> <td> <span class="glyph compound" title="">∪︀</span> </td> </tr><tr id="entity-curarr"><td> <code title="">curarr;</code> </td> <td> U+021B7 </td> <td> <span class="glyph" title="">↷</span> </td> </tr><tr id="entity-curarrm"><td> <code title="">curarrm;</code> </td> <td> U+0293C </td> <td> <span class="glyph" title="">⤼</span> </td> </tr><tr id="entity-curlyeqprec"><td> <code title="">curlyeqprec;</code> </td> <td> U+022DE </td> <td> <span class="glyph" title="">⋞</span> </td> </tr><tr id="entity-curlyeqsucc"><td> <code title="">curlyeqsucc;</code> </td> <td> U+022DF </td> <td> <span class="glyph" title="">⋟</span> </td> </tr><tr id="entity-curlyvee"><td> <code title="">curlyvee;</code> </td> <td> U+022CE </td> <td> <span class="glyph" title="">⋎</span> </td> </tr><tr id="entity-curlywedge"><td> <code title="">curlywedge;</code> </td> <td> U+022CF </td> <td> <span class="glyph" title="">⋏</span> </td> </tr><tr id="entity-curren"><td> <code title="">curren;</code> </td> <td> U+000A4 </td> <td> <span class="glyph" title="">¤</span> </td> </tr><tr class="impl" id="entity-curren-legacy"><td> <code title="">curren</code> </td> <td> U+000A4 </td> <td> <span title="">¤</span> </td> </tr><tr id="entity-curvearrowleft"><td> <code title="">curvearrowleft;</code> </td> <td> U+021B6 </td> <td> <span class="glyph" title="">↶</span> </td> </tr><tr id="entity-curvearrowright"><td> <code title="">curvearrowright;</code> </td> <td> U+021B7 </td> <td> <span class="glyph" title="">↷</span> </td> </tr><tr id="entity-cuvee"><td> <code title="">cuvee;</code> </td> <td> U+022CE </td> <td> <span class="glyph" title="">⋎</span> </td> </tr><tr id="entity-cuwed"><td> <code title="">cuwed;</code> </td> <td> U+022CF </td> <td> <span class="glyph" title="">⋏</span> </td> </tr><tr id="entity-cwconint"><td> <code title="">cwconint;</code> </td> <td> U+02232 </td> <td> <span class="glyph" title="">∲</span> </td> </tr><tr id="entity-cwint"><td> <code title="">cwint;</code> </td> <td> U+02231 </td> <td> <span class="glyph" title="">∱</span> </td> </tr><tr id="entity-cylcty"><td> <code title="">cylcty;</code> </td> <td> U+0232D </td> <td> <span class="glyph" title="">⌭</span> </td> </tr><tr id="entity-Dagger"><td> <code title="">Dagger;</code> </td> <td> U+02021 </td> <td> <span class="glyph" title="">‡</span> </td> </tr><tr id="entity-dagger"><td> <code title="">dagger;</code> </td> <td> U+02020 </td> <td> <span class="glyph" title="">†</span> </td> </tr><tr id="entity-daleth"><td> <code title="">daleth;</code> </td> <td> U+02138 </td> <td> <span class="glyph" title="">ℸ</span> </td> </tr><tr id="entity-Darr"><td> <code title="">Darr;</code> </td> <td> U+021A1 </td> <td> <span class="glyph" title="">↡</span> </td> </tr><tr id="entity-dArr"><td> <code title="">dArr;</code> </td> <td> U+021D3 </td> <td> <span class="glyph" title="">⇓</span> </td> </tr><tr id="entity-darr"><td> <code title="">darr;</code> </td> <td> U+02193 </td> <td> <span class="glyph" title="">↓</span> </td> </tr><tr id="entity-dash"><td> <code title="">dash;</code> </td> <td> U+02010 </td> <td> <span class="glyph" title="">‐</span> </td> </tr><tr id="entity-Dashv"><td> <code title="">Dashv;</code> </td> <td> U+02AE4 </td> <td> <span class="glyph" title="">⫤</span> </td> </tr><tr id="entity-dashv"><td> <code title="">dashv;</code> </td> <td> U+022A3 </td> <td> <span class="glyph" title="">⊣</span> </td> </tr><tr id="entity-dbkarow"><td> <code title="">dbkarow;</code> </td> <td> U+0290F </td> <td> <span class="glyph" title="">⤏</span> </td> </tr><tr id="entity-dblac"><td> <code title="">dblac;</code> </td> <td> U+002DD </td> <td> <span class="glyph" title="">˝</span> </td> </tr><tr id="entity-Dcaron"><td> <code title="">Dcaron;</code> </td> <td> U+0010E </td> <td> <span class="glyph" title="">ÄŽ</span> </td> </tr><tr id="entity-dcaron"><td> <code title="">dcaron;</code> </td> <td> U+0010F </td> <td> <span class="glyph" title="">ď</span> </td> </tr><tr id="entity-Dcy"><td> <code title="">Dcy;</code> </td> <td> U+00414 </td> <td> <span class="glyph" title="">Д</span> </td> </tr><tr id="entity-dcy"><td> <code title="">dcy;</code> </td> <td> U+00434 </td> <td> <span class="glyph" title="">д</span> </td> </tr><tr id="entity-DD"><td> <code title="">DD;</code> </td> <td> U+02145 </td> <td> <span class="glyph" title="">â……</span> </td> </tr><tr id="entity-dd"><td> <code title="">dd;</code> </td> <td> U+02146 </td> <td> <span class="glyph" title="">â…†</span> </td> </tr><tr id="entity-ddagger"><td> <code title="">ddagger;</code> </td> <td> U+02021 </td> <td> <span class="glyph" title="">‡</span> </td> </tr><tr id="entity-ddarr"><td> <code title="">ddarr;</code> </td> <td> U+021CA </td> <td> <span class="glyph" title="">⇊</span> </td> </tr><tr id="entity-DDotrahd"><td> <code title="">DDotrahd;</code> </td> <td> U+02911 </td> <td> <span class="glyph" title="">⤑</span> </td> </tr><tr id="entity-ddotseq"><td> <code title="">ddotseq;</code> </td> <td> U+02A77 </td> <td> <span class="glyph" title="">â©·</span> </td> </tr><tr id="entity-deg"><td> <code title="">deg;</code> </td> <td> U+000B0 </td> <td> <span class="glyph" title="">°</span> </td> </tr><tr class="impl" id="entity-deg-legacy"><td> <code title="">deg</code> </td> <td> U+000B0 </td> <td> <span title="">°</span> </td> </tr><tr id="entity-Del"><td> <code title="">Del;</code> </td> <td> U+02207 </td> <td> <span class="glyph" title="">∇</span> </td> </tr><tr id="entity-Delta"><td> <code title="">Delta;</code> </td> <td> U+00394 </td> <td> <span class="glyph" title="">Δ</span> </td> </tr><tr id="entity-delta"><td> <code title="">delta;</code> </td> <td> U+003B4 </td> <td> <span class="glyph" title="">δ</span> </td> </tr><tr id="entity-demptyv"><td> <code title="">demptyv;</code> </td> <td> U+029B1 </td> <td> <span class="glyph" title="">⦱</span> </td> </tr><tr id="entity-dfisht"><td> <code title="">dfisht;</code> </td> <td> U+0297F </td> <td> <span class="glyph" title="">⥿</span> </td> </tr><tr id="entity-Dfr"><td> <code title="">Dfr;</code> </td> <td> U+1D507 </td> <td> <span class="glyph" title="">𝔇</span> </td> </tr><tr id="entity-dfr"><td> <code title="">dfr;</code> </td> <td> U+1D521 </td> <td> <span class="glyph" title="">𝔡</span> </td> </tr><tr id="entity-dHar"><td> <code title="">dHar;</code> </td> <td> U+02965 </td> <td> <span class="glyph" title="">⥥</span> </td> </tr><tr id="entity-dharl"><td> <code title="">dharl;</code> </td> <td> U+021C3 </td> <td> <span class="glyph" title="">⇃</span> </td> </tr><tr id="entity-dharr"><td> <code title="">dharr;</code> </td> <td> U+021C2 </td> <td> <span class="glyph" title="">⇂</span> </td> </tr><tr id="entity-DiacriticalAcute"><td> <code title="">DiacriticalAcute;</code> </td> <td> U+000B4 </td> <td> <span class="glyph" title="">´</span> </td> </tr><tr id="entity-DiacriticalDot"><td> <code title="">DiacriticalDot;</code> </td> <td> U+002D9 </td> <td> <span class="glyph" title="">Ë™</span> </td> </tr><tr id="entity-DiacriticalDoubleAcute"><td> <code title="">DiacriticalDoubleAcute;</code> </td> <td> U+002DD </td> <td> <span class="glyph" title="">˝</span> </td> </tr><tr id="entity-DiacriticalGrave"><td> <code title="">DiacriticalGrave;</code> </td> <td> U+00060 </td> <td> <span class="glyph" title="">`</span> </td> </tr><tr id="entity-DiacriticalTilde"><td> <code title="">DiacriticalTilde;</code> </td> <td> U+002DC </td> <td> <span class="glyph" title="">Ëœ</span> </td> </tr><tr id="entity-diam"><td> <code title="">diam;</code> </td> <td> U+022C4 </td> <td> <span class="glyph" title="">â‹„</span> </td> </tr><tr id="entity-Diamond"><td> <code title="">Diamond;</code> </td> <td> U+022C4 </td> <td> <span class="glyph" title="">â‹„</span> </td> </tr><tr id="entity-diamond"><td> <code title="">diamond;</code> </td> <td> U+022C4 </td> <td> <span class="glyph" title="">â‹„</span> </td> </tr><tr id="entity-diamondsuit"><td> <code title="">diamondsuit;</code> </td> <td> U+02666 </td> <td> <span class="glyph" title="">♦</span> </td> </tr><tr id="entity-diams"><td> <code title="">diams;</code> </td> <td> U+02666 </td> <td> <span class="glyph" title="">♦</span> </td> </tr><tr id="entity-die"><td> <code title="">die;</code> </td> <td> U+000A8 </td> <td> <span class="glyph" title="">¨</span> </td> </tr><tr id="entity-DifferentialD"><td> <code title="">DifferentialD;</code> </td> <td> U+02146 </td> <td> <span class="glyph" title="">â…†</span> </td> </tr><tr id="entity-digamma"><td> <code title="">digamma;</code> </td> <td> U+003DD </td> <td> <span class="glyph" title="">ϝ</span> </td> </tr><tr id="entity-disin"><td> <code title="">disin;</code> </td> <td> U+022F2 </td> <td> <span class="glyph" title="">⋲</span> </td> </tr><tr id="entity-div"><td> <code title="">div;</code> </td> <td> U+000F7 </td> <td> <span class="glyph" title="">÷</span> </td> </tr><tr id="entity-divide"><td> <code title="">divide;</code> </td> <td> U+000F7 </td> <td> <span class="glyph" title="">÷</span> </td> </tr><tr class="impl" id="entity-divide-legacy"><td> <code title="">divide</code> </td> <td> U+000F7 </td> <td> <span title="">÷</span> </td> </tr><tr id="entity-divideontimes"><td> <code title="">divideontimes;</code> </td> <td> U+022C7 </td> <td> <span class="glyph" title="">⋇</span> </td> </tr><tr id="entity-divonx"><td> <code title="">divonx;</code> </td> <td> U+022C7 </td> <td> <span class="glyph" title="">⋇</span> </td> </tr><tr id="entity-DJcy"><td> <code title="">DJcy;</code> </td> <td> U+00402 </td> <td> <span class="glyph" title="">Ђ</span> </td> </tr><tr id="entity-djcy"><td> <code title="">djcy;</code> </td> <td> U+00452 </td> <td> <span class="glyph" title="">Ñ’</span> </td> </tr><tr id="entity-dlcorn"><td> <code title="">dlcorn;</code> </td> <td> U+0231E </td> <td> <span class="glyph" title="">⌞</span> </td> </tr><tr id="entity-dlcrop"><td> <code title="">dlcrop;</code> </td> <td> U+0230D </td> <td> <span class="glyph" title="">⌍</span> </td> </tr><tr id="entity-dollar"><td> <code title="">dollar;</code> </td> <td> U+00024 </td> <td> <span class="glyph" title="">$</span> </td> </tr><tr id="entity-Dopf"><td> <code title="">Dopf;</code> </td> <td> U+1D53B </td> <td> <span class="glyph" title="">𝔻</span> </td> </tr><tr id="entity-dopf"><td> <code title="">dopf;</code> </td> <td> U+1D555 </td> <td> <span class="glyph" title="">𝕕</span> </td> </tr><tr id="entity-Dot"><td> <code title="">Dot;</code> </td> <td> U+000A8 </td> <td> <span class="glyph" title="">¨</span> </td> </tr><tr id="entity-dot"><td> <code title="">dot;</code> </td> <td> U+002D9 </td> <td> <span class="glyph" title="">Ë™</span> </td> </tr><tr id="entity-DotDot"><td> <code title="">DotDot;</code> </td> <td> U+020DC </td> <td> <span class="glyph composition" title="">◌⃜</span> </td> </tr><tr id="entity-doteq"><td> <code title="">doteq;</code> </td> <td> U+02250 </td> <td> <span class="glyph" title="">≐</span> </td> </tr><tr id="entity-doteqdot"><td> <code title="">doteqdot;</code> </td> <td> U+02251 </td> <td> <span class="glyph" title="">≑</span> </td> </tr><tr id="entity-DotEqual"><td> <code title="">DotEqual;</code> </td> <td> U+02250 </td> <td> <span class="glyph" title="">≐</span> </td> </tr><tr id="entity-dotminus"><td> <code title="">dotminus;</code> </td> <td> U+02238 </td> <td> <span class="glyph" title="">∸</span> </td> </tr><tr id="entity-dotplus"><td> <code title="">dotplus;</code> </td> <td> U+02214 </td> <td> <span class="glyph" title="">∔</span> </td> </tr><tr id="entity-dotsquare"><td> <code title="">dotsquare;</code> </td> <td> U+022A1 </td> <td> <span class="glyph" title="">⊡</span> </td> </tr><tr id="entity-doublebarwedge"><td> <code title="">doublebarwedge;</code> </td> <td> U+02306 </td> <td> <span class="glyph" title="">⌆</span> </td> </tr><tr id="entity-DoubleContourIntegral"><td> <code title="">DoubleContourIntegral;</code> </td> <td> U+0222F </td> <td> <span class="glyph" title="">∯</span> </td> </tr><tr id="entity-DoubleDot"><td> <code title="">DoubleDot;</code> </td> <td> U+000A8 </td> <td> <span class="glyph" title="">¨</span> </td> </tr><tr id="entity-DoubleDownArrow"><td> <code title="">DoubleDownArrow;</code> </td> <td> U+021D3 </td> <td> <span class="glyph" title="">⇓</span> </td> </tr><tr id="entity-DoubleLeftArrow"><td> <code title="">DoubleLeftArrow;</code> </td> <td> U+021D0 </td> <td> <span class="glyph" title="">⇐</span> </td> </tr><tr id="entity-DoubleLeftRightArrow"><td> <code title="">DoubleLeftRightArrow;</code> </td> <td> U+021D4 </td> <td> <span class="glyph" title="">⇔</span> </td> </tr><tr id="entity-DoubleLeftTee"><td> <code title="">DoubleLeftTee;</code> </td> <td> U+02AE4 </td> <td> <span class="glyph" title="">⫤</span> </td> </tr><tr id="entity-DoubleLongLeftArrow"><td> <code title="">DoubleLongLeftArrow;</code> </td> <td> U+027F8 </td> <td> <span class="glyph" title="">⟸</span> </td> </tr><tr id="entity-DoubleLongLeftRightArrow"><td> <code title="">DoubleLongLeftRightArrow;</code> </td> <td> U+027FA </td> <td> <span class="glyph" title="">⟺</span> </td> </tr><tr id="entity-DoubleLongRightArrow"><td> <code title="">DoubleLongRightArrow;</code> </td> <td> U+027F9 </td> <td> <span class="glyph" title="">⟹</span> </td> </tr><tr id="entity-DoubleRightArrow"><td> <code title="">DoubleRightArrow;</code> </td> <td> U+021D2 </td> <td> <span class="glyph" title="">⇒</span> </td> </tr><tr id="entity-DoubleRightTee"><td> <code title="">DoubleRightTee;</code> </td> <td> U+022A8 </td> <td> <span class="glyph" title="">⊨</span> </td> </tr><tr id="entity-DoubleUpArrow"><td> <code title="">DoubleUpArrow;</code> </td> <td> U+021D1 </td> <td> <span class="glyph" title="">⇑</span> </td> </tr><tr id="entity-DoubleUpDownArrow"><td> <code title="">DoubleUpDownArrow;</code> </td> <td> U+021D5 </td> <td> <span class="glyph" title="">⇕</span> </td> </tr><tr id="entity-DoubleVerticalBar"><td> <code title="">DoubleVerticalBar;</code> </td> <td> U+02225 </td> <td> <span class="glyph" title="">∥</span> </td> </tr><tr id="entity-DownArrow"><td> <code title="">DownArrow;</code> </td> <td> U+02193 </td> <td> <span class="glyph" title="">↓</span> </td> </tr><tr id="entity-Downarrow"><td> <code title="">Downarrow;</code> </td> <td> U+021D3 </td> <td> <span class="glyph" title="">⇓</span> </td> </tr><tr id="entity-downarrow"><td> <code title="">downarrow;</code> </td> <td> U+02193 </td> <td> <span class="glyph" title="">↓</span> </td> </tr><tr id="entity-DownArrowBar"><td> <code title="">DownArrowBar;</code> </td> <td> U+02913 </td> <td> <span class="glyph" title="">⤓</span> </td> </tr><tr id="entity-DownArrowUpArrow"><td> <code title="">DownArrowUpArrow;</code> </td> <td> U+021F5 </td> <td> <span class="glyph" title="">⇵</span> </td> </tr><tr id="entity-DownBreve"><td> <code title="">DownBreve;</code> </td> <td> U+00311 </td> <td> <span class="glyph composition" title="">◌̑</span> </td> </tr><tr id="entity-downdownarrows"><td> <code title="">downdownarrows;</code> </td> <td> U+021CA </td> <td> <span class="glyph" title="">⇊</span> </td> </tr><tr id="entity-downharpoonleft"><td> <code title="">downharpoonleft;</code> </td> <td> U+021C3 </td> <td> <span class="glyph" title="">⇃</span> </td> </tr><tr id="entity-downharpoonright"><td> <code title="">downharpoonright;</code> </td> <td> U+021C2 </td> <td> <span class="glyph" title="">⇂</span> </td> </tr><tr id="entity-DownLeftRightVector"><td> <code title="">DownLeftRightVector;</code> </td> <td> U+02950 </td> <td> <span class="glyph" title="">⥐</span> </td> </tr><tr id="entity-DownLeftTeeVector"><td> <code title="">DownLeftTeeVector;</code> </td> <td> U+0295E </td> <td> <span class="glyph" title="">⥞</span> </td> </tr><tr id="entity-DownLeftVector"><td> <code title="">DownLeftVector;</code> </td> <td> U+021BD </td> <td> <span class="glyph" title="">↽</span> </td> </tr><tr id="entity-DownLeftVectorBar"><td> <code title="">DownLeftVectorBar;</code> </td> <td> U+02956 </td> <td> <span class="glyph" title="">⥖</span> </td> </tr><tr id="entity-DownRightTeeVector"><td> <code title="">DownRightTeeVector;</code> </td> <td> U+0295F </td> <td> <span class="glyph" title="">⥟</span> </td> </tr><tr id="entity-DownRightVector"><td> <code title="">DownRightVector;</code> </td> <td> U+021C1 </td> <td> <span class="glyph" title="">⇁</span> </td> </tr><tr id="entity-DownRightVectorBar"><td> <code title="">DownRightVectorBar;</code> </td> <td> U+02957 </td> <td> <span class="glyph" title="">⥗</span> </td> </tr><tr id="entity-DownTee"><td> <code title="">DownTee;</code> </td> <td> U+022A4 </td> <td> <span class="glyph" title="">⊤</span> </td> </tr><tr id="entity-DownTeeArrow"><td> <code title="">DownTeeArrow;</code> </td> <td> U+021A7 </td> <td> <span class="glyph" title="">↧</span> </td> </tr><tr id="entity-drbkarow"><td> <code title="">drbkarow;</code> </td> <td> U+02910 </td> <td> <span class="glyph" title="">⤐</span> </td> </tr><tr id="entity-drcorn"><td> <code title="">drcorn;</code> </td> <td> U+0231F </td> <td> <span class="glyph" title="">⌟</span> </td> </tr><tr id="entity-drcrop"><td> <code title="">drcrop;</code> </td> <td> U+0230C </td> <td> <span class="glyph" title="">⌌</span> </td> </tr><tr id="entity-Dscr"><td> <code title="">Dscr;</code> </td> <td> U+1D49F </td> <td> <span class="glyph" title="">𝒟</span> </td> </tr><tr id="entity-dscr"><td> <code title="">dscr;</code> </td> <td> U+1D4B9 </td> <td> <span class="glyph" title="">𝒹</span> </td> </tr><tr id="entity-DScy"><td> <code title="">DScy;</code> </td> <td> U+00405 </td> <td> <span class="glyph" title="">Ð…</span> </td> </tr><tr id="entity-dscy"><td> <code title="">dscy;</code> </td> <td> U+00455 </td> <td> <span class="glyph" title="">Ñ•</span> </td> </tr><tr id="entity-dsol"><td> <code title="">dsol;</code> </td> <td> U+029F6 </td> <td> <span class="glyph" title="">â§¶</span> </td> </tr><tr id="entity-Dstrok"><td> <code title="">Dstrok;</code> </td> <td> U+00110 </td> <td> <span class="glyph" title="">Đ</span> </td> </tr><tr id="entity-dstrok"><td> <code title="">dstrok;</code> </td> <td> U+00111 </td> <td> <span class="glyph" title="">Ä‘</span> </td> </tr><tr id="entity-dtdot"><td> <code title="">dtdot;</code> </td> <td> U+022F1 </td> <td> <span class="glyph" title="">⋱</span> </td> </tr><tr id="entity-dtri"><td> <code title="">dtri;</code> </td> <td> U+025BF </td> <td> <span class="glyph" title="">â–¿</span> </td> </tr><tr id="entity-dtrif"><td> <code title="">dtrif;</code> </td> <td> U+025BE </td> <td> <span class="glyph" title="">â–¾</span> </td> </tr><tr id="entity-duarr"><td> <code title="">duarr;</code> </td> <td> U+021F5 </td> <td> <span class="glyph" title="">⇵</span> </td> </tr><tr id="entity-duhar"><td> <code title="">duhar;</code> </td> <td> U+0296F </td> <td> <span class="glyph" title="">⥯</span> </td> </tr><tr id="entity-dwangle"><td> <code title="">dwangle;</code> </td> <td> U+029A6 </td> <td> <span class="glyph" title="">⦦</span> </td> </tr><tr id="entity-DZcy"><td> <code title="">DZcy;</code> </td> <td> U+0040F </td> <td> <span class="glyph" title="">Џ</span> </td> </tr><tr id="entity-dzcy"><td> <code title="">dzcy;</code> </td> <td> U+0045F </td> <td> <span class="glyph" title="">ÑŸ</span> </td> </tr><tr id="entity-dzigrarr"><td> <code title="">dzigrarr;</code> </td> <td> U+027FF </td> <td> <span class="glyph" title="">⟿</span> </td> </tr><tr id="entity-Eacute"><td> <code title="">Eacute;</code> </td> <td> U+000C9 </td> <td> <span class="glyph" title="">É</span> </td> </tr><tr class="impl" id="entity-Eacute-legacy"><td> <code title="">Eacute</code> </td> <td> U+000C9 </td> <td> <span title="">É</span> </td> </tr><tr id="entity-eacute"><td> <code title="">eacute;</code> </td> <td> U+000E9 </td> <td> <span class="glyph" title="">é</span> </td> </tr><tr class="impl" id="entity-eacute-legacy"><td> <code title="">eacute</code> </td> <td> U+000E9 </td> <td> <span title="">é</span> </td> </tr><tr id="entity-easter"><td> <code title="">easter;</code> </td> <td> U+02A6E </td> <td> <span class="glyph" title="">â©®</span> </td> </tr><tr id="entity-Ecaron"><td> <code title="">Ecaron;</code> </td> <td> U+0011A </td> <td> <span class="glyph" title="">Äš</span> </td> </tr><tr id="entity-ecaron"><td> <code title="">ecaron;</code> </td> <td> U+0011B </td> <td> <span class="glyph" title="">Ä›</span> </td> </tr><tr id="entity-ecir"><td> <code title="">ecir;</code> </td> <td> U+02256 </td> <td> <span class="glyph" title="">≖</span> </td> </tr><tr id="entity-Ecirc"><td> <code title="">Ecirc;</code> </td> <td> U+000CA </td> <td> <span class="glyph" title="">Ê</span> </td> </tr><tr class="impl" id="entity-Ecirc-legacy"><td> <code title="">Ecirc</code> </td> <td> U+000CA </td> <td> <span title="">Ê</span> </td> </tr><tr id="entity-ecirc"><td> <code title="">ecirc;</code> </td> <td> U+000EA </td> <td> <span class="glyph" title="">ê</span> </td> </tr><tr class="impl" id="entity-ecirc-legacy"><td> <code title="">ecirc</code> </td> <td> U+000EA </td> <td> <span title="">ê</span> </td> </tr><tr id="entity-ecolon"><td> <code title="">ecolon;</code> </td> <td> U+02255 </td> <td> <span class="glyph" title="">≕</span> </td> </tr><tr id="entity-Ecy"><td> <code title="">Ecy;</code> </td> <td> U+0042D </td> <td> <span class="glyph" title="">Э</span> </td> </tr><tr id="entity-ecy"><td> <code title="">ecy;</code> </td> <td> U+0044D </td> <td> <span class="glyph" title="">э</span> </td> </tr><tr id="entity-eDDot"><td> <code title="">eDDot;</code> </td> <td> U+02A77 </td> <td> <span class="glyph" title="">â©·</span> </td> </tr><tr id="entity-Edot"><td> <code title="">Edot;</code> </td> <td> U+00116 </td> <td> <span class="glyph" title="">Ä–</span> </td> </tr><tr id="entity-eDot"><td> <code title="">eDot;</code> </td> <td> U+02251 </td> <td> <span class="glyph" title="">≑</span> </td> </tr><tr id="entity-edot"><td> <code title="">edot;</code> </td> <td> U+00117 </td> <td> <span class="glyph" title="">Ä—</span> </td> </tr><tr id="entity-ee"><td> <code title="">ee;</code> </td> <td> U+02147 </td> <td> <span class="glyph" title="">â…‡</span> </td> </tr><tr id="entity-efDot"><td> <code title="">efDot;</code> </td> <td> U+02252 </td> <td> <span class="glyph" title="">≒</span> </td> </tr><tr id="entity-Efr"><td> <code title="">Efr;</code> </td> <td> U+1D508 </td> <td> <span class="glyph" title="">𝔈</span> </td> </tr><tr id="entity-efr"><td> <code title="">efr;</code> </td> <td> U+1D522 </td> <td> <span class="glyph" title="">𝔢</span> </td> </tr><tr id="entity-eg"><td> <code title="">eg;</code> </td> <td> U+02A9A </td> <td> <span class="glyph" title="">⪚</span> </td> </tr><tr id="entity-Egrave"><td> <code title="">Egrave;</code> </td> <td> U+000C8 </td> <td> <span class="glyph" title="">È</span> </td> </tr><tr class="impl" id="entity-Egrave-legacy"><td> <code title="">Egrave</code> </td> <td> U+000C8 </td> <td> <span title="">È</span> </td> </tr><tr id="entity-egrave"><td> <code title="">egrave;</code> </td> <td> U+000E8 </td> <td> <span class="glyph" title="">è</span> </td> </tr><tr class="impl" id="entity-egrave-legacy"><td> <code title="">egrave</code> </td> <td> U+000E8 </td> <td> <span title="">è</span> </td> </tr><tr id="entity-egs"><td> <code title="">egs;</code> </td> <td> U+02A96 </td> <td> <span class="glyph" title="">⪖</span> </td> </tr><tr id="entity-egsdot"><td> <code title="">egsdot;</code> </td> <td> U+02A98 </td> <td> <span class="glyph" title="">⪘</span> </td> </tr><tr id="entity-el"><td> <code title="">el;</code> </td> <td> U+02A99 </td> <td> <span class="glyph" title="">⪙</span> </td> </tr><tr id="entity-Element"><td> <code title="">Element;</code> </td> <td> U+02208 </td> <td> <span class="glyph" title="">∈</span> </td> </tr><tr id="entity-elinters"><td> <code title="">elinters;</code> </td> <td> U+023E7 </td> <td> <span class="glyph" title="">⏧</span> </td> </tr><tr id="entity-ell"><td> <code title="">ell;</code> </td> <td> U+02113 </td> <td> <span class="glyph" title="">â„“</span> </td> </tr><tr id="entity-els"><td> <code title="">els;</code> </td> <td> U+02A95 </td> <td> <span class="glyph" title="">⪕</span> </td> </tr><tr id="entity-elsdot"><td> <code title="">elsdot;</code> </td> <td> U+02A97 </td> <td> <span class="glyph" title="">⪗</span> </td> </tr><tr id="entity-Emacr"><td> <code title="">Emacr;</code> </td> <td> U+00112 </td> <td> <span class="glyph" title="">Ä’</span> </td> </tr><tr id="entity-emacr"><td> <code title="">emacr;</code> </td> <td> U+00113 </td> <td> <span class="glyph" title="">Ä“</span> </td> </tr><tr id="entity-empty"><td> <code title="">empty;</code> </td> <td> U+02205 </td> <td> <span class="glyph" title="">∅</span> </td> </tr><tr id="entity-emptyset"><td> <code title="">emptyset;</code> </td> <td> U+02205 </td> <td> <span class="glyph" title="">∅</span> </td> </tr><tr id="entity-EmptySmallSquare"><td> <code title="">EmptySmallSquare;</code> </td> <td> U+025FB </td> <td> <span class="glyph" title="">â—»</span> </td> </tr><tr id="entity-emptyv"><td> <code title="">emptyv;</code> </td> <td> U+02205 </td> <td> <span class="glyph" title="">∅</span> </td> </tr><tr id="entity-EmptyVerySmallSquare"><td> <code title="">EmptyVerySmallSquare;</code> </td> <td> U+025AB </td> <td> <span class="glyph" title="">â–«</span> </td> </tr><tr id="entity-emsp"><td> <code title="">emsp;</code> </td> <td> U+02003 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-emsp13"><td> <code title="">emsp13;</code> </td> <td> U+02004 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-emsp14"><td> <code title="">emsp14;</code> </td> <td> U+02005 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-ENG"><td> <code title="">ENG;</code> </td> <td> U+0014A </td> <td> <span class="glyph" title="">ÅŠ</span> </td> </tr><tr id="entity-eng"><td> <code title="">eng;</code> </td> <td> U+0014B </td> <td> <span class="glyph" title="">Å‹</span> </td> </tr><tr id="entity-ensp"><td> <code title="">ensp;</code> </td> <td> U+02002 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-Eogon"><td> <code title="">Eogon;</code> </td> <td> U+00118 </td> <td> <span class="glyph" title="">Ę</span> </td> </tr><tr id="entity-eogon"><td> <code title="">eogon;</code> </td> <td> U+00119 </td> <td> <span class="glyph" title="">Ä™</span> </td> </tr><tr id="entity-Eopf"><td> <code title="">Eopf;</code> </td> <td> U+1D53C </td> <td> <span class="glyph" title="">𝔼</span> </td> </tr><tr id="entity-eopf"><td> <code title="">eopf;</code> </td> <td> U+1D556 </td> <td> <span class="glyph" title="">𝕖</span> </td> </tr><tr id="entity-epar"><td> <code title="">epar;</code> </td> <td> U+022D5 </td> <td> <span class="glyph" title="">â‹•</span> </td> </tr><tr id="entity-eparsl"><td> <code title="">eparsl;</code> </td> <td> U+029E3 </td> <td> <span class="glyph" title="">â§£</span> </td> </tr><tr id="entity-eplus"><td> <code title="">eplus;</code> </td> <td> U+02A71 </td> <td> <span class="glyph" title="">⩱</span> </td> </tr><tr id="entity-epsi"><td> <code title="">epsi;</code> </td> <td> U+003B5 </td> <td> <span class="glyph" title="">ε</span> </td> </tr><tr id="entity-Epsilon"><td> <code title="">Epsilon;</code> </td> <td> U+00395 </td> <td> <span class="glyph" title="">Ε</span> </td> </tr><tr id="entity-epsilon"><td> <code title="">epsilon;</code> </td> <td> U+003B5 </td> <td> <span class="glyph" title="">ε</span> </td> </tr><tr id="entity-epsiv"><td> <code title="">epsiv;</code> </td> <td> U+003F5 </td> <td> <span class="glyph" title="">ϵ</span> </td> </tr><tr id="entity-eqcirc"><td> <code title="">eqcirc;</code> </td> <td> U+02256 </td> <td> <span class="glyph" title="">≖</span> </td> </tr><tr id="entity-eqcolon"><td> <code title="">eqcolon;</code> </td> <td> U+02255 </td> <td> <span class="glyph" title="">≕</span> </td> </tr><tr id="entity-eqsim"><td> <code title="">eqsim;</code> </td> <td> U+02242 </td> <td> <span class="glyph" title="">≂</span> </td> </tr><tr id="entity-eqslantgtr"><td> <code title="">eqslantgtr;</code> </td> <td> U+02A96 </td> <td> <span class="glyph" title="">⪖</span> </td> </tr><tr id="entity-eqslantless"><td> <code title="">eqslantless;</code> </td> <td> U+02A95 </td> <td> <span class="glyph" title="">⪕</span> </td> </tr><tr id="entity-Equal"><td> <code title="">Equal;</code> </td> <td> U+02A75 </td> <td> <span class="glyph" title="">⩵</span> </td> </tr><tr id="entity-equals"><td> <code title="">equals;</code> </td> <td> U+0003D </td> <td> <span class="glyph" title="">=</span> </td> </tr><tr id="entity-EqualTilde"><td> <code title="">EqualTilde;</code> </td> <td> U+02242 </td> <td> <span class="glyph" title="">≂</span> </td> </tr><tr id="entity-equest"><td> <code title="">equest;</code> </td> <td> U+0225F </td> <td> <span class="glyph" title="">≟</span> </td> </tr><tr id="entity-Equilibrium"><td> <code title="">Equilibrium;</code> </td> <td> U+021CC </td> <td> <span class="glyph" title="">⇌</span> </td> </tr><tr id="entity-equiv"><td> <code title="">equiv;</code> </td> <td> U+02261 </td> <td> <span class="glyph" title="">≡</span> </td> </tr><tr id="entity-equivDD"><td> <code title="">equivDD;</code> </td> <td> U+02A78 </td> <td> <span class="glyph" title="">⩸</span> </td> </tr><tr id="entity-eqvparsl"><td> <code title="">eqvparsl;</code> </td> <td> U+029E5 </td> <td> <span class="glyph" title="">â§¥</span> </td> </tr><tr id="entity-erarr"><td> <code title="">erarr;</code> </td> <td> U+02971 </td> <td> <span class="glyph" title="">⥱</span> </td> </tr><tr id="entity-erDot"><td> <code title="">erDot;</code> </td> <td> U+02253 </td> <td> <span class="glyph" title="">≓</span> </td> </tr><tr id="entity-Escr"><td> <code title="">Escr;</code> </td> <td> U+02130 </td> <td> <span class="glyph" title="">â„°</span> </td> </tr><tr id="entity-escr"><td> <code title="">escr;</code> </td> <td> U+0212F </td> <td> <span class="glyph" title="">ℯ</span> </td> </tr><tr id="entity-esdot"><td> <code title="">esdot;</code> </td> <td> U+02250 </td> <td> <span class="glyph" title="">≐</span> </td> </tr><tr id="entity-Esim"><td> <code title="">Esim;</code> </td> <td> U+02A73 </td> <td> <span class="glyph" title="">⩳</span> </td> </tr><tr id="entity-esim"><td> <code title="">esim;</code> </td> <td> U+02242 </td> <td> <span class="glyph" title="">≂</span> </td> </tr><tr id="entity-Eta"><td> <code title="">Eta;</code> </td> <td> U+00397 </td> <td> <span class="glyph" title="">Η</span> </td> </tr><tr id="entity-eta"><td> <code title="">eta;</code> </td> <td> U+003B7 </td> <td> <span class="glyph" title="">η</span> </td> </tr><tr id="entity-ETH"><td> <code title="">ETH;</code> </td> <td> U+000D0 </td> <td> <span class="glyph" title="">Ð</span> </td> </tr><tr class="impl" id="entity-ETH-legacy"><td> <code title="">ETH</code> </td> <td> U+000D0 </td> <td> <span title="">Ð</span> </td> </tr><tr id="entity-eth"><td> <code title="">eth;</code> </td> <td> U+000F0 </td> <td> <span class="glyph" title="">ð</span> </td> </tr><tr class="impl" id="entity-eth-legacy"><td> <code title="">eth</code> </td> <td> U+000F0 </td> <td> <span title="">ð</span> </td> </tr><tr id="entity-Euml"><td> <code title="">Euml;</code> </td> <td> U+000CB </td> <td> <span class="glyph" title="">Ë</span> </td> </tr><tr class="impl" id="entity-Euml-legacy"><td> <code title="">Euml</code> </td> <td> U+000CB </td> <td> <span title="">Ë</span> </td> </tr><tr id="entity-euml"><td> <code title="">euml;</code> </td> <td> U+000EB </td> <td> <span class="glyph" title="">ë</span> </td> </tr><tr class="impl" id="entity-euml-legacy"><td> <code title="">euml</code> </td> <td> U+000EB </td> <td> <span title="">ë</span> </td> </tr><tr id="entity-euro"><td> <code title="">euro;</code> </td> <td> U+020AC </td> <td> <span class="glyph" title="">€</span> </td> </tr><tr id="entity-excl"><td> <code title="">excl;</code> </td> <td> U+00021 </td> <td> <span class="glyph" title="">!</span> </td> </tr><tr id="entity-exist"><td> <code title="">exist;</code> </td> <td> U+02203 </td> <td> <span class="glyph" title="">∃</span> </td> </tr><tr id="entity-Exists"><td> <code title="">Exists;</code> </td> <td> U+02203 </td> <td> <span class="glyph" title="">∃</span> </td> </tr><tr id="entity-expectation"><td> <code title="">expectation;</code> </td> <td> U+02130 </td> <td> <span class="glyph" title="">â„°</span> </td> </tr><tr id="entity-ExponentialE"><td> <code title="">ExponentialE;</code> </td> <td> U+02147 </td> <td> <span class="glyph" title="">â…‡</span> </td> </tr><tr id="entity-exponentiale"><td> <code title="">exponentiale;</code> </td> <td> U+02147 </td> <td> <span class="glyph" title="">â…‡</span> </td> </tr><tr id="entity-fallingdotseq"><td> <code title="">fallingdotseq;</code> </td> <td> U+02252 </td> <td> <span class="glyph" title="">≒</span> </td> </tr><tr id="entity-Fcy"><td> <code title="">Fcy;</code> </td> <td> U+00424 </td> <td> <span class="glyph" title="">Ф</span> </td> </tr><tr id="entity-fcy"><td> <code title="">fcy;</code> </td> <td> U+00444 </td> <td> <span class="glyph" title="">Ñ„</span> </td> </tr><tr id="entity-female"><td> <code title="">female;</code> </td> <td> U+02640 </td> <td> <span class="glyph" title="">♀</span> </td> </tr><tr id="entity-ffilig"><td> <code title="">ffilig;</code> </td> <td> U+0FB03 </td> <td> <span class="glyph" title="">ffi</span> </td> </tr><tr id="entity-fflig"><td> <code title="">fflig;</code> </td> <td> U+0FB00 </td> <td> <span class="glyph" title="">ff</span> </td> </tr><tr id="entity-ffllig"><td> <code title="">ffllig;</code> </td> <td> U+0FB04 </td> <td> <span class="glyph" title="">ffl</span> </td> </tr><tr id="entity-Ffr"><td> <code title="">Ffr;</code> </td> <td> U+1D509 </td> <td> <span class="glyph" title="">𝔉</span> </td> </tr><tr id="entity-ffr"><td> <code title="">ffr;</code> </td> <td> U+1D523 </td> <td> <span class="glyph" title="">𝔣</span> </td> </tr><tr id="entity-filig"><td> <code title="">filig;</code> </td> <td> U+0FB01 </td> <td> <span class="glyph" title="">fi</span> </td> </tr><tr id="entity-FilledSmallSquare"><td> <code title="">FilledSmallSquare;</code> </td> <td> U+025FC </td> <td> <span class="glyph" title="">â—¼</span> </td> </tr><tr id="entity-FilledVerySmallSquare"><td> <code title="">FilledVerySmallSquare;</code> </td> <td> U+025AA </td> <td> <span class="glyph" title="">â–ª</span> </td> </tr><tr id="entity-fjlig"><td> <code title="">fjlig;</code> </td> <td> U+00066 U+0006A </td> <td> <span class="glyph compound" title="">fj</span> </td> </tr><tr id="entity-flat"><td> <code title="">flat;</code> </td> <td> U+0266D </td> <td> <span class="glyph" title="">â™­</span> </td> </tr><tr id="entity-fllig"><td> <code title="">fllig;</code> </td> <td> U+0FB02 </td> <td> <span class="glyph" title="">fl</span> </td> </tr><tr id="entity-fltns"><td> <code title="">fltns;</code> </td> <td> U+025B1 </td> <td> <span class="glyph" title="">â–±</span> </td> </tr><tr id="entity-fnof"><td> <code title="">fnof;</code> </td> <td> U+00192 </td> <td> <span class="glyph" title="">Æ’</span> </td> </tr><tr id="entity-Fopf"><td> <code title="">Fopf;</code> </td> <td> U+1D53D </td> <td> <span class="glyph" title="">𝔽</span> </td> </tr><tr id="entity-fopf"><td> <code title="">fopf;</code> </td> <td> U+1D557 </td> <td> <span class="glyph" title="">𝕗</span> </td> </tr><tr id="entity-ForAll"><td> <code title="">ForAll;</code> </td> <td> U+02200 </td> <td> <span class="glyph" title="">∀</span> </td> </tr><tr id="entity-forall"><td> <code title="">forall;</code> </td> <td> U+02200 </td> <td> <span class="glyph" title="">∀</span> </td> </tr><tr id="entity-fork"><td> <code title="">fork;</code> </td> <td> U+022D4 </td> <td> <span class="glyph" title="">â‹”</span> </td> </tr><tr id="entity-forkv"><td> <code title="">forkv;</code> </td> <td> U+02AD9 </td> <td> <span class="glyph" title="">â«™</span> </td> </tr><tr id="entity-Fouriertrf"><td> <code title="">Fouriertrf;</code> </td> <td> U+02131 </td> <td> <span class="glyph" title="">ℱ</span> </td> </tr><tr id="entity-fpartint"><td> <code title="">fpartint;</code> </td> <td> U+02A0D </td> <td> <span class="glyph" title="">⨍</span> </td> </tr><tr id="entity-frac12"><td> <code title="">frac12;</code> </td> <td> U+000BD </td> <td> <span class="glyph" title="">½</span> </td> </tr><tr class="impl" id="entity-frac12-legacy"><td> <code title="">frac12</code> </td> <td> U+000BD </td> <td> <span title="">½</span> </td> </tr><tr id="entity-frac13"><td> <code title="">frac13;</code> </td> <td> U+02153 </td> <td> <span class="glyph" title="">â…“</span> </td> </tr><tr id="entity-frac14"><td> <code title="">frac14;</code> </td> <td> U+000BC </td> <td> <span class="glyph" title="">¼</span> </td> </tr><tr class="impl" id="entity-frac14-legacy"><td> <code title="">frac14</code> </td> <td> U+000BC </td> <td> <span title="">¼</span> </td> </tr><tr id="entity-frac15"><td> <code title="">frac15;</code> </td> <td> U+02155 </td> <td> <span class="glyph" title="">â…•</span> </td> </tr><tr id="entity-frac16"><td> <code title="">frac16;</code> </td> <td> U+02159 </td> <td> <span class="glyph" title="">â…™</span> </td> </tr><tr id="entity-frac18"><td> <code title="">frac18;</code> </td> <td> U+0215B </td> <td> <span class="glyph" title="">â…›</span> </td> </tr><tr id="entity-frac23"><td> <code title="">frac23;</code> </td> <td> U+02154 </td> <td> <span class="glyph" title="">â…”</span> </td> </tr><tr id="entity-frac25"><td> <code title="">frac25;</code> </td> <td> U+02156 </td> <td> <span class="glyph" title="">â…–</span> </td> </tr><tr id="entity-frac34"><td> <code title="">frac34;</code> </td> <td> U+000BE </td> <td> <span class="glyph" title="">¾</span> </td> </tr><tr class="impl" id="entity-frac34-legacy"><td> <code title="">frac34</code> </td> <td> U+000BE </td> <td> <span title="">¾</span> </td> </tr><tr id="entity-frac35"><td> <code title="">frac35;</code> </td> <td> U+02157 </td> <td> <span class="glyph" title="">â…—</span> </td> </tr><tr id="entity-frac38"><td> <code title="">frac38;</code> </td> <td> U+0215C </td> <td> <span class="glyph" title="">â…œ</span> </td> </tr><tr id="entity-frac45"><td> <code title="">frac45;</code> </td> <td> U+02158 </td> <td> <span class="glyph" title="">â…˜</span> </td> </tr><tr id="entity-frac56"><td> <code title="">frac56;</code> </td> <td> U+0215A </td> <td> <span class="glyph" title="">â…š</span> </td> </tr><tr id="entity-frac58"><td> <code title="">frac58;</code> </td> <td> U+0215D </td> <td> <span class="glyph" title="">⅝</span> </td> </tr><tr id="entity-frac78"><td> <code title="">frac78;</code> </td> <td> U+0215E </td> <td> <span class="glyph" title="">â…ž</span> </td> </tr><tr id="entity-frasl"><td> <code title="">frasl;</code> </td> <td> U+02044 </td> <td> <span class="glyph" title="">⁄</span> </td> </tr><tr id="entity-frown"><td> <code title="">frown;</code> </td> <td> U+02322 </td> <td> <span class="glyph" title="">⌢</span> </td> </tr><tr id="entity-Fscr"><td> <code title="">Fscr;</code> </td> <td> U+02131 </td> <td> <span class="glyph" title="">ℱ</span> </td> </tr><tr id="entity-fscr"><td> <code title="">fscr;</code> </td> <td> U+1D4BB </td> <td> <span class="glyph" title="">𝒻</span> </td> </tr><tr id="entity-gacute"><td> <code title="">gacute;</code> </td> <td> U+001F5 </td> <td> <span class="glyph" title="">ǵ</span> </td> </tr><tr id="entity-Gamma"><td> <code title="">Gamma;</code> </td> <td> U+00393 </td> <td> <span class="glyph" title="">Γ</span> </td> </tr><tr id="entity-gamma"><td> <code title="">gamma;</code> </td> <td> U+003B3 </td> <td> <span class="glyph" title="">γ</span> </td> </tr><tr id="entity-Gammad"><td> <code title="">Gammad;</code> </td> <td> U+003DC </td> <td> <span class="glyph" title="">Ïœ</span> </td> </tr><tr id="entity-gammad"><td> <code title="">gammad;</code> </td> <td> U+003DD </td> <td> <span class="glyph" title="">ϝ</span> </td> </tr><tr id="entity-gap"><td> <code title="">gap;</code> </td> <td> U+02A86 </td> <td> <span class="glyph" title="">⪆</span> </td> </tr><tr id="entity-Gbreve"><td> <code title="">Gbreve;</code> </td> <td> U+0011E </td> <td> <span class="glyph" title="">Äž</span> </td> </tr><tr id="entity-gbreve"><td> <code title="">gbreve;</code> </td> <td> U+0011F </td> <td> <span class="glyph" title="">ÄŸ</span> </td> </tr><tr id="entity-Gcedil"><td> <code title="">Gcedil;</code> </td> <td> U+00122 </td> <td> <span class="glyph" title="">Ä¢</span> </td> </tr><tr id="entity-Gcirc"><td> <code title="">Gcirc;</code> </td> <td> U+0011C </td> <td> <span class="glyph" title="">Äœ</span> </td> </tr><tr id="entity-gcirc"><td> <code title="">gcirc;</code> </td> <td> U+0011D </td> <td> <span class="glyph" title="">ĝ</span> </td> </tr><tr id="entity-Gcy"><td> <code title="">Gcy;</code> </td> <td> U+00413 </td> <td> <span class="glyph" title="">Г</span> </td> </tr><tr id="entity-gcy"><td> <code title="">gcy;</code> </td> <td> U+00433 </td> <td> <span class="glyph" title="">г</span> </td> </tr><tr id="entity-Gdot"><td> <code title="">Gdot;</code> </td> <td> U+00120 </td> <td> <span class="glyph" title="">Ä </span> </td> </tr><tr id="entity-gdot"><td> <code title="">gdot;</code> </td> <td> U+00121 </td> <td> <span class="glyph" title="">Ä¡</span> </td> </tr><tr id="entity-gE"><td> <code title="">gE;</code> </td> <td> U+02267 </td> <td> <span class="glyph" title="">≧</span> </td> </tr><tr id="entity-ge"><td> <code title="">ge;</code> </td> <td> U+02265 </td> <td> <span class="glyph" title="">≥</span> </td> </tr><tr id="entity-gEl"><td> <code title="">gEl;</code> </td> <td> U+02A8C </td> <td> <span class="glyph" title="">⪌</span> </td> </tr><tr id="entity-gel"><td> <code title="">gel;</code> </td> <td> U+022DB </td> <td> <span class="glyph" title="">â‹›</span> </td> </tr><tr id="entity-geq"><td> <code title="">geq;</code> </td> <td> U+02265 </td> <td> <span class="glyph" title="">≥</span> </td> </tr><tr id="entity-geqq"><td> <code title="">geqq;</code> </td> <td> U+02267 </td> <td> <span class="glyph" title="">≧</span> </td> </tr><tr id="entity-geqslant"><td> <code title="">geqslant;</code> </td> <td> U+02A7E </td> <td> <span class="glyph" title="">⩾</span> </td> </tr><tr id="entity-ges"><td> <code title="">ges;</code> </td> <td> U+02A7E </td> <td> <span class="glyph" title="">⩾</span> </td> </tr><tr id="entity-gescc"><td> <code title="">gescc;</code> </td> <td> U+02AA9 </td> <td> <span class="glyph" title="">⪩</span> </td> </tr><tr id="entity-gesdot"><td> <code title="">gesdot;</code> </td> <td> U+02A80 </td> <td> <span class="glyph" title="">⪀</span> </td> </tr><tr id="entity-gesdoto"><td> <code title="">gesdoto;</code> </td> <td> U+02A82 </td> <td> <span class="glyph" title="">⪂</span> </td> </tr><tr id="entity-gesdotol"><td> <code title="">gesdotol;</code> </td> <td> U+02A84 </td> <td> <span class="glyph" title="">⪄</span> </td> </tr><tr id="entity-gesl"><td> <code title="">gesl;</code> </td> <td> U+022DB U+0FE00 </td> <td> <span class="glyph compound" title="">⋛︀</span> </td> </tr><tr id="entity-gesles"><td> <code title="">gesles;</code> </td> <td> U+02A94 </td> <td> <span class="glyph" title="">⪔</span> </td> </tr><tr id="entity-Gfr"><td> <code title="">Gfr;</code> </td> <td> U+1D50A </td> <td> <span class="glyph" title="">𝔊</span> </td> </tr><tr id="entity-gfr"><td> <code title="">gfr;</code> </td> <td> U+1D524 </td> <td> <span class="glyph" title="">𝔤</span> </td> </tr><tr id="entity-Gg"><td> <code title="">Gg;</code> </td> <td> U+022D9 </td> <td> <span class="glyph" title="">â‹™</span> </td> </tr><tr id="entity-gg"><td> <code title="">gg;</code> </td> <td> U+0226B </td> <td> <span class="glyph" title="">≫</span> </td> </tr><tr id="entity-ggg"><td> <code title="">ggg;</code> </td> <td> U+022D9 </td> <td> <span class="glyph" title="">â‹™</span> </td> </tr><tr id="entity-gimel"><td> <code title="">gimel;</code> </td> <td> U+02137 </td> <td> <span class="glyph" title="">â„·</span> </td> </tr><tr id="entity-GJcy"><td> <code title="">GJcy;</code> </td> <td> U+00403 </td> <td> <span class="glyph" title="">Ѓ</span> </td> </tr><tr id="entity-gjcy"><td> <code title="">gjcy;</code> </td> <td> U+00453 </td> <td> <span class="glyph" title="">Ñ“</span> </td> </tr><tr id="entity-gl"><td> <code title="">gl;</code> </td> <td> U+02277 </td> <td> <span class="glyph" title="">≷</span> </td> </tr><tr id="entity-gla"><td> <code title="">gla;</code> </td> <td> U+02AA5 </td> <td> <span class="glyph" title="">⪥</span> </td> </tr><tr id="entity-glE"><td> <code title="">glE;</code> </td> <td> U+02A92 </td> <td> <span class="glyph" title="">⪒</span> </td> </tr><tr id="entity-glj"><td> <code title="">glj;</code> </td> <td> U+02AA4 </td> <td> <span class="glyph" title="">⪤</span> </td> </tr><tr id="entity-gnap"><td> <code title="">gnap;</code> </td> <td> U+02A8A </td> <td> <span class="glyph" title="">⪊</span> </td> </tr><tr id="entity-gnapprox"><td> <code title="">gnapprox;</code> </td> <td> U+02A8A </td> <td> <span class="glyph" title="">⪊</span> </td> </tr><tr id="entity-gnE"><td> <code title="">gnE;</code> </td> <td> U+02269 </td> <td> <span class="glyph" title="">≩</span> </td> </tr><tr id="entity-gne"><td> <code title="">gne;</code> </td> <td> U+02A88 </td> <td> <span class="glyph" title="">⪈</span> </td> </tr><tr id="entity-gneq"><td> <code title="">gneq;</code> </td> <td> U+02A88 </td> <td> <span class="glyph" title="">⪈</span> </td> </tr><tr id="entity-gneqq"><td> <code title="">gneqq;</code> </td> <td> U+02269 </td> <td> <span class="glyph" title="">≩</span> </td> </tr><tr id="entity-gnsim"><td> <code title="">gnsim;</code> </td> <td> U+022E7 </td> <td> <span class="glyph" title="">â‹§</span> </td> </tr><tr id="entity-Gopf"><td> <code title="">Gopf;</code> </td> <td> U+1D53E </td> <td> <span class="glyph" title="">𝔾</span> </td> </tr><tr id="entity-gopf"><td> <code title="">gopf;</code> </td> <td> U+1D558 </td> <td> <span class="glyph" title="">𝕘</span> </td> </tr><tr id="entity-grave"><td> <code title="">grave;</code> </td> <td> U+00060 </td> <td> <span class="glyph" title="">`</span> </td> </tr><tr id="entity-GreaterEqual"><td> <code title="">GreaterEqual;</code> </td> <td> U+02265 </td> <td> <span class="glyph" title="">≥</span> </td> </tr><tr id="entity-GreaterEqualLess"><td> <code title="">GreaterEqualLess;</code> </td> <td> U+022DB </td> <td> <span class="glyph" title="">â‹›</span> </td> </tr><tr id="entity-GreaterFullEqual"><td> <code title="">GreaterFullEqual;</code> </td> <td> U+02267 </td> <td> <span class="glyph" title="">≧</span> </td> </tr><tr id="entity-GreaterGreater"><td> <code title="">GreaterGreater;</code> </td> <td> U+02AA2 </td> <td> <span class="glyph" title="">⪢</span> </td> </tr><tr id="entity-GreaterLess"><td> <code title="">GreaterLess;</code> </td> <td> U+02277 </td> <td> <span class="glyph" title="">≷</span> </td> </tr><tr id="entity-GreaterSlantEqual"><td> <code title="">GreaterSlantEqual;</code> </td> <td> U+02A7E </td> <td> <span class="glyph" title="">⩾</span> </td> </tr><tr id="entity-GreaterTilde"><td> <code title="">GreaterTilde;</code> </td> <td> U+02273 </td> <td> <span class="glyph" title="">≳</span> </td> </tr><tr id="entity-Gscr"><td> <code title="">Gscr;</code> </td> <td> U+1D4A2 </td> <td> <span class="glyph" title="">𝒢</span> </td> </tr><tr id="entity-gscr"><td> <code title="">gscr;</code> </td> <td> U+0210A </td> <td> <span class="glyph" title="">ℊ</span> </td> </tr><tr id="entity-gsim"><td> <code title="">gsim;</code> </td> <td> U+02273 </td> <td> <span class="glyph" title="">≳</span> </td> </tr><tr id="entity-gsime"><td> <code title="">gsime;</code> </td> <td> U+02A8E </td> <td> <span class="glyph" title="">⪎</span> </td> </tr><tr id="entity-gsiml"><td> <code title="">gsiml;</code> </td> <td> U+02A90 </td> <td> <span class="glyph" title="">⪐</span> </td> </tr><tr id="entity-GT"><td> <code title="">GT;</code> </td> <td> U+0003E </td> <td> <span class="glyph" title="">></span> </td> </tr><tr class="impl" id="entity-GT-legacy"><td> <code title="">GT</code> </td> <td> U+0003E </td> <td> <span title="">></span> </td> </tr><tr id="entity-Gt"><td> <code title="">Gt;</code> </td> <td> U+0226B </td> <td> <span class="glyph" title="">≫</span> </td> </tr><tr id="entity-gt"><td> <code title="">gt;</code> </td> <td> U+0003E </td> <td> <span class="glyph" title="">></span> </td> </tr><tr class="impl" id="entity-gt-legacy"><td> <code title="">gt</code> </td> <td> U+0003E </td> <td> <span title="">></span> </td> </tr><tr id="entity-gtcc"><td> <code title="">gtcc;</code> </td> <td> U+02AA7 </td> <td> <span class="glyph" title="">⪧</span> </td> </tr><tr id="entity-gtcir"><td> <code title="">gtcir;</code> </td> <td> U+02A7A </td> <td> <span class="glyph" title="">⩺</span> </td> </tr><tr id="entity-gtdot"><td> <code title="">gtdot;</code> </td> <td> U+022D7 </td> <td> <span class="glyph" title="">â‹—</span> </td> </tr><tr id="entity-gtlPar"><td> <code title="">gtlPar;</code> </td> <td> U+02995 </td> <td> <span class="glyph" title="">⦕</span> </td> </tr><tr id="entity-gtquest"><td> <code title="">gtquest;</code> </td> <td> U+02A7C </td> <td> <span class="glyph" title="">⩼</span> </td> </tr><tr id="entity-gtrapprox"><td> <code title="">gtrapprox;</code> </td> <td> U+02A86 </td> <td> <span class="glyph" title="">⪆</span> </td> </tr><tr id="entity-gtrarr"><td> <code title="">gtrarr;</code> </td> <td> U+02978 </td> <td> <span class="glyph" title="">⥸</span> </td> </tr><tr id="entity-gtrdot"><td> <code title="">gtrdot;</code> </td> <td> U+022D7 </td> <td> <span class="glyph" title="">â‹—</span> </td> </tr><tr id="entity-gtreqless"><td> <code title="">gtreqless;</code> </td> <td> U+022DB </td> <td> <span class="glyph" title="">â‹›</span> </td> </tr><tr id="entity-gtreqqless"><td> <code title="">gtreqqless;</code> </td> <td> U+02A8C </td> <td> <span class="glyph" title="">⪌</span> </td> </tr><tr id="entity-gtrless"><td> <code title="">gtrless;</code> </td> <td> U+02277 </td> <td> <span class="glyph" title="">≷</span> </td> </tr><tr id="entity-gtrsim"><td> <code title="">gtrsim;</code> </td> <td> U+02273 </td> <td> <span class="glyph" title="">≳</span> </td> </tr><tr id="entity-gvertneqq"><td> <code title="">gvertneqq;</code> </td> <td> U+02269 U+0FE00 </td> <td> <span class="glyph compound" title="">≩︀</span> </td> </tr><tr id="entity-gvnE"><td> <code title="">gvnE;</code> </td> <td> U+02269 U+0FE00 </td> <td> <span class="glyph compound" title="">≩︀</span> </td> </tr><tr id="entity-Hacek"><td> <code title="">Hacek;</code> </td> <td> U+002C7 </td> <td> <span class="glyph" title="">ˇ</span> </td> </tr><tr id="entity-hairsp"><td> <code title="">hairsp;</code> </td> <td> U+0200A </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-half"><td> <code title="">half;</code> </td> <td> U+000BD </td> <td> <span class="glyph" title="">½</span> </td> </tr><tr id="entity-hamilt"><td> <code title="">hamilt;</code> </td> <td> U+0210B </td> <td> <span class="glyph" title="">â„‹</span> </td> </tr><tr id="entity-HARDcy"><td> <code title="">HARDcy;</code> </td> <td> U+0042A </td> <td> <span class="glyph" title="">Ъ</span> </td> </tr><tr id="entity-hardcy"><td> <code title="">hardcy;</code> </td> <td> U+0044A </td> <td> <span class="glyph" title="">ÑŠ</span> </td> </tr><tr id="entity-hArr"><td> <code title="">hArr;</code> </td> <td> U+021D4 </td> <td> <span class="glyph" title="">⇔</span> </td> </tr><tr id="entity-harr"><td> <code title="">harr;</code> </td> <td> U+02194 </td> <td> <span class="glyph" title="">↔</span> </td> </tr><tr id="entity-harrcir"><td> <code title="">harrcir;</code> </td> <td> U+02948 </td> <td> <span class="glyph" title="">⥈</span> </td> </tr><tr id="entity-harrw"><td> <code title="">harrw;</code> </td> <td> U+021AD </td> <td> <span class="glyph" title="">↭</span> </td> </tr><tr id="entity-Hat"><td> <code title="">Hat;</code> </td> <td> U+0005E </td> <td> <span class="glyph" title="">^</span> </td> </tr><tr id="entity-hbar"><td> <code title="">hbar;</code> </td> <td> U+0210F </td> <td> <span class="glyph" title="">ℏ</span> </td> </tr><tr id="entity-Hcirc"><td> <code title="">Hcirc;</code> </td> <td> U+00124 </td> <td> <span class="glyph" title="">Ĥ</span> </td> </tr><tr id="entity-hcirc"><td> <code title="">hcirc;</code> </td> <td> U+00125 </td> <td> <span class="glyph" title="">Ä¥</span> </td> </tr><tr id="entity-hearts"><td> <code title="">hearts;</code> </td> <td> U+02665 </td> <td> <span class="glyph" title="">♥</span> </td> </tr><tr id="entity-heartsuit"><td> <code title="">heartsuit;</code> </td> <td> U+02665 </td> <td> <span class="glyph" title="">♥</span> </td> </tr><tr id="entity-hellip"><td> <code title="">hellip;</code> </td> <td> U+02026 </td> <td> <span class="glyph" title="">…</span> </td> </tr><tr id="entity-hercon"><td> <code title="">hercon;</code> </td> <td> U+022B9 </td> <td> <span class="glyph" title="">⊹</span> </td> </tr><tr id="entity-Hfr"><td> <code title="">Hfr;</code> </td> <td> U+0210C </td> <td> <span class="glyph" title="">ℌ</span> </td> </tr><tr id="entity-hfr"><td> <code title="">hfr;</code> </td> <td> U+1D525 </td> <td> <span class="glyph" title="">𝔥</span> </td> </tr><tr id="entity-HilbertSpace"><td> <code title="">HilbertSpace;</code> </td> <td> U+0210B </td> <td> <span class="glyph" title="">â„‹</span> </td> </tr><tr id="entity-hksearow"><td> <code title="">hksearow;</code> </td> <td> U+02925 </td> <td> <span class="glyph" title="">⤥</span> </td> </tr><tr id="entity-hkswarow"><td> <code title="">hkswarow;</code> </td> <td> U+02926 </td> <td> <span class="glyph" title="">⤦</span> </td> </tr><tr id="entity-hoarr"><td> <code title="">hoarr;</code> </td> <td> U+021FF </td> <td> <span class="glyph" title="">⇿</span> </td> </tr><tr id="entity-homtht"><td> <code title="">homtht;</code> </td> <td> U+0223B </td> <td> <span class="glyph" title="">∻</span> </td> </tr><tr id="entity-hookleftarrow"><td> <code title="">hookleftarrow;</code> </td> <td> U+021A9 </td> <td> <span class="glyph" title="">↩</span> </td> </tr><tr id="entity-hookrightarrow"><td> <code title="">hookrightarrow;</code> </td> <td> U+021AA </td> <td> <span class="glyph" title="">↪</span> </td> </tr><tr id="entity-Hopf"><td> <code title="">Hopf;</code> </td> <td> U+0210D </td> <td> <span class="glyph" title="">ℍ</span> </td> </tr><tr id="entity-hopf"><td> <code title="">hopf;</code> </td> <td> U+1D559 </td> <td> <span class="glyph" title="">𝕙</span> </td> </tr><tr id="entity-horbar"><td> <code title="">horbar;</code> </td> <td> U+02015 </td> <td> <span class="glyph" title="">―</span> </td> </tr><tr id="entity-HorizontalLine"><td> <code title="">HorizontalLine;</code> </td> <td> U+02500 </td> <td> <span class="glyph" title="">─</span> </td> </tr><tr id="entity-Hscr"><td> <code title="">Hscr;</code> </td> <td> U+0210B </td> <td> <span class="glyph" title="">â„‹</span> </td> </tr><tr id="entity-hscr"><td> <code title="">hscr;</code> </td> <td> U+1D4BD </td> <td> <span class="glyph" title="">𝒽</span> </td> </tr><tr id="entity-hslash"><td> <code title="">hslash;</code> </td> <td> U+0210F </td> <td> <span class="glyph" title="">ℏ</span> </td> </tr><tr id="entity-Hstrok"><td> <code title="">Hstrok;</code> </td> <td> U+00126 </td> <td> <span class="glyph" title="">Ħ</span> </td> </tr><tr id="entity-hstrok"><td> <code title="">hstrok;</code> </td> <td> U+00127 </td> <td> <span class="glyph" title="">ħ</span> </td> </tr><tr id="entity-HumpDownHump"><td> <code title="">HumpDownHump;</code> </td> <td> U+0224E </td> <td> <span class="glyph" title="">≎</span> </td> </tr><tr id="entity-HumpEqual"><td> <code title="">HumpEqual;</code> </td> <td> U+0224F </td> <td> <span class="glyph" title="">≏</span> </td> </tr><tr id="entity-hybull"><td> <code title="">hybull;</code> </td> <td> U+02043 </td> <td> <span class="glyph" title="">⁃</span> </td> </tr><tr id="entity-hyphen"><td> <code title="">hyphen;</code> </td> <td> U+02010 </td> <td> <span class="glyph" title="">‐</span> </td> </tr><tr id="entity-Iacute"><td> <code title="">Iacute;</code> </td> <td> U+000CD </td> <td> <span class="glyph" title="">Í</span> </td> </tr><tr class="impl" id="entity-Iacute-legacy"><td> <code title="">Iacute</code> </td> <td> U+000CD </td> <td> <span title="">Í</span> </td> </tr><tr id="entity-iacute"><td> <code title="">iacute;</code> </td> <td> U+000ED </td> <td> <span class="glyph" title="">í</span> </td> </tr><tr class="impl" id="entity-iacute-legacy"><td> <code title="">iacute</code> </td> <td> U+000ED </td> <td> <span title="">í</span> </td> </tr><tr id="entity-ic"><td> <code title="">ic;</code> </td> <td> U+02063 </td> <td> <span class="glyph" title="">⁣</span> </td> </tr><tr id="entity-Icirc"><td> <code title="">Icirc;</code> </td> <td> U+000CE </td> <td> <span class="glyph" title="">ÃŽ</span> </td> </tr><tr class="impl" id="entity-Icirc-legacy"><td> <code title="">Icirc</code> </td> <td> U+000CE </td> <td> <span title="">ÃŽ</span> </td> </tr><tr id="entity-icirc"><td> <code title="">icirc;</code> </td> <td> U+000EE </td> <td> <span class="glyph" title="">î</span> </td> </tr><tr class="impl" id="entity-icirc-legacy"><td> <code title="">icirc</code> </td> <td> U+000EE </td> <td> <span title="">î</span> </td> </tr><tr id="entity-Icy"><td> <code title="">Icy;</code> </td> <td> U+00418 </td> <td> <span class="glyph" title="">И</span> </td> </tr><tr id="entity-icy"><td> <code title="">icy;</code> </td> <td> U+00438 </td> <td> <span class="glyph" title="">и</span> </td> </tr><tr id="entity-Idot"><td> <code title="">Idot;</code> </td> <td> U+00130 </td> <td> <span class="glyph" title="">İ</span> </td> </tr><tr id="entity-IEcy"><td> <code title="">IEcy;</code> </td> <td> U+00415 </td> <td> <span class="glyph" title="">Е</span> </td> </tr><tr id="entity-iecy"><td> <code title="">iecy;</code> </td> <td> U+00435 </td> <td> <span class="glyph" title="">е</span> </td> </tr><tr id="entity-iexcl"><td> <code title="">iexcl;</code> </td> <td> U+000A1 </td> <td> <span class="glyph" title="">¡</span> </td> </tr><tr class="impl" id="entity-iexcl-legacy"><td> <code title="">iexcl</code> </td> <td> U+000A1 </td> <td> <span title="">¡</span> </td> </tr><tr id="entity-iff"><td> <code title="">iff;</code> </td> <td> U+021D4 </td> <td> <span class="glyph" title="">⇔</span> </td> </tr><tr id="entity-Ifr"><td> <code title="">Ifr;</code> </td> <td> U+02111 </td> <td> <span class="glyph" title="">â„‘</span> </td> </tr><tr id="entity-ifr"><td> <code title="">ifr;</code> </td> <td> U+1D526 </td> <td> <span class="glyph" title="">𝔦</span> </td> </tr><tr id="entity-Igrave"><td> <code title="">Igrave;</code> </td> <td> U+000CC </td> <td> <span class="glyph" title="">ÃŒ</span> </td> </tr><tr class="impl" id="entity-Igrave-legacy"><td> <code title="">Igrave</code> </td> <td> U+000CC </td> <td> <span title="">ÃŒ</span> </td> </tr><tr id="entity-igrave"><td> <code title="">igrave;</code> </td> <td> U+000EC </td> <td> <span class="glyph" title="">ì</span> </td> </tr><tr class="impl" id="entity-igrave-legacy"><td> <code title="">igrave</code> </td> <td> U+000EC </td> <td> <span title="">ì</span> </td> </tr><tr id="entity-ii"><td> <code title="">ii;</code> </td> <td> U+02148 </td> <td> <span class="glyph" title="">â…ˆ</span> </td> </tr><tr id="entity-iiiint"><td> <code title="">iiiint;</code> </td> <td> U+02A0C </td> <td> <span class="glyph" title="">⨌</span> </td> </tr><tr id="entity-iiint"><td> <code title="">iiint;</code> </td> <td> U+0222D </td> <td> <span class="glyph" title="">∭</span> </td> </tr><tr id="entity-iinfin"><td> <code title="">iinfin;</code> </td> <td> U+029DC </td> <td> <span class="glyph" title="">â§œ</span> </td> </tr><tr id="entity-iiota"><td> <code title="">iiota;</code> </td> <td> U+02129 </td> <td> <span class="glyph" title="">â„©</span> </td> </tr><tr id="entity-IJlig"><td> <code title="">IJlig;</code> </td> <td> U+00132 </td> <td> <span class="glyph" title="">IJ</span> </td> </tr><tr id="entity-ijlig"><td> <code title="">ijlig;</code> </td> <td> U+00133 </td> <td> <span class="glyph" title="">ij</span> </td> </tr><tr id="entity-Im"><td> <code title="">Im;</code> </td> <td> U+02111 </td> <td> <span class="glyph" title="">â„‘</span> </td> </tr><tr id="entity-Imacr"><td> <code title="">Imacr;</code> </td> <td> U+0012A </td> <td> <span class="glyph" title="">Ī</span> </td> </tr><tr id="entity-imacr"><td> <code title="">imacr;</code> </td> <td> U+0012B </td> <td> <span class="glyph" title="">Ä«</span> </td> </tr><tr id="entity-image"><td> <code title="">image;</code> </td> <td> U+02111 </td> <td> <span class="glyph" title="">â„‘</span> </td> </tr><tr id="entity-ImaginaryI"><td> <code title="">ImaginaryI;</code> </td> <td> U+02148 </td> <td> <span class="glyph" title="">â…ˆ</span> </td> </tr><tr id="entity-imagline"><td> <code title="">imagline;</code> </td> <td> U+02110 </td> <td> <span class="glyph" title="">ℐ</span> </td> </tr><tr id="entity-imagpart"><td> <code title="">imagpart;</code> </td> <td> U+02111 </td> <td> <span class="glyph" title="">â„‘</span> </td> </tr><tr id="entity-imath"><td> <code title="">imath;</code> </td> <td> U+00131 </td> <td> <span class="glyph" title="">ı</span> </td> </tr><tr id="entity-imof"><td> <code title="">imof;</code> </td> <td> U+022B7 </td> <td> <span class="glyph" title="">⊷</span> </td> </tr><tr id="entity-imped"><td> <code title="">imped;</code> </td> <td> U+001B5 </td> <td> <span class="glyph" title="">Ƶ</span> </td> </tr><tr id="entity-Implies"><td> <code title="">Implies;</code> </td> <td> U+021D2 </td> <td> <span class="glyph" title="">⇒</span> </td> </tr><tr id="entity-in"><td> <code title="">in;</code> </td> <td> U+02208 </td> <td> <span class="glyph" title="">∈</span> </td> </tr><tr id="entity-incare"><td> <code title="">incare;</code> </td> <td> U+02105 </td> <td> <span class="glyph" title="">â„…</span> </td> </tr><tr id="entity-infin"><td> <code title="">infin;</code> </td> <td> U+0221E </td> <td> <span class="glyph" title="">∞</span> </td> </tr><tr id="entity-infintie"><td> <code title="">infintie;</code> </td> <td> U+029DD </td> <td> <span class="glyph" title="">⧝</span> </td> </tr><tr id="entity-inodot"><td> <code title="">inodot;</code> </td> <td> U+00131 </td> <td> <span class="glyph" title="">ı</span> </td> </tr><tr id="entity-Int"><td> <code title="">Int;</code> </td> <td> U+0222C </td> <td> <span class="glyph" title="">∬</span> </td> </tr><tr id="entity-int"><td> <code title="">int;</code> </td> <td> U+0222B </td> <td> <span class="glyph" title="">∫</span> </td> </tr><tr id="entity-intcal"><td> <code title="">intcal;</code> </td> <td> U+022BA </td> <td> <span class="glyph" title="">⊺</span> </td> </tr><tr id="entity-integers"><td> <code title="">integers;</code> </td> <td> U+02124 </td> <td> <span class="glyph" title="">ℤ</span> </td> </tr><tr id="entity-Integral"><td> <code title="">Integral;</code> </td> <td> U+0222B </td> <td> <span class="glyph" title="">∫</span> </td> </tr><tr id="entity-intercal"><td> <code title="">intercal;</code> </td> <td> U+022BA </td> <td> <span class="glyph" title="">⊺</span> </td> </tr><tr id="entity-Intersection"><td> <code title="">Intersection;</code> </td> <td> U+022C2 </td> <td> <span class="glyph" title="">â‹‚</span> </td> </tr><tr id="entity-intlarhk"><td> <code title="">intlarhk;</code> </td> <td> U+02A17 </td> <td> <span class="glyph" title="">⨗</span> </td> </tr><tr id="entity-intprod"><td> <code title="">intprod;</code> </td> <td> U+02A3C </td> <td> <span class="glyph" title="">⨼</span> </td> </tr><tr id="entity-InvisibleComma"><td> <code title="">InvisibleComma;</code> </td> <td> U+02063 </td> <td> <span class="glyph" title="">⁣</span> </td> </tr><tr id="entity-InvisibleTimes"><td> <code title="">InvisibleTimes;</code> </td> <td> U+02062 </td> <td> <span class="glyph" title="">⁢</span> </td> </tr><tr id="entity-IOcy"><td> <code title="">IOcy;</code> </td> <td> U+00401 </td> <td> <span class="glyph" title="">Ё</span> </td> </tr><tr id="entity-iocy"><td> <code title="">iocy;</code> </td> <td> U+00451 </td> <td> <span class="glyph" title="">Ñ‘</span> </td> </tr><tr id="entity-Iogon"><td> <code title="">Iogon;</code> </td> <td> U+0012E </td> <td> <span class="glyph" title="">Ä®</span> </td> </tr><tr id="entity-iogon"><td> <code title="">iogon;</code> </td> <td> U+0012F </td> <td> <span class="glyph" title="">į</span> </td> </tr><tr id="entity-Iopf"><td> <code title="">Iopf;</code> </td> <td> U+1D540 </td> <td> <span class="glyph" title="">𝕀</span> </td> </tr><tr id="entity-iopf"><td> <code title="">iopf;</code> </td> <td> U+1D55A </td> <td> <span class="glyph" title="">𝕚</span> </td> </tr><tr id="entity-Iota"><td> <code title="">Iota;</code> </td> <td> U+00399 </td> <td> <span class="glyph" title="">Ι</span> </td> </tr><tr id="entity-iota"><td> <code title="">iota;</code> </td> <td> U+003B9 </td> <td> <span class="glyph" title="">ι</span> </td> </tr><tr id="entity-iprod"><td> <code title="">iprod;</code> </td> <td> U+02A3C </td> <td> <span class="glyph" title="">⨼</span> </td> </tr><tr id="entity-iquest"><td> <code title="">iquest;</code> </td> <td> U+000BF </td> <td> <span class="glyph" title="">¿</span> </td> </tr><tr class="impl" id="entity-iquest-legacy"><td> <code title="">iquest</code> </td> <td> U+000BF </td> <td> <span title="">¿</span> </td> </tr><tr id="entity-Iscr"><td> <code title="">Iscr;</code> </td> <td> U+02110 </td> <td> <span class="glyph" title="">ℐ</span> </td> </tr><tr id="entity-iscr"><td> <code title="">iscr;</code> </td> <td> U+1D4BE </td> <td> <span class="glyph" title="">𝒾</span> </td> </tr><tr id="entity-isin"><td> <code title="">isin;</code> </td> <td> U+02208 </td> <td> <span class="glyph" title="">∈</span> </td> </tr><tr id="entity-isindot"><td> <code title="">isindot;</code> </td> <td> U+022F5 </td> <td> <span class="glyph" title="">⋵</span> </td> </tr><tr id="entity-isinE"><td> <code title="">isinE;</code> </td> <td> U+022F9 </td> <td> <span class="glyph" title="">⋹</span> </td> </tr><tr id="entity-isins"><td> <code title="">isins;</code> </td> <td> U+022F4 </td> <td> <span class="glyph" title="">â‹´</span> </td> </tr><tr id="entity-isinsv"><td> <code title="">isinsv;</code> </td> <td> U+022F3 </td> <td> <span class="glyph" title="">⋳</span> </td> </tr><tr id="entity-isinv"><td> <code title="">isinv;</code> </td> <td> U+02208 </td> <td> <span class="glyph" title="">∈</span> </td> </tr><tr id="entity-it"><td> <code title="">it;</code> </td> <td> U+02062 </td> <td> <span class="glyph" title="">⁢</span> </td> </tr><tr id="entity-Itilde"><td> <code title="">Itilde;</code> </td> <td> U+00128 </td> <td> <span class="glyph" title="">Ĩ</span> </td> </tr><tr id="entity-itilde"><td> <code title="">itilde;</code> </td> <td> U+00129 </td> <td> <span class="glyph" title="">Ä©</span> </td> </tr><tr id="entity-Iukcy"><td> <code title="">Iukcy;</code> </td> <td> U+00406 </td> <td> <span class="glyph" title="">І</span> </td> </tr><tr id="entity-iukcy"><td> <code title="">iukcy;</code> </td> <td> U+00456 </td> <td> <span class="glyph" title="">Ñ–</span> </td> </tr><tr id="entity-Iuml"><td> <code title="">Iuml;</code> </td> <td> U+000CF </td> <td> <span class="glyph" title="">Ï</span> </td> </tr><tr class="impl" id="entity-Iuml-legacy"><td> <code title="">Iuml</code> </td> <td> U+000CF </td> <td> <span title="">Ï</span> </td> </tr><tr id="entity-iuml"><td> <code title="">iuml;</code> </td> <td> U+000EF </td> <td> <span class="glyph" title="">ï</span> </td> </tr><tr class="impl" id="entity-iuml-legacy"><td> <code title="">iuml</code> </td> <td> U+000EF </td> <td> <span title="">ï</span> </td> </tr><tr id="entity-Jcirc"><td> <code title="">Jcirc;</code> </td> <td> U+00134 </td> <td> <span class="glyph" title="">Ä´</span> </td> </tr><tr id="entity-jcirc"><td> <code title="">jcirc;</code> </td> <td> U+00135 </td> <td> <span class="glyph" title="">ĵ</span> </td> </tr><tr id="entity-Jcy"><td> <code title="">Jcy;</code> </td> <td> U+00419 </td> <td> <span class="glyph" title="">Й</span> </td> </tr><tr id="entity-jcy"><td> <code title="">jcy;</code> </td> <td> U+00439 </td> <td> <span class="glyph" title="">й</span> </td> </tr><tr id="entity-Jfr"><td> <code title="">Jfr;</code> </td> <td> U+1D50D </td> <td> <span class="glyph" title="">𝔍</span> </td> </tr><tr id="entity-jfr"><td> <code title="">jfr;</code> </td> <td> U+1D527 </td> <td> <span class="glyph" title="">𝔧</span> </td> </tr><tr id="entity-jmath"><td> <code title="">jmath;</code> </td> <td> U+00237 </td> <td> <span class="glyph" title="">È·</span> </td> </tr><tr id="entity-Jopf"><td> <code title="">Jopf;</code> </td> <td> U+1D541 </td> <td> <span class="glyph" title="">𝕁</span> </td> </tr><tr id="entity-jopf"><td> <code title="">jopf;</code> </td> <td> U+1D55B </td> <td> <span class="glyph" title="">𝕛</span> </td> </tr><tr id="entity-Jscr"><td> <code title="">Jscr;</code> </td> <td> U+1D4A5 </td> <td> <span class="glyph" title="">𝒥</span> </td> </tr><tr id="entity-jscr"><td> <code title="">jscr;</code> </td> <td> U+1D4BF </td> <td> <span class="glyph" title="">𝒿</span> </td> </tr><tr id="entity-Jsercy"><td> <code title="">Jsercy;</code> </td> <td> U+00408 </td> <td> <span class="glyph" title="">Ј</span> </td> </tr><tr id="entity-jsercy"><td> <code title="">jsercy;</code> </td> <td> U+00458 </td> <td> <span class="glyph" title="">ј</span> </td> </tr><tr id="entity-Jukcy"><td> <code title="">Jukcy;</code> </td> <td> U+00404 </td> <td> <span class="glyph" title="">Є</span> </td> </tr><tr id="entity-jukcy"><td> <code title="">jukcy;</code> </td> <td> U+00454 </td> <td> <span class="glyph" title="">Ñ”</span> </td> </tr><tr id="entity-Kappa"><td> <code title="">Kappa;</code> </td> <td> U+0039A </td> <td> <span class="glyph" title="">Κ</span> </td> </tr><tr id="entity-kappa"><td> <code title="">kappa;</code> </td> <td> U+003BA </td> <td> <span class="glyph" title="">κ</span> </td> </tr><tr id="entity-kappav"><td> <code title="">kappav;</code> </td> <td> U+003F0 </td> <td> <span class="glyph" title="">ϰ</span> </td> </tr><tr id="entity-Kcedil"><td> <code title="">Kcedil;</code> </td> <td> U+00136 </td> <td> <span class="glyph" title="">Ķ</span> </td> </tr><tr id="entity-kcedil"><td> <code title="">kcedil;</code> </td> <td> U+00137 </td> <td> <span class="glyph" title="">Ä·</span> </td> </tr><tr id="entity-Kcy"><td> <code title="">Kcy;</code> </td> <td> U+0041A </td> <td> <span class="glyph" title="">К</span> </td> </tr><tr id="entity-kcy"><td> <code title="">kcy;</code> </td> <td> U+0043A </td> <td> <span class="glyph" title="">к</span> </td> </tr><tr id="entity-Kfr"><td> <code title="">Kfr;</code> </td> <td> U+1D50E </td> <td> <span class="glyph" title="">𝔎</span> </td> </tr><tr id="entity-kfr"><td> <code title="">kfr;</code> </td> <td> U+1D528 </td> <td> <span class="glyph" title="">𝔨</span> </td> </tr><tr id="entity-kgreen"><td> <code title="">kgreen;</code> </td> <td> U+00138 </td> <td> <span class="glyph" title="">ĸ</span> </td> </tr><tr id="entity-KHcy"><td> <code title="">KHcy;</code> </td> <td> U+00425 </td> <td> <span class="glyph" title="">Ð¥</span> </td> </tr><tr id="entity-khcy"><td> <code title="">khcy;</code> </td> <td> U+00445 </td> <td> <span class="glyph" title="">Ñ…</span> </td> </tr><tr id="entity-KJcy"><td> <code title="">KJcy;</code> </td> <td> U+0040C </td> <td> <span class="glyph" title="">ÐŒ</span> </td> </tr><tr id="entity-kjcy"><td> <code title="">kjcy;</code> </td> <td> U+0045C </td> <td> <span class="glyph" title="">Ñœ</span> </td> </tr><tr id="entity-Kopf"><td> <code title="">Kopf;</code> </td> <td> U+1D542 </td> <td> <span class="glyph" title="">𝕂</span> </td> </tr><tr id="entity-kopf"><td> <code title="">kopf;</code> </td> <td> U+1D55C </td> <td> <span class="glyph" title="">𝕜</span> </td> </tr><tr id="entity-Kscr"><td> <code title="">Kscr;</code> </td> <td> U+1D4A6 </td> <td> <span class="glyph" title="">𝒦</span> </td> </tr><tr id="entity-kscr"><td> <code title="">kscr;</code> </td> <td> U+1D4C0 </td> <td> <span class="glyph" title="">𝓀</span> </td> </tr><tr id="entity-lAarr"><td> <code title="">lAarr;</code> </td> <td> U+021DA </td> <td> <span class="glyph" title="">⇚</span> </td> </tr><tr id="entity-Lacute"><td> <code title="">Lacute;</code> </td> <td> U+00139 </td> <td> <span class="glyph" title="">Ĺ</span> </td> </tr><tr id="entity-lacute"><td> <code title="">lacute;</code> </td> <td> U+0013A </td> <td> <span class="glyph" title="">ĺ</span> </td> </tr><tr id="entity-laemptyv"><td> <code title="">laemptyv;</code> </td> <td> U+029B4 </td> <td> <span class="glyph" title="">⦴</span> </td> </tr><tr id="entity-lagran"><td> <code title="">lagran;</code> </td> <td> U+02112 </td> <td> <span class="glyph" title="">â„’</span> </td> </tr><tr id="entity-Lambda"><td> <code title="">Lambda;</code> </td> <td> U+0039B </td> <td> <span class="glyph" title="">Λ</span> </td> </tr><tr id="entity-lambda"><td> <code title="">lambda;</code> </td> <td> U+003BB </td> <td> <span class="glyph" title="">λ</span> </td> </tr><tr id="entity-Lang"><td> <code title="">Lang;</code> </td> <td> U+027EA </td> <td> <span class="glyph" title="">⟪</span> </td> </tr><tr id="entity-lang"><td> <code title="">lang;</code> </td> <td> U+027E8 </td> <td> <span class="glyph" title="">〈</span> </td> </tr><tr id="entity-langd"><td> <code title="">langd;</code> </td> <td> U+02991 </td> <td> <span class="glyph" title="">⦑</span> </td> </tr><tr id="entity-langle"><td> <code title="">langle;</code> </td> <td> U+027E8 </td> <td> <span class="glyph" title="">〈</span> </td> </tr><tr id="entity-lap"><td> <code title="">lap;</code> </td> <td> U+02A85 </td> <td> <span class="glyph" title="">⪅</span> </td> </tr><tr id="entity-Laplacetrf"><td> <code title="">Laplacetrf;</code> </td> <td> U+02112 </td> <td> <span class="glyph" title="">â„’</span> </td> </tr><tr id="entity-laquo"><td> <code title="">laquo;</code> </td> <td> U+000AB </td> <td> <span class="glyph" title="">«</span> </td> </tr><tr class="impl" id="entity-laquo-legacy"><td> <code title="">laquo</code> </td> <td> U+000AB </td> <td> <span title="">«</span> </td> </tr><tr id="entity-Larr"><td> <code title="">Larr;</code> </td> <td> U+0219E </td> <td> <span class="glyph" title="">↞</span> </td> </tr><tr id="entity-lArr"><td> <code title="">lArr;</code> </td> <td> U+021D0 </td> <td> <span class="glyph" title="">⇐</span> </td> </tr><tr id="entity-larr"><td> <code title="">larr;</code> </td> <td> U+02190 </td> <td> <span class="glyph" title="">←</span> </td> </tr><tr id="entity-larrb"><td> <code title="">larrb;</code> </td> <td> U+021E4 </td> <td> <span class="glyph" title="">⇤</span> </td> </tr><tr id="entity-larrbfs"><td> <code title="">larrbfs;</code> </td> <td> U+0291F </td> <td> <span class="glyph" title="">⤟</span> </td> </tr><tr id="entity-larrfs"><td> <code title="">larrfs;</code> </td> <td> U+0291D </td> <td> <span class="glyph" title="">⤝</span> </td> </tr><tr id="entity-larrhk"><td> <code title="">larrhk;</code> </td> <td> U+021A9 </td> <td> <span class="glyph" title="">↩</span> </td> </tr><tr id="entity-larrlp"><td> <code title="">larrlp;</code> </td> <td> U+021AB </td> <td> <span class="glyph" title="">↫</span> </td> </tr><tr id="entity-larrpl"><td> <code title="">larrpl;</code> </td> <td> U+02939 </td> <td> <span class="glyph" title="">⤹</span> </td> </tr><tr id="entity-larrsim"><td> <code title="">larrsim;</code> </td> <td> U+02973 </td> <td> <span class="glyph" title="">⥳</span> </td> </tr><tr id="entity-larrtl"><td> <code title="">larrtl;</code> </td> <td> U+021A2 </td> <td> <span class="glyph" title="">↢</span> </td> </tr><tr id="entity-lat"><td> <code title="">lat;</code> </td> <td> U+02AAB </td> <td> <span class="glyph" title="">⪫</span> </td> </tr><tr id="entity-lAtail"><td> <code title="">lAtail;</code> </td> <td> U+0291B </td> <td> <span class="glyph" title="">⤛</span> </td> </tr><tr id="entity-latail"><td> <code title="">latail;</code> </td> <td> U+02919 </td> <td> <span class="glyph" title="">⤙</span> </td> </tr><tr id="entity-late"><td> <code title="">late;</code> </td> <td> U+02AAD </td> <td> <span class="glyph" title="">⪭</span> </td> </tr><tr id="entity-lates"><td> <code title="">lates;</code> </td> <td> U+02AAD U+0FE00 </td> <td> <span class="glyph compound" title="">⪭︀</span> </td> </tr><tr id="entity-lBarr"><td> <code title="">lBarr;</code> </td> <td> U+0290E </td> <td> <span class="glyph" title="">⤎</span> </td> </tr><tr id="entity-lbarr"><td> <code title="">lbarr;</code> </td> <td> U+0290C </td> <td> <span class="glyph" title="">⤌</span> </td> </tr><tr id="entity-lbbrk"><td> <code title="">lbbrk;</code> </td> <td> U+02772 </td> <td> <span class="glyph" title="">❲</span> </td> </tr><tr id="entity-lbrace"><td> <code title="">lbrace;</code> </td> <td> U+0007B </td> <td> <span class="glyph" title="">{</span> </td> </tr><tr id="entity-lbrack"><td> <code title="">lbrack;</code> </td> <td> U+0005B </td> <td> <span class="glyph" title="">[</span> </td> </tr><tr id="entity-lbrke"><td> <code title="">lbrke;</code> </td> <td> U+0298B </td> <td> <span class="glyph" title="">⦋</span> </td> </tr><tr id="entity-lbrksld"><td> <code title="">lbrksld;</code> </td> <td> U+0298F </td> <td> <span class="glyph" title="">⦏</span> </td> </tr><tr id="entity-lbrkslu"><td> <code title="">lbrkslu;</code> </td> <td> U+0298D </td> <td> <span class="glyph" title="">⦍</span> </td> </tr><tr id="entity-Lcaron"><td> <code title="">Lcaron;</code> </td> <td> U+0013D </td> <td> <span class="glyph" title="">Ľ</span> </td> </tr><tr id="entity-lcaron"><td> <code title="">lcaron;</code> </td> <td> U+0013E </td> <td> <span class="glyph" title="">ľ</span> </td> </tr><tr id="entity-Lcedil"><td> <code title="">Lcedil;</code> </td> <td> U+0013B </td> <td> <span class="glyph" title="">Ä»</span> </td> </tr><tr id="entity-lcedil"><td> <code title="">lcedil;</code> </td> <td> U+0013C </td> <td> <span class="glyph" title="">ļ</span> </td> </tr><tr id="entity-lceil"><td> <code title="">lceil;</code> </td> <td> U+02308 </td> <td> <span class="glyph" title="">⌈</span> </td> </tr><tr id="entity-lcub"><td> <code title="">lcub;</code> </td> <td> U+0007B </td> <td> <span class="glyph" title="">{</span> </td> </tr><tr id="entity-Lcy"><td> <code title="">Lcy;</code> </td> <td> U+0041B </td> <td> <span class="glyph" title="">Л</span> </td> </tr><tr id="entity-lcy"><td> <code title="">lcy;</code> </td> <td> U+0043B </td> <td> <span class="glyph" title="">л</span> </td> </tr><tr id="entity-ldca"><td> <code title="">ldca;</code> </td> <td> U+02936 </td> <td> <span class="glyph" title="">⤶</span> </td> </tr><tr id="entity-ldquo"><td> <code title="">ldquo;</code> </td> <td> U+0201C </td> <td> <span class="glyph" title="">“</span> </td> </tr><tr id="entity-ldquor"><td> <code title="">ldquor;</code> </td> <td> U+0201E </td> <td> <span class="glyph" title="">„</span> </td> </tr><tr id="entity-ldrdhar"><td> <code title="">ldrdhar;</code> </td> <td> U+02967 </td> <td> <span class="glyph" title="">⥧</span> </td> </tr><tr id="entity-ldrushar"><td> <code title="">ldrushar;</code> </td> <td> U+0294B </td> <td> <span class="glyph" title="">⥋</span> </td> </tr><tr id="entity-ldsh"><td> <code title="">ldsh;</code> </td> <td> U+021B2 </td> <td> <span class="glyph" title="">↲</span> </td> </tr><tr id="entity-lE"><td> <code title="">lE;</code> </td> <td> U+02266 </td> <td> <span class="glyph" title="">≦</span> </td> </tr><tr id="entity-le"><td> <code title="">le;</code> </td> <td> U+02264 </td> <td> <span class="glyph" title="">≤</span> </td> </tr><tr id="entity-LeftAngleBracket"><td> <code title="">LeftAngleBracket;</code> </td> <td> U+027E8 </td> <td> <span class="glyph" title="">〈</span> </td> </tr><tr id="entity-LeftArrow"><td> <code title="">LeftArrow;</code> </td> <td> U+02190 </td> <td> <span class="glyph" title="">←</span> </td> </tr><tr id="entity-Leftarrow"><td> <code title="">Leftarrow;</code> </td> <td> U+021D0 </td> <td> <span class="glyph" title="">⇐</span> </td> </tr><tr id="entity-leftarrow"><td> <code title="">leftarrow;</code> </td> <td> U+02190 </td> <td> <span class="glyph" title="">←</span> </td> </tr><tr id="entity-LeftArrowBar"><td> <code title="">LeftArrowBar;</code> </td> <td> U+021E4 </td> <td> <span class="glyph" title="">⇤</span> </td> </tr><tr id="entity-LeftArrowRightArrow"><td> <code title="">LeftArrowRightArrow;</code> </td> <td> U+021C6 </td> <td> <span class="glyph" title="">⇆</span> </td> </tr><tr id="entity-leftarrowtail"><td> <code title="">leftarrowtail;</code> </td> <td> U+021A2 </td> <td> <span class="glyph" title="">↢</span> </td> </tr><tr id="entity-LeftCeiling"><td> <code title="">LeftCeiling;</code> </td> <td> U+02308 </td> <td> <span class="glyph" title="">⌈</span> </td> </tr><tr id="entity-LeftDoubleBracket"><td> <code title="">LeftDoubleBracket;</code> </td> <td> U+027E6 </td> <td> <span class="glyph" title="">⟦</span> </td> </tr><tr id="entity-LeftDownTeeVector"><td> <code title="">LeftDownTeeVector;</code> </td> <td> U+02961 </td> <td> <span class="glyph" title="">⥡</span> </td> </tr><tr id="entity-LeftDownVector"><td> <code title="">LeftDownVector;</code> </td> <td> U+021C3 </td> <td> <span class="glyph" title="">⇃</span> </td> </tr><tr id="entity-LeftDownVectorBar"><td> <code title="">LeftDownVectorBar;</code> </td> <td> U+02959 </td> <td> <span class="glyph" title="">⥙</span> </td> </tr><tr id="entity-LeftFloor"><td> <code title="">LeftFloor;</code> </td> <td> U+0230A </td> <td> <span class="glyph" title="">⌊</span> </td> </tr><tr id="entity-leftharpoondown"><td> <code title="">leftharpoondown;</code> </td> <td> U+021BD </td> <td> <span class="glyph" title="">↽</span> </td> </tr><tr id="entity-leftharpoonup"><td> <code title="">leftharpoonup;</code> </td> <td> U+021BC </td> <td> <span class="glyph" title="">↼</span> </td> </tr><tr id="entity-leftleftarrows"><td> <code title="">leftleftarrows;</code> </td> <td> U+021C7 </td> <td> <span class="glyph" title="">⇇</span> </td> </tr><tr id="entity-LeftRightArrow"><td> <code title="">LeftRightArrow;</code> </td> <td> U+02194 </td> <td> <span class="glyph" title="">↔</span> </td> </tr><tr id="entity-Leftrightarrow"><td> <code title="">Leftrightarrow;</code> </td> <td> U+021D4 </td> <td> <span class="glyph" title="">⇔</span> </td> </tr><tr id="entity-leftrightarrow"><td> <code title="">leftrightarrow;</code> </td> <td> U+02194 </td> <td> <span class="glyph" title="">↔</span> </td> </tr><tr id="entity-leftrightarrows"><td> <code title="">leftrightarrows;</code> </td> <td> U+021C6 </td> <td> <span class="glyph" title="">⇆</span> </td> </tr><tr id="entity-leftrightharpoons"><td> <code title="">leftrightharpoons;</code> </td> <td> U+021CB </td> <td> <span class="glyph" title="">⇋</span> </td> </tr><tr id="entity-leftrightsquigarrow"><td> <code title="">leftrightsquigarrow;</code> </td> <td> U+021AD </td> <td> <span class="glyph" title="">↭</span> </td> </tr><tr id="entity-LeftRightVector"><td> <code title="">LeftRightVector;</code> </td> <td> U+0294E </td> <td> <span class="glyph" title="">⥎</span> </td> </tr><tr id="entity-LeftTee"><td> <code title="">LeftTee;</code> </td> <td> U+022A3 </td> <td> <span class="glyph" title="">⊣</span> </td> </tr><tr id="entity-LeftTeeArrow"><td> <code title="">LeftTeeArrow;</code> </td> <td> U+021A4 </td> <td> <span class="glyph" title="">↤</span> </td> </tr><tr id="entity-LeftTeeVector"><td> <code title="">LeftTeeVector;</code> </td> <td> U+0295A </td> <td> <span class="glyph" title="">⥚</span> </td> </tr><tr id="entity-leftthreetimes"><td> <code title="">leftthreetimes;</code> </td> <td> U+022CB </td> <td> <span class="glyph" title="">â‹‹</span> </td> </tr><tr id="entity-LeftTriangle"><td> <code title="">LeftTriangle;</code> </td> <td> U+022B2 </td> <td> <span class="glyph" title="">⊲</span> </td> </tr><tr id="entity-LeftTriangleBar"><td> <code title="">LeftTriangleBar;</code> </td> <td> U+029CF </td> <td> <span class="glyph" title="">⧏</span> </td> </tr><tr id="entity-LeftTriangleEqual"><td> <code title="">LeftTriangleEqual;</code> </td> <td> U+022B4 </td> <td> <span class="glyph" title="">⊴</span> </td> </tr><tr id="entity-LeftUpDownVector"><td> <code title="">LeftUpDownVector;</code> </td> <td> U+02951 </td> <td> <span class="glyph" title="">⥑</span> </td> </tr><tr id="entity-LeftUpTeeVector"><td> <code title="">LeftUpTeeVector;</code> </td> <td> U+02960 </td> <td> <span class="glyph" title="">⥠</span> </td> </tr><tr id="entity-LeftUpVector"><td> <code title="">LeftUpVector;</code> </td> <td> U+021BF </td> <td> <span class="glyph" title="">↿</span> </td> </tr><tr id="entity-LeftUpVectorBar"><td> <code title="">LeftUpVectorBar;</code> </td> <td> U+02958 </td> <td> <span class="glyph" title="">⥘</span> </td> </tr><tr id="entity-LeftVector"><td> <code title="">LeftVector;</code> </td> <td> U+021BC </td> <td> <span class="glyph" title="">↼</span> </td> </tr><tr id="entity-LeftVectorBar"><td> <code title="">LeftVectorBar;</code> </td> <td> U+02952 </td> <td> <span class="glyph" title="">⥒</span> </td> </tr><tr id="entity-lEg"><td> <code title="">lEg;</code> </td> <td> U+02A8B </td> <td> <span class="glyph" title="">⪋</span> </td> </tr><tr id="entity-leg"><td> <code title="">leg;</code> </td> <td> U+022DA </td> <td> <span class="glyph" title="">⋚</span> </td> </tr><tr id="entity-leq"><td> <code title="">leq;</code> </td> <td> U+02264 </td> <td> <span class="glyph" title="">≤</span> </td> </tr><tr id="entity-leqq"><td> <code title="">leqq;</code> </td> <td> U+02266 </td> <td> <span class="glyph" title="">≦</span> </td> </tr><tr id="entity-leqslant"><td> <code title="">leqslant;</code> </td> <td> U+02A7D </td> <td> <span class="glyph" title="">⩽</span> </td> </tr><tr id="entity-les"><td> <code title="">les;</code> </td> <td> U+02A7D </td> <td> <span class="glyph" title="">⩽</span> </td> </tr><tr id="entity-lescc"><td> <code title="">lescc;</code> </td> <td> U+02AA8 </td> <td> <span class="glyph" title="">⪨</span> </td> </tr><tr id="entity-lesdot"><td> <code title="">lesdot;</code> </td> <td> U+02A7F </td> <td> <span class="glyph" title="">â©¿</span> </td> </tr><tr id="entity-lesdoto"><td> <code title="">lesdoto;</code> </td> <td> U+02A81 </td> <td> <span class="glyph" title="">⪁</span> </td> </tr><tr id="entity-lesdotor"><td> <code title="">lesdotor;</code> </td> <td> U+02A83 </td> <td> <span class="glyph" title="">⪃</span> </td> </tr><tr id="entity-lesg"><td> <code title="">lesg;</code> </td> <td> U+022DA U+0FE00 </td> <td> <span class="glyph compound" title="">⋚︀</span> </td> </tr><tr id="entity-lesges"><td> <code title="">lesges;</code> </td> <td> U+02A93 </td> <td> <span class="glyph" title="">⪓</span> </td> </tr><tr id="entity-lessapprox"><td> <code title="">lessapprox;</code> </td> <td> U+02A85 </td> <td> <span class="glyph" title="">⪅</span> </td> </tr><tr id="entity-lessdot"><td> <code title="">lessdot;</code> </td> <td> U+022D6 </td> <td> <span class="glyph" title="">â‹–</span> </td> </tr><tr id="entity-lesseqgtr"><td> <code title="">lesseqgtr;</code> </td> <td> U+022DA </td> <td> <span class="glyph" title="">⋚</span> </td> </tr><tr id="entity-lesseqqgtr"><td> <code title="">lesseqqgtr;</code> </td> <td> U+02A8B </td> <td> <span class="glyph" title="">⪋</span> </td> </tr><tr id="entity-LessEqualGreater"><td> <code title="">LessEqualGreater;</code> </td> <td> U+022DA </td> <td> <span class="glyph" title="">⋚</span> </td> </tr><tr id="entity-LessFullEqual"><td> <code title="">LessFullEqual;</code> </td> <td> U+02266 </td> <td> <span class="glyph" title="">≦</span> </td> </tr><tr id="entity-LessGreater"><td> <code title="">LessGreater;</code> </td> <td> U+02276 </td> <td> <span class="glyph" title="">≶</span> </td> </tr><tr id="entity-lessgtr"><td> <code title="">lessgtr;</code> </td> <td> U+02276 </td> <td> <span class="glyph" title="">≶</span> </td> </tr><tr id="entity-LessLess"><td> <code title="">LessLess;</code> </td> <td> U+02AA1 </td> <td> <span class="glyph" title="">⪡</span> </td> </tr><tr id="entity-lesssim"><td> <code title="">lesssim;</code> </td> <td> U+02272 </td> <td> <span class="glyph" title="">≲</span> </td> </tr><tr id="entity-LessSlantEqual"><td> <code title="">LessSlantEqual;</code> </td> <td> U+02A7D </td> <td> <span class="glyph" title="">⩽</span> </td> </tr><tr id="entity-LessTilde"><td> <code title="">LessTilde;</code> </td> <td> U+02272 </td> <td> <span class="glyph" title="">≲</span> </td> </tr><tr id="entity-lfisht"><td> <code title="">lfisht;</code> </td> <td> U+0297C </td> <td> <span class="glyph" title="">⥼</span> </td> </tr><tr id="entity-lfloor"><td> <code title="">lfloor;</code> </td> <td> U+0230A </td> <td> <span class="glyph" title="">⌊</span> </td> </tr><tr id="entity-Lfr"><td> <code title="">Lfr;</code> </td> <td> U+1D50F </td> <td> <span class="glyph" title="">𝔏</span> </td> </tr><tr id="entity-lfr"><td> <code title="">lfr;</code> </td> <td> U+1D529 </td> <td> <span class="glyph" title="">𝔩</span> </td> </tr><tr id="entity-lg"><td> <code title="">lg;</code> </td> <td> U+02276 </td> <td> <span class="glyph" title="">≶</span> </td> </tr><tr id="entity-lgE"><td> <code title="">lgE;</code> </td> <td> U+02A91 </td> <td> <span class="glyph" title="">⪑</span> </td> </tr><tr id="entity-lHar"><td> <code title="">lHar;</code> </td> <td> U+02962 </td> <td> <span class="glyph" title="">⥢</span> </td> </tr><tr id="entity-lhard"><td> <code title="">lhard;</code> </td> <td> U+021BD </td> <td> <span class="glyph" title="">↽</span> </td> </tr><tr id="entity-lharu"><td> <code title="">lharu;</code> </td> <td> U+021BC </td> <td> <span class="glyph" title="">↼</span> </td> </tr><tr id="entity-lharul"><td> <code title="">lharul;</code> </td> <td> U+0296A </td> <td> <span class="glyph" title="">⥪</span> </td> </tr><tr id="entity-lhblk"><td> <code title="">lhblk;</code> </td> <td> U+02584 </td> <td> <span class="glyph" title="">â–„</span> </td> </tr><tr id="entity-LJcy"><td> <code title="">LJcy;</code> </td> <td> U+00409 </td> <td> <span class="glyph" title="">Љ</span> </td> </tr><tr id="entity-ljcy"><td> <code title="">ljcy;</code> </td> <td> U+00459 </td> <td> <span class="glyph" title="">Ñ™</span> </td> </tr><tr id="entity-Ll"><td> <code title="">Ll;</code> </td> <td> U+022D8 </td> <td> <span class="glyph" title="">⋘</span> </td> </tr><tr id="entity-ll"><td> <code title="">ll;</code> </td> <td> U+0226A </td> <td> <span class="glyph" title="">≪</span> </td> </tr><tr id="entity-llarr"><td> <code title="">llarr;</code> </td> <td> U+021C7 </td> <td> <span class="glyph" title="">⇇</span> </td> </tr><tr id="entity-llcorner"><td> <code title="">llcorner;</code> </td> <td> U+0231E </td> <td> <span class="glyph" title="">⌞</span> </td> </tr><tr id="entity-Lleftarrow"><td> <code title="">Lleftarrow;</code> </td> <td> U+021DA </td> <td> <span class="glyph" title="">⇚</span> </td> </tr><tr id="entity-llhard"><td> <code title="">llhard;</code> </td> <td> U+0296B </td> <td> <span class="glyph" title="">⥫</span> </td> </tr><tr id="entity-lltri"><td> <code title="">lltri;</code> </td> <td> U+025FA </td> <td> <span class="glyph" title="">â—º</span> </td> </tr><tr id="entity-Lmidot"><td> <code title="">Lmidot;</code> </td> <td> U+0013F </td> <td> <span class="glyph" title="">Ä¿</span> </td> </tr><tr id="entity-lmidot"><td> <code title="">lmidot;</code> </td> <td> U+00140 </td> <td> <span class="glyph" title="">Å€</span> </td> </tr><tr id="entity-lmoust"><td> <code title="">lmoust;</code> </td> <td> U+023B0 </td> <td> <span class="glyph" title="">⎰</span> </td> </tr><tr id="entity-lmoustache"><td> <code title="">lmoustache;</code> </td> <td> U+023B0 </td> <td> <span class="glyph" title="">⎰</span> </td> </tr><tr id="entity-lnap"><td> <code title="">lnap;</code> </td> <td> U+02A89 </td> <td> <span class="glyph" title="">⪉</span> </td> </tr><tr id="entity-lnapprox"><td> <code title="">lnapprox;</code> </td> <td> U+02A89 </td> <td> <span class="glyph" title="">⪉</span> </td> </tr><tr id="entity-lnE"><td> <code title="">lnE;</code> </td> <td> U+02268 </td> <td> <span class="glyph" title="">≨</span> </td> </tr><tr id="entity-lne"><td> <code title="">lne;</code> </td> <td> U+02A87 </td> <td> <span class="glyph" title="">⪇</span> </td> </tr><tr id="entity-lneq"><td> <code title="">lneq;</code> </td> <td> U+02A87 </td> <td> <span class="glyph" title="">⪇</span> </td> </tr><tr id="entity-lneqq"><td> <code title="">lneqq;</code> </td> <td> U+02268 </td> <td> <span class="glyph" title="">≨</span> </td> </tr><tr id="entity-lnsim"><td> <code title="">lnsim;</code> </td> <td> U+022E6 </td> <td> <span class="glyph" title="">⋦</span> </td> </tr><tr id="entity-loang"><td> <code title="">loang;</code> </td> <td> U+027EC </td> <td> <span class="glyph" title="">⟬</span> </td> </tr><tr id="entity-loarr"><td> <code title="">loarr;</code> </td> <td> U+021FD </td> <td> <span class="glyph" title="">⇽</span> </td> </tr><tr id="entity-lobrk"><td> <code title="">lobrk;</code> </td> <td> U+027E6 </td> <td> <span class="glyph" title="">⟦</span> </td> </tr><tr id="entity-LongLeftArrow"><td> <code title="">LongLeftArrow;</code> </td> <td> U+027F5 </td> <td> <span class="glyph" title="">⟵</span> </td> </tr><tr id="entity-Longleftarrow"><td> <code title="">Longleftarrow;</code> </td> <td> U+027F8 </td> <td> <span class="glyph" title="">⟸</span> </td> </tr><tr id="entity-longleftarrow"><td> <code title="">longleftarrow;</code> </td> <td> U+027F5 </td> <td> <span class="glyph" title="">⟵</span> </td> </tr><tr id="entity-LongLeftRightArrow"><td> <code title="">LongLeftRightArrow;</code> </td> <td> U+027F7 </td> <td> <span class="glyph" title="">⟷</span> </td> </tr><tr id="entity-Longleftrightarrow"><td> <code title="">Longleftrightarrow;</code> </td> <td> U+027FA </td> <td> <span class="glyph" title="">⟺</span> </td> </tr><tr id="entity-longleftrightarrow"><td> <code title="">longleftrightarrow;</code> </td> <td> U+027F7 </td> <td> <span class="glyph" title="">⟷</span> </td> </tr><tr id="entity-longmapsto"><td> <code title="">longmapsto;</code> </td> <td> U+027FC </td> <td> <span class="glyph" title="">⟼</span> </td> </tr><tr id="entity-LongRightArrow"><td> <code title="">LongRightArrow;</code> </td> <td> U+027F6 </td> <td> <span class="glyph" title="">⟶</span> </td> </tr><tr id="entity-Longrightarrow"><td> <code title="">Longrightarrow;</code> </td> <td> U+027F9 </td> <td> <span class="glyph" title="">⟹</span> </td> </tr><tr id="entity-longrightarrow"><td> <code title="">longrightarrow;</code> </td> <td> U+027F6 </td> <td> <span class="glyph" title="">⟶</span> </td> </tr><tr id="entity-looparrowleft"><td> <code title="">looparrowleft;</code> </td> <td> U+021AB </td> <td> <span class="glyph" title="">↫</span> </td> </tr><tr id="entity-looparrowright"><td> <code title="">looparrowright;</code> </td> <td> U+021AC </td> <td> <span class="glyph" title="">↬</span> </td> </tr><tr id="entity-lopar"><td> <code title="">lopar;</code> </td> <td> U+02985 </td> <td> <span class="glyph" title="">⦅</span> </td> </tr><tr id="entity-Lopf"><td> <code title="">Lopf;</code> </td> <td> U+1D543 </td> <td> <span class="glyph" title="">𝕃</span> </td> </tr><tr id="entity-lopf"><td> <code title="">lopf;</code> </td> <td> U+1D55D </td> <td> <span class="glyph" title="">𝕝</span> </td> </tr><tr id="entity-loplus"><td> <code title="">loplus;</code> </td> <td> U+02A2D </td> <td> <span class="glyph" title="">⨭</span> </td> </tr><tr id="entity-lotimes"><td> <code title="">lotimes;</code> </td> <td> U+02A34 </td> <td> <span class="glyph" title="">⨴</span> </td> </tr><tr id="entity-lowast"><td> <code title="">lowast;</code> </td> <td> U+02217 </td> <td> <span class="glyph" title="">∗</span> </td> </tr><tr id="entity-lowbar"><td> <code title="">lowbar;</code> </td> <td> U+0005F </td> <td> <span class="glyph" title="">_</span> </td> </tr><tr id="entity-LowerLeftArrow"><td> <code title="">LowerLeftArrow;</code> </td> <td> U+02199 </td> <td> <span class="glyph" title="">↙</span> </td> </tr><tr id="entity-LowerRightArrow"><td> <code title="">LowerRightArrow;</code> </td> <td> U+02198 </td> <td> <span class="glyph" title="">↘</span> </td> </tr><tr id="entity-loz"><td> <code title="">loz;</code> </td> <td> U+025CA </td> <td> <span class="glyph" title="">â—Š</span> </td> </tr><tr id="entity-lozenge"><td> <code title="">lozenge;</code> </td> <td> U+025CA </td> <td> <span class="glyph" title="">â—Š</span> </td> </tr><tr id="entity-lozf"><td> <code title="">lozf;</code> </td> <td> U+029EB </td> <td> <span class="glyph" title="">â§«</span> </td> </tr><tr id="entity-lpar"><td> <code title="">lpar;</code> </td> <td> U+00028 </td> <td> <span class="glyph" title="">(</span> </td> </tr><tr id="entity-lparlt"><td> <code title="">lparlt;</code> </td> <td> U+02993 </td> <td> <span class="glyph" title="">⦓</span> </td> </tr><tr id="entity-lrarr"><td> <code title="">lrarr;</code> </td> <td> U+021C6 </td> <td> <span class="glyph" title="">⇆</span> </td> </tr><tr id="entity-lrcorner"><td> <code title="">lrcorner;</code> </td> <td> U+0231F </td> <td> <span class="glyph" title="">⌟</span> </td> </tr><tr id="entity-lrhar"><td> <code title="">lrhar;</code> </td> <td> U+021CB </td> <td> <span class="glyph" title="">⇋</span> </td> </tr><tr id="entity-lrhard"><td> <code title="">lrhard;</code> </td> <td> U+0296D </td> <td> <span class="glyph" title="">⥭</span> </td> </tr><tr id="entity-lrm"><td> <code title="">lrm;</code> </td> <td> U+0200E </td> <td> <span class="glyph" title="">‎</span> </td> </tr><tr id="entity-lrtri"><td> <code title="">lrtri;</code> </td> <td> U+022BF </td> <td> <span class="glyph" title="">⊿</span> </td> </tr><tr id="entity-lsaquo"><td> <code title="">lsaquo;</code> </td> <td> U+02039 </td> <td> <span class="glyph" title="">‹</span> </td> </tr><tr id="entity-Lscr"><td> <code title="">Lscr;</code> </td> <td> U+02112 </td> <td> <span class="glyph" title="">â„’</span> </td> </tr><tr id="entity-lscr"><td> <code title="">lscr;</code> </td> <td> U+1D4C1 </td> <td> <span class="glyph" title="">𝓁</span> </td> </tr><tr id="entity-Lsh"><td> <code title="">Lsh;</code> </td> <td> U+021B0 </td> <td> <span class="glyph" title="">↰</span> </td> </tr><tr id="entity-lsh"><td> <code title="">lsh;</code> </td> <td> U+021B0 </td> <td> <span class="glyph" title="">↰</span> </td> </tr><tr id="entity-lsim"><td> <code title="">lsim;</code> </td> <td> U+02272 </td> <td> <span class="glyph" title="">≲</span> </td> </tr><tr id="entity-lsime"><td> <code title="">lsime;</code> </td> <td> U+02A8D </td> <td> <span class="glyph" title="">⪍</span> </td> </tr><tr id="entity-lsimg"><td> <code title="">lsimg;</code> </td> <td> U+02A8F </td> <td> <span class="glyph" title="">⪏</span> </td> </tr><tr id="entity-lsqb"><td> <code title="">lsqb;</code> </td> <td> U+0005B </td> <td> <span class="glyph" title="">[</span> </td> </tr><tr id="entity-lsquo"><td> <code title="">lsquo;</code> </td> <td> U+02018 </td> <td> <span class="glyph" title="">‘</span> </td> </tr><tr id="entity-lsquor"><td> <code title="">lsquor;</code> </td> <td> U+0201A </td> <td> <span class="glyph" title="">‚</span> </td> </tr><tr id="entity-Lstrok"><td> <code title="">Lstrok;</code> </td> <td> U+00141 </td> <td> <span class="glyph" title="">Ł</span> </td> </tr><tr id="entity-lstrok"><td> <code title="">lstrok;</code> </td> <td> U+00142 </td> <td> <span class="glyph" title="">Å‚</span> </td> </tr><tr id="entity-LT"><td> <code title="">LT;</code> </td> <td> U+0003C </td> <td> <span class="glyph" title=""><</span> </td> </tr><tr class="impl" id="entity-LT-legacy"><td> <code title="">LT</code> </td> <td> U+0003C </td> <td> <span title=""><</span> </td> </tr><tr id="entity-Lt"><td> <code title="">Lt;</code> </td> <td> U+0226A </td> <td> <span class="glyph" title="">≪</span> </td> </tr><tr id="entity-lt"><td> <code title="">lt;</code> </td> <td> U+0003C </td> <td> <span class="glyph" title=""><</span> </td> </tr><tr class="impl" id="entity-lt-legacy"><td> <code title="">lt</code> </td> <td> U+0003C </td> <td> <span title=""><</span> </td> </tr><tr id="entity-ltcc"><td> <code title="">ltcc;</code> </td> <td> U+02AA6 </td> <td> <span class="glyph" title="">⪦</span> </td> </tr><tr id="entity-ltcir"><td> <code title="">ltcir;</code> </td> <td> U+02A79 </td> <td> <span class="glyph" title="">⩹</span> </td> </tr><tr id="entity-ltdot"><td> <code title="">ltdot;</code> </td> <td> U+022D6 </td> <td> <span class="glyph" title="">â‹–</span> </td> </tr><tr id="entity-lthree"><td> <code title="">lthree;</code> </td> <td> U+022CB </td> <td> <span class="glyph" title="">â‹‹</span> </td> </tr><tr id="entity-ltimes"><td> <code title="">ltimes;</code> </td> <td> U+022C9 </td> <td> <span class="glyph" title="">⋉</span> </td> </tr><tr id="entity-ltlarr"><td> <code title="">ltlarr;</code> </td> <td> U+02976 </td> <td> <span class="glyph" title="">⥶</span> </td> </tr><tr id="entity-ltquest"><td> <code title="">ltquest;</code> </td> <td> U+02A7B </td> <td> <span class="glyph" title="">â©»</span> </td> </tr><tr id="entity-ltri"><td> <code title="">ltri;</code> </td> <td> U+025C3 </td> <td> <span class="glyph" title="">â—ƒ</span> </td> </tr><tr id="entity-ltrie"><td> <code title="">ltrie;</code> </td> <td> U+022B4 </td> <td> <span class="glyph" title="">⊴</span> </td> </tr><tr id="entity-ltrif"><td> <code title="">ltrif;</code> </td> <td> U+025C2 </td> <td> <span class="glyph" title="">â—‚</span> </td> </tr><tr id="entity-ltrPar"><td> <code title="">ltrPar;</code> </td> <td> U+02996 </td> <td> <span class="glyph" title="">⦖</span> </td> </tr><tr id="entity-lurdshar"><td> <code title="">lurdshar;</code> </td> <td> U+0294A </td> <td> <span class="glyph" title="">⥊</span> </td> </tr><tr id="entity-luruhar"><td> <code title="">luruhar;</code> </td> <td> U+02966 </td> <td> <span class="glyph" title="">⥦</span> </td> </tr><tr id="entity-lvertneqq"><td> <code title="">lvertneqq;</code> </td> <td> U+02268 U+0FE00 </td> <td> <span class="glyph compound" title="">≨︀</span> </td> </tr><tr id="entity-lvnE"><td> <code title="">lvnE;</code> </td> <td> U+02268 U+0FE00 </td> <td> <span class="glyph compound" title="">≨︀</span> </td> </tr><tr id="entity-macr"><td> <code title="">macr;</code> </td> <td> U+000AF </td> <td> <span class="glyph" title="">¯</span> </td> </tr><tr class="impl" id="entity-macr-legacy"><td> <code title="">macr</code> </td> <td> U+000AF </td> <td> <span title="">¯</span> </td> </tr><tr id="entity-male"><td> <code title="">male;</code> </td> <td> U+02642 </td> <td> <span class="glyph" title="">♂</span> </td> </tr><tr id="entity-malt"><td> <code title="">malt;</code> </td> <td> U+02720 </td> <td> <span class="glyph" title="">✠</span> </td> </tr><tr id="entity-maltese"><td> <code title="">maltese;</code> </td> <td> U+02720 </td> <td> <span class="glyph" title="">✠</span> </td> </tr><tr id="entity-Map"><td> <code title="">Map;</code> </td> <td> U+02905 </td> <td> <span class="glyph" title="">⤅</span> </td> </tr><tr id="entity-map"><td> <code title="">map;</code> </td> <td> U+021A6 </td> <td> <span class="glyph" title="">↦</span> </td> </tr><tr id="entity-mapsto"><td> <code title="">mapsto;</code> </td> <td> U+021A6 </td> <td> <span class="glyph" title="">↦</span> </td> </tr><tr id="entity-mapstodown"><td> <code title="">mapstodown;</code> </td> <td> U+021A7 </td> <td> <span class="glyph" title="">↧</span> </td> </tr><tr id="entity-mapstoleft"><td> <code title="">mapstoleft;</code> </td> <td> U+021A4 </td> <td> <span class="glyph" title="">↤</span> </td> </tr><tr id="entity-mapstoup"><td> <code title="">mapstoup;</code> </td> <td> U+021A5 </td> <td> <span class="glyph" title="">↥</span> </td> </tr><tr id="entity-marker"><td> <code title="">marker;</code> </td> <td> U+025AE </td> <td> <span class="glyph" title="">â–®</span> </td> </tr><tr id="entity-mcomma"><td> <code title="">mcomma;</code> </td> <td> U+02A29 </td> <td> <span class="glyph" title="">⨩</span> </td> </tr><tr id="entity-Mcy"><td> <code title="">Mcy;</code> </td> <td> U+0041C </td> <td> <span class="glyph" title="">М</span> </td> </tr><tr id="entity-mcy"><td> <code title="">mcy;</code> </td> <td> U+0043C </td> <td> <span class="glyph" title="">м</span> </td> </tr><tr id="entity-mdash"><td> <code title="">mdash;</code> </td> <td> U+02014 </td> <td> <span class="glyph" title="">—</span> </td> </tr><tr id="entity-mDDot"><td> <code title="">mDDot;</code> </td> <td> U+0223A </td> <td> <span class="glyph" title="">∺</span> </td> </tr><tr id="entity-measuredangle"><td> <code title="">measuredangle;</code> </td> <td> U+02221 </td> <td> <span class="glyph" title="">∡</span> </td> </tr><tr id="entity-MediumSpace"><td> <code title="">MediumSpace;</code> </td> <td> U+0205F </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-Mellintrf"><td> <code title="">Mellintrf;</code> </td> <td> U+02133 </td> <td> <span class="glyph" title="">ℳ</span> </td> </tr><tr id="entity-Mfr"><td> <code title="">Mfr;</code> </td> <td> U+1D510 </td> <td> <span class="glyph" title="">𝔐</span> </td> </tr><tr id="entity-mfr"><td> <code title="">mfr;</code> </td> <td> U+1D52A </td> <td> <span class="glyph" title="">𝔪</span> </td> </tr><tr id="entity-mho"><td> <code title="">mho;</code> </td> <td> U+02127 </td> <td> <span class="glyph" title="">â„§</span> </td> </tr><tr id="entity-micro"><td> <code title="">micro;</code> </td> <td> U+000B5 </td> <td> <span class="glyph" title="">µ</span> </td> </tr><tr class="impl" id="entity-micro-legacy"><td> <code title="">micro</code> </td> <td> U+000B5 </td> <td> <span title="">µ</span> </td> </tr><tr id="entity-mid"><td> <code title="">mid;</code> </td> <td> U+02223 </td> <td> <span class="glyph" title="">∣</span> </td> </tr><tr id="entity-midast"><td> <code title="">midast;</code> </td> <td> U+0002A </td> <td> <span class="glyph" title="">*</span> </td> </tr><tr id="entity-midcir"><td> <code title="">midcir;</code> </td> <td> U+02AF0 </td> <td> <span class="glyph" title="">â«°</span> </td> </tr><tr id="entity-middot"><td> <code title="">middot;</code> </td> <td> U+000B7 </td> <td> <span class="glyph" title="">·</span> </td> </tr><tr class="impl" id="entity-middot-legacy"><td> <code title="">middot</code> </td> <td> U+000B7 </td> <td> <span title="">·</span> </td> </tr><tr id="entity-minus"><td> <code title="">minus;</code> </td> <td> U+02212 </td> <td> <span class="glyph" title="">−</span> </td> </tr><tr id="entity-minusb"><td> <code title="">minusb;</code> </td> <td> U+0229F </td> <td> <span class="glyph" title="">⊟</span> </td> </tr><tr id="entity-minusd"><td> <code title="">minusd;</code> </td> <td> U+02238 </td> <td> <span class="glyph" title="">∸</span> </td> </tr><tr id="entity-minusdu"><td> <code title="">minusdu;</code> </td> <td> U+02A2A </td> <td> <span class="glyph" title="">⨪</span> </td> </tr><tr id="entity-MinusPlus"><td> <code title="">MinusPlus;</code> </td> <td> U+02213 </td> <td> <span class="glyph" title="">∓</span> </td> </tr><tr id="entity-mlcp"><td> <code title="">mlcp;</code> </td> <td> U+02ADB </td> <td> <span class="glyph" title="">â«›</span> </td> </tr><tr id="entity-mldr"><td> <code title="">mldr;</code> </td> <td> U+02026 </td> <td> <span class="glyph" title="">…</span> </td> </tr><tr id="entity-mnplus"><td> <code title="">mnplus;</code> </td> <td> U+02213 </td> <td> <span class="glyph" title="">∓</span> </td> </tr><tr id="entity-models"><td> <code title="">models;</code> </td> <td> U+022A7 </td> <td> <span class="glyph" title="">⊧</span> </td> </tr><tr id="entity-Mopf"><td> <code title="">Mopf;</code> </td> <td> U+1D544 </td> <td> <span class="glyph" title="">𝕄</span> </td> </tr><tr id="entity-mopf"><td> <code title="">mopf;</code> </td> <td> U+1D55E </td> <td> <span class="glyph" title="">𝕞</span> </td> </tr><tr id="entity-mp"><td> <code title="">mp;</code> </td> <td> U+02213 </td> <td> <span class="glyph" title="">∓</span> </td> </tr><tr id="entity-Mscr"><td> <code title="">Mscr;</code> </td> <td> U+02133 </td> <td> <span class="glyph" title="">ℳ</span> </td> </tr><tr id="entity-mscr"><td> <code title="">mscr;</code> </td> <td> U+1D4C2 </td> <td> <span class="glyph" title="">𝓂</span> </td> </tr><tr id="entity-mstpos"><td> <code title="">mstpos;</code> </td> <td> U+0223E </td> <td> <span class="glyph" title="">∾</span> </td> </tr><tr id="entity-Mu"><td> <code title="">Mu;</code> </td> <td> U+0039C </td> <td> <span class="glyph" title="">Μ</span> </td> </tr><tr id="entity-mu"><td> <code title="">mu;</code> </td> <td> U+003BC </td> <td> <span class="glyph" title="">μ</span> </td> </tr><tr id="entity-multimap"><td> <code title="">multimap;</code> </td> <td> U+022B8 </td> <td> <span class="glyph" title="">⊸</span> </td> </tr><tr id="entity-mumap"><td> <code title="">mumap;</code> </td> <td> U+022B8 </td> <td> <span class="glyph" title="">⊸</span> </td> </tr><tr id="entity-nabla"><td> <code title="">nabla;</code> </td> <td> U+02207 </td> <td> <span class="glyph" title="">∇</span> </td> </tr><tr id="entity-Nacute"><td> <code title="">Nacute;</code> </td> <td> U+00143 </td> <td> <span class="glyph" title="">Ń</span> </td> </tr><tr id="entity-nacute"><td> <code title="">nacute;</code> </td> <td> U+00144 </td> <td> <span class="glyph" title="">Å„</span> </td> </tr><tr id="entity-nang"><td> <code title="">nang;</code> </td> <td> U+02220 U+020D2 </td> <td> <span class="glyph compound" title="">∠⃒</span> </td> </tr><tr id="entity-nap"><td> <code title="">nap;</code> </td> <td> U+02249 </td> <td> <span class="glyph" title="">≉</span> </td> </tr><tr id="entity-napE"><td> <code title="">napE;</code> </td> <td> U+02A70 U+00338 </td> <td> <span class="glyph compound" title="">⩰̸</span> </td> </tr><tr id="entity-napid"><td> <code title="">napid;</code> </td> <td> U+0224B U+00338 </td> <td> <span class="glyph compound" title="">≋̸</span> </td> </tr><tr id="entity-napos"><td> <code title="">napos;</code> </td> <td> U+00149 </td> <td> <span class="glyph" title="">ʼn</span> </td> </tr><tr id="entity-napprox"><td> <code title="">napprox;</code> </td> <td> U+02249 </td> <td> <span class="glyph" title="">≉</span> </td> </tr><tr id="entity-natur"><td> <code title="">natur;</code> </td> <td> U+0266E </td> <td> <span class="glyph" title="">â™®</span> </td> </tr><tr id="entity-natural"><td> <code title="">natural;</code> </td> <td> U+0266E </td> <td> <span class="glyph" title="">â™®</span> </td> </tr><tr id="entity-naturals"><td> <code title="">naturals;</code> </td> <td> U+02115 </td> <td> <span class="glyph" title="">â„•</span> </td> </tr><tr id="entity-nbsp"><td> <code title="">nbsp;</code> </td> <td> U+000A0 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr class="impl" id="entity-nbsp-legacy"><td> <code title="">nbsp</code> </td> <td> U+000A0 </td> <td> <span title=""> </span> </td> </tr><tr id="entity-nbump"><td> <code title="">nbump;</code> </td> <td> U+0224E U+00338 </td> <td> <span class="glyph compound" title="">≎̸</span> </td> </tr><tr id="entity-nbumpe"><td> <code title="">nbumpe;</code> </td> <td> U+0224F U+00338 </td> <td> <span class="glyph compound" title="">≏̸</span> </td> </tr><tr id="entity-ncap"><td> <code title="">ncap;</code> </td> <td> U+02A43 </td> <td> <span class="glyph" title="">⩃</span> </td> </tr><tr id="entity-Ncaron"><td> <code title="">Ncaron;</code> </td> <td> U+00147 </td> <td> <span class="glyph" title="">Ň</span> </td> </tr><tr id="entity-ncaron"><td> <code title="">ncaron;</code> </td> <td> U+00148 </td> <td> <span class="glyph" title="">ň</span> </td> </tr><tr id="entity-Ncedil"><td> <code title="">Ncedil;</code> </td> <td> U+00145 </td> <td> <span class="glyph" title="">Å…</span> </td> </tr><tr id="entity-ncedil"><td> <code title="">ncedil;</code> </td> <td> U+00146 </td> <td> <span class="glyph" title="">ņ</span> </td> </tr><tr id="entity-ncong"><td> <code title="">ncong;</code> </td> <td> U+02247 </td> <td> <span class="glyph" title="">≇</span> </td> </tr><tr id="entity-ncongdot"><td> <code title="">ncongdot;</code> </td> <td> U+02A6D U+00338 </td> <td> <span class="glyph compound" title="">⩭̸</span> </td> </tr><tr id="entity-ncup"><td> <code title="">ncup;</code> </td> <td> U+02A42 </td> <td> <span class="glyph" title="">â©‚</span> </td> </tr><tr id="entity-Ncy"><td> <code title="">Ncy;</code> </td> <td> U+0041D </td> <td> <span class="glyph" title="">Н</span> </td> </tr><tr id="entity-ncy"><td> <code title="">ncy;</code> </td> <td> U+0043D </td> <td> <span class="glyph" title="">н</span> </td> </tr><tr id="entity-ndash"><td> <code title="">ndash;</code> </td> <td> U+02013 </td> <td> <span class="glyph" title="">–</span> </td> </tr><tr id="entity-ne"><td> <code title="">ne;</code> </td> <td> U+02260 </td> <td> <span class="glyph" title="">≠</span> </td> </tr><tr id="entity-nearhk"><td> <code title="">nearhk;</code> </td> <td> U+02924 </td> <td> <span class="glyph" title="">⤤</span> </td> </tr><tr id="entity-neArr"><td> <code title="">neArr;</code> </td> <td> U+021D7 </td> <td> <span class="glyph" title="">⇗</span> </td> </tr><tr id="entity-nearr"><td> <code title="">nearr;</code> </td> <td> U+02197 </td> <td> <span class="glyph" title="">↗</span> </td> </tr><tr id="entity-nearrow"><td> <code title="">nearrow;</code> </td> <td> U+02197 </td> <td> <span class="glyph" title="">↗</span> </td> </tr><tr id="entity-nedot"><td> <code title="">nedot;</code> </td> <td> U+02250 U+00338 </td> <td> <span class="glyph compound" title="">≐̸</span> </td> </tr><tr id="entity-NegativeMediumSpace"><td> <code title="">NegativeMediumSpace;</code> </td> <td> U+0200B </td> <td> <span class="glyph" title="">​</span> </td> </tr><tr id="entity-NegativeThickSpace"><td> <code title="">NegativeThickSpace;</code> </td> <td> U+0200B </td> <td> <span class="glyph" title="">​</span> </td> </tr><tr id="entity-NegativeThinSpace"><td> <code title="">NegativeThinSpace;</code> </td> <td> U+0200B </td> <td> <span class="glyph" title="">​</span> </td> </tr><tr id="entity-NegativeVeryThinSpace"><td> <code title="">NegativeVeryThinSpace;</code> </td> <td> U+0200B </td> <td> <span class="glyph" title="">​</span> </td> </tr><tr id="entity-nequiv"><td> <code title="">nequiv;</code> </td> <td> U+02262 </td> <td> <span class="glyph" title="">≢</span> </td> </tr><tr id="entity-nesear"><td> <code title="">nesear;</code> </td> <td> U+02928 </td> <td> <span class="glyph" title="">⤨</span> </td> </tr><tr id="entity-nesim"><td> <code title="">nesim;</code> </td> <td> U+02242 U+00338 </td> <td> <span class="glyph compound" title="">≂̸</span> </td> </tr><tr id="entity-NestedGreaterGreater"><td> <code title="">NestedGreaterGreater;</code> </td> <td> U+0226B </td> <td> <span class="glyph" title="">≫</span> </td> </tr><tr id="entity-NestedLessLess"><td> <code title="">NestedLessLess;</code> </td> <td> U+0226A </td> <td> <span class="glyph" title="">≪</span> </td> </tr><tr id="entity-NewLine"><td> <code title="">NewLine;</code> </td> <td> U+0000A </td> <td> <span class="glyph control" title="">␊</span> </td> </tr><tr id="entity-nexist"><td> <code title="">nexist;</code> </td> <td> U+02204 </td> <td> <span class="glyph" title="">∄</span> </td> </tr><tr id="entity-nexists"><td> <code title="">nexists;</code> </td> <td> U+02204 </td> <td> <span class="glyph" title="">∄</span> </td> </tr><tr id="entity-Nfr"><td> <code title="">Nfr;</code> </td> <td> U+1D511 </td> <td> <span class="glyph" title="">𝔑</span> </td> </tr><tr id="entity-nfr"><td> <code title="">nfr;</code> </td> <td> U+1D52B </td> <td> <span class="glyph" title="">𝔫</span> </td> </tr><tr id="entity-ngE"><td> <code title="">ngE;</code> </td> <td> U+02267 U+00338 </td> <td> <span class="glyph compound" title="">≧̸</span> </td> </tr><tr id="entity-nge"><td> <code title="">nge;</code> </td> <td> U+02271 </td> <td> <span class="glyph" title="">≱</span> </td> </tr><tr id="entity-ngeq"><td> <code title="">ngeq;</code> </td> <td> U+02271 </td> <td> <span class="glyph" title="">≱</span> </td> </tr><tr id="entity-ngeqq"><td> <code title="">ngeqq;</code> </td> <td> U+02267 U+00338 </td> <td> <span class="glyph compound" title="">≧̸</span> </td> </tr><tr id="entity-ngeqslant"><td> <code title="">ngeqslant;</code> </td> <td> U+02A7E U+00338 </td> <td> <span class="glyph compound" title="">⩾̸</span> </td> </tr><tr id="entity-nges"><td> <code title="">nges;</code> </td> <td> U+02A7E U+00338 </td> <td> <span class="glyph compound" title="">⩾̸</span> </td> </tr><tr id="entity-nGg"><td> <code title="">nGg;</code> </td> <td> U+022D9 U+00338 </td> <td> <span class="glyph compound" title="">⋙̸</span> </td> </tr><tr id="entity-ngsim"><td> <code title="">ngsim;</code> </td> <td> U+02275 </td> <td> <span class="glyph" title="">≵</span> </td> </tr><tr id="entity-nGt"><td> <code title="">nGt;</code> </td> <td> U+0226B U+020D2 </td> <td> <span class="glyph compound" title="">≫⃒</span> </td> </tr><tr id="entity-ngt"><td> <code title="">ngt;</code> </td> <td> U+0226F </td> <td> <span class="glyph" title="">≯</span> </td> </tr><tr id="entity-ngtr"><td> <code title="">ngtr;</code> </td> <td> U+0226F </td> <td> <span class="glyph" title="">≯</span> </td> </tr><tr id="entity-nGtv"><td> <code title="">nGtv;</code> </td> <td> U+0226B U+00338 </td> <td> <span class="glyph compound" title="">≫̸</span> </td> </tr><tr id="entity-nhArr"><td> <code title="">nhArr;</code> </td> <td> U+021CE </td> <td> <span class="glyph" title="">⇎</span> </td> </tr><tr id="entity-nharr"><td> <code title="">nharr;</code> </td> <td> U+021AE </td> <td> <span class="glyph" title="">↮</span> </td> </tr><tr id="entity-nhpar"><td> <code title="">nhpar;</code> </td> <td> U+02AF2 </td> <td> <span class="glyph" title="">⫲</span> </td> </tr><tr id="entity-ni"><td> <code title="">ni;</code> </td> <td> U+0220B </td> <td> <span class="glyph" title="">∋</span> </td> </tr><tr id="entity-nis"><td> <code title="">nis;</code> </td> <td> U+022FC </td> <td> <span class="glyph" title="">⋼</span> </td> </tr><tr id="entity-nisd"><td> <code title="">nisd;</code> </td> <td> U+022FA </td> <td> <span class="glyph" title="">⋺</span> </td> </tr><tr id="entity-niv"><td> <code title="">niv;</code> </td> <td> U+0220B </td> <td> <span class="glyph" title="">∋</span> </td> </tr><tr id="entity-NJcy"><td> <code title="">NJcy;</code> </td> <td> U+0040A </td> <td> <span class="glyph" title="">Њ</span> </td> </tr><tr id="entity-njcy"><td> <code title="">njcy;</code> </td> <td> U+0045A </td> <td> <span class="glyph" title="">Ñš</span> </td> </tr><tr id="entity-nlArr"><td> <code title="">nlArr;</code> </td> <td> U+021CD </td> <td> <span class="glyph" title="">⇍</span> </td> </tr><tr id="entity-nlarr"><td> <code title="">nlarr;</code> </td> <td> U+0219A </td> <td> <span class="glyph" title="">↚</span> </td> </tr><tr id="entity-nldr"><td> <code title="">nldr;</code> </td> <td> U+02025 </td> <td> <span class="glyph" title="">‥</span> </td> </tr><tr id="entity-nlE"><td> <code title="">nlE;</code> </td> <td> U+02266 U+00338 </td> <td> <span class="glyph compound" title="">≦̸</span> </td> </tr><tr id="entity-nle"><td> <code title="">nle;</code> </td> <td> U+02270 </td> <td> <span class="glyph" title="">≰</span> </td> </tr><tr id="entity-nLeftarrow"><td> <code title="">nLeftarrow;</code> </td> <td> U+021CD </td> <td> <span class="glyph" title="">⇍</span> </td> </tr><tr id="entity-nleftarrow"><td> <code title="">nleftarrow;</code> </td> <td> U+0219A </td> <td> <span class="glyph" title="">↚</span> </td> </tr><tr id="entity-nLeftrightarrow"><td> <code title="">nLeftrightarrow;</code> </td> <td> U+021CE </td> <td> <span class="glyph" title="">⇎</span> </td> </tr><tr id="entity-nleftrightarrow"><td> <code title="">nleftrightarrow;</code> </td> <td> U+021AE </td> <td> <span class="glyph" title="">↮</span> </td> </tr><tr id="entity-nleq"><td> <code title="">nleq;</code> </td> <td> U+02270 </td> <td> <span class="glyph" title="">≰</span> </td> </tr><tr id="entity-nleqq"><td> <code title="">nleqq;</code> </td> <td> U+02266 U+00338 </td> <td> <span class="glyph compound" title="">≦̸</span> </td> </tr><tr id="entity-nleqslant"><td> <code title="">nleqslant;</code> </td> <td> U+02A7D U+00338 </td> <td> <span class="glyph compound" title="">⩽̸</span> </td> </tr><tr id="entity-nles"><td> <code title="">nles;</code> </td> <td> U+02A7D U+00338 </td> <td> <span class="glyph compound" title="">⩽̸</span> </td> </tr><tr id="entity-nless"><td> <code title="">nless;</code> </td> <td> U+0226E </td> <td> <span class="glyph" title="">≮</span> </td> </tr><tr id="entity-nLl"><td> <code title="">nLl;</code> </td> <td> U+022D8 U+00338 </td> <td> <span class="glyph compound" title="">⋘̸</span> </td> </tr><tr id="entity-nlsim"><td> <code title="">nlsim;</code> </td> <td> U+02274 </td> <td> <span class="glyph" title="">≴</span> </td> </tr><tr id="entity-nLt"><td> <code title="">nLt;</code> </td> <td> U+0226A U+020D2 </td> <td> <span class="glyph compound" title="">≪⃒</span> </td> </tr><tr id="entity-nlt"><td> <code title="">nlt;</code> </td> <td> U+0226E </td> <td> <span class="glyph" title="">≮</span> </td> </tr><tr id="entity-nltri"><td> <code title="">nltri;</code> </td> <td> U+022EA </td> <td> <span class="glyph" title="">⋪</span> </td> </tr><tr id="entity-nltrie"><td> <code title="">nltrie;</code> </td> <td> U+022EC </td> <td> <span class="glyph" title="">⋬</span> </td> </tr><tr id="entity-nLtv"><td> <code title="">nLtv;</code> </td> <td> U+0226A U+00338 </td> <td> <span class="glyph compound" title="">≪̸</span> </td> </tr><tr id="entity-nmid"><td> <code title="">nmid;</code> </td> <td> U+02224 </td> <td> <span class="glyph" title="">∤</span> </td> </tr><tr id="entity-NoBreak"><td> <code title="">NoBreak;</code> </td> <td> U+02060 </td> <td> <span class="glyph" title="">⁠</span> </td> </tr><tr id="entity-NonBreakingSpace"><td> <code title="">NonBreakingSpace;</code> </td> <td> U+000A0 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-Nopf"><td> <code title="">Nopf;</code> </td> <td> U+02115 </td> <td> <span class="glyph" title="">â„•</span> </td> </tr><tr id="entity-nopf"><td> <code title="">nopf;</code> </td> <td> U+1D55F </td> <td> <span class="glyph" title="">𝕟</span> </td> </tr><tr id="entity-Not"><td> <code title="">Not;</code> </td> <td> U+02AEC </td> <td> <span class="glyph" title="">⫬</span> </td> </tr><tr id="entity-not"><td> <code title="">not;</code> </td> <td> U+000AC </td> <td> <span class="glyph" title="">¬</span> </td> </tr><tr class="impl" id="entity-not-legacy"><td> <code title="">not</code> </td> <td> U+000AC </td> <td> <span title="">¬</span> </td> </tr><tr id="entity-NotCongruent"><td> <code title="">NotCongruent;</code> </td> <td> U+02262 </td> <td> <span class="glyph" title="">≢</span> </td> </tr><tr id="entity-NotCupCap"><td> <code title="">NotCupCap;</code> </td> <td> U+0226D </td> <td> <span class="glyph" title="">≭</span> </td> </tr><tr id="entity-NotDoubleVerticalBar"><td> <code title="">NotDoubleVerticalBar;</code> </td> <td> U+02226 </td> <td> <span class="glyph" title="">∦</span> </td> </tr><tr id="entity-NotElement"><td> <code title="">NotElement;</code> </td> <td> U+02209 </td> <td> <span class="glyph" title="">∉</span> </td> </tr><tr id="entity-NotEqual"><td> <code title="">NotEqual;</code> </td> <td> U+02260 </td> <td> <span class="glyph" title="">≠</span> </td> </tr><tr id="entity-NotEqualTilde"><td> <code title="">NotEqualTilde;</code> </td> <td> U+02242 U+00338 </td> <td> <span class="glyph compound" title="">≂̸</span> </td> </tr><tr id="entity-NotExists"><td> <code title="">NotExists;</code> </td> <td> U+02204 </td> <td> <span class="glyph" title="">∄</span> </td> </tr><tr id="entity-NotGreater"><td> <code title="">NotGreater;</code> </td> <td> U+0226F </td> <td> <span class="glyph" title="">≯</span> </td> </tr><tr id="entity-NotGreaterEqual"><td> <code title="">NotGreaterEqual;</code> </td> <td> U+02271 </td> <td> <span class="glyph" title="">≱</span> </td> </tr><tr id="entity-NotGreaterFullEqual"><td> <code title="">NotGreaterFullEqual;</code> </td> <td> U+02267 U+00338 </td> <td> <span class="glyph compound" title="">≧̸</span> </td> </tr><tr id="entity-NotGreaterGreater"><td> <code title="">NotGreaterGreater;</code> </td> <td> U+0226B U+00338 </td> <td> <span class="glyph compound" title="">≫̸</span> </td> </tr><tr id="entity-NotGreaterLess"><td> <code title="">NotGreaterLess;</code> </td> <td> U+02279 </td> <td> <span class="glyph" title="">≹</span> </td> </tr><tr id="entity-NotGreaterSlantEqual"><td> <code title="">NotGreaterSlantEqual;</code> </td> <td> U+02A7E U+00338 </td> <td> <span class="glyph compound" title="">⩾̸</span> </td> </tr><tr id="entity-NotGreaterTilde"><td> <code title="">NotGreaterTilde;</code> </td> <td> U+02275 </td> <td> <span class="glyph" title="">≵</span> </td> </tr><tr id="entity-NotHumpDownHump"><td> <code title="">NotHumpDownHump;</code> </td> <td> U+0224E U+00338 </td> <td> <span class="glyph compound" title="">≎̸</span> </td> </tr><tr id="entity-NotHumpEqual"><td> <code title="">NotHumpEqual;</code> </td> <td> U+0224F U+00338 </td> <td> <span class="glyph compound" title="">≏̸</span> </td> </tr><tr id="entity-notin"><td> <code title="">notin;</code> </td> <td> U+02209 </td> <td> <span class="glyph" title="">∉</span> </td> </tr><tr id="entity-notindot"><td> <code title="">notindot;</code> </td> <td> U+022F5 U+00338 </td> <td> <span class="glyph compound" title="">⋵̸</span> </td> </tr><tr id="entity-notinE"><td> <code title="">notinE;</code> </td> <td> U+022F9 U+00338 </td> <td> <span class="glyph compound" title="">⋹̸</span> </td> </tr><tr id="entity-notinva"><td> <code title="">notinva;</code> </td> <td> U+02209 </td> <td> <span class="glyph" title="">∉</span> </td> </tr><tr id="entity-notinvb"><td> <code title="">notinvb;</code> </td> <td> U+022F7 </td> <td> <span class="glyph" title="">â‹·</span> </td> </tr><tr id="entity-notinvc"><td> <code title="">notinvc;</code> </td> <td> U+022F6 </td> <td> <span class="glyph" title="">â‹¶</span> </td> </tr><tr id="entity-NotLeftTriangle"><td> <code title="">NotLeftTriangle;</code> </td> <td> U+022EA </td> <td> <span class="glyph" title="">⋪</span> </td> </tr><tr id="entity-NotLeftTriangleBar"><td> <code title="">NotLeftTriangleBar;</code> </td> <td> U+029CF U+00338 </td> <td> <span class="glyph compound" title="">⧏̸</span> </td> </tr><tr id="entity-NotLeftTriangleEqual"><td> <code title="">NotLeftTriangleEqual;</code> </td> <td> U+022EC </td> <td> <span class="glyph" title="">⋬</span> </td> </tr><tr id="entity-NotLess"><td> <code title="">NotLess;</code> </td> <td> U+0226E </td> <td> <span class="glyph" title="">≮</span> </td> </tr><tr id="entity-NotLessEqual"><td> <code title="">NotLessEqual;</code> </td> <td> U+02270 </td> <td> <span class="glyph" title="">≰</span> </td> </tr><tr id="entity-NotLessGreater"><td> <code title="">NotLessGreater;</code> </td> <td> U+02278 </td> <td> <span class="glyph" title="">≸</span> </td> </tr><tr id="entity-NotLessLess"><td> <code title="">NotLessLess;</code> </td> <td> U+0226A U+00338 </td> <td> <span class="glyph compound" title="">≪̸</span> </td> </tr><tr id="entity-NotLessSlantEqual"><td> <code title="">NotLessSlantEqual;</code> </td> <td> U+02A7D U+00338 </td> <td> <span class="glyph compound" title="">⩽̸</span> </td> </tr><tr id="entity-NotLessTilde"><td> <code title="">NotLessTilde;</code> </td> <td> U+02274 </td> <td> <span class="glyph" title="">≴</span> </td> </tr><tr id="entity-NotNestedGreaterGreater"><td> <code title="">NotNestedGreaterGreater;</code> </td> <td> U+02AA2 U+00338 </td> <td> <span class="glyph compound" title="">⪢̸</span> </td> </tr><tr id="entity-NotNestedLessLess"><td> <code title="">NotNestedLessLess;</code> </td> <td> U+02AA1 U+00338 </td> <td> <span class="glyph compound" title="">⪡̸</span> </td> </tr><tr id="entity-notni"><td> <code title="">notni;</code> </td> <td> U+0220C </td> <td> <span class="glyph" title="">∌</span> </td> </tr><tr id="entity-notniva"><td> <code title="">notniva;</code> </td> <td> U+0220C </td> <td> <span class="glyph" title="">∌</span> </td> </tr><tr id="entity-notnivb"><td> <code title="">notnivb;</code> </td> <td> U+022FE </td> <td> <span class="glyph" title="">⋾</span> </td> </tr><tr id="entity-notnivc"><td> <code title="">notnivc;</code> </td> <td> U+022FD </td> <td> <span class="glyph" title="">⋽</span> </td> </tr><tr id="entity-NotPrecedes"><td> <code title="">NotPrecedes;</code> </td> <td> U+02280 </td> <td> <span class="glyph" title="">⊀</span> </td> </tr><tr id="entity-NotPrecedesEqual"><td> <code title="">NotPrecedesEqual;</code> </td> <td> U+02AAF U+00338 </td> <td> <span class="glyph compound" title="">⪯̸</span> </td> </tr><tr id="entity-NotPrecedesSlantEqual"><td> <code title="">NotPrecedesSlantEqual;</code> </td> <td> U+022E0 </td> <td> <span class="glyph" title="">â‹ </span> </td> </tr><tr id="entity-NotReverseElement"><td> <code title="">NotReverseElement;</code> </td> <td> U+0220C </td> <td> <span class="glyph" title="">∌</span> </td> </tr><tr id="entity-NotRightTriangle"><td> <code title="">NotRightTriangle;</code> </td> <td> U+022EB </td> <td> <span class="glyph" title="">â‹«</span> </td> </tr><tr id="entity-NotRightTriangleBar"><td> <code title="">NotRightTriangleBar;</code> </td> <td> U+029D0 U+00338 </td> <td> <span class="glyph compound" title="">⧐̸</span> </td> </tr><tr id="entity-NotRightTriangleEqual"><td> <code title="">NotRightTriangleEqual;</code> </td> <td> U+022ED </td> <td> <span class="glyph" title="">â‹­</span> </td> </tr><tr id="entity-NotSquareSubset"><td> <code title="">NotSquareSubset;</code> </td> <td> U+0228F U+00338 </td> <td> <span class="glyph compound" title="">⊏̸</span> </td> </tr><tr id="entity-NotSquareSubsetEqual"><td> <code title="">NotSquareSubsetEqual;</code> </td> <td> U+022E2 </td> <td> <span class="glyph" title="">â‹¢</span> </td> </tr><tr id="entity-NotSquareSuperset"><td> <code title="">NotSquareSuperset;</code> </td> <td> U+02290 U+00338 </td> <td> <span class="glyph compound" title="">⊐̸</span> </td> </tr><tr id="entity-NotSquareSupersetEqual"><td> <code title="">NotSquareSupersetEqual;</code> </td> <td> U+022E3 </td> <td> <span class="glyph" title="">â‹£</span> </td> </tr><tr id="entity-NotSubset"><td> <code title="">NotSubset;</code> </td> <td> U+02282 U+020D2 </td> <td> <span class="glyph compound" title="">⊂⃒</span> </td> </tr><tr id="entity-NotSubsetEqual"><td> <code title="">NotSubsetEqual;</code> </td> <td> U+02288 </td> <td> <span class="glyph" title="">⊈</span> </td> </tr><tr id="entity-NotSucceeds"><td> <code title="">NotSucceeds;</code> </td> <td> U+02281 </td> <td> <span class="glyph" title="">⊁</span> </td> </tr><tr id="entity-NotSucceedsEqual"><td> <code title="">NotSucceedsEqual;</code> </td> <td> U+02AB0 U+00338 </td> <td> <span class="glyph compound" title="">⪰̸</span> </td> </tr><tr id="entity-NotSucceedsSlantEqual"><td> <code title="">NotSucceedsSlantEqual;</code> </td> <td> U+022E1 </td> <td> <span class="glyph" title="">â‹¡</span> </td> </tr><tr id="entity-NotSucceedsTilde"><td> <code title="">NotSucceedsTilde;</code> </td> <td> U+0227F U+00338 </td> <td> <span class="glyph compound" title="">≿̸</span> </td> </tr><tr id="entity-NotSuperset"><td> <code title="">NotSuperset;</code> </td> <td> U+02283 U+020D2 </td> <td> <span class="glyph compound" title="">⊃⃒</span> </td> </tr><tr id="entity-NotSupersetEqual"><td> <code title="">NotSupersetEqual;</code> </td> <td> U+02289 </td> <td> <span class="glyph" title="">⊉</span> </td> </tr><tr id="entity-NotTilde"><td> <code title="">NotTilde;</code> </td> <td> U+02241 </td> <td> <span class="glyph" title="">≁</span> </td> </tr><tr id="entity-NotTildeEqual"><td> <code title="">NotTildeEqual;</code> </td> <td> U+02244 </td> <td> <span class="glyph" title="">≄</span> </td> </tr><tr id="entity-NotTildeFullEqual"><td> <code title="">NotTildeFullEqual;</code> </td> <td> U+02247 </td> <td> <span class="glyph" title="">≇</span> </td> </tr><tr id="entity-NotTildeTilde"><td> <code title="">NotTildeTilde;</code> </td> <td> U+02249 </td> <td> <span class="glyph" title="">≉</span> </td> </tr><tr id="entity-NotVerticalBar"><td> <code title="">NotVerticalBar;</code> </td> <td> U+02224 </td> <td> <span class="glyph" title="">∤</span> </td> </tr><tr id="entity-npar"><td> <code title="">npar;</code> </td> <td> U+02226 </td> <td> <span class="glyph" title="">∦</span> </td> </tr><tr id="entity-nparallel"><td> <code title="">nparallel;</code> </td> <td> U+02226 </td> <td> <span class="glyph" title="">∦</span> </td> </tr><tr id="entity-nparsl"><td> <code title="">nparsl;</code> </td> <td> U+02AFD U+020E5 </td> <td> <span class="glyph compound" title="">⫽⃥</span> </td> </tr><tr id="entity-npart"><td> <code title="">npart;</code> </td> <td> U+02202 U+00338 </td> <td> <span class="glyph compound" title="">∂̸</span> </td> </tr><tr id="entity-npolint"><td> <code title="">npolint;</code> </td> <td> U+02A14 </td> <td> <span class="glyph" title="">⨔</span> </td> </tr><tr id="entity-npr"><td> <code title="">npr;</code> </td> <td> U+02280 </td> <td> <span class="glyph" title="">⊀</span> </td> </tr><tr id="entity-nprcue"><td> <code title="">nprcue;</code> </td> <td> U+022E0 </td> <td> <span class="glyph" title="">â‹ </span> </td> </tr><tr id="entity-npre"><td> <code title="">npre;</code> </td> <td> U+02AAF U+00338 </td> <td> <span class="glyph compound" title="">⪯̸</span> </td> </tr><tr id="entity-nprec"><td> <code title="">nprec;</code> </td> <td> U+02280 </td> <td> <span class="glyph" title="">⊀</span> </td> </tr><tr id="entity-npreceq"><td> <code title="">npreceq;</code> </td> <td> U+02AAF U+00338 </td> <td> <span class="glyph compound" title="">⪯̸</span> </td> </tr><tr id="entity-nrArr"><td> <code title="">nrArr;</code> </td> <td> U+021CF </td> <td> <span class="glyph" title="">⇏</span> </td> </tr><tr id="entity-nrarr"><td> <code title="">nrarr;</code> </td> <td> U+0219B </td> <td> <span class="glyph" title="">↛</span> </td> </tr><tr id="entity-nrarrc"><td> <code title="">nrarrc;</code> </td> <td> U+02933 U+00338 </td> <td> <span class="glyph compound" title="">⤳̸</span> </td> </tr><tr id="entity-nrarrw"><td> <code title="">nrarrw;</code> </td> <td> U+0219D U+00338 </td> <td> <span class="glyph compound" title="">↝̸</span> </td> </tr><tr id="entity-nRightarrow"><td> <code title="">nRightarrow;</code> </td> <td> U+021CF </td> <td> <span class="glyph" title="">⇏</span> </td> </tr><tr id="entity-nrightarrow"><td> <code title="">nrightarrow;</code> </td> <td> U+0219B </td> <td> <span class="glyph" title="">↛</span> </td> </tr><tr id="entity-nrtri"><td> <code title="">nrtri;</code> </td> <td> U+022EB </td> <td> <span class="glyph" title="">â‹«</span> </td> </tr><tr id="entity-nrtrie"><td> <code title="">nrtrie;</code> </td> <td> U+022ED </td> <td> <span class="glyph" title="">â‹­</span> </td> </tr><tr id="entity-nsc"><td> <code title="">nsc;</code> </td> <td> U+02281 </td> <td> <span class="glyph" title="">⊁</span> </td> </tr><tr id="entity-nsccue"><td> <code title="">nsccue;</code> </td> <td> U+022E1 </td> <td> <span class="glyph" title="">â‹¡</span> </td> </tr><tr id="entity-nsce"><td> <code title="">nsce;</code> </td> <td> U+02AB0 U+00338 </td> <td> <span class="glyph compound" title="">⪰̸</span> </td> </tr><tr id="entity-Nscr"><td> <code title="">Nscr;</code> </td> <td> U+1D4A9 </td> <td> <span class="glyph" title="">𝒩</span> </td> </tr><tr id="entity-nscr"><td> <code title="">nscr;</code> </td> <td> U+1D4C3 </td> <td> <span class="glyph" title="">𝓃</span> </td> </tr><tr id="entity-nshortmid"><td> <code title="">nshortmid;</code> </td> <td> U+02224 </td> <td> <span class="glyph" title="">∤</span> </td> </tr><tr id="entity-nshortparallel"><td> <code title="">nshortparallel;</code> </td> <td> U+02226 </td> <td> <span class="glyph" title="">∦</span> </td> </tr><tr id="entity-nsim"><td> <code title="">nsim;</code> </td> <td> U+02241 </td> <td> <span class="glyph" title="">≁</span> </td> </tr><tr id="entity-nsime"><td> <code title="">nsime;</code> </td> <td> U+02244 </td> <td> <span class="glyph" title="">≄</span> </td> </tr><tr id="entity-nsimeq"><td> <code title="">nsimeq;</code> </td> <td> U+02244 </td> <td> <span class="glyph" title="">≄</span> </td> </tr><tr id="entity-nsmid"><td> <code title="">nsmid;</code> </td> <td> U+02224 </td> <td> <span class="glyph" title="">∤</span> </td> </tr><tr id="entity-nspar"><td> <code title="">nspar;</code> </td> <td> U+02226 </td> <td> <span class="glyph" title="">∦</span> </td> </tr><tr id="entity-nsqsube"><td> <code title="">nsqsube;</code> </td> <td> U+022E2 </td> <td> <span class="glyph" title="">â‹¢</span> </td> </tr><tr id="entity-nsqsupe"><td> <code title="">nsqsupe;</code> </td> <td> U+022E3 </td> <td> <span class="glyph" title="">â‹£</span> </td> </tr><tr id="entity-nsub"><td> <code title="">nsub;</code> </td> <td> U+02284 </td> <td> <span class="glyph" title="">⊄</span> </td> </tr><tr id="entity-nsubE"><td> <code title="">nsubE;</code> </td> <td> U+02AC5 U+00338 </td> <td> <span class="glyph compound" title="">⫅̸</span> </td> </tr><tr id="entity-nsube"><td> <code title="">nsube;</code> </td> <td> U+02288 </td> <td> <span class="glyph" title="">⊈</span> </td> </tr><tr id="entity-nsubset"><td> <code title="">nsubset;</code> </td> <td> U+02282 U+020D2 </td> <td> <span class="glyph compound" title="">⊂⃒</span> </td> </tr><tr id="entity-nsubseteq"><td> <code title="">nsubseteq;</code> </td> <td> U+02288 </td> <td> <span class="glyph" title="">⊈</span> </td> </tr><tr id="entity-nsubseteqq"><td> <code title="">nsubseteqq;</code> </td> <td> U+02AC5 U+00338 </td> <td> <span class="glyph compound" title="">⫅̸</span> </td> </tr><tr id="entity-nsucc"><td> <code title="">nsucc;</code> </td> <td> U+02281 </td> <td> <span class="glyph" title="">⊁</span> </td> </tr><tr id="entity-nsucceq"><td> <code title="">nsucceq;</code> </td> <td> U+02AB0 U+00338 </td> <td> <span class="glyph compound" title="">⪰̸</span> </td> </tr><tr id="entity-nsup"><td> <code title="">nsup;</code> </td> <td> U+02285 </td> <td> <span class="glyph" title="">⊅</span> </td> </tr><tr id="entity-nsupE"><td> <code title="">nsupE;</code> </td> <td> U+02AC6 U+00338 </td> <td> <span class="glyph compound" title="">⫆̸</span> </td> </tr><tr id="entity-nsupe"><td> <code title="">nsupe;</code> </td> <td> U+02289 </td> <td> <span class="glyph" title="">⊉</span> </td> </tr><tr id="entity-nsupset"><td> <code title="">nsupset;</code> </td> <td> U+02283 U+020D2 </td> <td> <span class="glyph compound" title="">⊃⃒</span> </td> </tr><tr id="entity-nsupseteq"><td> <code title="">nsupseteq;</code> </td> <td> U+02289 </td> <td> <span class="glyph" title="">⊉</span> </td> </tr><tr id="entity-nsupseteqq"><td> <code title="">nsupseteqq;</code> </td> <td> U+02AC6 U+00338 </td> <td> <span class="glyph compound" title="">⫆̸</span> </td> </tr><tr id="entity-ntgl"><td> <code title="">ntgl;</code> </td> <td> U+02279 </td> <td> <span class="glyph" title="">≹</span> </td> </tr><tr id="entity-Ntilde"><td> <code title="">Ntilde;</code> </td> <td> U+000D1 </td> <td> <span class="glyph" title="">Ñ</span> </td> </tr><tr class="impl" id="entity-Ntilde-legacy"><td> <code title="">Ntilde</code> </td> <td> U+000D1 </td> <td> <span title="">Ñ</span> </td> </tr><tr id="entity-ntilde"><td> <code title="">ntilde;</code> </td> <td> U+000F1 </td> <td> <span class="glyph" title="">ñ</span> </td> </tr><tr class="impl" id="entity-ntilde-legacy"><td> <code title="">ntilde</code> </td> <td> U+000F1 </td> <td> <span title="">ñ</span> </td> </tr><tr id="entity-ntlg"><td> <code title="">ntlg;</code> </td> <td> U+02278 </td> <td> <span class="glyph" title="">≸</span> </td> </tr><tr id="entity-ntriangleleft"><td> <code title="">ntriangleleft;</code> </td> <td> U+022EA </td> <td> <span class="glyph" title="">⋪</span> </td> </tr><tr id="entity-ntrianglelefteq"><td> <code title="">ntrianglelefteq;</code> </td> <td> U+022EC </td> <td> <span class="glyph" title="">⋬</span> </td> </tr><tr id="entity-ntriangleright"><td> <code title="">ntriangleright;</code> </td> <td> U+022EB </td> <td> <span class="glyph" title="">â‹«</span> </td> </tr><tr id="entity-ntrianglerighteq"><td> <code title="">ntrianglerighteq;</code> </td> <td> U+022ED </td> <td> <span class="glyph" title="">â‹­</span> </td> </tr><tr id="entity-Nu"><td> <code title="">Nu;</code> </td> <td> U+0039D </td> <td> <span class="glyph" title="">Ν</span> </td> </tr><tr id="entity-nu"><td> <code title="">nu;</code> </td> <td> U+003BD </td> <td> <span class="glyph" title="">ν</span> </td> </tr><tr id="entity-num"><td> <code title="">num;</code> </td> <td> U+00023 </td> <td> <span class="glyph" title="">#</span> </td> </tr><tr id="entity-numero"><td> <code title="">numero;</code> </td> <td> U+02116 </td> <td> <span class="glyph" title="">â„–</span> </td> </tr><tr id="entity-numsp"><td> <code title="">numsp;</code> </td> <td> U+02007 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-nvap"><td> <code title="">nvap;</code> </td> <td> U+0224D U+020D2 </td> <td> <span class="glyph compound" title="">≍⃒</span> </td> </tr><tr id="entity-nVDash"><td> <code title="">nVDash;</code> </td> <td> U+022AF </td> <td> <span class="glyph" title="">⊯</span> </td> </tr><tr id="entity-nVdash"><td> <code title="">nVdash;</code> </td> <td> U+022AE </td> <td> <span class="glyph" title="">⊮</span> </td> </tr><tr id="entity-nvDash"><td> <code title="">nvDash;</code> </td> <td> U+022AD </td> <td> <span class="glyph" title="">⊭</span> </td> </tr><tr id="entity-nvdash"><td> <code title="">nvdash;</code> </td> <td> U+022AC </td> <td> <span class="glyph" title="">⊬</span> </td> </tr><tr id="entity-nvge"><td> <code title="">nvge;</code> </td> <td> U+02265 U+020D2 </td> <td> <span class="glyph compound" title="">≥⃒</span> </td> </tr><tr id="entity-nvgt"><td> <code title="">nvgt;</code> </td> <td> U+0003E U+020D2 </td> <td> <span class="glyph compound" title="">>⃒</span> </td> </tr><tr id="entity-nvHarr"><td> <code title="">nvHarr;</code> </td> <td> U+02904 </td> <td> <span class="glyph" title="">⤄</span> </td> </tr><tr id="entity-nvinfin"><td> <code title="">nvinfin;</code> </td> <td> U+029DE </td> <td> <span class="glyph" title="">â§ž</span> </td> </tr><tr id="entity-nvlArr"><td> <code title="">nvlArr;</code> </td> <td> U+02902 </td> <td> <span class="glyph" title="">⤂</span> </td> </tr><tr id="entity-nvle"><td> <code title="">nvle;</code> </td> <td> U+02264 U+020D2 </td> <td> <span class="glyph compound" title="">≤⃒</span> </td> </tr><tr id="entity-nvlt"><td> <code title="">nvlt;</code> </td> <td> U+0003C U+020D2 </td> <td> <span class="glyph compound" title=""><⃒</span> </td> </tr><tr id="entity-nvltrie"><td> <code title="">nvltrie;</code> </td> <td> U+022B4 U+020D2 </td> <td> <span class="glyph compound" title="">⊴⃒</span> </td> </tr><tr id="entity-nvrArr"><td> <code title="">nvrArr;</code> </td> <td> U+02903 </td> <td> <span class="glyph" title="">⤃</span> </td> </tr><tr id="entity-nvrtrie"><td> <code title="">nvrtrie;</code> </td> <td> U+022B5 U+020D2 </td> <td> <span class="glyph compound" title="">⊵⃒</span> </td> </tr><tr id="entity-nvsim"><td> <code title="">nvsim;</code> </td> <td> U+0223C U+020D2 </td> <td> <span class="glyph compound" title="">∼⃒</span> </td> </tr><tr id="entity-nwarhk"><td> <code title="">nwarhk;</code> </td> <td> U+02923 </td> <td> <span class="glyph" title="">⤣</span> </td> </tr><tr id="entity-nwArr"><td> <code title="">nwArr;</code> </td> <td> U+021D6 </td> <td> <span class="glyph" title="">⇖</span> </td> </tr><tr id="entity-nwarr"><td> <code title="">nwarr;</code> </td> <td> U+02196 </td> <td> <span class="glyph" title="">↖</span> </td> </tr><tr id="entity-nwarrow"><td> <code title="">nwarrow;</code> </td> <td> U+02196 </td> <td> <span class="glyph" title="">↖</span> </td> </tr><tr id="entity-nwnear"><td> <code title="">nwnear;</code> </td> <td> U+02927 </td> <td> <span class="glyph" title="">⤧</span> </td> </tr><tr id="entity-Oacute"><td> <code title="">Oacute;</code> </td> <td> U+000D3 </td> <td> <span class="glyph" title="">Ó</span> </td> </tr><tr class="impl" id="entity-Oacute-legacy"><td> <code title="">Oacute</code> </td> <td> U+000D3 </td> <td> <span title="">Ó</span> </td> </tr><tr id="entity-oacute"><td> <code title="">oacute;</code> </td> <td> U+000F3 </td> <td> <span class="glyph" title="">ó</span> </td> </tr><tr class="impl" id="entity-oacute-legacy"><td> <code title="">oacute</code> </td> <td> U+000F3 </td> <td> <span title="">ó</span> </td> </tr><tr id="entity-oast"><td> <code title="">oast;</code> </td> <td> U+0229B </td> <td> <span class="glyph" title="">⊛</span> </td> </tr><tr id="entity-ocir"><td> <code title="">ocir;</code> </td> <td> U+0229A </td> <td> <span class="glyph" title="">⊚</span> </td> </tr><tr id="entity-Ocirc"><td> <code title="">Ocirc;</code> </td> <td> U+000D4 </td> <td> <span class="glyph" title="">Ô</span> </td> </tr><tr class="impl" id="entity-Ocirc-legacy"><td> <code title="">Ocirc</code> </td> <td> U+000D4 </td> <td> <span title="">Ô</span> </td> </tr><tr id="entity-ocirc"><td> <code title="">ocirc;</code> </td> <td> U+000F4 </td> <td> <span class="glyph" title="">ô</span> </td> </tr><tr class="impl" id="entity-ocirc-legacy"><td> <code title="">ocirc</code> </td> <td> U+000F4 </td> <td> <span title="">ô</span> </td> </tr><tr id="entity-Ocy"><td> <code title="">Ocy;</code> </td> <td> U+0041E </td> <td> <span class="glyph" title="">О</span> </td> </tr><tr id="entity-ocy"><td> <code title="">ocy;</code> </td> <td> U+0043E </td> <td> <span class="glyph" title="">о</span> </td> </tr><tr id="entity-odash"><td> <code title="">odash;</code> </td> <td> U+0229D </td> <td> <span class="glyph" title="">⊝</span> </td> </tr><tr id="entity-Odblac"><td> <code title="">Odblac;</code> </td> <td> U+00150 </td> <td> <span class="glyph" title="">Ő</span> </td> </tr><tr id="entity-odblac"><td> <code title="">odblac;</code> </td> <td> U+00151 </td> <td> <span class="glyph" title="">Å‘</span> </td> </tr><tr id="entity-odiv"><td> <code title="">odiv;</code> </td> <td> U+02A38 </td> <td> <span class="glyph" title="">⨸</span> </td> </tr><tr id="entity-odot"><td> <code title="">odot;</code> </td> <td> U+02299 </td> <td> <span class="glyph" title="">⊙</span> </td> </tr><tr id="entity-odsold"><td> <code title="">odsold;</code> </td> <td> U+029BC </td> <td> <span class="glyph" title="">⦼</span> </td> </tr><tr id="entity-OElig"><td> <code title="">OElig;</code> </td> <td> U+00152 </td> <td> <span class="glyph" title="">Å’</span> </td> </tr><tr id="entity-oelig"><td> <code title="">oelig;</code> </td> <td> U+00153 </td> <td> <span class="glyph" title="">Å“</span> </td> </tr><tr id="entity-ofcir"><td> <code title="">ofcir;</code> </td> <td> U+029BF </td> <td> <span class="glyph" title="">⦿</span> </td> </tr><tr id="entity-Ofr"><td> <code title="">Ofr;</code> </td> <td> U+1D512 </td> <td> <span class="glyph" title="">𝔒</span> </td> </tr><tr id="entity-ofr"><td> <code title="">ofr;</code> </td> <td> U+1D52C </td> <td> <span class="glyph" title="">𝔬</span> </td> </tr><tr id="entity-ogon"><td> <code title="">ogon;</code> </td> <td> U+002DB </td> <td> <span class="glyph" title="">Ë›</span> </td> </tr><tr id="entity-Ograve"><td> <code title="">Ograve;</code> </td> <td> U+000D2 </td> <td> <span class="glyph" title="">Ã’</span> </td> </tr><tr class="impl" id="entity-Ograve-legacy"><td> <code title="">Ograve</code> </td> <td> U+000D2 </td> <td> <span title="">Ã’</span> </td> </tr><tr id="entity-ograve"><td> <code title="">ograve;</code> </td> <td> U+000F2 </td> <td> <span class="glyph" title="">ò</span> </td> </tr><tr class="impl" id="entity-ograve-legacy"><td> <code title="">ograve</code> </td> <td> U+000F2 </td> <td> <span title="">ò</span> </td> </tr><tr id="entity-ogt"><td> <code title="">ogt;</code> </td> <td> U+029C1 </td> <td> <span class="glyph" title="">⧁</span> </td> </tr><tr id="entity-ohbar"><td> <code title="">ohbar;</code> </td> <td> U+029B5 </td> <td> <span class="glyph" title="">⦵</span> </td> </tr><tr id="entity-ohm"><td> <code title="">ohm;</code> </td> <td> U+003A9 </td> <td> <span class="glyph" title="">Ω</span> </td> </tr><tr id="entity-oint"><td> <code title="">oint;</code> </td> <td> U+0222E </td> <td> <span class="glyph" title="">∮</span> </td> </tr><tr id="entity-olarr"><td> <code title="">olarr;</code> </td> <td> U+021BA </td> <td> <span class="glyph" title="">↺</span> </td> </tr><tr id="entity-olcir"><td> <code title="">olcir;</code> </td> <td> U+029BE </td> <td> <span class="glyph" title="">⦾</span> </td> </tr><tr id="entity-olcross"><td> <code title="">olcross;</code> </td> <td> U+029BB </td> <td> <span class="glyph" title="">⦻</span> </td> </tr><tr id="entity-oline"><td> <code title="">oline;</code> </td> <td> U+0203E </td> <td> <span class="glyph" title="">‾</span> </td> </tr><tr id="entity-olt"><td> <code title="">olt;</code> </td> <td> U+029C0 </td> <td> <span class="glyph" title="">â§€</span> </td> </tr><tr id="entity-Omacr"><td> <code title="">Omacr;</code> </td> <td> U+0014C </td> <td> <span class="glyph" title="">ÅŒ</span> </td> </tr><tr id="entity-omacr"><td> <code title="">omacr;</code> </td> <td> U+0014D </td> <td> <span class="glyph" title="">ō</span> </td> </tr><tr id="entity-Omega"><td> <code title="">Omega;</code> </td> <td> U+003A9 </td> <td> <span class="glyph" title="">Ω</span> </td> </tr><tr id="entity-omega"><td> <code title="">omega;</code> </td> <td> U+003C9 </td> <td> <span class="glyph" title="">ω</span> </td> </tr><tr id="entity-Omicron"><td> <code title="">Omicron;</code> </td> <td> U+0039F </td> <td> <span class="glyph" title="">Ο</span> </td> </tr><tr id="entity-omicron"><td> <code title="">omicron;</code> </td> <td> U+003BF </td> <td> <span class="glyph" title="">ο</span> </td> </tr><tr id="entity-omid"><td> <code title="">omid;</code> </td> <td> U+029B6 </td> <td> <span class="glyph" title="">⦶</span> </td> </tr><tr id="entity-ominus"><td> <code title="">ominus;</code> </td> <td> U+02296 </td> <td> <span class="glyph" title="">⊖</span> </td> </tr><tr id="entity-Oopf"><td> <code title="">Oopf;</code> </td> <td> U+1D546 </td> <td> <span class="glyph" title="">𝕆</span> </td> </tr><tr id="entity-oopf"><td> <code title="">oopf;</code> </td> <td> U+1D560 </td> <td> <span class="glyph" title="">𝕠</span> </td> </tr><tr id="entity-opar"><td> <code title="">opar;</code> </td> <td> U+029B7 </td> <td> <span class="glyph" title="">⦷</span> </td> </tr><tr id="entity-OpenCurlyDoubleQuote"><td> <code title="">OpenCurlyDoubleQuote;</code> </td> <td> U+0201C </td> <td> <span class="glyph" title="">“</span> </td> </tr><tr id="entity-OpenCurlyQuote"><td> <code title="">OpenCurlyQuote;</code> </td> <td> U+02018 </td> <td> <span class="glyph" title="">‘</span> </td> </tr><tr id="entity-operp"><td> <code title="">operp;</code> </td> <td> U+029B9 </td> <td> <span class="glyph" title="">⦹</span> </td> </tr><tr id="entity-oplus"><td> <code title="">oplus;</code> </td> <td> U+02295 </td> <td> <span class="glyph" title="">⊕</span> </td> </tr><tr id="entity-Or"><td> <code title="">Or;</code> </td> <td> U+02A54 </td> <td> <span class="glyph" title="">â©”</span> </td> </tr><tr id="entity-or"><td> <code title="">or;</code> </td> <td> U+02228 </td> <td> <span class="glyph" title="">∨</span> </td> </tr><tr id="entity-orarr"><td> <code title="">orarr;</code> </td> <td> U+021BB </td> <td> <span class="glyph" title="">↻</span> </td> </tr><tr id="entity-ord"><td> <code title="">ord;</code> </td> <td> U+02A5D </td> <td> <span class="glyph" title="">⩝</span> </td> </tr><tr id="entity-order"><td> <code title="">order;</code> </td> <td> U+02134 </td> <td> <span class="glyph" title="">â„´</span> </td> </tr><tr id="entity-orderof"><td> <code title="">orderof;</code> </td> <td> U+02134 </td> <td> <span class="glyph" title="">â„´</span> </td> </tr><tr id="entity-ordf"><td> <code title="">ordf;</code> </td> <td> U+000AA </td> <td> <span class="glyph" title="">ª</span> </td> </tr><tr class="impl" id="entity-ordf-legacy"><td> <code title="">ordf</code> </td> <td> U+000AA </td> <td> <span title="">ª</span> </td> </tr><tr id="entity-ordm"><td> <code title="">ordm;</code> </td> <td> U+000BA </td> <td> <span class="glyph" title="">º</span> </td> </tr><tr class="impl" id="entity-ordm-legacy"><td> <code title="">ordm</code> </td> <td> U+000BA </td> <td> <span title="">º</span> </td> </tr><tr id="entity-origof"><td> <code title="">origof;</code> </td> <td> U+022B6 </td> <td> <span class="glyph" title="">⊶</span> </td> </tr><tr id="entity-oror"><td> <code title="">oror;</code> </td> <td> U+02A56 </td> <td> <span class="glyph" title="">â©–</span> </td> </tr><tr id="entity-orslope"><td> <code title="">orslope;</code> </td> <td> U+02A57 </td> <td> <span class="glyph" title="">â©—</span> </td> </tr><tr id="entity-orv"><td> <code title="">orv;</code> </td> <td> U+02A5B </td> <td> <span class="glyph" title="">â©›</span> </td> </tr><tr id="entity-oS"><td> <code title="">oS;</code> </td> <td> U+024C8 </td> <td> <span class="glyph" title="">Ⓢ</span> </td> </tr><tr id="entity-Oscr"><td> <code title="">Oscr;</code> </td> <td> U+1D4AA </td> <td> <span class="glyph" title="">𝒪</span> </td> </tr><tr id="entity-oscr"><td> <code title="">oscr;</code> </td> <td> U+02134 </td> <td> <span class="glyph" title="">â„´</span> </td> </tr><tr id="entity-Oslash"><td> <code title="">Oslash;</code> </td> <td> U+000D8 </td> <td> <span class="glyph" title="">Ø</span> </td> </tr><tr class="impl" id="entity-Oslash-legacy"><td> <code title="">Oslash</code> </td> <td> U+000D8 </td> <td> <span title="">Ø</span> </td> </tr><tr id="entity-oslash"><td> <code title="">oslash;</code> </td> <td> U+000F8 </td> <td> <span class="glyph" title="">ø</span> </td> </tr><tr class="impl" id="entity-oslash-legacy"><td> <code title="">oslash</code> </td> <td> U+000F8 </td> <td> <span title="">ø</span> </td> </tr><tr id="entity-osol"><td> <code title="">osol;</code> </td> <td> U+02298 </td> <td> <span class="glyph" title="">⊘</span> </td> </tr><tr id="entity-Otilde"><td> <code title="">Otilde;</code> </td> <td> U+000D5 </td> <td> <span class="glyph" title="">Õ</span> </td> </tr><tr class="impl" id="entity-Otilde-legacy"><td> <code title="">Otilde</code> </td> <td> U+000D5 </td> <td> <span title="">Õ</span> </td> </tr><tr id="entity-otilde"><td> <code title="">otilde;</code> </td> <td> U+000F5 </td> <td> <span class="glyph" title="">õ</span> </td> </tr><tr class="impl" id="entity-otilde-legacy"><td> <code title="">otilde</code> </td> <td> U+000F5 </td> <td> <span title="">õ</span> </td> </tr><tr id="entity-Otimes"><td> <code title="">Otimes;</code> </td> <td> U+02A37 </td> <td> <span class="glyph" title="">⨷</span> </td> </tr><tr id="entity-otimes"><td> <code title="">otimes;</code> </td> <td> U+02297 </td> <td> <span class="glyph" title="">⊗</span> </td> </tr><tr id="entity-otimesas"><td> <code title="">otimesas;</code> </td> <td> U+02A36 </td> <td> <span class="glyph" title="">⨶</span> </td> </tr><tr id="entity-Ouml"><td> <code title="">Ouml;</code> </td> <td> U+000D6 </td> <td> <span class="glyph" title="">Ö</span> </td> </tr><tr class="impl" id="entity-Ouml-legacy"><td> <code title="">Ouml</code> </td> <td> U+000D6 </td> <td> <span title="">Ö</span> </td> </tr><tr id="entity-ouml"><td> <code title="">ouml;</code> </td> <td> U+000F6 </td> <td> <span class="glyph" title="">ö</span> </td> </tr><tr class="impl" id="entity-ouml-legacy"><td> <code title="">ouml</code> </td> <td> U+000F6 </td> <td> <span title="">ö</span> </td> </tr><tr id="entity-ovbar"><td> <code title="">ovbar;</code> </td> <td> U+0233D </td> <td> <span class="glyph" title="">⌽</span> </td> </tr><tr id="entity-OverBar"><td> <code title="">OverBar;</code> </td> <td> U+0203E </td> <td> <span class="glyph" title="">‾</span> </td> </tr><tr id="entity-OverBrace"><td> <code title="">OverBrace;</code> </td> <td> U+023DE </td> <td> <span class="glyph" title="">⏞</span> </td> </tr><tr id="entity-OverBracket"><td> <code title="">OverBracket;</code> </td> <td> U+023B4 </td> <td> <span class="glyph" title="">⎴</span> </td> </tr><tr id="entity-OverParenthesis"><td> <code title="">OverParenthesis;</code> </td> <td> U+023DC </td> <td> <span class="glyph" title="">⏜</span> </td> </tr><tr id="entity-par"><td> <code title="">par;</code> </td> <td> U+02225 </td> <td> <span class="glyph" title="">∥</span> </td> </tr><tr id="entity-para"><td> <code title="">para;</code> </td> <td> U+000B6 </td> <td> <span class="glyph" title="">¶</span> </td> </tr><tr class="impl" id="entity-para-legacy"><td> <code title="">para</code> </td> <td> U+000B6 </td> <td> <span title="">¶</span> </td> </tr><tr id="entity-parallel"><td> <code title="">parallel;</code> </td> <td> U+02225 </td> <td> <span class="glyph" title="">∥</span> </td> </tr><tr id="entity-parsim"><td> <code title="">parsim;</code> </td> <td> U+02AF3 </td> <td> <span class="glyph" title="">⫳</span> </td> </tr><tr id="entity-parsl"><td> <code title="">parsl;</code> </td> <td> U+02AFD </td> <td> <span class="glyph" title="">⫽</span> </td> </tr><tr id="entity-part"><td> <code title="">part;</code> </td> <td> U+02202 </td> <td> <span class="glyph" title="">∂</span> </td> </tr><tr id="entity-PartialD"><td> <code title="">PartialD;</code> </td> <td> U+02202 </td> <td> <span class="glyph" title="">∂</span> </td> </tr><tr id="entity-Pcy"><td> <code title="">Pcy;</code> </td> <td> U+0041F </td> <td> <span class="glyph" title="">П</span> </td> </tr><tr id="entity-pcy"><td> <code title="">pcy;</code> </td> <td> U+0043F </td> <td> <span class="glyph" title="">п</span> </td> </tr><tr id="entity-percnt"><td> <code title="">percnt;</code> </td> <td> U+00025 </td> <td> <span class="glyph" title="">%</span> </td> </tr><tr id="entity-period"><td> <code title="">period;</code> </td> <td> U+0002E </td> <td> <span class="glyph" title="">.</span> </td> </tr><tr id="entity-permil"><td> <code title="">permil;</code> </td> <td> U+02030 </td> <td> <span class="glyph" title="">‰</span> </td> </tr><tr id="entity-perp"><td> <code title="">perp;</code> </td> <td> U+022A5 </td> <td> <span class="glyph" title="">⊥</span> </td> </tr><tr id="entity-pertenk"><td> <code title="">pertenk;</code> </td> <td> U+02031 </td> <td> <span class="glyph" title="">‱</span> </td> </tr><tr id="entity-Pfr"><td> <code title="">Pfr;</code> </td> <td> U+1D513 </td> <td> <span class="glyph" title="">𝔓</span> </td> </tr><tr id="entity-pfr"><td> <code title="">pfr;</code> </td> <td> U+1D52D </td> <td> <span class="glyph" title="">𝔭</span> </td> </tr><tr id="entity-Phi"><td> <code title="">Phi;</code> </td> <td> U+003A6 </td> <td> <span class="glyph" title="">Φ</span> </td> </tr><tr id="entity-phi"><td> <code title="">phi;</code> </td> <td> U+003C6 </td> <td> <span class="glyph" title="">φ</span> </td> </tr><tr id="entity-phiv"><td> <code title="">phiv;</code> </td> <td> U+003D5 </td> <td> <span class="glyph" title="">Ï•</span> </td> </tr><tr id="entity-phmmat"><td> <code title="">phmmat;</code> </td> <td> U+02133 </td> <td> <span class="glyph" title="">ℳ</span> </td> </tr><tr id="entity-phone"><td> <code title="">phone;</code> </td> <td> U+0260E </td> <td> <span class="glyph" title="">☎</span> </td> </tr><tr id="entity-Pi"><td> <code title="">Pi;</code> </td> <td> U+003A0 </td> <td> <span class="glyph" title="">Π</span> </td> </tr><tr id="entity-pi"><td> <code title="">pi;</code> </td> <td> U+003C0 </td> <td> <span class="glyph" title="">Ï€</span> </td> </tr><tr id="entity-pitchfork"><td> <code title="">pitchfork;</code> </td> <td> U+022D4 </td> <td> <span class="glyph" title="">â‹”</span> </td> </tr><tr id="entity-piv"><td> <code title="">piv;</code> </td> <td> U+003D6 </td> <td> <span class="glyph" title="">Ï–</span> </td> </tr><tr id="entity-planck"><td> <code title="">planck;</code> </td> <td> U+0210F </td> <td> <span class="glyph" title="">ℏ</span> </td> </tr><tr id="entity-planckh"><td> <code title="">planckh;</code> </td> <td> U+0210E </td> <td> <span class="glyph" title="">ℎ</span> </td> </tr><tr id="entity-plankv"><td> <code title="">plankv;</code> </td> <td> U+0210F </td> <td> <span class="glyph" title="">ℏ</span> </td> </tr><tr id="entity-plus"><td> <code title="">plus;</code> </td> <td> U+0002B </td> <td> <span class="glyph" title="">+</span> </td> </tr><tr id="entity-plusacir"><td> <code title="">plusacir;</code> </td> <td> U+02A23 </td> <td> <span class="glyph" title="">⨣</span> </td> </tr><tr id="entity-plusb"><td> <code title="">plusb;</code> </td> <td> U+0229E </td> <td> <span class="glyph" title="">⊞</span> </td> </tr><tr id="entity-pluscir"><td> <code title="">pluscir;</code> </td> <td> U+02A22 </td> <td> <span class="glyph" title="">⨢</span> </td> </tr><tr id="entity-plusdo"><td> <code title="">plusdo;</code> </td> <td> U+02214 </td> <td> <span class="glyph" title="">∔</span> </td> </tr><tr id="entity-plusdu"><td> <code title="">plusdu;</code> </td> <td> U+02A25 </td> <td> <span class="glyph" title="">⨥</span> </td> </tr><tr id="entity-pluse"><td> <code title="">pluse;</code> </td> <td> U+02A72 </td> <td> <span class="glyph" title="">⩲</span> </td> </tr><tr id="entity-PlusMinus"><td> <code title="">PlusMinus;</code> </td> <td> U+000B1 </td> <td> <span class="glyph" title="">±</span> </td> </tr><tr id="entity-plusmn"><td> <code title="">plusmn;</code> </td> <td> U+000B1 </td> <td> <span class="glyph" title="">±</span> </td> </tr><tr class="impl" id="entity-plusmn-legacy"><td> <code title="">plusmn</code> </td> <td> U+000B1 </td> <td> <span title="">±</span> </td> </tr><tr id="entity-plussim"><td> <code title="">plussim;</code> </td> <td> U+02A26 </td> <td> <span class="glyph" title="">⨦</span> </td> </tr><tr id="entity-plustwo"><td> <code title="">plustwo;</code> </td> <td> U+02A27 </td> <td> <span class="glyph" title="">⨧</span> </td> </tr><tr id="entity-pm"><td> <code title="">pm;</code> </td> <td> U+000B1 </td> <td> <span class="glyph" title="">±</span> </td> </tr><tr id="entity-Poincareplane"><td> <code title="">Poincareplane;</code> </td> <td> U+0210C </td> <td> <span class="glyph" title="">ℌ</span> </td> </tr><tr id="entity-pointint"><td> <code title="">pointint;</code> </td> <td> U+02A15 </td> <td> <span class="glyph" title="">⨕</span> </td> </tr><tr id="entity-Popf"><td> <code title="">Popf;</code> </td> <td> U+02119 </td> <td> <span class="glyph" title="">â„™</span> </td> </tr><tr id="entity-popf"><td> <code title="">popf;</code> </td> <td> U+1D561 </td> <td> <span class="glyph" title="">𝕡</span> </td> </tr><tr id="entity-pound"><td> <code title="">pound;</code> </td> <td> U+000A3 </td> <td> <span class="glyph" title="">£</span> </td> </tr><tr class="impl" id="entity-pound-legacy"><td> <code title="">pound</code> </td> <td> U+000A3 </td> <td> <span title="">£</span> </td> </tr><tr id="entity-Pr"><td> <code title="">Pr;</code> </td> <td> U+02ABB </td> <td> <span class="glyph" title="">⪻</span> </td> </tr><tr id="entity-pr"><td> <code title="">pr;</code> </td> <td> U+0227A </td> <td> <span class="glyph" title="">≺</span> </td> </tr><tr id="entity-prap"><td> <code title="">prap;</code> </td> <td> U+02AB7 </td> <td> <span class="glyph" title="">⪷</span> </td> </tr><tr id="entity-prcue"><td> <code title="">prcue;</code> </td> <td> U+0227C </td> <td> <span class="glyph" title="">≼</span> </td> </tr><tr id="entity-prE"><td> <code title="">prE;</code> </td> <td> U+02AB3 </td> <td> <span class="glyph" title="">⪳</span> </td> </tr><tr id="entity-pre"><td> <code title="">pre;</code> </td> <td> U+02AAF </td> <td> <span class="glyph" title="">⪯</span> </td> </tr><tr id="entity-prec"><td> <code title="">prec;</code> </td> <td> U+0227A </td> <td> <span class="glyph" title="">≺</span> </td> </tr><tr id="entity-precapprox"><td> <code title="">precapprox;</code> </td> <td> U+02AB7 </td> <td> <span class="glyph" title="">⪷</span> </td> </tr><tr id="entity-preccurlyeq"><td> <code title="">preccurlyeq;</code> </td> <td> U+0227C </td> <td> <span class="glyph" title="">≼</span> </td> </tr><tr id="entity-Precedes"><td> <code title="">Precedes;</code> </td> <td> U+0227A </td> <td> <span class="glyph" title="">≺</span> </td> </tr><tr id="entity-PrecedesEqual"><td> <code title="">PrecedesEqual;</code> </td> <td> U+02AAF </td> <td> <span class="glyph" title="">⪯</span> </td> </tr><tr id="entity-PrecedesSlantEqual"><td> <code title="">PrecedesSlantEqual;</code> </td> <td> U+0227C </td> <td> <span class="glyph" title="">≼</span> </td> </tr><tr id="entity-PrecedesTilde"><td> <code title="">PrecedesTilde;</code> </td> <td> U+0227E </td> <td> <span class="glyph" title="">≾</span> </td> </tr><tr id="entity-preceq"><td> <code title="">preceq;</code> </td> <td> U+02AAF </td> <td> <span class="glyph" title="">⪯</span> </td> </tr><tr id="entity-precnapprox"><td> <code title="">precnapprox;</code> </td> <td> U+02AB9 </td> <td> <span class="glyph" title="">⪹</span> </td> </tr><tr id="entity-precneqq"><td> <code title="">precneqq;</code> </td> <td> U+02AB5 </td> <td> <span class="glyph" title="">⪵</span> </td> </tr><tr id="entity-precnsim"><td> <code title="">precnsim;</code> </td> <td> U+022E8 </td> <td> <span class="glyph" title="">⋨</span> </td> </tr><tr id="entity-precsim"><td> <code title="">precsim;</code> </td> <td> U+0227E </td> <td> <span class="glyph" title="">≾</span> </td> </tr><tr id="entity-Prime"><td> <code title="">Prime;</code> </td> <td> U+02033 </td> <td> <span class="glyph" title="">″</span> </td> </tr><tr id="entity-prime"><td> <code title="">prime;</code> </td> <td> U+02032 </td> <td> <span class="glyph" title="">′</span> </td> </tr><tr id="entity-primes"><td> <code title="">primes;</code> </td> <td> U+02119 </td> <td> <span class="glyph" title="">â„™</span> </td> </tr><tr id="entity-prnap"><td> <code title="">prnap;</code> </td> <td> U+02AB9 </td> <td> <span class="glyph" title="">⪹</span> </td> </tr><tr id="entity-prnE"><td> <code title="">prnE;</code> </td> <td> U+02AB5 </td> <td> <span class="glyph" title="">⪵</span> </td> </tr><tr id="entity-prnsim"><td> <code title="">prnsim;</code> </td> <td> U+022E8 </td> <td> <span class="glyph" title="">⋨</span> </td> </tr><tr id="entity-prod"><td> <code title="">prod;</code> </td> <td> U+0220F </td> <td> <span class="glyph" title="">∏</span> </td> </tr><tr id="entity-Product"><td> <code title="">Product;</code> </td> <td> U+0220F </td> <td> <span class="glyph" title="">∏</span> </td> </tr><tr id="entity-profalar"><td> <code title="">profalar;</code> </td> <td> U+0232E </td> <td> <span class="glyph" title="">⌮</span> </td> </tr><tr id="entity-profline"><td> <code title="">profline;</code> </td> <td> U+02312 </td> <td> <span class="glyph" title="">⌒</span> </td> </tr><tr id="entity-profsurf"><td> <code title="">profsurf;</code> </td> <td> U+02313 </td> <td> <span class="glyph" title="">⌓</span> </td> </tr><tr id="entity-prop"><td> <code title="">prop;</code> </td> <td> U+0221D </td> <td> <span class="glyph" title="">∝</span> </td> </tr><tr id="entity-Proportion"><td> <code title="">Proportion;</code> </td> <td> U+02237 </td> <td> <span class="glyph" title="">∷</span> </td> </tr><tr id="entity-Proportional"><td> <code title="">Proportional;</code> </td> <td> U+0221D </td> <td> <span class="glyph" title="">∝</span> </td> </tr><tr id="entity-propto"><td> <code title="">propto;</code> </td> <td> U+0221D </td> <td> <span class="glyph" title="">∝</span> </td> </tr><tr id="entity-prsim"><td> <code title="">prsim;</code> </td> <td> U+0227E </td> <td> <span class="glyph" title="">≾</span> </td> </tr><tr id="entity-prurel"><td> <code title="">prurel;</code> </td> <td> U+022B0 </td> <td> <span class="glyph" title="">⊰</span> </td> </tr><tr id="entity-Pscr"><td> <code title="">Pscr;</code> </td> <td> U+1D4AB </td> <td> <span class="glyph" title="">𝒫</span> </td> </tr><tr id="entity-pscr"><td> <code title="">pscr;</code> </td> <td> U+1D4C5 </td> <td> <span class="glyph" title="">𝓅</span> </td> </tr><tr id="entity-Psi"><td> <code title="">Psi;</code> </td> <td> U+003A8 </td> <td> <span class="glyph" title="">Ψ</span> </td> </tr><tr id="entity-psi"><td> <code title="">psi;</code> </td> <td> U+003C8 </td> <td> <span class="glyph" title="">ψ</span> </td> </tr><tr id="entity-puncsp"><td> <code title="">puncsp;</code> </td> <td> U+02008 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-Qfr"><td> <code title="">Qfr;</code> </td> <td> U+1D514 </td> <td> <span class="glyph" title="">𝔔</span> </td> </tr><tr id="entity-qfr"><td> <code title="">qfr;</code> </td> <td> U+1D52E </td> <td> <span class="glyph" title="">𝔮</span> </td> </tr><tr id="entity-qint"><td> <code title="">qint;</code> </td> <td> U+02A0C </td> <td> <span class="glyph" title="">⨌</span> </td> </tr><tr id="entity-Qopf"><td> <code title="">Qopf;</code> </td> <td> U+0211A </td> <td> <span class="glyph" title="">ℚ</span> </td> </tr><tr id="entity-qopf"><td> <code title="">qopf;</code> </td> <td> U+1D562 </td> <td> <span class="glyph" title="">𝕢</span> </td> </tr><tr id="entity-qprime"><td> <code title="">qprime;</code> </td> <td> U+02057 </td> <td> <span class="glyph" title="">⁗</span> </td> </tr><tr id="entity-Qscr"><td> <code title="">Qscr;</code> </td> <td> U+1D4AC </td> <td> <span class="glyph" title="">𝒬</span> </td> </tr><tr id="entity-qscr"><td> <code title="">qscr;</code> </td> <td> U+1D4C6 </td> <td> <span class="glyph" title="">𝓆</span> </td> </tr><tr id="entity-quaternions"><td> <code title="">quaternions;</code> </td> <td> U+0210D </td> <td> <span class="glyph" title="">ℍ</span> </td> </tr><tr id="entity-quatint"><td> <code title="">quatint;</code> </td> <td> U+02A16 </td> <td> <span class="glyph" title="">⨖</span> </td> </tr><tr id="entity-quest"><td> <code title="">quest;</code> </td> <td> U+0003F </td> <td> <span class="glyph" title="">?</span> </td> </tr><tr id="entity-questeq"><td> <code title="">questeq;</code> </td> <td> U+0225F </td> <td> <span class="glyph" title="">≟</span> </td> </tr><tr id="entity-QUOT"><td> <code title="">QUOT;</code> </td> <td> U+00022 </td> <td> <span class="glyph" title="">"</span> </td> </tr><tr class="impl" id="entity-QUOT-legacy"><td> <code title="">QUOT</code> </td> <td> U+00022 </td> <td> <span title="">"</span> </td> </tr><tr id="entity-quot"><td> <code title="">quot;</code> </td> <td> U+00022 </td> <td> <span class="glyph" title="">"</span> </td> </tr><tr class="impl" id="entity-quot-legacy"><td> <code title="">quot</code> </td> <td> U+00022 </td> <td> <span title="">"</span> </td> </tr><tr id="entity-rAarr"><td> <code title="">rAarr;</code> </td> <td> U+021DB </td> <td> <span class="glyph" title="">⇛</span> </td> </tr><tr id="entity-race"><td> <code title="">race;</code> </td> <td> U+0223D U+00331 </td> <td> <span class="glyph compound" title="">∽̱</span> </td> </tr><tr id="entity-Racute"><td> <code title="">Racute;</code> </td> <td> U+00154 </td> <td> <span class="glyph" title="">Å”</span> </td> </tr><tr id="entity-racute"><td> <code title="">racute;</code> </td> <td> U+00155 </td> <td> <span class="glyph" title="">Å•</span> </td> </tr><tr id="entity-radic"><td> <code title="">radic;</code> </td> <td> U+0221A </td> <td> <span class="glyph" title="">√</span> </td> </tr><tr id="entity-raemptyv"><td> <code title="">raemptyv;</code> </td> <td> U+029B3 </td> <td> <span class="glyph" title="">⦳</span> </td> </tr><tr id="entity-Rang"><td> <code title="">Rang;</code> </td> <td> U+027EB </td> <td> <span class="glyph" title="">⟫</span> </td> </tr><tr id="entity-rang"><td> <code title="">rang;</code> </td> <td> U+027E9 </td> <td> <span class="glyph" title="">〉</span> </td> </tr><tr id="entity-rangd"><td> <code title="">rangd;</code> </td> <td> U+02992 </td> <td> <span class="glyph" title="">⦒</span> </td> </tr><tr id="entity-range"><td> <code title="">range;</code> </td> <td> U+029A5 </td> <td> <span class="glyph" title="">⦥</span> </td> </tr><tr id="entity-rangle"><td> <code title="">rangle;</code> </td> <td> U+027E9 </td> <td> <span class="glyph" title="">〉</span> </td> </tr><tr id="entity-raquo"><td> <code title="">raquo;</code> </td> <td> U+000BB </td> <td> <span class="glyph" title="">»</span> </td> </tr><tr class="impl" id="entity-raquo-legacy"><td> <code title="">raquo</code> </td> <td> U+000BB </td> <td> <span title="">»</span> </td> </tr><tr id="entity-Rarr"><td> <code title="">Rarr;</code> </td> <td> U+021A0 </td> <td> <span class="glyph" title="">↠</span> </td> </tr><tr id="entity-rArr"><td> <code title="">rArr;</code> </td> <td> U+021D2 </td> <td> <span class="glyph" title="">⇒</span> </td> </tr><tr id="entity-rarr"><td> <code title="">rarr;</code> </td> <td> U+02192 </td> <td> <span class="glyph" title="">→</span> </td> </tr><tr id="entity-rarrap"><td> <code title="">rarrap;</code> </td> <td> U+02975 </td> <td> <span class="glyph" title="">⥵</span> </td> </tr><tr id="entity-rarrb"><td> <code title="">rarrb;</code> </td> <td> U+021E5 </td> <td> <span class="glyph" title="">⇥</span> </td> </tr><tr id="entity-rarrbfs"><td> <code title="">rarrbfs;</code> </td> <td> U+02920 </td> <td> <span class="glyph" title="">⤠</span> </td> </tr><tr id="entity-rarrc"><td> <code title="">rarrc;</code> </td> <td> U+02933 </td> <td> <span class="glyph" title="">⤳</span> </td> </tr><tr id="entity-rarrfs"><td> <code title="">rarrfs;</code> </td> <td> U+0291E </td> <td> <span class="glyph" title="">⤞</span> </td> </tr><tr id="entity-rarrhk"><td> <code title="">rarrhk;</code> </td> <td> U+021AA </td> <td> <span class="glyph" title="">↪</span> </td> </tr><tr id="entity-rarrlp"><td> <code title="">rarrlp;</code> </td> <td> U+021AC </td> <td> <span class="glyph" title="">↬</span> </td> </tr><tr id="entity-rarrpl"><td> <code title="">rarrpl;</code> </td> <td> U+02945 </td> <td> <span class="glyph" title="">⥅</span> </td> </tr><tr id="entity-rarrsim"><td> <code title="">rarrsim;</code> </td> <td> U+02974 </td> <td> <span class="glyph" title="">⥴</span> </td> </tr><tr id="entity-Rarrtl"><td> <code title="">Rarrtl;</code> </td> <td> U+02916 </td> <td> <span class="glyph" title="">⤖</span> </td> </tr><tr id="entity-rarrtl"><td> <code title="">rarrtl;</code> </td> <td> U+021A3 </td> <td> <span class="glyph" title="">↣</span> </td> </tr><tr id="entity-rarrw"><td> <code title="">rarrw;</code> </td> <td> U+0219D </td> <td> <span class="glyph" title="">↝</span> </td> </tr><tr id="entity-rAtail"><td> <code title="">rAtail;</code> </td> <td> U+0291C </td> <td> <span class="glyph" title="">⤜</span> </td> </tr><tr id="entity-ratail"><td> <code title="">ratail;</code> </td> <td> U+0291A </td> <td> <span class="glyph" title="">⤚</span> </td> </tr><tr id="entity-ratio"><td> <code title="">ratio;</code> </td> <td> U+02236 </td> <td> <span class="glyph" title="">∶</span> </td> </tr><tr id="entity-rationals"><td> <code title="">rationals;</code> </td> <td> U+0211A </td> <td> <span class="glyph" title="">ℚ</span> </td> </tr><tr id="entity-RBarr"><td> <code title="">RBarr;</code> </td> <td> U+02910 </td> <td> <span class="glyph" title="">⤐</span> </td> </tr><tr id="entity-rBarr"><td> <code title="">rBarr;</code> </td> <td> U+0290F </td> <td> <span class="glyph" title="">⤏</span> </td> </tr><tr id="entity-rbarr"><td> <code title="">rbarr;</code> </td> <td> U+0290D </td> <td> <span class="glyph" title="">⤍</span> </td> </tr><tr id="entity-rbbrk"><td> <code title="">rbbrk;</code> </td> <td> U+02773 </td> <td> <span class="glyph" title="">❳</span> </td> </tr><tr id="entity-rbrace"><td> <code title="">rbrace;</code> </td> <td> U+0007D </td> <td> <span class="glyph" title="">}</span> </td> </tr><tr id="entity-rbrack"><td> <code title="">rbrack;</code> </td> <td> U+0005D </td> <td> <span class="glyph" title="">]</span> </td> </tr><tr id="entity-rbrke"><td> <code title="">rbrke;</code> </td> <td> U+0298C </td> <td> <span class="glyph" title="">⦌</span> </td> </tr><tr id="entity-rbrksld"><td> <code title="">rbrksld;</code> </td> <td> U+0298E </td> <td> <span class="glyph" title="">⦎</span> </td> </tr><tr id="entity-rbrkslu"><td> <code title="">rbrkslu;</code> </td> <td> U+02990 </td> <td> <span class="glyph" title="">⦐</span> </td> </tr><tr id="entity-Rcaron"><td> <code title="">Rcaron;</code> </td> <td> U+00158 </td> <td> <span class="glyph" title="">Ř</span> </td> </tr><tr id="entity-rcaron"><td> <code title="">rcaron;</code> </td> <td> U+00159 </td> <td> <span class="glyph" title="">Å™</span> </td> </tr><tr id="entity-Rcedil"><td> <code title="">Rcedil;</code> </td> <td> U+00156 </td> <td> <span class="glyph" title="">Å–</span> </td> </tr><tr id="entity-rcedil"><td> <code title="">rcedil;</code> </td> <td> U+00157 </td> <td> <span class="glyph" title="">Å—</span> </td> </tr><tr id="entity-rceil"><td> <code title="">rceil;</code> </td> <td> U+02309 </td> <td> <span class="glyph" title="">⌉</span> </td> </tr><tr id="entity-rcub"><td> <code title="">rcub;</code> </td> <td> U+0007D </td> <td> <span class="glyph" title="">}</span> </td> </tr><tr id="entity-Rcy"><td> <code title="">Rcy;</code> </td> <td> U+00420 </td> <td> <span class="glyph" title="">Р</span> </td> </tr><tr id="entity-rcy"><td> <code title="">rcy;</code> </td> <td> U+00440 </td> <td> <span class="glyph" title="">Ñ€</span> </td> </tr><tr id="entity-rdca"><td> <code title="">rdca;</code> </td> <td> U+02937 </td> <td> <span class="glyph" title="">⤷</span> </td> </tr><tr id="entity-rdldhar"><td> <code title="">rdldhar;</code> </td> <td> U+02969 </td> <td> <span class="glyph" title="">⥩</span> </td> </tr><tr id="entity-rdquo"><td> <code title="">rdquo;</code> </td> <td> U+0201D </td> <td> <span class="glyph" title="">”</span> </td> </tr><tr id="entity-rdquor"><td> <code title="">rdquor;</code> </td> <td> U+0201D </td> <td> <span class="glyph" title="">”</span> </td> </tr><tr id="entity-rdsh"><td> <code title="">rdsh;</code> </td> <td> U+021B3 </td> <td> <span class="glyph" title="">↳</span> </td> </tr><tr id="entity-Re"><td> <code title="">Re;</code> </td> <td> U+0211C </td> <td> <span class="glyph" title="">ℜ</span> </td> </tr><tr id="entity-real"><td> <code title="">real;</code> </td> <td> U+0211C </td> <td> <span class="glyph" title="">ℜ</span> </td> </tr><tr id="entity-realine"><td> <code title="">realine;</code> </td> <td> U+0211B </td> <td> <span class="glyph" title="">â„›</span> </td> </tr><tr id="entity-realpart"><td> <code title="">realpart;</code> </td> <td> U+0211C </td> <td> <span class="glyph" title="">ℜ</span> </td> </tr><tr id="entity-reals"><td> <code title="">reals;</code> </td> <td> U+0211D </td> <td> <span class="glyph" title="">ℝ</span> </td> </tr><tr id="entity-rect"><td> <code title="">rect;</code> </td> <td> U+025AD </td> <td> <span class="glyph" title="">â–­</span> </td> </tr><tr id="entity-REG"><td> <code title="">REG;</code> </td> <td> U+000AE </td> <td> <span class="glyph" title="">®</span> </td> </tr><tr class="impl" id="entity-REG-legacy"><td> <code title="">REG</code> </td> <td> U+000AE </td> <td> <span title="">®</span> </td> </tr><tr id="entity-reg"><td> <code title="">reg;</code> </td> <td> U+000AE </td> <td> <span class="glyph" title="">®</span> </td> </tr><tr class="impl" id="entity-reg-legacy"><td> <code title="">reg</code> </td> <td> U+000AE </td> <td> <span title="">®</span> </td> </tr><tr id="entity-ReverseElement"><td> <code title="">ReverseElement;</code> </td> <td> U+0220B </td> <td> <span class="glyph" title="">∋</span> </td> </tr><tr id="entity-ReverseEquilibrium"><td> <code title="">ReverseEquilibrium;</code> </td> <td> U+021CB </td> <td> <span class="glyph" title="">⇋</span> </td> </tr><tr id="entity-ReverseUpEquilibrium"><td> <code title="">ReverseUpEquilibrium;</code> </td> <td> U+0296F </td> <td> <span class="glyph" title="">⥯</span> </td> </tr><tr id="entity-rfisht"><td> <code title="">rfisht;</code> </td> <td> U+0297D </td> <td> <span class="glyph" title="">⥽</span> </td> </tr><tr id="entity-rfloor"><td> <code title="">rfloor;</code> </td> <td> U+0230B </td> <td> <span class="glyph" title="">⌋</span> </td> </tr><tr id="entity-Rfr"><td> <code title="">Rfr;</code> </td> <td> U+0211C </td> <td> <span class="glyph" title="">ℜ</span> </td> </tr><tr id="entity-rfr"><td> <code title="">rfr;</code> </td> <td> U+1D52F </td> <td> <span class="glyph" title="">𝔯</span> </td> </tr><tr id="entity-rHar"><td> <code title="">rHar;</code> </td> <td> U+02964 </td> <td> <span class="glyph" title="">⥤</span> </td> </tr><tr id="entity-rhard"><td> <code title="">rhard;</code> </td> <td> U+021C1 </td> <td> <span class="glyph" title="">⇁</span> </td> </tr><tr id="entity-rharu"><td> <code title="">rharu;</code> </td> <td> U+021C0 </td> <td> <span class="glyph" title="">⇀</span> </td> </tr><tr id="entity-rharul"><td> <code title="">rharul;</code> </td> <td> U+0296C </td> <td> <span class="glyph" title="">⥬</span> </td> </tr><tr id="entity-Rho"><td> <code title="">Rho;</code> </td> <td> U+003A1 </td> <td> <span class="glyph" title="">Ρ</span> </td> </tr><tr id="entity-rho"><td> <code title="">rho;</code> </td> <td> U+003C1 </td> <td> <span class="glyph" title="">ρ</span> </td> </tr><tr id="entity-rhov"><td> <code title="">rhov;</code> </td> <td> U+003F1 </td> <td> <span class="glyph" title="">ϱ</span> </td> </tr><tr id="entity-RightAngleBracket"><td> <code title="">RightAngleBracket;</code> </td> <td> U+027E9 </td> <td> <span class="glyph" title="">〉</span> </td> </tr><tr id="entity-RightArrow"><td> <code title="">RightArrow;</code> </td> <td> U+02192 </td> <td> <span class="glyph" title="">→</span> </td> </tr><tr id="entity-Rightarrow"><td> <code title="">Rightarrow;</code> </td> <td> U+021D2 </td> <td> <span class="glyph" title="">⇒</span> </td> </tr><tr id="entity-rightarrow"><td> <code title="">rightarrow;</code> </td> <td> U+02192 </td> <td> <span class="glyph" title="">→</span> </td> </tr><tr id="entity-RightArrowBar"><td> <code title="">RightArrowBar;</code> </td> <td> U+021E5 </td> <td> <span class="glyph" title="">⇥</span> </td> </tr><tr id="entity-RightArrowLeftArrow"><td> <code title="">RightArrowLeftArrow;</code> </td> <td> U+021C4 </td> <td> <span class="glyph" title="">⇄</span> </td> </tr><tr id="entity-rightarrowtail"><td> <code title="">rightarrowtail;</code> </td> <td> U+021A3 </td> <td> <span class="glyph" title="">↣</span> </td> </tr><tr id="entity-RightCeiling"><td> <code title="">RightCeiling;</code> </td> <td> U+02309 </td> <td> <span class="glyph" title="">⌉</span> </td> </tr><tr id="entity-RightDoubleBracket"><td> <code title="">RightDoubleBracket;</code> </td> <td> U+027E7 </td> <td> <span class="glyph" title="">⟧</span> </td> </tr><tr id="entity-RightDownTeeVector"><td> <code title="">RightDownTeeVector;</code> </td> <td> U+0295D </td> <td> <span class="glyph" title="">⥝</span> </td> </tr><tr id="entity-RightDownVector"><td> <code title="">RightDownVector;</code> </td> <td> U+021C2 </td> <td> <span class="glyph" title="">⇂</span> </td> </tr><tr id="entity-RightDownVectorBar"><td> <code title="">RightDownVectorBar;</code> </td> <td> U+02955 </td> <td> <span class="glyph" title="">⥕</span> </td> </tr><tr id="entity-RightFloor"><td> <code title="">RightFloor;</code> </td> <td> U+0230B </td> <td> <span class="glyph" title="">⌋</span> </td> </tr><tr id="entity-rightharpoondown"><td> <code title="">rightharpoondown;</code> </td> <td> U+021C1 </td> <td> <span class="glyph" title="">⇁</span> </td> </tr><tr id="entity-rightharpoonup"><td> <code title="">rightharpoonup;</code> </td> <td> U+021C0 </td> <td> <span class="glyph" title="">⇀</span> </td> </tr><tr id="entity-rightleftarrows"><td> <code title="">rightleftarrows;</code> </td> <td> U+021C4 </td> <td> <span class="glyph" title="">⇄</span> </td> </tr><tr id="entity-rightleftharpoons"><td> <code title="">rightleftharpoons;</code> </td> <td> U+021CC </td> <td> <span class="glyph" title="">⇌</span> </td> </tr><tr id="entity-rightrightarrows"><td> <code title="">rightrightarrows;</code> </td> <td> U+021C9 </td> <td> <span class="glyph" title="">⇉</span> </td> </tr><tr id="entity-rightsquigarrow"><td> <code title="">rightsquigarrow;</code> </td> <td> U+0219D </td> <td> <span class="glyph" title="">↝</span> </td> </tr><tr id="entity-RightTee"><td> <code title="">RightTee;</code> </td> <td> U+022A2 </td> <td> <span class="glyph" title="">⊢</span> </td> </tr><tr id="entity-RightTeeArrow"><td> <code title="">RightTeeArrow;</code> </td> <td> U+021A6 </td> <td> <span class="glyph" title="">↦</span> </td> </tr><tr id="entity-RightTeeVector"><td> <code title="">RightTeeVector;</code> </td> <td> U+0295B </td> <td> <span class="glyph" title="">⥛</span> </td> </tr><tr id="entity-rightthreetimes"><td> <code title="">rightthreetimes;</code> </td> <td> U+022CC </td> <td> <span class="glyph" title="">⋌</span> </td> </tr><tr id="entity-RightTriangle"><td> <code title="">RightTriangle;</code> </td> <td> U+022B3 </td> <td> <span class="glyph" title="">⊳</span> </td> </tr><tr id="entity-RightTriangleBar"><td> <code title="">RightTriangleBar;</code> </td> <td> U+029D0 </td> <td> <span class="glyph" title="">⧐</span> </td> </tr><tr id="entity-RightTriangleEqual"><td> <code title="">RightTriangleEqual;</code> </td> <td> U+022B5 </td> <td> <span class="glyph" title="">⊵</span> </td> </tr><tr id="entity-RightUpDownVector"><td> <code title="">RightUpDownVector;</code> </td> <td> U+0294F </td> <td> <span class="glyph" title="">⥏</span> </td> </tr><tr id="entity-RightUpTeeVector"><td> <code title="">RightUpTeeVector;</code> </td> <td> U+0295C </td> <td> <span class="glyph" title="">⥜</span> </td> </tr><tr id="entity-RightUpVector"><td> <code title="">RightUpVector;</code> </td> <td> U+021BE </td> <td> <span class="glyph" title="">↾</span> </td> </tr><tr id="entity-RightUpVectorBar"><td> <code title="">RightUpVectorBar;</code> </td> <td> U+02954 </td> <td> <span class="glyph" title="">⥔</span> </td> </tr><tr id="entity-RightVector"><td> <code title="">RightVector;</code> </td> <td> U+021C0 </td> <td> <span class="glyph" title="">⇀</span> </td> </tr><tr id="entity-RightVectorBar"><td> <code title="">RightVectorBar;</code> </td> <td> U+02953 </td> <td> <span class="glyph" title="">⥓</span> </td> </tr><tr id="entity-ring"><td> <code title="">ring;</code> </td> <td> U+002DA </td> <td> <span class="glyph" title="">Ëš</span> </td> </tr><tr id="entity-risingdotseq"><td> <code title="">risingdotseq;</code> </td> <td> U+02253 </td> <td> <span class="glyph" title="">≓</span> </td> </tr><tr id="entity-rlarr"><td> <code title="">rlarr;</code> </td> <td> U+021C4 </td> <td> <span class="glyph" title="">⇄</span> </td> </tr><tr id="entity-rlhar"><td> <code title="">rlhar;</code> </td> <td> U+021CC </td> <td> <span class="glyph" title="">⇌</span> </td> </tr><tr id="entity-rlm"><td> <code title="">rlm;</code> </td> <td> U+0200F </td> <td> <span class="glyph" title="">‏</span> </td> </tr><tr id="entity-rmoust"><td> <code title="">rmoust;</code> </td> <td> U+023B1 </td> <td> <span class="glyph" title="">⎱</span> </td> </tr><tr id="entity-rmoustache"><td> <code title="">rmoustache;</code> </td> <td> U+023B1 </td> <td> <span class="glyph" title="">⎱</span> </td> </tr><tr id="entity-rnmid"><td> <code title="">rnmid;</code> </td> <td> U+02AEE </td> <td> <span class="glyph" title="">â«®</span> </td> </tr><tr id="entity-roang"><td> <code title="">roang;</code> </td> <td> U+027ED </td> <td> <span class="glyph" title="">⟭</span> </td> </tr><tr id="entity-roarr"><td> <code title="">roarr;</code> </td> <td> U+021FE </td> <td> <span class="glyph" title="">⇾</span> </td> </tr><tr id="entity-robrk"><td> <code title="">robrk;</code> </td> <td> U+027E7 </td> <td> <span class="glyph" title="">⟧</span> </td> </tr><tr id="entity-ropar"><td> <code title="">ropar;</code> </td> <td> U+02986 </td> <td> <span class="glyph" title="">⦆</span> </td> </tr><tr id="entity-Ropf"><td> <code title="">Ropf;</code> </td> <td> U+0211D </td> <td> <span class="glyph" title="">ℝ</span> </td> </tr><tr id="entity-ropf"><td> <code title="">ropf;</code> </td> <td> U+1D563 </td> <td> <span class="glyph" title="">𝕣</span> </td> </tr><tr id="entity-roplus"><td> <code title="">roplus;</code> </td> <td> U+02A2E </td> <td> <span class="glyph" title="">⨮</span> </td> </tr><tr id="entity-rotimes"><td> <code title="">rotimes;</code> </td> <td> U+02A35 </td> <td> <span class="glyph" title="">⨵</span> </td> </tr><tr id="entity-RoundImplies"><td> <code title="">RoundImplies;</code> </td> <td> U+02970 </td> <td> <span class="glyph" title="">⥰</span> </td> </tr><tr id="entity-rpar"><td> <code title="">rpar;</code> </td> <td> U+00029 </td> <td> <span class="glyph" title="">)</span> </td> </tr><tr id="entity-rpargt"><td> <code title="">rpargt;</code> </td> <td> U+02994 </td> <td> <span class="glyph" title="">⦔</span> </td> </tr><tr id="entity-rppolint"><td> <code title="">rppolint;</code> </td> <td> U+02A12 </td> <td> <span class="glyph" title="">⨒</span> </td> </tr><tr id="entity-rrarr"><td> <code title="">rrarr;</code> </td> <td> U+021C9 </td> <td> <span class="glyph" title="">⇉</span> </td> </tr><tr id="entity-Rrightarrow"><td> <code title="">Rrightarrow;</code> </td> <td> U+021DB </td> <td> <span class="glyph" title="">⇛</span> </td> </tr><tr id="entity-rsaquo"><td> <code title="">rsaquo;</code> </td> <td> U+0203A </td> <td> <span class="glyph" title="">›</span> </td> </tr><tr id="entity-Rscr"><td> <code title="">Rscr;</code> </td> <td> U+0211B </td> <td> <span class="glyph" title="">â„›</span> </td> </tr><tr id="entity-rscr"><td> <code title="">rscr;</code> </td> <td> U+1D4C7 </td> <td> <span class="glyph" title="">𝓇</span> </td> </tr><tr id="entity-Rsh"><td> <code title="">Rsh;</code> </td> <td> U+021B1 </td> <td> <span class="glyph" title="">↱</span> </td> </tr><tr id="entity-rsh"><td> <code title="">rsh;</code> </td> <td> U+021B1 </td> <td> <span class="glyph" title="">↱</span> </td> </tr><tr id="entity-rsqb"><td> <code title="">rsqb;</code> </td> <td> U+0005D </td> <td> <span class="glyph" title="">]</span> </td> </tr><tr id="entity-rsquo"><td> <code title="">rsquo;</code> </td> <td> U+02019 </td> <td> <span class="glyph" title="">’</span> </td> </tr><tr id="entity-rsquor"><td> <code title="">rsquor;</code> </td> <td> U+02019 </td> <td> <span class="glyph" title="">’</span> </td> </tr><tr id="entity-rthree"><td> <code title="">rthree;</code> </td> <td> U+022CC </td> <td> <span class="glyph" title="">⋌</span> </td> </tr><tr id="entity-rtimes"><td> <code title="">rtimes;</code> </td> <td> U+022CA </td> <td> <span class="glyph" title="">⋊</span> </td> </tr><tr id="entity-rtri"><td> <code title="">rtri;</code> </td> <td> U+025B9 </td> <td> <span class="glyph" title="">â–¹</span> </td> </tr><tr id="entity-rtrie"><td> <code title="">rtrie;</code> </td> <td> U+022B5 </td> <td> <span class="glyph" title="">⊵</span> </td> </tr><tr id="entity-rtrif"><td> <code title="">rtrif;</code> </td> <td> U+025B8 </td> <td> <span class="glyph" title="">â–¸</span> </td> </tr><tr id="entity-rtriltri"><td> <code title="">rtriltri;</code> </td> <td> U+029CE </td> <td> <span class="glyph" title="">â§Ž</span> </td> </tr><tr id="entity-RuleDelayed"><td> <code title="">RuleDelayed;</code> </td> <td> U+029F4 </td> <td> <span class="glyph" title="">â§´</span> </td> </tr><tr id="entity-ruluhar"><td> <code title="">ruluhar;</code> </td> <td> U+02968 </td> <td> <span class="glyph" title="">⥨</span> </td> </tr><tr id="entity-rx"><td> <code title="">rx;</code> </td> <td> U+0211E </td> <td> <span class="glyph" title="">℞</span> </td> </tr><tr id="entity-Sacute"><td> <code title="">Sacute;</code> </td> <td> U+0015A </td> <td> <span class="glyph" title="">Åš</span> </td> </tr><tr id="entity-sacute"><td> <code title="">sacute;</code> </td> <td> U+0015B </td> <td> <span class="glyph" title="">Å›</span> </td> </tr><tr id="entity-sbquo"><td> <code title="">sbquo;</code> </td> <td> U+0201A </td> <td> <span class="glyph" title="">‚</span> </td> </tr><tr id="entity-Sc"><td> <code title="">Sc;</code> </td> <td> U+02ABC </td> <td> <span class="glyph" title="">⪼</span> </td> </tr><tr id="entity-sc"><td> <code title="">sc;</code> </td> <td> U+0227B </td> <td> <span class="glyph" title="">≻</span> </td> </tr><tr id="entity-scap"><td> <code title="">scap;</code> </td> <td> U+02AB8 </td> <td> <span class="glyph" title="">⪸</span> </td> </tr><tr id="entity-Scaron"><td> <code title="">Scaron;</code> </td> <td> U+00160 </td> <td> <span class="glyph" title="">Å </span> </td> </tr><tr id="entity-scaron"><td> <code title="">scaron;</code> </td> <td> U+00161 </td> <td> <span class="glyph" title="">Å¡</span> </td> </tr><tr id="entity-sccue"><td> <code title="">sccue;</code> </td> <td> U+0227D </td> <td> <span class="glyph" title="">≽</span> </td> </tr><tr id="entity-scE"><td> <code title="">scE;</code> </td> <td> U+02AB4 </td> <td> <span class="glyph" title="">⪴</span> </td> </tr><tr id="entity-sce"><td> <code title="">sce;</code> </td> <td> U+02AB0 </td> <td> <span class="glyph" title="">⪰</span> </td> </tr><tr id="entity-Scedil"><td> <code title="">Scedil;</code> </td> <td> U+0015E </td> <td> <span class="glyph" title="">Åž</span> </td> </tr><tr id="entity-scedil"><td> <code title="">scedil;</code> </td> <td> U+0015F </td> <td> <span class="glyph" title="">ÅŸ</span> </td> </tr><tr id="entity-Scirc"><td> <code title="">Scirc;</code> </td> <td> U+0015C </td> <td> <span class="glyph" title="">Åœ</span> </td> </tr><tr id="entity-scirc"><td> <code title="">scirc;</code> </td> <td> U+0015D </td> <td> <span class="glyph" title="">ŝ</span> </td> </tr><tr id="entity-scnap"><td> <code title="">scnap;</code> </td> <td> U+02ABA </td> <td> <span class="glyph" title="">⪺</span> </td> </tr><tr id="entity-scnE"><td> <code title="">scnE;</code> </td> <td> U+02AB6 </td> <td> <span class="glyph" title="">⪶</span> </td> </tr><tr id="entity-scnsim"><td> <code title="">scnsim;</code> </td> <td> U+022E9 </td> <td> <span class="glyph" title="">â‹©</span> </td> </tr><tr id="entity-scpolint"><td> <code title="">scpolint;</code> </td> <td> U+02A13 </td> <td> <span class="glyph" title="">⨓</span> </td> </tr><tr id="entity-scsim"><td> <code title="">scsim;</code> </td> <td> U+0227F </td> <td> <span class="glyph" title="">≿</span> </td> </tr><tr id="entity-Scy"><td> <code title="">Scy;</code> </td> <td> U+00421 </td> <td> <span class="glyph" title="">С</span> </td> </tr><tr id="entity-scy"><td> <code title="">scy;</code> </td> <td> U+00441 </td> <td> <span class="glyph" title="">с</span> </td> </tr><tr id="entity-sdot"><td> <code title="">sdot;</code> </td> <td> U+022C5 </td> <td> <span class="glyph" title="">â‹…</span> </td> </tr><tr id="entity-sdotb"><td> <code title="">sdotb;</code> </td> <td> U+022A1 </td> <td> <span class="glyph" title="">⊡</span> </td> </tr><tr id="entity-sdote"><td> <code title="">sdote;</code> </td> <td> U+02A66 </td> <td> <span class="glyph" title="">⩦</span> </td> </tr><tr id="entity-searhk"><td> <code title="">searhk;</code> </td> <td> U+02925 </td> <td> <span class="glyph" title="">⤥</span> </td> </tr><tr id="entity-seArr"><td> <code title="">seArr;</code> </td> <td> U+021D8 </td> <td> <span class="glyph" title="">⇘</span> </td> </tr><tr id="entity-searr"><td> <code title="">searr;</code> </td> <td> U+02198 </td> <td> <span class="glyph" title="">↘</span> </td> </tr><tr id="entity-searrow"><td> <code title="">searrow;</code> </td> <td> U+02198 </td> <td> <span class="glyph" title="">↘</span> </td> </tr><tr id="entity-sect"><td> <code title="">sect;</code> </td> <td> U+000A7 </td> <td> <span class="glyph" title="">§</span> </td> </tr><tr class="impl" id="entity-sect-legacy"><td> <code title="">sect</code> </td> <td> U+000A7 </td> <td> <span title="">§</span> </td> </tr><tr id="entity-semi"><td> <code title="">semi;</code> </td> <td> U+0003B </td> <td> <span class="glyph" title="">;</span> </td> </tr><tr id="entity-seswar"><td> <code title="">seswar;</code> </td> <td> U+02929 </td> <td> <span class="glyph" title="">⤩</span> </td> </tr><tr id="entity-setminus"><td> <code title="">setminus;</code> </td> <td> U+02216 </td> <td> <span class="glyph" title="">∖</span> </td> </tr><tr id="entity-setmn"><td> <code title="">setmn;</code> </td> <td> U+02216 </td> <td> <span class="glyph" title="">∖</span> </td> </tr><tr id="entity-sext"><td> <code title="">sext;</code> </td> <td> U+02736 </td> <td> <span class="glyph" title="">✶</span> </td> </tr><tr id="entity-Sfr"><td> <code title="">Sfr;</code> </td> <td> U+1D516 </td> <td> <span class="glyph" title="">𝔖</span> </td> </tr><tr id="entity-sfr"><td> <code title="">sfr;</code> </td> <td> U+1D530 </td> <td> <span class="glyph" title="">𝔰</span> </td> </tr><tr id="entity-sfrown"><td> <code title="">sfrown;</code> </td> <td> U+02322 </td> <td> <span class="glyph" title="">⌢</span> </td> </tr><tr id="entity-sharp"><td> <code title="">sharp;</code> </td> <td> U+0266F </td> <td> <span class="glyph" title="">♯</span> </td> </tr><tr id="entity-SHCHcy"><td> <code title="">SHCHcy;</code> </td> <td> U+00429 </td> <td> <span class="glyph" title="">Щ</span> </td> </tr><tr id="entity-shchcy"><td> <code title="">shchcy;</code> </td> <td> U+00449 </td> <td> <span class="glyph" title="">щ</span> </td> </tr><tr id="entity-SHcy"><td> <code title="">SHcy;</code> </td> <td> U+00428 </td> <td> <span class="glyph" title="">Ш</span> </td> </tr><tr id="entity-shcy"><td> <code title="">shcy;</code> </td> <td> U+00448 </td> <td> <span class="glyph" title="">ш</span> </td> </tr><tr id="entity-ShortDownArrow"><td> <code title="">ShortDownArrow;</code> </td> <td> U+02193 </td> <td> <span class="glyph" title="">↓</span> </td> </tr><tr id="entity-ShortLeftArrow"><td> <code title="">ShortLeftArrow;</code> </td> <td> U+02190 </td> <td> <span class="glyph" title="">←</span> </td> </tr><tr id="entity-shortmid"><td> <code title="">shortmid;</code> </td> <td> U+02223 </td> <td> <span class="glyph" title="">∣</span> </td> </tr><tr id="entity-shortparallel"><td> <code title="">shortparallel;</code> </td> <td> U+02225 </td> <td> <span class="glyph" title="">∥</span> </td> </tr><tr id="entity-ShortRightArrow"><td> <code title="">ShortRightArrow;</code> </td> <td> U+02192 </td> <td> <span class="glyph" title="">→</span> </td> </tr><tr id="entity-ShortUpArrow"><td> <code title="">ShortUpArrow;</code> </td> <td> U+02191 </td> <td> <span class="glyph" title="">↑</span> </td> </tr><tr id="entity-shy"><td> <code title="">shy;</code> </td> <td> U+000AD </td> <td> <span class="glyph" title="">­</span> </td> </tr><tr class="impl" id="entity-shy-legacy"><td> <code title="">shy</code> </td> <td> U+000AD </td> <td> <span title="">­</span> </td> </tr><tr id="entity-Sigma"><td> <code title="">Sigma;</code> </td> <td> U+003A3 </td> <td> <span class="glyph" title="">Σ</span> </td> </tr><tr id="entity-sigma"><td> <code title="">sigma;</code> </td> <td> U+003C3 </td> <td> <span class="glyph" title="">σ</span> </td> </tr><tr id="entity-sigmaf"><td> <code title="">sigmaf;</code> </td> <td> U+003C2 </td> <td> <span class="glyph" title="">Ï‚</span> </td> </tr><tr id="entity-sigmav"><td> <code title="">sigmav;</code> </td> <td> U+003C2 </td> <td> <span class="glyph" title="">Ï‚</span> </td> </tr><tr id="entity-sim"><td> <code title="">sim;</code> </td> <td> U+0223C </td> <td> <span class="glyph" title="">∼</span> </td> </tr><tr id="entity-simdot"><td> <code title="">simdot;</code> </td> <td> U+02A6A </td> <td> <span class="glyph" title="">⩪</span> </td> </tr><tr id="entity-sime"><td> <code title="">sime;</code> </td> <td> U+02243 </td> <td> <span class="glyph" title="">≃</span> </td> </tr><tr id="entity-simeq"><td> <code title="">simeq;</code> </td> <td> U+02243 </td> <td> <span class="glyph" title="">≃</span> </td> </tr><tr id="entity-simg"><td> <code title="">simg;</code> </td> <td> U+02A9E </td> <td> <span class="glyph" title="">⪞</span> </td> </tr><tr id="entity-simgE"><td> <code title="">simgE;</code> </td> <td> U+02AA0 </td> <td> <span class="glyph" title="">⪠</span> </td> </tr><tr id="entity-siml"><td> <code title="">siml;</code> </td> <td> U+02A9D </td> <td> <span class="glyph" title="">⪝</span> </td> </tr><tr id="entity-simlE"><td> <code title="">simlE;</code> </td> <td> U+02A9F </td> <td> <span class="glyph" title="">⪟</span> </td> </tr><tr id="entity-simne"><td> <code title="">simne;</code> </td> <td> U+02246 </td> <td> <span class="glyph" title="">≆</span> </td> </tr><tr id="entity-simplus"><td> <code title="">simplus;</code> </td> <td> U+02A24 </td> <td> <span class="glyph" title="">⨤</span> </td> </tr><tr id="entity-simrarr"><td> <code title="">simrarr;</code> </td> <td> U+02972 </td> <td> <span class="glyph" title="">⥲</span> </td> </tr><tr id="entity-slarr"><td> <code title="">slarr;</code> </td> <td> U+02190 </td> <td> <span class="glyph" title="">←</span> </td> </tr><tr id="entity-SmallCircle"><td> <code title="">SmallCircle;</code> </td> <td> U+02218 </td> <td> <span class="glyph" title="">∘</span> </td> </tr><tr id="entity-smallsetminus"><td> <code title="">smallsetminus;</code> </td> <td> U+02216 </td> <td> <span class="glyph" title="">∖</span> </td> </tr><tr id="entity-smashp"><td> <code title="">smashp;</code> </td> <td> U+02A33 </td> <td> <span class="glyph" title="">⨳</span> </td> </tr><tr id="entity-smeparsl"><td> <code title="">smeparsl;</code> </td> <td> U+029E4 </td> <td> <span class="glyph" title="">⧤</span> </td> </tr><tr id="entity-smid"><td> <code title="">smid;</code> </td> <td> U+02223 </td> <td> <span class="glyph" title="">∣</span> </td> </tr><tr id="entity-smile"><td> <code title="">smile;</code> </td> <td> U+02323 </td> <td> <span class="glyph" title="">⌣</span> </td> </tr><tr id="entity-smt"><td> <code title="">smt;</code> </td> <td> U+02AAA </td> <td> <span class="glyph" title="">⪪</span> </td> </tr><tr id="entity-smte"><td> <code title="">smte;</code> </td> <td> U+02AAC </td> <td> <span class="glyph" title="">⪬</span> </td> </tr><tr id="entity-smtes"><td> <code title="">smtes;</code> </td> <td> U+02AAC U+0FE00 </td> <td> <span class="glyph compound" title="">⪬︀</span> </td> </tr><tr id="entity-SOFTcy"><td> <code title="">SOFTcy;</code> </td> <td> U+0042C </td> <td> <span class="glyph" title="">Ь</span> </td> </tr><tr id="entity-softcy"><td> <code title="">softcy;</code> </td> <td> U+0044C </td> <td> <span class="glyph" title="">ÑŒ</span> </td> </tr><tr id="entity-sol"><td> <code title="">sol;</code> </td> <td> U+0002F </td> <td> <span class="glyph" title="">/</span> </td> </tr><tr id="entity-solb"><td> <code title="">solb;</code> </td> <td> U+029C4 </td> <td> <span class="glyph" title="">â§„</span> </td> </tr><tr id="entity-solbar"><td> <code title="">solbar;</code> </td> <td> U+0233F </td> <td> <span class="glyph" title="">⌿</span> </td> </tr><tr id="entity-Sopf"><td> <code title="">Sopf;</code> </td> <td> U+1D54A </td> <td> <span class="glyph" title="">𝕊</span> </td> </tr><tr id="entity-sopf"><td> <code title="">sopf;</code> </td> <td> U+1D564 </td> <td> <span class="glyph" title="">𝕤</span> </td> </tr><tr id="entity-spades"><td> <code title="">spades;</code> </td> <td> U+02660 </td> <td> <span class="glyph" title="">â™ </span> </td> </tr><tr id="entity-spadesuit"><td> <code title="">spadesuit;</code> </td> <td> U+02660 </td> <td> <span class="glyph" title="">â™ </span> </td> </tr><tr id="entity-spar"><td> <code title="">spar;</code> </td> <td> U+02225 </td> <td> <span class="glyph" title="">∥</span> </td> </tr><tr id="entity-sqcap"><td> <code title="">sqcap;</code> </td> <td> U+02293 </td> <td> <span class="glyph" title="">⊓</span> </td> </tr><tr id="entity-sqcaps"><td> <code title="">sqcaps;</code> </td> <td> U+02293 U+0FE00 </td> <td> <span class="glyph compound" title="">⊓︀</span> </td> </tr><tr id="entity-sqcup"><td> <code title="">sqcup;</code> </td> <td> U+02294 </td> <td> <span class="glyph" title="">⊔</span> </td> </tr><tr id="entity-sqcups"><td> <code title="">sqcups;</code> </td> <td> U+02294 U+0FE00 </td> <td> <span class="glyph compound" title="">⊔︀</span> </td> </tr><tr id="entity-Sqrt"><td> <code title="">Sqrt;</code> </td> <td> U+0221A </td> <td> <span class="glyph" title="">√</span> </td> </tr><tr id="entity-sqsub"><td> <code title="">sqsub;</code> </td> <td> U+0228F </td> <td> <span class="glyph" title="">⊏</span> </td> </tr><tr id="entity-sqsube"><td> <code title="">sqsube;</code> </td> <td> U+02291 </td> <td> <span class="glyph" title="">⊑</span> </td> </tr><tr id="entity-sqsubset"><td> <code title="">sqsubset;</code> </td> <td> U+0228F </td> <td> <span class="glyph" title="">⊏</span> </td> </tr><tr id="entity-sqsubseteq"><td> <code title="">sqsubseteq;</code> </td> <td> U+02291 </td> <td> <span class="glyph" title="">⊑</span> </td> </tr><tr id="entity-sqsup"><td> <code title="">sqsup;</code> </td> <td> U+02290 </td> <td> <span class="glyph" title="">⊐</span> </td> </tr><tr id="entity-sqsupe"><td> <code title="">sqsupe;</code> </td> <td> U+02292 </td> <td> <span class="glyph" title="">⊒</span> </td> </tr><tr id="entity-sqsupset"><td> <code title="">sqsupset;</code> </td> <td> U+02290 </td> <td> <span class="glyph" title="">⊐</span> </td> </tr><tr id="entity-sqsupseteq"><td> <code title="">sqsupseteq;</code> </td> <td> U+02292 </td> <td> <span class="glyph" title="">⊒</span> </td> </tr><tr id="entity-squ"><td> <code title="">squ;</code> </td> <td> U+025A1 </td> <td> <span class="glyph" title="">â–¡</span> </td> </tr><tr id="entity-Square"><td> <code title="">Square;</code> </td> <td> U+025A1 </td> <td> <span class="glyph" title="">â–¡</span> </td> </tr><tr id="entity-square"><td> <code title="">square;</code> </td> <td> U+025A1 </td> <td> <span class="glyph" title="">â–¡</span> </td> </tr><tr id="entity-SquareIntersection"><td> <code title="">SquareIntersection;</code> </td> <td> U+02293 </td> <td> <span class="glyph" title="">⊓</span> </td> </tr><tr id="entity-SquareSubset"><td> <code title="">SquareSubset;</code> </td> <td> U+0228F </td> <td> <span class="glyph" title="">⊏</span> </td> </tr><tr id="entity-SquareSubsetEqual"><td> <code title="">SquareSubsetEqual;</code> </td> <td> U+02291 </td> <td> <span class="glyph" title="">⊑</span> </td> </tr><tr id="entity-SquareSuperset"><td> <code title="">SquareSuperset;</code> </td> <td> U+02290 </td> <td> <span class="glyph" title="">⊐</span> </td> </tr><tr id="entity-SquareSupersetEqual"><td> <code title="">SquareSupersetEqual;</code> </td> <td> U+02292 </td> <td> <span class="glyph" title="">⊒</span> </td> </tr><tr id="entity-SquareUnion"><td> <code title="">SquareUnion;</code> </td> <td> U+02294 </td> <td> <span class="glyph" title="">⊔</span> </td> </tr><tr id="entity-squarf"><td> <code title="">squarf;</code> </td> <td> U+025AA </td> <td> <span class="glyph" title="">â–ª</span> </td> </tr><tr id="entity-squf"><td> <code title="">squf;</code> </td> <td> U+025AA </td> <td> <span class="glyph" title="">â–ª</span> </td> </tr><tr id="entity-srarr"><td> <code title="">srarr;</code> </td> <td> U+02192 </td> <td> <span class="glyph" title="">→</span> </td> </tr><tr id="entity-Sscr"><td> <code title="">Sscr;</code> </td> <td> U+1D4AE </td> <td> <span class="glyph" title="">𝒮</span> </td> </tr><tr id="entity-sscr"><td> <code title="">sscr;</code> </td> <td> U+1D4C8 </td> <td> <span class="glyph" title="">𝓈</span> </td> </tr><tr id="entity-ssetmn"><td> <code title="">ssetmn;</code> </td> <td> U+02216 </td> <td> <span class="glyph" title="">∖</span> </td> </tr><tr id="entity-ssmile"><td> <code title="">ssmile;</code> </td> <td> U+02323 </td> <td> <span class="glyph" title="">⌣</span> </td> </tr><tr id="entity-sstarf"><td> <code title="">sstarf;</code> </td> <td> U+022C6 </td> <td> <span class="glyph" title="">⋆</span> </td> </tr><tr id="entity-Star"><td> <code title="">Star;</code> </td> <td> U+022C6 </td> <td> <span class="glyph" title="">⋆</span> </td> </tr><tr id="entity-star"><td> <code title="">star;</code> </td> <td> U+02606 </td> <td> <span class="glyph" title="">☆</span> </td> </tr><tr id="entity-starf"><td> <code title="">starf;</code> </td> <td> U+02605 </td> <td> <span class="glyph" title="">★</span> </td> </tr><tr id="entity-straightepsilon"><td> <code title="">straightepsilon;</code> </td> <td> U+003F5 </td> <td> <span class="glyph" title="">ϵ</span> </td> </tr><tr id="entity-straightphi"><td> <code title="">straightphi;</code> </td> <td> U+003D5 </td> <td> <span class="glyph" title="">Ï•</span> </td> </tr><tr id="entity-strns"><td> <code title="">strns;</code> </td> <td> U+000AF </td> <td> <span class="glyph" title="">¯</span> </td> </tr><tr id="entity-Sub"><td> <code title="">Sub;</code> </td> <td> U+022D0 </td> <td> <span class="glyph" title="">⋐</span> </td> </tr><tr id="entity-sub"><td> <code title="">sub;</code> </td> <td> U+02282 </td> <td> <span class="glyph" title="">⊂</span> </td> </tr><tr id="entity-subdot"><td> <code title="">subdot;</code> </td> <td> U+02ABD </td> <td> <span class="glyph" title="">⪽</span> </td> </tr><tr id="entity-subE"><td> <code title="">subE;</code> </td> <td> U+02AC5 </td> <td> <span class="glyph" title="">â«…</span> </td> </tr><tr id="entity-sube"><td> <code title="">sube;</code> </td> <td> U+02286 </td> <td> <span class="glyph" title="">⊆</span> </td> </tr><tr id="entity-subedot"><td> <code title="">subedot;</code> </td> <td> U+02AC3 </td> <td> <span class="glyph" title="">⫃</span> </td> </tr><tr id="entity-submult"><td> <code title="">submult;</code> </td> <td> U+02AC1 </td> <td> <span class="glyph" title="">⫁</span> </td> </tr><tr id="entity-subnE"><td> <code title="">subnE;</code> </td> <td> U+02ACB </td> <td> <span class="glyph" title="">â«‹</span> </td> </tr><tr id="entity-subne"><td> <code title="">subne;</code> </td> <td> U+0228A </td> <td> <span class="glyph" title="">⊊</span> </td> </tr><tr id="entity-subplus"><td> <code title="">subplus;</code> </td> <td> U+02ABF </td> <td> <span class="glyph" title="">⪿</span> </td> </tr><tr id="entity-subrarr"><td> <code title="">subrarr;</code> </td> <td> U+02979 </td> <td> <span class="glyph" title="">⥹</span> </td> </tr><tr id="entity-Subset"><td> <code title="">Subset;</code> </td> <td> U+022D0 </td> <td> <span class="glyph" title="">⋐</span> </td> </tr><tr id="entity-subset"><td> <code title="">subset;</code> </td> <td> U+02282 </td> <td> <span class="glyph" title="">⊂</span> </td> </tr><tr id="entity-subseteq"><td> <code title="">subseteq;</code> </td> <td> U+02286 </td> <td> <span class="glyph" title="">⊆</span> </td> </tr><tr id="entity-subseteqq"><td> <code title="">subseteqq;</code> </td> <td> U+02AC5 </td> <td> <span class="glyph" title="">â«…</span> </td> </tr><tr id="entity-SubsetEqual"><td> <code title="">SubsetEqual;</code> </td> <td> U+02286 </td> <td> <span class="glyph" title="">⊆</span> </td> </tr><tr id="entity-subsetneq"><td> <code title="">subsetneq;</code> </td> <td> U+0228A </td> <td> <span class="glyph" title="">⊊</span> </td> </tr><tr id="entity-subsetneqq"><td> <code title="">subsetneqq;</code> </td> <td> U+02ACB </td> <td> <span class="glyph" title="">â«‹</span> </td> </tr><tr id="entity-subsim"><td> <code title="">subsim;</code> </td> <td> U+02AC7 </td> <td> <span class="glyph" title="">⫇</span> </td> </tr><tr id="entity-subsub"><td> <code title="">subsub;</code> </td> <td> U+02AD5 </td> <td> <span class="glyph" title="">â«•</span> </td> </tr><tr id="entity-subsup"><td> <code title="">subsup;</code> </td> <td> U+02AD3 </td> <td> <span class="glyph" title="">â«“</span> </td> </tr><tr id="entity-succ"><td> <code title="">succ;</code> </td> <td> U+0227B </td> <td> <span class="glyph" title="">≻</span> </td> </tr><tr id="entity-succapprox"><td> <code title="">succapprox;</code> </td> <td> U+02AB8 </td> <td> <span class="glyph" title="">⪸</span> </td> </tr><tr id="entity-succcurlyeq"><td> <code title="">succcurlyeq;</code> </td> <td> U+0227D </td> <td> <span class="glyph" title="">≽</span> </td> </tr><tr id="entity-Succeeds"><td> <code title="">Succeeds;</code> </td> <td> U+0227B </td> <td> <span class="glyph" title="">≻</span> </td> </tr><tr id="entity-SucceedsEqual"><td> <code title="">SucceedsEqual;</code> </td> <td> U+02AB0 </td> <td> <span class="glyph" title="">⪰</span> </td> </tr><tr id="entity-SucceedsSlantEqual"><td> <code title="">SucceedsSlantEqual;</code> </td> <td> U+0227D </td> <td> <span class="glyph" title="">≽</span> </td> </tr><tr id="entity-SucceedsTilde"><td> <code title="">SucceedsTilde;</code> </td> <td> U+0227F </td> <td> <span class="glyph" title="">≿</span> </td> </tr><tr id="entity-succeq"><td> <code title="">succeq;</code> </td> <td> U+02AB0 </td> <td> <span class="glyph" title="">⪰</span> </td> </tr><tr id="entity-succnapprox"><td> <code title="">succnapprox;</code> </td> <td> U+02ABA </td> <td> <span class="glyph" title="">⪺</span> </td> </tr><tr id="entity-succneqq"><td> <code title="">succneqq;</code> </td> <td> U+02AB6 </td> <td> <span class="glyph" title="">⪶</span> </td> </tr><tr id="entity-succnsim"><td> <code title="">succnsim;</code> </td> <td> U+022E9 </td> <td> <span class="glyph" title="">â‹©</span> </td> </tr><tr id="entity-succsim"><td> <code title="">succsim;</code> </td> <td> U+0227F </td> <td> <span class="glyph" title="">≿</span> </td> </tr><tr id="entity-SuchThat"><td> <code title="">SuchThat;</code> </td> <td> U+0220B </td> <td> <span class="glyph" title="">∋</span> </td> </tr><tr id="entity-Sum"><td> <code title="">Sum;</code> </td> <td> U+02211 </td> <td> <span class="glyph" title="">∑</span> </td> </tr><tr id="entity-sum"><td> <code title="">sum;</code> </td> <td> U+02211 </td> <td> <span class="glyph" title="">∑</span> </td> </tr><tr id="entity-sung"><td> <code title="">sung;</code> </td> <td> U+0266A </td> <td> <span class="glyph" title="">♪</span> </td> </tr><tr id="entity-Sup"><td> <code title="">Sup;</code> </td> <td> U+022D1 </td> <td> <span class="glyph" title="">â‹‘</span> </td> </tr><tr id="entity-sup"><td> <code title="">sup;</code> </td> <td> U+02283 </td> <td> <span class="glyph" title="">⊃</span> </td> </tr><tr id="entity-sup1"><td> <code title="">sup1;</code> </td> <td> U+000B9 </td> <td> <span class="glyph" title="">¹</span> </td> </tr><tr class="impl" id="entity-sup1-legacy"><td> <code title="">sup1</code> </td> <td> U+000B9 </td> <td> <span title="">¹</span> </td> </tr><tr id="entity-sup2"><td> <code title="">sup2;</code> </td> <td> U+000B2 </td> <td> <span class="glyph" title="">²</span> </td> </tr><tr class="impl" id="entity-sup2-legacy"><td> <code title="">sup2</code> </td> <td> U+000B2 </td> <td> <span title="">²</span> </td> </tr><tr id="entity-sup3"><td> <code title="">sup3;</code> </td> <td> U+000B3 </td> <td> <span class="glyph" title="">³</span> </td> </tr><tr class="impl" id="entity-sup3-legacy"><td> <code title="">sup3</code> </td> <td> U+000B3 </td> <td> <span title="">³</span> </td> </tr><tr id="entity-supdot"><td> <code title="">supdot;</code> </td> <td> U+02ABE </td> <td> <span class="glyph" title="">⪾</span> </td> </tr><tr id="entity-supdsub"><td> <code title="">supdsub;</code> </td> <td> U+02AD8 </td> <td> <span class="glyph" title="">⫘</span> </td> </tr><tr id="entity-supE"><td> <code title="">supE;</code> </td> <td> U+02AC6 </td> <td> <span class="glyph" title="">⫆</span> </td> </tr><tr id="entity-supe"><td> <code title="">supe;</code> </td> <td> U+02287 </td> <td> <span class="glyph" title="">⊇</span> </td> </tr><tr id="entity-supedot"><td> <code title="">supedot;</code> </td> <td> U+02AC4 </td> <td> <span class="glyph" title="">â«„</span> </td> </tr><tr id="entity-Superset"><td> <code title="">Superset;</code> </td> <td> U+02283 </td> <td> <span class="glyph" title="">⊃</span> </td> </tr><tr id="entity-SupersetEqual"><td> <code title="">SupersetEqual;</code> </td> <td> U+02287 </td> <td> <span class="glyph" title="">⊇</span> </td> </tr><tr id="entity-suphsol"><td> <code title="">suphsol;</code> </td> <td> U+027C9 </td> <td> <span class="glyph" title="">⟉</span> </td> </tr><tr id="entity-suphsub"><td> <code title="">suphsub;</code> </td> <td> U+02AD7 </td> <td> <span class="glyph" title="">â«—</span> </td> </tr><tr id="entity-suplarr"><td> <code title="">suplarr;</code> </td> <td> U+0297B </td> <td> <span class="glyph" title="">⥻</span> </td> </tr><tr id="entity-supmult"><td> <code title="">supmult;</code> </td> <td> U+02AC2 </td> <td> <span class="glyph" title="">â«‚</span> </td> </tr><tr id="entity-supnE"><td> <code title="">supnE;</code> </td> <td> U+02ACC </td> <td> <span class="glyph" title="">⫌</span> </td> </tr><tr id="entity-supne"><td> <code title="">supne;</code> </td> <td> U+0228B </td> <td> <span class="glyph" title="">⊋</span> </td> </tr><tr id="entity-supplus"><td> <code title="">supplus;</code> </td> <td> U+02AC0 </td> <td> <span class="glyph" title="">â«€</span> </td> </tr><tr id="entity-Supset"><td> <code title="">Supset;</code> </td> <td> U+022D1 </td> <td> <span class="glyph" title="">â‹‘</span> </td> </tr><tr id="entity-supset"><td> <code title="">supset;</code> </td> <td> U+02283 </td> <td> <span class="glyph" title="">⊃</span> </td> </tr><tr id="entity-supseteq"><td> <code title="">supseteq;</code> </td> <td> U+02287 </td> <td> <span class="glyph" title="">⊇</span> </td> </tr><tr id="entity-supseteqq"><td> <code title="">supseteqq;</code> </td> <td> U+02AC6 </td> <td> <span class="glyph" title="">⫆</span> </td> </tr><tr id="entity-supsetneq"><td> <code title="">supsetneq;</code> </td> <td> U+0228B </td> <td> <span class="glyph" title="">⊋</span> </td> </tr><tr id="entity-supsetneqq"><td> <code title="">supsetneqq;</code> </td> <td> U+02ACC </td> <td> <span class="glyph" title="">⫌</span> </td> </tr><tr id="entity-supsim"><td> <code title="">supsim;</code> </td> <td> U+02AC8 </td> <td> <span class="glyph" title="">⫈</span> </td> </tr><tr id="entity-supsub"><td> <code title="">supsub;</code> </td> <td> U+02AD4 </td> <td> <span class="glyph" title="">â«”</span> </td> </tr><tr id="entity-supsup"><td> <code title="">supsup;</code> </td> <td> U+02AD6 </td> <td> <span class="glyph" title="">â«–</span> </td> </tr><tr id="entity-swarhk"><td> <code title="">swarhk;</code> </td> <td> U+02926 </td> <td> <span class="glyph" title="">⤦</span> </td> </tr><tr id="entity-swArr"><td> <code title="">swArr;</code> </td> <td> U+021D9 </td> <td> <span class="glyph" title="">⇙</span> </td> </tr><tr id="entity-swarr"><td> <code title="">swarr;</code> </td> <td> U+02199 </td> <td> <span class="glyph" title="">↙</span> </td> </tr><tr id="entity-swarrow"><td> <code title="">swarrow;</code> </td> <td> U+02199 </td> <td> <span class="glyph" title="">↙</span> </td> </tr><tr id="entity-swnwar"><td> <code title="">swnwar;</code> </td> <td> U+0292A </td> <td> <span class="glyph" title="">⤪</span> </td> </tr><tr id="entity-szlig"><td> <code title="">szlig;</code> </td> <td> U+000DF </td> <td> <span class="glyph" title="">ß</span> </td> </tr><tr class="impl" id="entity-szlig-legacy"><td> <code title="">szlig</code> </td> <td> U+000DF </td> <td> <span title="">ß</span> </td> </tr><tr id="entity-Tab"><td> <code title="">Tab;</code> </td> <td> U+00009 </td> <td> <span class="glyph control" title="">␉</span> </td> </tr><tr id="entity-target"><td> <code title="">target;</code> </td> <td> U+02316 </td> <td> <span class="glyph" title="">⌖</span> </td> </tr><tr id="entity-Tau"><td> <code title="">Tau;</code> </td> <td> U+003A4 </td> <td> <span class="glyph" title="">Τ</span> </td> </tr><tr id="entity-tau"><td> <code title="">tau;</code> </td> <td> U+003C4 </td> <td> <span class="glyph" title="">Ï„</span> </td> </tr><tr id="entity-tbrk"><td> <code title="">tbrk;</code> </td> <td> U+023B4 </td> <td> <span class="glyph" title="">⎴</span> </td> </tr><tr id="entity-Tcaron"><td> <code title="">Tcaron;</code> </td> <td> U+00164 </td> <td> <span class="glyph" title="">Ť</span> </td> </tr><tr id="entity-tcaron"><td> <code title="">tcaron;</code> </td> <td> U+00165 </td> <td> <span class="glyph" title="">Å¥</span> </td> </tr><tr id="entity-Tcedil"><td> <code title="">Tcedil;</code> </td> <td> U+00162 </td> <td> <span class="glyph" title="">Å¢</span> </td> </tr><tr id="entity-tcedil"><td> <code title="">tcedil;</code> </td> <td> U+00163 </td> <td> <span class="glyph" title="">Å£</span> </td> </tr><tr id="entity-Tcy"><td> <code title="">Tcy;</code> </td> <td> U+00422 </td> <td> <span class="glyph" title="">Т</span> </td> </tr><tr id="entity-tcy"><td> <code title="">tcy;</code> </td> <td> U+00442 </td> <td> <span class="glyph" title="">Ñ‚</span> </td> </tr><tr id="entity-tdot"><td> <code title="">tdot;</code> </td> <td> U+020DB </td> <td> <span class="glyph composition" title="">◌⃛</span> </td> </tr><tr id="entity-telrec"><td> <code title="">telrec;</code> </td> <td> U+02315 </td> <td> <span class="glyph" title="">⌕</span> </td> </tr><tr id="entity-Tfr"><td> <code title="">Tfr;</code> </td> <td> U+1D517 </td> <td> <span class="glyph" title="">𝔗</span> </td> </tr><tr id="entity-tfr"><td> <code title="">tfr;</code> </td> <td> U+1D531 </td> <td> <span class="glyph" title="">𝔱</span> </td> </tr><tr id="entity-there4"><td> <code title="">there4;</code> </td> <td> U+02234 </td> <td> <span class="glyph" title="">∴</span> </td> </tr><tr id="entity-Therefore"><td> <code title="">Therefore;</code> </td> <td> U+02234 </td> <td> <span class="glyph" title="">∴</span> </td> </tr><tr id="entity-therefore"><td> <code title="">therefore;</code> </td> <td> U+02234 </td> <td> <span class="glyph" title="">∴</span> </td> </tr><tr id="entity-Theta"><td> <code title="">Theta;</code> </td> <td> U+00398 </td> <td> <span class="glyph" title="">Θ</span> </td> </tr><tr id="entity-theta"><td> <code title="">theta;</code> </td> <td> U+003B8 </td> <td> <span class="glyph" title="">θ</span> </td> </tr><tr id="entity-thetasym"><td> <code title="">thetasym;</code> </td> <td> U+003D1 </td> <td> <span class="glyph" title="">Ï‘</span> </td> </tr><tr id="entity-thetav"><td> <code title="">thetav;</code> </td> <td> U+003D1 </td> <td> <span class="glyph" title="">Ï‘</span> </td> </tr><tr id="entity-thickapprox"><td> <code title="">thickapprox;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-thicksim"><td> <code title="">thicksim;</code> </td> <td> U+0223C </td> <td> <span class="glyph" title="">∼</span> </td> </tr><tr id="entity-ThickSpace"><td> <code title="">ThickSpace;</code> </td> <td> U+0205F U+0200A </td> <td> <span class="glyph compound" title="">  </span> </td> </tr><tr id="entity-thinsp"><td> <code title="">thinsp;</code> </td> <td> U+02009 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-ThinSpace"><td> <code title="">ThinSpace;</code> </td> <td> U+02009 </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-thkap"><td> <code title="">thkap;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-thksim"><td> <code title="">thksim;</code> </td> <td> U+0223C </td> <td> <span class="glyph" title="">∼</span> </td> </tr><tr id="entity-THORN"><td> <code title="">THORN;</code> </td> <td> U+000DE </td> <td> <span class="glyph" title="">Þ</span> </td> </tr><tr class="impl" id="entity-THORN-legacy"><td> <code title="">THORN</code> </td> <td> U+000DE </td> <td> <span title="">Þ</span> </td> </tr><tr id="entity-thorn"><td> <code title="">thorn;</code> </td> <td> U+000FE </td> <td> <span class="glyph" title="">þ</span> </td> </tr><tr class="impl" id="entity-thorn-legacy"><td> <code title="">thorn</code> </td> <td> U+000FE </td> <td> <span title="">þ</span> </td> </tr><tr id="entity-Tilde"><td> <code title="">Tilde;</code> </td> <td> U+0223C </td> <td> <span class="glyph" title="">∼</span> </td> </tr><tr id="entity-tilde"><td> <code title="">tilde;</code> </td> <td> U+002DC </td> <td> <span class="glyph" title="">Ëœ</span> </td> </tr><tr id="entity-TildeEqual"><td> <code title="">TildeEqual;</code> </td> <td> U+02243 </td> <td> <span class="glyph" title="">≃</span> </td> </tr><tr id="entity-TildeFullEqual"><td> <code title="">TildeFullEqual;</code> </td> <td> U+02245 </td> <td> <span class="glyph" title="">≅</span> </td> </tr><tr id="entity-TildeTilde"><td> <code title="">TildeTilde;</code> </td> <td> U+02248 </td> <td> <span class="glyph" title="">≈</span> </td> </tr><tr id="entity-times"><td> <code title="">times;</code> </td> <td> U+000D7 </td> <td> <span class="glyph" title="">×</span> </td> </tr><tr class="impl" id="entity-times-legacy"><td> <code title="">times</code> </td> <td> U+000D7 </td> <td> <span title="">×</span> </td> </tr><tr id="entity-timesb"><td> <code title="">timesb;</code> </td> <td> U+022A0 </td> <td> <span class="glyph" title="">⊠</span> </td> </tr><tr id="entity-timesbar"><td> <code title="">timesbar;</code> </td> <td> U+02A31 </td> <td> <span class="glyph" title="">⨱</span> </td> </tr><tr id="entity-timesd"><td> <code title="">timesd;</code> </td> <td> U+02A30 </td> <td> <span class="glyph" title="">⨰</span> </td> </tr><tr id="entity-tint"><td> <code title="">tint;</code> </td> <td> U+0222D </td> <td> <span class="glyph" title="">∭</span> </td> </tr><tr id="entity-toea"><td> <code title="">toea;</code> </td> <td> U+02928 </td> <td> <span class="glyph" title="">⤨</span> </td> </tr><tr id="entity-top"><td> <code title="">top;</code> </td> <td> U+022A4 </td> <td> <span class="glyph" title="">⊤</span> </td> </tr><tr id="entity-topbot"><td> <code title="">topbot;</code> </td> <td> U+02336 </td> <td> <span class="glyph" title="">⌶</span> </td> </tr><tr id="entity-topcir"><td> <code title="">topcir;</code> </td> <td> U+02AF1 </td> <td> <span class="glyph" title="">⫱</span> </td> </tr><tr id="entity-Topf"><td> <code title="">Topf;</code> </td> <td> U+1D54B </td> <td> <span class="glyph" title="">𝕋</span> </td> </tr><tr id="entity-topf"><td> <code title="">topf;</code> </td> <td> U+1D565 </td> <td> <span class="glyph" title="">𝕥</span> </td> </tr><tr id="entity-topfork"><td> <code title="">topfork;</code> </td> <td> U+02ADA </td> <td> <span class="glyph" title="">⫚</span> </td> </tr><tr id="entity-tosa"><td> <code title="">tosa;</code> </td> <td> U+02929 </td> <td> <span class="glyph" title="">⤩</span> </td> </tr><tr id="entity-tprime"><td> <code title="">tprime;</code> </td> <td> U+02034 </td> <td> <span class="glyph" title="">‴</span> </td> </tr><tr id="entity-TRADE"><td> <code title="">TRADE;</code> </td> <td> U+02122 </td> <td> <span class="glyph" title="">â„¢</span> </td> </tr><tr id="entity-trade"><td> <code title="">trade;</code> </td> <td> U+02122 </td> <td> <span class="glyph" title="">â„¢</span> </td> </tr><tr id="entity-triangle"><td> <code title="">triangle;</code> </td> <td> U+025B5 </td> <td> <span class="glyph" title="">â–µ</span> </td> </tr><tr id="entity-triangledown"><td> <code title="">triangledown;</code> </td> <td> U+025BF </td> <td> <span class="glyph" title="">â–¿</span> </td> </tr><tr id="entity-triangleleft"><td> <code title="">triangleleft;</code> </td> <td> U+025C3 </td> <td> <span class="glyph" title="">â—ƒ</span> </td> </tr><tr id="entity-trianglelefteq"><td> <code title="">trianglelefteq;</code> </td> <td> U+022B4 </td> <td> <span class="glyph" title="">⊴</span> </td> </tr><tr id="entity-triangleq"><td> <code title="">triangleq;</code> </td> <td> U+0225C </td> <td> <span class="glyph" title="">≜</span> </td> </tr><tr id="entity-triangleright"><td> <code title="">triangleright;</code> </td> <td> U+025B9 </td> <td> <span class="glyph" title="">â–¹</span> </td> </tr><tr id="entity-trianglerighteq"><td> <code title="">trianglerighteq;</code> </td> <td> U+022B5 </td> <td> <span class="glyph" title="">⊵</span> </td> </tr><tr id="entity-tridot"><td> <code title="">tridot;</code> </td> <td> U+025EC </td> <td> <span class="glyph" title="">â—¬</span> </td> </tr><tr id="entity-trie"><td> <code title="">trie;</code> </td> <td> U+0225C </td> <td> <span class="glyph" title="">≜</span> </td> </tr><tr id="entity-triminus"><td> <code title="">triminus;</code> </td> <td> U+02A3A </td> <td> <span class="glyph" title="">⨺</span> </td> </tr><tr id="entity-TripleDot"><td> <code title="">TripleDot;</code> </td> <td> U+020DB </td> <td> <span class="glyph composition" title="">◌⃛</span> </td> </tr><tr id="entity-triplus"><td> <code title="">triplus;</code> </td> <td> U+02A39 </td> <td> <span class="glyph" title="">⨹</span> </td> </tr><tr id="entity-trisb"><td> <code title="">trisb;</code> </td> <td> U+029CD </td> <td> <span class="glyph" title="">⧍</span> </td> </tr><tr id="entity-tritime"><td> <code title="">tritime;</code> </td> <td> U+02A3B </td> <td> <span class="glyph" title="">⨻</span> </td> </tr><tr id="entity-trpezium"><td> <code title="">trpezium;</code> </td> <td> U+023E2 </td> <td> <span class="glyph" title="">⏢</span> </td> </tr><tr id="entity-Tscr"><td> <code title="">Tscr;</code> </td> <td> U+1D4AF </td> <td> <span class="glyph" title="">𝒯</span> </td> </tr><tr id="entity-tscr"><td> <code title="">tscr;</code> </td> <td> U+1D4C9 </td> <td> <span class="glyph" title="">𝓉</span> </td> </tr><tr id="entity-TScy"><td> <code title="">TScy;</code> </td> <td> U+00426 </td> <td> <span class="glyph" title="">Ц</span> </td> </tr><tr id="entity-tscy"><td> <code title="">tscy;</code> </td> <td> U+00446 </td> <td> <span class="glyph" title="">ц</span> </td> </tr><tr id="entity-TSHcy"><td> <code title="">TSHcy;</code> </td> <td> U+0040B </td> <td> <span class="glyph" title="">Ћ</span> </td> </tr><tr id="entity-tshcy"><td> <code title="">tshcy;</code> </td> <td> U+0045B </td> <td> <span class="glyph" title="">Ñ›</span> </td> </tr><tr id="entity-Tstrok"><td> <code title="">Tstrok;</code> </td> <td> U+00166 </td> <td> <span class="glyph" title="">Ŧ</span> </td> </tr><tr id="entity-tstrok"><td> <code title="">tstrok;</code> </td> <td> U+00167 </td> <td> <span class="glyph" title="">ŧ</span> </td> </tr><tr id="entity-twixt"><td> <code title="">twixt;</code> </td> <td> U+0226C </td> <td> <span class="glyph" title="">≬</span> </td> </tr><tr id="entity-twoheadleftarrow"><td> <code title="">twoheadleftarrow;</code> </td> <td> U+0219E </td> <td> <span class="glyph" title="">↞</span> </td> </tr><tr id="entity-twoheadrightarrow"><td> <code title="">twoheadrightarrow;</code> </td> <td> U+021A0 </td> <td> <span class="glyph" title="">↠</span> </td> </tr><tr id="entity-Uacute"><td> <code title="">Uacute;</code> </td> <td> U+000DA </td> <td> <span class="glyph" title="">Ú</span> </td> </tr><tr class="impl" id="entity-Uacute-legacy"><td> <code title="">Uacute</code> </td> <td> U+000DA </td> <td> <span title="">Ú</span> </td> </tr><tr id="entity-uacute"><td> <code title="">uacute;</code> </td> <td> U+000FA </td> <td> <span class="glyph" title="">ú</span> </td> </tr><tr class="impl" id="entity-uacute-legacy"><td> <code title="">uacute</code> </td> <td> U+000FA </td> <td> <span title="">ú</span> </td> </tr><tr id="entity-Uarr"><td> <code title="">Uarr;</code> </td> <td> U+0219F </td> <td> <span class="glyph" title="">↟</span> </td> </tr><tr id="entity-uArr"><td> <code title="">uArr;</code> </td> <td> U+021D1 </td> <td> <span class="glyph" title="">⇑</span> </td> </tr><tr id="entity-uarr"><td> <code title="">uarr;</code> </td> <td> U+02191 </td> <td> <span class="glyph" title="">↑</span> </td> </tr><tr id="entity-Uarrocir"><td> <code title="">Uarrocir;</code> </td> <td> U+02949 </td> <td> <span class="glyph" title="">⥉</span> </td> </tr><tr id="entity-Ubrcy"><td> <code title="">Ubrcy;</code> </td> <td> U+0040E </td> <td> <span class="glyph" title="">ÐŽ</span> </td> </tr><tr id="entity-ubrcy"><td> <code title="">ubrcy;</code> </td> <td> U+0045E </td> <td> <span class="glyph" title="">Ñž</span> </td> </tr><tr id="entity-Ubreve"><td> <code title="">Ubreve;</code> </td> <td> U+0016C </td> <td> <span class="glyph" title="">Ŭ</span> </td> </tr><tr id="entity-ubreve"><td> <code title="">ubreve;</code> </td> <td> U+0016D </td> <td> <span class="glyph" title="">Å­</span> </td> </tr><tr id="entity-Ucirc"><td> <code title="">Ucirc;</code> </td> <td> U+000DB </td> <td> <span class="glyph" title="">Û</span> </td> </tr><tr class="impl" id="entity-Ucirc-legacy"><td> <code title="">Ucirc</code> </td> <td> U+000DB </td> <td> <span title="">Û</span> </td> </tr><tr id="entity-ucirc"><td> <code title="">ucirc;</code> </td> <td> U+000FB </td> <td> <span class="glyph" title="">û</span> </td> </tr><tr class="impl" id="entity-ucirc-legacy"><td> <code title="">ucirc</code> </td> <td> U+000FB </td> <td> <span title="">û</span> </td> </tr><tr id="entity-Ucy"><td> <code title="">Ucy;</code> </td> <td> U+00423 </td> <td> <span class="glyph" title="">У</span> </td> </tr><tr id="entity-ucy"><td> <code title="">ucy;</code> </td> <td> U+00443 </td> <td> <span class="glyph" title="">у</span> </td> </tr><tr id="entity-udarr"><td> <code title="">udarr;</code> </td> <td> U+021C5 </td> <td> <span class="glyph" title="">⇅</span> </td> </tr><tr id="entity-Udblac"><td> <code title="">Udblac;</code> </td> <td> U+00170 </td> <td> <span class="glyph" title="">Ű</span> </td> </tr><tr id="entity-udblac"><td> <code title="">udblac;</code> </td> <td> U+00171 </td> <td> <span class="glyph" title="">ű</span> </td> </tr><tr id="entity-udhar"><td> <code title="">udhar;</code> </td> <td> U+0296E </td> <td> <span class="glyph" title="">⥮</span> </td> </tr><tr id="entity-ufisht"><td> <code title="">ufisht;</code> </td> <td> U+0297E </td> <td> <span class="glyph" title="">⥾</span> </td> </tr><tr id="entity-Ufr"><td> <code title="">Ufr;</code> </td> <td> U+1D518 </td> <td> <span class="glyph" title="">𝔘</span> </td> </tr><tr id="entity-ufr"><td> <code title="">ufr;</code> </td> <td> U+1D532 </td> <td> <span class="glyph" title="">𝔲</span> </td> </tr><tr id="entity-Ugrave"><td> <code title="">Ugrave;</code> </td> <td> U+000D9 </td> <td> <span class="glyph" title="">Ù</span> </td> </tr><tr class="impl" id="entity-Ugrave-legacy"><td> <code title="">Ugrave</code> </td> <td> U+000D9 </td> <td> <span title="">Ù</span> </td> </tr><tr id="entity-ugrave"><td> <code title="">ugrave;</code> </td> <td> U+000F9 </td> <td> <span class="glyph" title="">ù</span> </td> </tr><tr class="impl" id="entity-ugrave-legacy"><td> <code title="">ugrave</code> </td> <td> U+000F9 </td> <td> <span title="">ù</span> </td> </tr><tr id="entity-uHar"><td> <code title="">uHar;</code> </td> <td> U+02963 </td> <td> <span class="glyph" title="">⥣</span> </td> </tr><tr id="entity-uharl"><td> <code title="">uharl;</code> </td> <td> U+021BF </td> <td> <span class="glyph" title="">↿</span> </td> </tr><tr id="entity-uharr"><td> <code title="">uharr;</code> </td> <td> U+021BE </td> <td> <span class="glyph" title="">↾</span> </td> </tr><tr id="entity-uhblk"><td> <code title="">uhblk;</code> </td> <td> U+02580 </td> <td> <span class="glyph" title="">â–€</span> </td> </tr><tr id="entity-ulcorn"><td> <code title="">ulcorn;</code> </td> <td> U+0231C </td> <td> <span class="glyph" title="">⌜</span> </td> </tr><tr id="entity-ulcorner"><td> <code title="">ulcorner;</code> </td> <td> U+0231C </td> <td> <span class="glyph" title="">⌜</span> </td> </tr><tr id="entity-ulcrop"><td> <code title="">ulcrop;</code> </td> <td> U+0230F </td> <td> <span class="glyph" title="">⌏</span> </td> </tr><tr id="entity-ultri"><td> <code title="">ultri;</code> </td> <td> U+025F8 </td> <td> <span class="glyph" title="">â—¸</span> </td> </tr><tr id="entity-Umacr"><td> <code title="">Umacr;</code> </td> <td> U+0016A </td> <td> <span class="glyph" title="">Ū</span> </td> </tr><tr id="entity-umacr"><td> <code title="">umacr;</code> </td> <td> U+0016B </td> <td> <span class="glyph" title="">Å«</span> </td> </tr><tr id="entity-uml"><td> <code title="">uml;</code> </td> <td> U+000A8 </td> <td> <span class="glyph" title="">¨</span> </td> </tr><tr class="impl" id="entity-uml-legacy"><td> <code title="">uml</code> </td> <td> U+000A8 </td> <td> <span title="">¨</span> </td> </tr><tr id="entity-UnderBar"><td> <code title="">UnderBar;</code> </td> <td> U+0005F </td> <td> <span class="glyph" title="">_</span> </td> </tr><tr id="entity-UnderBrace"><td> <code title="">UnderBrace;</code> </td> <td> U+023DF </td> <td> <span class="glyph" title="">⏟</span> </td> </tr><tr id="entity-UnderBracket"><td> <code title="">UnderBracket;</code> </td> <td> U+023B5 </td> <td> <span class="glyph" title="">⎵</span> </td> </tr><tr id="entity-UnderParenthesis"><td> <code title="">UnderParenthesis;</code> </td> <td> U+023DD </td> <td> <span class="glyph" title="">⏝</span> </td> </tr><tr id="entity-Union"><td> <code title="">Union;</code> </td> <td> U+022C3 </td> <td> <span class="glyph" title="">⋃</span> </td> </tr><tr id="entity-UnionPlus"><td> <code title="">UnionPlus;</code> </td> <td> U+0228E </td> <td> <span class="glyph" title="">⊎</span> </td> </tr><tr id="entity-Uogon"><td> <code title="">Uogon;</code> </td> <td> U+00172 </td> <td> <span class="glyph" title="">Ų</span> </td> </tr><tr id="entity-uogon"><td> <code title="">uogon;</code> </td> <td> U+00173 </td> <td> <span class="glyph" title="">ų</span> </td> </tr><tr id="entity-Uopf"><td> <code title="">Uopf;</code> </td> <td> U+1D54C </td> <td> <span class="glyph" title="">𝕌</span> </td> </tr><tr id="entity-uopf"><td> <code title="">uopf;</code> </td> <td> U+1D566 </td> <td> <span class="glyph" title="">𝕦</span> </td> </tr><tr id="entity-UpArrow"><td> <code title="">UpArrow;</code> </td> <td> U+02191 </td> <td> <span class="glyph" title="">↑</span> </td> </tr><tr id="entity-Uparrow"><td> <code title="">Uparrow;</code> </td> <td> U+021D1 </td> <td> <span class="glyph" title="">⇑</span> </td> </tr><tr id="entity-uparrow"><td> <code title="">uparrow;</code> </td> <td> U+02191 </td> <td> <span class="glyph" title="">↑</span> </td> </tr><tr id="entity-UpArrowBar"><td> <code title="">UpArrowBar;</code> </td> <td> U+02912 </td> <td> <span class="glyph" title="">⤒</span> </td> </tr><tr id="entity-UpArrowDownArrow"><td> <code title="">UpArrowDownArrow;</code> </td> <td> U+021C5 </td> <td> <span class="glyph" title="">⇅</span> </td> </tr><tr id="entity-UpDownArrow"><td> <code title="">UpDownArrow;</code> </td> <td> U+02195 </td> <td> <span class="glyph" title="">↕</span> </td> </tr><tr id="entity-Updownarrow"><td> <code title="">Updownarrow;</code> </td> <td> U+021D5 </td> <td> <span class="glyph" title="">⇕</span> </td> </tr><tr id="entity-updownarrow"><td> <code title="">updownarrow;</code> </td> <td> U+02195 </td> <td> <span class="glyph" title="">↕</span> </td> </tr><tr id="entity-UpEquilibrium"><td> <code title="">UpEquilibrium;</code> </td> <td> U+0296E </td> <td> <span class="glyph" title="">⥮</span> </td> </tr><tr id="entity-upharpoonleft"><td> <code title="">upharpoonleft;</code> </td> <td> U+021BF </td> <td> <span class="glyph" title="">↿</span> </td> </tr><tr id="entity-upharpoonright"><td> <code title="">upharpoonright;</code> </td> <td> U+021BE </td> <td> <span class="glyph" title="">↾</span> </td> </tr><tr id="entity-uplus"><td> <code title="">uplus;</code> </td> <td> U+0228E </td> <td> <span class="glyph" title="">⊎</span> </td> </tr><tr id="entity-UpperLeftArrow"><td> <code title="">UpperLeftArrow;</code> </td> <td> U+02196 </td> <td> <span class="glyph" title="">↖</span> </td> </tr><tr id="entity-UpperRightArrow"><td> <code title="">UpperRightArrow;</code> </td> <td> U+02197 </td> <td> <span class="glyph" title="">↗</span> </td> </tr><tr id="entity-Upsi"><td> <code title="">Upsi;</code> </td> <td> U+003D2 </td> <td> <span class="glyph" title="">Ï’</span> </td> </tr><tr id="entity-upsi"><td> <code title="">upsi;</code> </td> <td> U+003C5 </td> <td> <span class="glyph" title="">Ï…</span> </td> </tr><tr id="entity-upsih"><td> <code title="">upsih;</code> </td> <td> U+003D2 </td> <td> <span class="glyph" title="">Ï’</span> </td> </tr><tr id="entity-Upsilon"><td> <code title="">Upsilon;</code> </td> <td> U+003A5 </td> <td> <span class="glyph" title="">Î¥</span> </td> </tr><tr id="entity-upsilon"><td> <code title="">upsilon;</code> </td> <td> U+003C5 </td> <td> <span class="glyph" title="">Ï…</span> </td> </tr><tr id="entity-UpTee"><td> <code title="">UpTee;</code> </td> <td> U+022A5 </td> <td> <span class="glyph" title="">⊥</span> </td> </tr><tr id="entity-UpTeeArrow"><td> <code title="">UpTeeArrow;</code> </td> <td> U+021A5 </td> <td> <span class="glyph" title="">↥</span> </td> </tr><tr id="entity-upuparrows"><td> <code title="">upuparrows;</code> </td> <td> U+021C8 </td> <td> <span class="glyph" title="">⇈</span> </td> </tr><tr id="entity-urcorn"><td> <code title="">urcorn;</code> </td> <td> U+0231D </td> <td> <span class="glyph" title="">⌝</span> </td> </tr><tr id="entity-urcorner"><td> <code title="">urcorner;</code> </td> <td> U+0231D </td> <td> <span class="glyph" title="">⌝</span> </td> </tr><tr id="entity-urcrop"><td> <code title="">urcrop;</code> </td> <td> U+0230E </td> <td> <span class="glyph" title="">⌎</span> </td> </tr><tr id="entity-Uring"><td> <code title="">Uring;</code> </td> <td> U+0016E </td> <td> <span class="glyph" title="">Å®</span> </td> </tr><tr id="entity-uring"><td> <code title="">uring;</code> </td> <td> U+0016F </td> <td> <span class="glyph" title="">ů</span> </td> </tr><tr id="entity-urtri"><td> <code title="">urtri;</code> </td> <td> U+025F9 </td> <td> <span class="glyph" title="">â—¹</span> </td> </tr><tr id="entity-Uscr"><td> <code title="">Uscr;</code> </td> <td> U+1D4B0 </td> <td> <span class="glyph" title="">𝒰</span> </td> </tr><tr id="entity-uscr"><td> <code title="">uscr;</code> </td> <td> U+1D4CA </td> <td> <span class="glyph" title="">𝓊</span> </td> </tr><tr id="entity-utdot"><td> <code title="">utdot;</code> </td> <td> U+022F0 </td> <td> <span class="glyph" title="">â‹°</span> </td> </tr><tr id="entity-Utilde"><td> <code title="">Utilde;</code> </td> <td> U+00168 </td> <td> <span class="glyph" title="">Ũ</span> </td> </tr><tr id="entity-utilde"><td> <code title="">utilde;</code> </td> <td> U+00169 </td> <td> <span class="glyph" title="">Å©</span> </td> </tr><tr id="entity-utri"><td> <code title="">utri;</code> </td> <td> U+025B5 </td> <td> <span class="glyph" title="">â–µ</span> </td> </tr><tr id="entity-utrif"><td> <code title="">utrif;</code> </td> <td> U+025B4 </td> <td> <span class="glyph" title="">â–´</span> </td> </tr><tr id="entity-uuarr"><td> <code title="">uuarr;</code> </td> <td> U+021C8 </td> <td> <span class="glyph" title="">⇈</span> </td> </tr><tr id="entity-Uuml"><td> <code title="">Uuml;</code> </td> <td> U+000DC </td> <td> <span class="glyph" title="">Ü</span> </td> </tr><tr class="impl" id="entity-Uuml-legacy"><td> <code title="">Uuml</code> </td> <td> U+000DC </td> <td> <span title="">Ü</span> </td> </tr><tr id="entity-uuml"><td> <code title="">uuml;</code> </td> <td> U+000FC </td> <td> <span class="glyph" title="">ü</span> </td> </tr><tr class="impl" id="entity-uuml-legacy"><td> <code title="">uuml</code> </td> <td> U+000FC </td> <td> <span title="">ü</span> </td> </tr><tr id="entity-uwangle"><td> <code title="">uwangle;</code> </td> <td> U+029A7 </td> <td> <span class="glyph" title="">⦧</span> </td> </tr><tr id="entity-vangrt"><td> <code title="">vangrt;</code> </td> <td> U+0299C </td> <td> <span class="glyph" title="">⦜</span> </td> </tr><tr id="entity-varepsilon"><td> <code title="">varepsilon;</code> </td> <td> U+003F5 </td> <td> <span class="glyph" title="">ϵ</span> </td> </tr><tr id="entity-varkappa"><td> <code title="">varkappa;</code> </td> <td> U+003F0 </td> <td> <span class="glyph" title="">ϰ</span> </td> </tr><tr id="entity-varnothing"><td> <code title="">varnothing;</code> </td> <td> U+02205 </td> <td> <span class="glyph" title="">∅</span> </td> </tr><tr id="entity-varphi"><td> <code title="">varphi;</code> </td> <td> U+003D5 </td> <td> <span class="glyph" title="">Ï•</span> </td> </tr><tr id="entity-varpi"><td> <code title="">varpi;</code> </td> <td> U+003D6 </td> <td> <span class="glyph" title="">Ï–</span> </td> </tr><tr id="entity-varpropto"><td> <code title="">varpropto;</code> </td> <td> U+0221D </td> <td> <span class="glyph" title="">∝</span> </td> </tr><tr id="entity-vArr"><td> <code title="">vArr;</code> </td> <td> U+021D5 </td> <td> <span class="glyph" title="">⇕</span> </td> </tr><tr id="entity-varr"><td> <code title="">varr;</code> </td> <td> U+02195 </td> <td> <span class="glyph" title="">↕</span> </td> </tr><tr id="entity-varrho"><td> <code title="">varrho;</code> </td> <td> U+003F1 </td> <td> <span class="glyph" title="">ϱ</span> </td> </tr><tr id="entity-varsigma"><td> <code title="">varsigma;</code> </td> <td> U+003C2 </td> <td> <span class="glyph" title="">Ï‚</span> </td> </tr><tr id="entity-varsubsetneq"><td> <code title="">varsubsetneq;</code> </td> <td> U+0228A U+0FE00 </td> <td> <span class="glyph compound" title="">⊊︀</span> </td> </tr><tr id="entity-varsubsetneqq"><td> <code title="">varsubsetneqq;</code> </td> <td> U+02ACB U+0FE00 </td> <td> <span class="glyph compound" title="">⫋︀</span> </td> </tr><tr id="entity-varsupsetneq"><td> <code title="">varsupsetneq;</code> </td> <td> U+0228B U+0FE00 </td> <td> <span class="glyph compound" title="">⊋︀</span> </td> </tr><tr id="entity-varsupsetneqq"><td> <code title="">varsupsetneqq;</code> </td> <td> U+02ACC U+0FE00 </td> <td> <span class="glyph compound" title="">⫌︀</span> </td> </tr><tr id="entity-vartheta"><td> <code title="">vartheta;</code> </td> <td> U+003D1 </td> <td> <span class="glyph" title="">Ï‘</span> </td> </tr><tr id="entity-vartriangleleft"><td> <code title="">vartriangleleft;</code> </td> <td> U+022B2 </td> <td> <span class="glyph" title="">⊲</span> </td> </tr><tr id="entity-vartriangleright"><td> <code title="">vartriangleright;</code> </td> <td> U+022B3 </td> <td> <span class="glyph" title="">⊳</span> </td> </tr><tr id="entity-Vbar"><td> <code title="">Vbar;</code> </td> <td> U+02AEB </td> <td> <span class="glyph" title="">â««</span> </td> </tr><tr id="entity-vBar"><td> <code title="">vBar;</code> </td> <td> U+02AE8 </td> <td> <span class="glyph" title="">⫨</span> </td> </tr><tr id="entity-vBarv"><td> <code title="">vBarv;</code> </td> <td> U+02AE9 </td> <td> <span class="glyph" title="">â«©</span> </td> </tr><tr id="entity-Vcy"><td> <code title="">Vcy;</code> </td> <td> U+00412 </td> <td> <span class="glyph" title="">Ð’</span> </td> </tr><tr id="entity-vcy"><td> <code title="">vcy;</code> </td> <td> U+00432 </td> <td> <span class="glyph" title="">в</span> </td> </tr><tr id="entity-VDash"><td> <code title="">VDash;</code> </td> <td> U+022AB </td> <td> <span class="glyph" title="">⊫</span> </td> </tr><tr id="entity-Vdash"><td> <code title="">Vdash;</code> </td> <td> U+022A9 </td> <td> <span class="glyph" title="">⊩</span> </td> </tr><tr id="entity-vDash"><td> <code title="">vDash;</code> </td> <td> U+022A8 </td> <td> <span class="glyph" title="">⊨</span> </td> </tr><tr id="entity-vdash"><td> <code title="">vdash;</code> </td> <td> U+022A2 </td> <td> <span class="glyph" title="">⊢</span> </td> </tr><tr id="entity-Vdashl"><td> <code title="">Vdashl;</code> </td> <td> U+02AE6 </td> <td> <span class="glyph" title="">⫦</span> </td> </tr><tr id="entity-Vee"><td> <code title="">Vee;</code> </td> <td> U+022C1 </td> <td> <span class="glyph" title="">⋁</span> </td> </tr><tr id="entity-vee"><td> <code title="">vee;</code> </td> <td> U+02228 </td> <td> <span class="glyph" title="">∨</span> </td> </tr><tr id="entity-veebar"><td> <code title="">veebar;</code> </td> <td> U+022BB </td> <td> <span class="glyph" title="">⊻</span> </td> </tr><tr id="entity-veeeq"><td> <code title="">veeeq;</code> </td> <td> U+0225A </td> <td> <span class="glyph" title="">≚</span> </td> </tr><tr id="entity-vellip"><td> <code title="">vellip;</code> </td> <td> U+022EE </td> <td> <span class="glyph" title="">â‹®</span> </td> </tr><tr id="entity-Verbar"><td> <code title="">Verbar;</code> </td> <td> U+02016 </td> <td> <span class="glyph" title="">‖</span> </td> </tr><tr id="entity-verbar"><td> <code title="">verbar;</code> </td> <td> U+0007C </td> <td> <span class="glyph" title="">|</span> </td> </tr><tr id="entity-Vert"><td> <code title="">Vert;</code> </td> <td> U+02016 </td> <td> <span class="glyph" title="">‖</span> </td> </tr><tr id="entity-vert"><td> <code title="">vert;</code> </td> <td> U+0007C </td> <td> <span class="glyph" title="">|</span> </td> </tr><tr id="entity-VerticalBar"><td> <code title="">VerticalBar;</code> </td> <td> U+02223 </td> <td> <span class="glyph" title="">∣</span> </td> </tr><tr id="entity-VerticalLine"><td> <code title="">VerticalLine;</code> </td> <td> U+0007C </td> <td> <span class="glyph" title="">|</span> </td> </tr><tr id="entity-VerticalSeparator"><td> <code title="">VerticalSeparator;</code> </td> <td> U+02758 </td> <td> <span class="glyph" title="">❘</span> </td> </tr><tr id="entity-VerticalTilde"><td> <code title="">VerticalTilde;</code> </td> <td> U+02240 </td> <td> <span class="glyph" title="">≀</span> </td> </tr><tr id="entity-VeryThinSpace"><td> <code title="">VeryThinSpace;</code> </td> <td> U+0200A </td> <td> <span class="glyph" title=""> </span> </td> </tr><tr id="entity-Vfr"><td> <code title="">Vfr;</code> </td> <td> U+1D519 </td> <td> <span class="glyph" title="">𝔙</span> </td> </tr><tr id="entity-vfr"><td> <code title="">vfr;</code> </td> <td> U+1D533 </td> <td> <span class="glyph" title="">𝔳</span> </td> </tr><tr id="entity-vltri"><td> <code title="">vltri;</code> </td> <td> U+022B2 </td> <td> <span class="glyph" title="">⊲</span> </td> </tr><tr id="entity-vnsub"><td> <code title="">vnsub;</code> </td> <td> U+02282 U+020D2 </td> <td> <span class="glyph compound" title="">⊂⃒</span> </td> </tr><tr id="entity-vnsup"><td> <code title="">vnsup;</code> </td> <td> U+02283 U+020D2 </td> <td> <span class="glyph compound" title="">⊃⃒</span> </td> </tr><tr id="entity-Vopf"><td> <code title="">Vopf;</code> </td> <td> U+1D54D </td> <td> <span class="glyph" title="">𝕍</span> </td> </tr><tr id="entity-vopf"><td> <code title="">vopf;</code> </td> <td> U+1D567 </td> <td> <span class="glyph" title="">𝕧</span> </td> </tr><tr id="entity-vprop"><td> <code title="">vprop;</code> </td> <td> U+0221D </td> <td> <span class="glyph" title="">∝</span> </td> </tr><tr id="entity-vrtri"><td> <code title="">vrtri;</code> </td> <td> U+022B3 </td> <td> <span class="glyph" title="">⊳</span> </td> </tr><tr id="entity-Vscr"><td> <code title="">Vscr;</code> </td> <td> U+1D4B1 </td> <td> <span class="glyph" title="">𝒱</span> </td> </tr><tr id="entity-vscr"><td> <code title="">vscr;</code> </td> <td> U+1D4CB </td> <td> <span class="glyph" title="">𝓋</span> </td> </tr><tr id="entity-vsubnE"><td> <code title="">vsubnE;</code> </td> <td> U+02ACB U+0FE00 </td> <td> <span class="glyph compound" title="">⫋︀</span> </td> </tr><tr id="entity-vsubne"><td> <code title="">vsubne;</code> </td> <td> U+0228A U+0FE00 </td> <td> <span class="glyph compound" title="">⊊︀</span> </td> </tr><tr id="entity-vsupnE"><td> <code title="">vsupnE;</code> </td> <td> U+02ACC U+0FE00 </td> <td> <span class="glyph compound" title="">⫌︀</span> </td> </tr><tr id="entity-vsupne"><td> <code title="">vsupne;</code> </td> <td> U+0228B U+0FE00 </td> <td> <span class="glyph compound" title="">⊋︀</span> </td> </tr><tr id="entity-Vvdash"><td> <code title="">Vvdash;</code> </td> <td> U+022AA </td> <td> <span class="glyph" title="">⊪</span> </td> </tr><tr id="entity-vzigzag"><td> <code title="">vzigzag;</code> </td> <td> U+0299A </td> <td> <span class="glyph" title="">⦚</span> </td> </tr><tr id="entity-Wcirc"><td> <code title="">Wcirc;</code> </td> <td> U+00174 </td> <td> <span class="glyph" title="">Å´</span> </td> </tr><tr id="entity-wcirc"><td> <code title="">wcirc;</code> </td> <td> U+00175 </td> <td> <span class="glyph" title="">ŵ</span> </td> </tr><tr id="entity-wedbar"><td> <code title="">wedbar;</code> </td> <td> U+02A5F </td> <td> <span class="glyph" title="">⩟</span> </td> </tr><tr id="entity-Wedge"><td> <code title="">Wedge;</code> </td> <td> U+022C0 </td> <td> <span class="glyph" title="">â‹€</span> </td> </tr><tr id="entity-wedge"><td> <code title="">wedge;</code> </td> <td> U+02227 </td> <td> <span class="glyph" title="">∧</span> </td> </tr><tr id="entity-wedgeq"><td> <code title="">wedgeq;</code> </td> <td> U+02259 </td> <td> <span class="glyph" title="">≙</span> </td> </tr><tr id="entity-weierp"><td> <code title="">weierp;</code> </td> <td> U+02118 </td> <td> <span class="glyph" title="">℘</span> </td> </tr><tr id="entity-Wfr"><td> <code title="">Wfr;</code> </td> <td> U+1D51A </td> <td> <span class="glyph" title="">𝔚</span> </td> </tr><tr id="entity-wfr"><td> <code title="">wfr;</code> </td> <td> U+1D534 </td> <td> <span class="glyph" title="">𝔴</span> </td> </tr><tr id="entity-Wopf"><td> <code title="">Wopf;</code> </td> <td> U+1D54E </td> <td> <span class="glyph" title="">𝕎</span> </td> </tr><tr id="entity-wopf"><td> <code title="">wopf;</code> </td> <td> U+1D568 </td> <td> <span class="glyph" title="">𝕨</span> </td> </tr><tr id="entity-wp"><td> <code title="">wp;</code> </td> <td> U+02118 </td> <td> <span class="glyph" title="">℘</span> </td> </tr><tr id="entity-wr"><td> <code title="">wr;</code> </td> <td> U+02240 </td> <td> <span class="glyph" title="">≀</span> </td> </tr><tr id="entity-wreath"><td> <code title="">wreath;</code> </td> <td> U+02240 </td> <td> <span class="glyph" title="">≀</span> </td> </tr><tr id="entity-Wscr"><td> <code title="">Wscr;</code> </td> <td> U+1D4B2 </td> <td> <span class="glyph" title="">𝒲</span> </td> </tr><tr id="entity-wscr"><td> <code title="">wscr;</code> </td> <td> U+1D4CC </td> <td> <span class="glyph" title="">𝓌</span> </td> </tr><tr id="entity-xcap"><td> <code title="">xcap;</code> </td> <td> U+022C2 </td> <td> <span class="glyph" title="">â‹‚</span> </td> </tr><tr id="entity-xcirc"><td> <code title="">xcirc;</code> </td> <td> U+025EF </td> <td> <span class="glyph" title="">â—¯</span> </td> </tr><tr id="entity-xcup"><td> <code title="">xcup;</code> </td> <td> U+022C3 </td> <td> <span class="glyph" title="">⋃</span> </td> </tr><tr id="entity-xdtri"><td> <code title="">xdtri;</code> </td> <td> U+025BD </td> <td> <span class="glyph" title="">â–½</span> </td> </tr><tr id="entity-Xfr"><td> <code title="">Xfr;</code> </td> <td> U+1D51B </td> <td> <span class="glyph" title="">𝔛</span> </td> </tr><tr id="entity-xfr"><td> <code title="">xfr;</code> </td> <td> U+1D535 </td> <td> <span class="glyph" title="">𝔵</span> </td> </tr><tr id="entity-xhArr"><td> <code title="">xhArr;</code> </td> <td> U+027FA </td> <td> <span class="glyph" title="">⟺</span> </td> </tr><tr id="entity-xharr"><td> <code title="">xharr;</code> </td> <td> U+027F7 </td> <td> <span class="glyph" title="">⟷</span> </td> </tr><tr id="entity-Xi"><td> <code title="">Xi;</code> </td> <td> U+0039E </td> <td> <span class="glyph" title="">Ξ</span> </td> </tr><tr id="entity-xi"><td> <code title="">xi;</code> </td> <td> U+003BE </td> <td> <span class="glyph" title="">ξ</span> </td> </tr><tr id="entity-xlArr"><td> <code title="">xlArr;</code> </td> <td> U+027F8 </td> <td> <span class="glyph" title="">⟸</span> </td> </tr><tr id="entity-xlarr"><td> <code title="">xlarr;</code> </td> <td> U+027F5 </td> <td> <span class="glyph" title="">⟵</span> </td> </tr><tr id="entity-xmap"><td> <code title="">xmap;</code> </td> <td> U+027FC </td> <td> <span class="glyph" title="">⟼</span> </td> </tr><tr id="entity-xnis"><td> <code title="">xnis;</code> </td> <td> U+022FB </td> <td> <span class="glyph" title="">â‹»</span> </td> </tr><tr id="entity-xodot"><td> <code title="">xodot;</code> </td> <td> U+02A00 </td> <td> <span class="glyph" title="">⨀</span> </td> </tr><tr id="entity-Xopf"><td> <code title="">Xopf;</code> </td> <td> U+1D54F </td> <td> <span class="glyph" title="">𝕏</span> </td> </tr><tr id="entity-xopf"><td> <code title="">xopf;</code> </td> <td> U+1D569 </td> <td> <span class="glyph" title="">𝕩</span> </td> </tr><tr id="entity-xoplus"><td> <code title="">xoplus;</code> </td> <td> U+02A01 </td> <td> <span class="glyph" title="">⨁</span> </td> </tr><tr id="entity-xotime"><td> <code title="">xotime;</code> </td> <td> U+02A02 </td> <td> <span class="glyph" title="">⨂</span> </td> </tr><tr id="entity-xrArr"><td> <code title="">xrArr;</code> </td> <td> U+027F9 </td> <td> <span class="glyph" title="">⟹</span> </td> </tr><tr id="entity-xrarr"><td> <code title="">xrarr;</code> </td> <td> U+027F6 </td> <td> <span class="glyph" title="">⟶</span> </td> </tr><tr id="entity-Xscr"><td> <code title="">Xscr;</code> </td> <td> U+1D4B3 </td> <td> <span class="glyph" title="">𝒳</span> </td> </tr><tr id="entity-xscr"><td> <code title="">xscr;</code> </td> <td> U+1D4CD </td> <td> <span class="glyph" title="">𝓍</span> </td> </tr><tr id="entity-xsqcup"><td> <code title="">xsqcup;</code> </td> <td> U+02A06 </td> <td> <span class="glyph" title="">⨆</span> </td> </tr><tr id="entity-xuplus"><td> <code title="">xuplus;</code> </td> <td> U+02A04 </td> <td> <span class="glyph" title="">⨄</span> </td> </tr><tr id="entity-xutri"><td> <code title="">xutri;</code> </td> <td> U+025B3 </td> <td> <span class="glyph" title="">â–³</span> </td> </tr><tr id="entity-xvee"><td> <code title="">xvee;</code> </td> <td> U+022C1 </td> <td> <span class="glyph" title="">⋁</span> </td> </tr><tr id="entity-xwedge"><td> <code title="">xwedge;</code> </td> <td> U+022C0 </td> <td> <span class="glyph" title="">â‹€</span> </td> </tr><tr id="entity-Yacute"><td> <code title="">Yacute;</code> </td> <td> U+000DD </td> <td> <span class="glyph" title="">Ý</span> </td> </tr><tr class="impl" id="entity-Yacute-legacy"><td> <code title="">Yacute</code> </td> <td> U+000DD </td> <td> <span title="">Ý</span> </td> </tr><tr id="entity-yacute"><td> <code title="">yacute;</code> </td> <td> U+000FD </td> <td> <span class="glyph" title="">ý</span> </td> </tr><tr class="impl" id="entity-yacute-legacy"><td> <code title="">yacute</code> </td> <td> U+000FD </td> <td> <span title="">ý</span> </td> </tr><tr id="entity-YAcy"><td> <code title="">YAcy;</code> </td> <td> U+0042F </td> <td> <span class="glyph" title="">Я</span> </td> </tr><tr id="entity-yacy"><td> <code title="">yacy;</code> </td> <td> U+0044F </td> <td> <span class="glyph" title="">я</span> </td> </tr><tr id="entity-Ycirc"><td> <code title="">Ycirc;</code> </td> <td> U+00176 </td> <td> <span class="glyph" title="">Ŷ</span> </td> </tr><tr id="entity-ycirc"><td> <code title="">ycirc;</code> </td> <td> U+00177 </td> <td> <span class="glyph" title="">Å·</span> </td> </tr><tr id="entity-Ycy"><td> <code title="">Ycy;</code> </td> <td> U+0042B </td> <td> <span class="glyph" title="">Ы</span> </td> </tr><tr id="entity-ycy"><td> <code title="">ycy;</code> </td> <td> U+0044B </td> <td> <span class="glyph" title="">Ñ‹</span> </td> </tr><tr id="entity-yen"><td> <code title="">yen;</code> </td> <td> U+000A5 </td> <td> <span class="glyph" title="">Â¥</span> </td> </tr><tr class="impl" id="entity-yen-legacy"><td> <code title="">yen</code> </td> <td> U+000A5 </td> <td> <span title="">Â¥</span> </td> </tr><tr id="entity-Yfr"><td> <code title="">Yfr;</code> </td> <td> U+1D51C </td> <td> <span class="glyph" title="">𝔜</span> </td> </tr><tr id="entity-yfr"><td> <code title="">yfr;</code> </td> <td> U+1D536 </td> <td> <span class="glyph" title="">𝔶</span> </td> </tr><tr id="entity-YIcy"><td> <code title="">YIcy;</code> </td> <td> U+00407 </td> <td> <span class="glyph" title="">Ї</span> </td> </tr><tr id="entity-yicy"><td> <code title="">yicy;</code> </td> <td> U+00457 </td> <td> <span class="glyph" title="">Ñ—</span> </td> </tr><tr id="entity-Yopf"><td> <code title="">Yopf;</code> </td> <td> U+1D550 </td> <td> <span class="glyph" title="">𝕐</span> </td> </tr><tr id="entity-yopf"><td> <code title="">yopf;</code> </td> <td> U+1D56A </td> <td> <span class="glyph" title="">𝕪</span> </td> </tr><tr id="entity-Yscr"><td> <code title="">Yscr;</code> </td> <td> U+1D4B4 </td> <td> <span class="glyph" title="">𝒴</span> </td> </tr><tr id="entity-yscr"><td> <code title="">yscr;</code> </td> <td> U+1D4CE </td> <td> <span class="glyph" title="">𝓎</span> </td> </tr><tr id="entity-YUcy"><td> <code title="">YUcy;</code> </td> <td> U+0042E </td> <td> <span class="glyph" title="">Ю</span> </td> </tr><tr id="entity-yucy"><td> <code title="">yucy;</code> </td> <td> U+0044E </td> <td> <span class="glyph" title="">ÑŽ</span> </td> </tr><tr id="entity-Yuml"><td> <code title="">Yuml;</code> </td> <td> U+00178 </td> <td> <span class="glyph" title="">Ÿ</span> </td> </tr><tr id="entity-yuml"><td> <code title="">yuml;</code> </td> <td> U+000FF </td> <td> <span class="glyph" title="">ÿ</span> </td> </tr><tr class="impl" id="entity-yuml-legacy"><td> <code title="">yuml</code> </td> <td> U+000FF </td> <td> <span title="">ÿ</span> </td> </tr><tr id="entity-Zacute"><td> <code title="">Zacute;</code> </td> <td> U+00179 </td> <td> <span class="glyph" title="">Ź</span> </td> </tr><tr id="entity-zacute"><td> <code title="">zacute;</code> </td> <td> U+0017A </td> <td> <span class="glyph" title="">ź</span> </td> </tr><tr id="entity-Zcaron"><td> <code title="">Zcaron;</code> </td> <td> U+0017D </td> <td> <span class="glyph" title="">Ž</span> </td> </tr><tr id="entity-zcaron"><td> <code title="">zcaron;</code> </td> <td> U+0017E </td> <td> <span class="glyph" title="">ž</span> </td> </tr><tr id="entity-Zcy"><td> <code title="">Zcy;</code> </td> <td> U+00417 </td> <td> <span class="glyph" title="">З</span> </td> </tr><tr id="entity-zcy"><td> <code title="">zcy;</code> </td> <td> U+00437 </td> <td> <span class="glyph" title="">з</span> </td> </tr><tr id="entity-Zdot"><td> <code title="">Zdot;</code> </td> <td> U+0017B </td> <td> <span class="glyph" title="">Å»</span> </td> </tr><tr id="entity-zdot"><td> <code title="">zdot;</code> </td> <td> U+0017C </td> <td> <span class="glyph" title="">ż</span> </td> </tr><tr id="entity-zeetrf"><td> <code title="">zeetrf;</code> </td> <td> U+02128 </td> <td> <span class="glyph" title="">ℨ</span> </td> </tr><tr id="entity-ZeroWidthSpace"><td> <code title="">ZeroWidthSpace;</code> </td> <td> U+0200B </td> <td> <span class="glyph" title="">​</span> </td> </tr><tr id="entity-Zeta"><td> <code title="">Zeta;</code> </td> <td> U+00396 </td> <td> <span class="glyph" title="">Ζ</span> </td> </tr><tr id="entity-zeta"><td> <code title="">zeta;</code> </td> <td> U+003B6 </td> <td> <span class="glyph" title="">ζ</span> </td> </tr><tr id="entity-Zfr"><td> <code title="">Zfr;</code> </td> <td> U+02128 </td> <td> <span class="glyph" title="">ℨ</span> </td> </tr><tr id="entity-zfr"><td> <code title="">zfr;</code> </td> <td> U+1D537 </td> <td> <span class="glyph" title="">𝔷</span> </td> </tr><tr id="entity-ZHcy"><td> <code title="">ZHcy;</code> </td> <td> U+00416 </td> <td> <span class="glyph" title="">Ж</span> </td> </tr><tr id="entity-zhcy"><td> <code title="">zhcy;</code> </td> <td> U+00436 </td> <td> <span class="glyph" title="">ж</span> </td> </tr><tr id="entity-zigrarr"><td> <code title="">zigrarr;</code> </td> <td> U+021DD </td> <td> <span class="glyph" title="">⇝</span> </td> </tr><tr id="entity-Zopf"><td> <code title="">Zopf;</code> </td> <td> U+02124 </td> <td> <span class="glyph" title="">ℤ</span> </td> </tr><tr id="entity-zopf"><td> <code title="">zopf;</code> </td> <td> U+1D56B </td> <td> <span class="glyph" title="">𝕫</span> </td> </tr><tr id="entity-Zscr"><td> <code title="">Zscr;</code> </td> <td> U+1D4B5 </td> <td> <span class="glyph" title="">𝒵</span> </td> </tr><tr id="entity-zscr"><td> <code title="">zscr;</code> </td> <td> U+1D4CF </td> <td> <span class="glyph" title="">𝓏</span> </td> </tr><tr id="entity-zwj"><td> <code title="">zwj;</code> </td> <td> U+0200D </td> <td> <span class="glyph" title="">‍</span> </td> </tr><tr id="entity-zwnj"><td> <code title="">zwnj;</code> </td> <td> U+0200C </td> <td> <span class="glyph" title="">‌</span> </td> </tr></table><!--
1.190 sruby 29940: If we want to add character references, Almorca suggests:
29941: > I would add &sub1; (character U+2081), &sub2;
29942: > (character U+2082) and &sub3; (character U+2083). They
29943: > would are the equivalent to ¹, ², and ³.
29944: See also: http://www.w3.org/2003/entities/
29945: --></div>
29946:
29947: <p>This data is also available <a href="entities.json">as a JSON
29948: file</a>.</p>
29949:
29950: <p><i>The glyphs displayed above are non-normative. Refer to the
29951: Unicode specifications for formal definitions of the characters
29952: listed above.</i></p>
29953:
29954:
29955:
29956: <h2 id="the-xhtml-syntax"><span class="secno">9 </span><dfn id="xhtml">The XHTML syntax</dfn></h2>
29957:
29958: <p class="note">This section only describes the rules for XML
29959: resources. Rules for <code><a href="#text/html">text/html</a></code> resources are discussed
29960: in the section above entitled "<a href="#syntax">The HTML syntax</a>".</p>
29961:
29962:
29963: <div class="impl">
29964:
29965: <h3 id="writing-xhtml-documents"><span class="secno">9.1 </span>Writing XHTML documents</h3>
29966:
29967: </div>
29968:
29969: <p>The syntax for using HTML with XML, whether in XHTML documents or
29970: embedded in other XML documents, is defined in the XML and
29971: Namespaces in XML specifications. <a href="#refsXML">[XML]</a> <a href="#refsXMLNS">[XMLNS]</a></p>
29972:
29973: <p>This specification does not define any syntax-level requirements
29974: beyond those defined for XML proper.</p>
29975:
29976: <p>XML documents may contain a <code>DOCTYPE</code> if desired, but
29977: this is not required to conform to this specification. This
29978: specification does not define a public or system identifier, nor
29979: provide a format DTD.</p>
29980:
29981: <p class="note">According to the XML specification, XML processors
29982: are not guaranteed to process the external DTD subset referenced in
29983: the DOCTYPE. This means, for example, that using entity references
29984: for characters in XHTML documents is unsafe if they are defined in
29985: an external file (except for <code title="">&lt;</code>, <code title="">&gt;</code>, <code title="">&amp;</code>, <code title="">&quot;</code> and <code title="">&apos;</code>).</p>
29986:
29987:
29988: <div class="impl">
29989:
29990: <h3 id="parsing-xhtml-documents"><span class="secno">9.2 </span>Parsing XHTML documents</h3>
29991:
29992: <p>This section describes the relationship between XML and the DOM,
29993: with a particular emphasis on how this interacts with HTML.</p>
29994:
29995: <p>An <dfn id="xml-parser">XML parser</dfn>, for the purposes of this specification,
29996: is a construct that follows the rules given in the XML specification
29997: to map a string of bytes or characters into a <code><a href="dom.html#document">Document</a></code>
29998: object.</p>
29999:
30000: <p>An <a href="#xml-parser">XML parser</a> is either associated with a
30001: <code><a href="dom.html#document">Document</a></code> object when it is created, or creates one
30002: implicitly.</p>
30003:
30004: <p>This <code><a href="dom.html#document">Document</a></code> must then be populated with DOM nodes
30005: that represent the tree structure of the input passed to the parser,
30006: as defined by the XML specification, the Namespaces in XML
30007: specification, and the DOM Core specification. DOM mutation events
30008: must not fire for the operations that the <a href="#xml-parser">XML parser</a>
30009: performs on the <code><a href="dom.html#document">Document</a></code>'s tree, but the user agent
30010: must act as if elements and attributes were individually appended
30011: and set respectively so as to trigger rules in this specification
30012: regarding what happens when an element is inserted into a document
30013: or has its attributes set. <a href="#refsXML">[XML]</a> <a href="#refsXMLNS">[XMLNS]</a> <a href="#refsDOMCORE">[DOMCORE]</a>
30014: <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
30015:
30016: <p>Between the time an element's start tag is parsed and the time
30017: either the element's end tag is parsed or the parser detects a
30018: well-formedness error, the user agent must act as if the element was
30019: in a <a href="#stack-of-open-elements">stack of open elements</a>.</p>
30020:
30021: <p class="note">This is used by the <code><a href="the-object-element.html#the-object-element">object</a></code> element to
30022: avoid instantiating plugins before the <code><a href="the-param-element.html#the-param-element">param</a></code> element
30023: children have been parsed.</p>
30024:
30025: <p>This specification provides the following additional information
30026: that user agents should use when retrieving an external entity: the
1.193 sruby 30027: public identifiers given in the following list all correspond to <a href="data:application/xml-dtd;base64,PCFFTlRJVFkgVGFiICImI3g5OyI%2BPCFFTlRJVFkgTmV3TGluZSAiJiN4QTsiPjwhRU5USVRZIGV4Y2wgIiYjeDIxOyI%2BPCFFTlRJVFkgcXVvdCAiJiN4MjI7Ij48IUVOVElUWSBRVU9UICImI3gyMjsiPjwhRU5USVRZIG51bSAiJiN4MjM7Ij48IUVOVElUWSBkb2xsYXIgIiYjeDI0OyI%2BPCFFTlRJVFkgcGVyY250ICImI3gyNTsiPjwhRU5USVRZIGFtcCAiJiN4MjY7Ij48IUVOVElUWSBBTVAgIiYjeDI2OyI%2BPCFFTlRJVFkgYXBvcyAiJiN4Mjc7Ij48IUVOVElUWSBscGFyICImI3gyODsiPjwhRU5USVRZIHJwYXIgIiYjeDI5OyI%2BPCFFTlRJVFkgYXN0ICImI3gyQTsiPjwhRU5USVRZIG1pZGFzdCAiJiN4MkE7Ij48IUVOVElUWSBwbHVzICImI3gyQjsiPjwhRU5USVRZIGNvbW1hICImI3gyQzsiPjwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij48IUVOVElUWSBzb2wgIiYjeDJGOyI%2BPCFFTlRJVFkgY29sb24gIiYjeDNBOyI%2BPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij48IUVOVElUWSBsdCAiJiN4M0M7Ij48IUVOVElUWSBMVCAiJiN4M0M7Ij48IUVOVElUWSBudmx0ICImI3gzQzsmI3gyMEQyOyI%2BPCFFTlRJVFkgZXF1YWxzICImI3gzRDsiPjwhRU5USVRZIGJuZSAiJiN4M0Q7JiN4MjBFNTsiPjwhRU5USVRZIGd0ICImI3gzRTsiPjwhRU5USVRZIEdUICImI3gzRTsiPjwhRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ij48IUVOVElUWSBxdWVzdCAiJiN4M0Y7Ij48IUVOVElUWSBjb21tYXQgIiYjeDQwOyI%2BPCFFTlRJVFkgbHNxYiAiJiN4NUI7Ij48IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI%2BPCFFTlRJVFkgYnNvbCAiJiN4NUM7Ij48IUVOVElUWSByc3FiICImI3g1RDsiPjwhRU5USVRZIHJicmFjayAiJiN4NUQ7Ij48IUVOVElUWSBIYXQgIiYjeDVFOyI%2BPCFFTlRJVFkgbG93YmFyICImI3g1RjsiPjwhRU5USVRZIFVuZGVyQmFyICImI3g1RjsiPjwhRU5USVRZIGdyYXZlICImI3g2MDsiPjwhRU5USVRZIERpYWNyaXRpY2FsR3JhdmUgIiYjeDYwOyI%2BPCFFTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyI%2BPCFFTlRJVFkgbGN1YiAiJiN4N0I7Ij48IUVOVElUWSBsYnJhY2UgIiYjeDdCOyI%2BPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPjwhRU5USVRZIHZlcnQgIiYjeDdDOyI%2BPCFFTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiPjwhRU5USVRZIHJjdWIgIiYjeDdEOyI%2BPCFFTlRJVFkgcmJyYWNlICImI3g3RDsiPjwhRU5USVRZIG5ic3AgIiYjeEEwOyI%2BPCFFTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij48IUVOVElUWSBpZXhjbCAiJiN4QTE7Ij48IUVOVElUWSBjZW50ICImI3hBMjsiPjwhRU5USVRZIHBvdW5kICImI3hBMzsiPjwhRU5USVRZIGN1cnJlbiAiJiN4QTQ7Ij48IUVOVElUWSB5ZW4gIiYjeEE1OyI%2BPCFFTlRJVFkgYnJ2YmFyICImI3hBNjsiPjwhRU5USVRZIHNlY3QgIiYjeEE3OyI%2BPCFFTlRJVFkgRG90ICImI3hBODsiPjwhRU5USVRZIGRpZSAiJiN4QTg7Ij48IUVOVElUWSBEb3VibGVEb3QgIiYjeEE4OyI%2BPCFFTlRJVFkgdW1sICImI3hBODsiPjwhRU5USVRZIGNvcHkgIiYjeEE5OyI%2BPCFFTlRJVFkgQ09QWSAiJiN4QTk7Ij48IUVOVElUWSBvcmRmICImI3hBQTsiPjwhRU5USVRZIGxhcXVvICImI3hBQjsiPjwhRU5USVRZIG5vdCAiJiN4QUM7Ij48IUVOVElUWSBzaHkgIiYjeEFEOyI%2BPCFFTlRJVFkgcmVnICImI3hBRTsiPjwhRU5USVRZIGNpcmNsZWRSICImI3hBRTsiPjwhRU5USVRZIFJFRyAiJiN4QUU7Ij48IUVOVElUWSBtYWNyICImI3hBRjsiPjwhRU5USVRZIHN0cm5zICImI3hBRjsiPjwhRU5USVRZIGRlZyAiJiN4QjA7Ij48IUVOVElUWSBwbHVzbW4gIiYjeEIxOyI%2BPCFFTlRJVFkgcG0gIiYjeEIxOyI%2BPCFFTlRJVFkgUGx1c01pbnVzICImI3hCMTsiPjwhRU5USVRZIHN1cDIgIiYjeEIyOyI%2BPCFFTlRJVFkgc3VwMyAiJiN4QjM7Ij48IUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ij48IUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiPjwhRU5USVRZIG1pY3JvICImI3hCNTsiPjwhRU5USVRZIHBhcmEgIiYjeEI2OyI%2BPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPjwhRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ij48IUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyI%2BPCFFTlRJVFkgY2VkaWwgIiYjeEI4OyI%2BPCFFTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ij48IUVOVElUWSBzdXAxICImI3hCOTsiPjwhRU5USVRZIG9yZG0gIiYjeEJBOyI%2BPCFFTlRJVFkgcmFxdW8gIiYjeEJCOyI%2BPCFFTlRJVFkgZnJhYzE0ICImI3hCQzsiPjwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij48IUVOVElUWSBoYWxmICImI3hCRDsiPjwhRU5USVRZIGZyYWMzNCAiJiN4QkU7Ij48IUVOVElUWSBpcXVlc3QgIiYjeEJGOyI%2BPCFFTlRJVFkgQWdyYXZlICImI3hDMDsiPjwhRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ij48IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij48IUVOVElUWSBBdGlsZGUgIiYjeEMzOyI%2BPCFFTlRJVFkgQXVtbCAiJiN4QzQ7Ij48IUVOVElUWSBBcmluZyAiJiN4QzU7Ij48IUVOVElUWSBhbmdzdCAiJiN4QzU7Ij48IUVOVElUWSBBRWxpZyAiJiN4QzY7Ij48IUVOVElUWSBDY2VkaWwgIiYjeEM3OyI%2BPCFFTlRJVFkgRWdyYXZlICImI3hDODsiPjwhRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ij48IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij48IUVOVElUWSBFdW1sICImI3hDQjsiPjwhRU5USVRZIElncmF2ZSAiJiN4Q0M7Ij48IUVOVElUWSBJYWN1dGUgIiYjeENEOyI%2BPCFFTlRJVFkgSWNpcmMgIiYjeENFOyI%2BPCFFTlRJVFkgSXVtbCAiJiN4Q0Y7Ij48IUVOVElUWSBFVEggIiYjeEQwOyI%2BPCFFTlRJVFkgTnRpbGRlICImI3hEMTsiPjwhRU5USVRZIE9ncmF2ZSAiJiN4RDI7Ij48IUVOVElUWSBPYWN1dGUgIiYjeEQzOyI%2BPCFFTlRJVFkgT2NpcmMgIiYjeEQ0OyI%2BPCFFTlRJVFkgT3RpbGRlICImI3hENTsiPjwhRU5USVRZIE91bWwgIiYjeEQ2OyI%2BPCFFTlRJVFkgdGltZXMgIiYjeEQ3OyI%2BPCFFTlRJVFkgT3NsYXNoICImI3hEODsiPjwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij48IUVOVElUWSBVYWN1dGUgIiYjeERBOyI%2BPCFFTlRJVFkgVWNpcmMgIiYjeERCOyI%2BPCFFTlRJVFkgVXVtbCAiJiN4REM7Ij48IUVOVElUWSBZYWN1dGUgIiYjeEREOyI%2BPCFFTlRJVFkgVEhPUk4gIiYjeERFOyI%2BPCFFTlRJVFkgc3psaWcgIiYjeERGOyI%2BPCFFTlRJVFkgYWdyYXZlICImI3hFMDsiPjwhRU5USVRZIGFhY3V0ZSAiJiN4RTE7Ij48IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij48IUVOVElUWSBhdGlsZGUgIiYjeEUzOyI%2BPCFFTlRJVFkgYXVtbCAiJiN4RTQ7Ij48IUVOVElUWSBhcmluZyAiJiN4RTU7Ij48IUVOVElUWSBhZWxpZyAiJiN4RTY7Ij48IUVOVElUWSBjY2VkaWwgIiYjeEU3OyI%2BPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPjwhRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ij48IUVOVElUWSBlY2lyYyAiJiN4RUE7Ij48IUVOVElUWSBldW1sICImI3hFQjsiPjwhRU5USVRZIGlncmF2ZSAiJiN4RUM7Ij48IUVOVElUWSBpYWN1dGUgIiYjeEVEOyI%2BPCFFTlRJVFkgaWNpcmMgIiYjeEVFOyI%2BPCFFTlRJVFkgaXVtbCAiJiN4RUY7Ij48IUVOVElUWSBldGggIiYjeEYwOyI%2BPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPjwhRU5USVRZIG9ncmF2ZSAiJiN4RjI7Ij48IUVOVElUWSBvYWN1dGUgIiYjeEYzOyI%2BPCFFTlRJVFkgb2NpcmMgIiYjeEY0OyI%2BPCFFTlRJVFkgb3RpbGRlICImI3hGNTsiPjwhRU5USVRZIG91bWwgIiYjeEY2OyI%2BPCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPjwhRU5USVRZIGRpdiAiJiN4Rjc7Ij48IUVOVElUWSBvc2xhc2ggIiYjeEY4OyI%2BPCFFTlRJVFkgdWdyYXZlICImI3hGOTsiPjwhRU5USVRZIHVhY3V0ZSAiJiN4RkE7Ij48IUVOVElUWSB1Y2lyYyAiJiN4RkI7Ij48IUVOVElUWSB1dW1sICImI3hGQzsiPjwhRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ij48IUVOVElUWSB0aG9ybiAiJiN4RkU7Ij48IUVOVElUWSB5dW1sICImI3hGRjsiPjwhRU5USVRZIEFtYWNyICImI3gxMDA7Ij48IUVOVElUWSBhbWFjciAiJiN4MTAxOyI%2BPCFFTlRJVFkgQWJyZXZlICImI3gxMDI7Ij48IUVOVElUWSBhYnJldmUgIiYjeDEwMzsiPjwhRU5USVRZIEFvZ29uICImI3gxMDQ7Ij48IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI%2BPCFFTlRJVFkgQ2FjdXRlICImI3gxMDY7Ij48IUVOVElUWSBjYWN1dGUgIiYjeDEwNzsiPjwhRU5USVRZIENjaXJjICImI3gxMDg7Ij48IUVOVElUWSBjY2lyYyAiJiN4MTA5OyI%2BPCFFTlRJVFkgQ2RvdCAiJiN4MTBBOyI%2BPCFFTlRJVFkgY2RvdCAiJiN4MTBCOyI%2BPCFFTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ij48IUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiPjwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI%2BPCFFTlRJVFkgZGNhcm9uICImI3gxMEY7Ij48IUVOVElUWSBEc3Ryb2sgIiYjeDExMDsiPjwhRU5USVRZIGRzdHJvayAiJiN4MTExOyI%2BPCFFTlRJVFkgRW1hY3IgIiYjeDExMjsiPjwhRU5USVRZIGVtYWNyICImI3gxMTM7Ij48IUVOVElUWSBFZG90ICImI3gxMTY7Ij48IUVOVElUWSBlZG90ICImI3gxMTc7Ij48IUVOVElUWSBFb2dvbiAiJiN4MTE4OyI%2BPCFFTlRJVFkgZW9nb24gIiYjeDExOTsiPjwhRU5USVRZIEVjYXJvbiAiJiN4MTFBOyI%2BPCFFTlRJVFkgZWNhcm9uICImI3gxMUI7Ij48IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI%2BPCFFTlRJVFkgZ2NpcmMgIiYjeDExRDsiPjwhRU5USVRZIEdicmV2ZSAiJiN4MTFFOyI%2BPCFFTlRJVFkgZ2JyZXZlICImI3gxMUY7Ij48IUVOVElUWSBHZG90ICImI3gxMjA7Ij48IUVOVElUWSBnZG90ICImI3gxMjE7Ij48IUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiPjwhRU5USVRZIEhjaXJjICImI3gxMjQ7Ij48IUVOVElUWSBoY2lyYyAiJiN4MTI1OyI%2BPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij48IUVOVElUWSBoc3Ryb2sgIiYjeDEyNzsiPjwhRU5USVRZIEl0aWxkZSAiJiN4MTI4OyI%2BPCFFTlRJVFkgaXRpbGRlICImI3gxMjk7Ij48IUVOVElUWSBJbWFjciAiJiN4MTJBOyI%2BPCFFTlRJVFkgaW1hY3IgIiYjeDEyQjsiPjwhRU5USVRZIElvZ29uICImI3gxMkU7Ij48IUVOVElUWSBpb2dvbiAiJiN4MTJGOyI%2BPCFFTlRJVFkgSWRvdCAiJiN4MTMwOyI%2BPCFFTlRJVFkgaW1hdGggIiYjeDEzMTsiPjwhRU5USVRZIGlub2RvdCAiJiN4MTMxOyI%2BPCFFTlRJVFkgSUpsaWcgIiYjeDEzMjsiPjwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij48IUVOVElUWSBKY2lyYyAiJiN4MTM0OyI%2BPCFFTlRJVFkgamNpcmMgIiYjeDEzNTsiPjwhRU5USVRZIEtjZWRpbCAiJiN4MTM2OyI%2BPCFFTlRJVFkga2NlZGlsICImI3gxMzc7Ij48IUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiPjwhRU5USVRZIExhY3V0ZSAiJiN4MTM5OyI%2BPCFFTlRJVFkgbGFjdXRlICImI3gxM0E7Ij48IUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiPjwhRU5USVRZIGxjZWRpbCAiJiN4MTNDOyI%2BPCFFTlRJVFkgTGNhcm9uICImI3gxM0Q7Ij48IUVOVElUWSBsY2Fyb24gIiYjeDEzRTsiPjwhRU5USVRZIExtaWRvdCAiJiN4MTNGOyI%2BPCFFTlRJVFkgbG1pZG90ICImI3gxNDA7Ij48IUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiPjwhRU5USVRZIGxzdHJvayAiJiN4MTQyOyI%2BPCFFTlRJVFkgTmFjdXRlICImI3gxNDM7Ij48IUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiPjwhRU5USVRZIE5jZWRpbCAiJiN4MTQ1OyI%2BPCFFTlRJVFkgbmNlZGlsICImI3gxNDY7Ij48IUVOVElUWSBOY2Fyb24gIiYjeDE0NzsiPjwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI%2BPCFFTlRJVFkgbmFwb3MgIiYjeDE0OTsiPjwhRU5USVRZIEVORyAiJiN4MTRBOyI%2BPCFFTlRJVFkgZW5nICImI3gxNEI7Ij48IUVOVElUWSBPbWFjciAiJiN4MTRDOyI%2BPCFFTlRJVFkgb21hY3IgIiYjeDE0RDsiPjwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI%2BPCFFTlRJVFkgb2RibGFjICImI3gxNTE7Ij48IUVOVElUWSBPRWxpZyAiJiN4MTUyOyI%2BPCFFTlRJVFkgb2VsaWcgIiYjeDE1MzsiPjwhRU5USVRZIFJhY3V0ZSAiJiN4MTU0OyI%2BPCFFTlRJVFkgcmFjdXRlICImI3gxNTU7Ij48IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPjwhRU5USVRZIHJjZWRpbCAiJiN4MTU3OyI%2BPCFFTlRJVFkgUmNhcm9uICImI3gxNTg7Ij48IUVOVElUWSByY2Fyb24gIiYjeDE1OTsiPjwhRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyI%2BPCFFTlRJVFkgc2FjdXRlICImI3gxNUI7Ij48IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI%2BPCFFTlRJVFkgc2NpcmMgIiYjeDE1RDsiPjwhRU5USVRZIFNjZWRpbCAiJiN4MTVFOyI%2BPCFFTlRJVFkgc2NlZGlsICImI3gxNUY7Ij48IUVOVElUWSBTY2Fyb24gIiYjeDE2MDsiPjwhRU5USVRZIHNjYXJvbiAiJiN4MTYxOyI%2BPCFFTlRJVFkgVGNlZGlsICImI3gxNjI7Ij48IUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiPjwhRU5USVRZIFRjYXJvbiAiJiN4MTY0OyI%2BPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7Ij48IUVOVElUWSBUc3Ryb2sgIiYjeDE2NjsiPjwhRU5USVRZIHRzdHJvayAiJiN4MTY3OyI%2BPCFFTlRJVFkgVXRpbGRlICImI3gxNjg7Ij48IUVOVElUWSB1dGlsZGUgIiYjeDE2OTsiPjwhRU5USVRZIFVtYWNyICImI3gxNkE7Ij48IUVOVElUWSB1bWFjciAiJiN4MTZCOyI%2BPCFFTlRJVFkgVWJyZXZlICImI3gxNkM7Ij48IUVOVElUWSB1YnJldmUgIiYjeDE2RDsiPjwhRU5USVRZIFVyaW5nICImI3gxNkU7Ij48IUVOVElUWSB1cmluZyAiJiN4MTZGOyI%2BPCFFTlRJVFkgVWRibGFjICImI3gxNzA7Ij48IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPjwhRU5USVRZIFVvZ29uICImI3gxNzI7Ij48IUVOVElUWSB1b2dvbiAiJiN4MTczOyI%2BPCFFTlRJVFkgV2NpcmMgIiYjeDE3NDsiPjwhRU5USVRZIHdjaXJjICImI3gxNzU7Ij48IUVOVElUWSBZY2lyYyAiJiN4MTc2OyI%2BPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPjwhRU5USVRZIFl1bWwgIiYjeDE3ODsiPjwhRU5USVRZIFphY3V0ZSAiJiN4MTc5OyI%2BPCFFTlRJVFkgemFjdXRlICImI3gxN0E7Ij48IUVOVElUWSBaZG90ICImI3gxN0I7Ij48IUVOVElUWSB6ZG90ICImI3gxN0M7Ij48IUVOVElUWSBaY2Fyb24gIiYjeDE3RDsiPjwhRU5USVRZIHpjYXJvbiAiJiN4MTdFOyI%2BPCFFTlRJVFkgZm5vZiAiJiN4MTkyOyI%2BPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPjwhRU5USVRZIGdhY3V0ZSAiJiN4MUY1OyI%2BPCFFTlRJVFkgam1hdGggIiYjeDIzNzsiPjwhRU5USVRZIGNpcmMgIiYjeDJDNjsiPjwhRU5USVRZIGNhcm9uICImI3gyQzc7Ij48IUVOVElUWSBIYWNlayAiJiN4MkM3OyI%2BPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPjwhRU5USVRZIEJyZXZlICImI3gyRDg7Ij48IUVOVElUWSBkb3QgIiYjeDJEOTsiPjwhRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ij48IUVOVElUWSByaW5nICImI3gyREE7Ij48IUVOVElUWSBvZ29uICImI3gyREI7Ij48IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI%2BPCFFTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyI%2BPCFFTlRJVFkgZGJsYWMgIiYjeDJERDsiPjwhRU5USVRZIERpYWNyaXRpY2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPjwhRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyI%2BPCFFTlRJVFkgQWxwaGEgIiYjeDM5MTsiPjwhRU5USVRZIEJldGEgIiYjeDM5MjsiPjwhRU5USVRZIEdhbW1hICImI3gzOTM7Ij48IUVOVElUWSBEZWx0YSAiJiN4Mzk0OyI%2BPCFFTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyI%2BPCFFTlRJVFkgWmV0YSAiJiN4Mzk2OyI%2BPCFFTlRJVFkgRXRhICImI3gzOTc7Ij48IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI%2BPCFFTlRJVFkgSW90YSAiJiN4Mzk5OyI%2BPCFFTlRJVFkgS2FwcGEgIiYjeDM5QTsiPjwhRU5USVRZIExhbWJkYSAiJiN4MzlCOyI%2BPCFFTlRJVFkgTXUgIiYjeDM5QzsiPjwhRU5USVRZIE51ICImI3gzOUQ7Ij48IUVOVElUWSBYaSAiJiN4MzlFOyI%2BPCFFTlRJVFkgT21pY3JvbiAiJiN4MzlGOyI%2BPCFFTlRJVFkgUGkgIiYjeDNBMDsiPjwhRU5USVRZIFJobyAiJiN4M0ExOyI%2BPCFFTlRJVFkgU2lnbWEgIiYjeDNBMzsiPjwhRU5USVRZIFRhdSAiJiN4M0E0OyI%2BPCFFTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyI%2BPCFFTlRJVFkgUGhpICImI3gzQTY7Ij48IUVOVElUWSBDaGkgIiYjeDNBNzsiPjwhRU5USVRZIFBzaSAiJiN4M0E4OyI%2BPCFFTlRJVFkgT21lZ2EgIiYjeDNBOTsiPjwhRU5USVRZIG9obSAiJiN4M0E5OyI%2BPCFFTlRJVFkgYWxwaGEgIiYjeDNCMTsiPjwhRU5USVRZIGJldGEgIiYjeDNCMjsiPjwhRU5USVRZIGdhbW1hICImI3gzQjM7Ij48IUVOVElUWSBkZWx0YSAiJiN4M0I0OyI%2BPCFFTlRJVFkgZXBzaSAiJiN4M0I1OyI%2BPCFFTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyI%2BPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI%2BPCFFTlRJVFkgZXRhICImI3gzQjc7Ij48IUVOVElUWSB0aGV0YSAiJiN4M0I4OyI%2BPCFFTlRJVFkgaW90YSAiJiN4M0I5OyI%2BPCFFTlRJVFkga2FwcGEgIiYjeDNCQTsiPjwhRU5USVRZIGxhbWJkYSAiJiN4M0JCOyI%2BPCFFTlRJVFkgbXUgIiYjeDNCQzsiPjwhRU5USVRZIG51ICImI3gzQkQ7Ij48IUVOVElUWSB4aSAiJiN4M0JFOyI%2BPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JGOyI%2BPCFFTlRJVFkgcGkgIiYjeDNDMDsiPjwhRU5USVRZIHJobyAiJiN4M0MxOyI%2BPCFFTlRJVFkgc2lnbWF2ICImI3gzQzI7Ij48IUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyI%2BPCFFTlRJVFkgc2lnbWFmICImI3gzQzI7Ij48IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI%2BPCFFTlRJVFkgdGF1ICImI3gzQzQ7Ij48IUVOVElUWSB1cHNpICImI3gzQzU7Ij48IUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ij48IUVOVElUWSBwaGkgIiYjeDNDNjsiPjwhRU5USVRZIGNoaSAiJiN4M0M3OyI%2BPCFFTlRJVFkgcHNpICImI3gzQzg7Ij48IUVOVElUWSBvbWVnYSAiJiN4M0M5OyI%2BPCFFTlRJVFkgdGhldGF2ICImI3gzRDE7Ij48IUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyI%2BPCFFTlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiPjwhRU5USVRZIFVwc2kgIiYjeDNEMjsiPjwhRU5USVRZIHVwc2loICImI3gzRDI7Ij48IUVOVElUWSBzdHJhaWdodHBoaSAiJiN4M0Q1OyI%2BPCFFTlRJVFkgcGhpdiAiJiN4M0Q1OyI%2BPCFFTlRJVFkgdmFycGhpICImI3gzRDU7Ij48IUVOVElUWSBwaXYgIiYjeDNENjsiPjwhRU5USVRZIHZhcnBpICImI3gzRDY7Ij48IUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiPjwhRU5USVRZIGdhbW1hZCAiJiN4M0REOyI%2BPCFFTlRJVFkgZGlnYW1tYSAiJiN4M0REOyI%2BPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij48IUVOVElUWSB2YXJrYXBwYSAiJiN4M0YwOyI%2BPCFFTlRJVFkgcmhvdiAiJiN4M0YxOyI%2BPCFFTlRJVFkgdmFycmhvICImI3gzRjE7Ij48IUVOVElUWSBlcHNpdiAiJiN4M0Y1OyI%2BPCFFTlRJVFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ij48IUVOVElUWSB2YXJlcHNpbG9uICImI3gzRjU7Ij48IUVOVElUWSBiZXBzaSAiJiN4M0Y2OyI%2BPCFFTlRJVFkgYmFja2Vwc2lsb24gIiYjeDNGNjsiPjwhRU5USVRZIElPY3kgIiYjeDQwMTsiPjwhRU5USVRZIERKY3kgIiYjeDQwMjsiPjwhRU5USVRZIEdKY3kgIiYjeDQwMzsiPjwhRU5USVRZIEp1a2N5ICImI3g0MDQ7Ij48IUVOVElUWSBEU2N5ICImI3g0MDU7Ij48IUVOVElUWSBJdWtjeSAiJiN4NDA2OyI%2BPCFFTlRJVFkgWUljeSAiJiN4NDA3OyI%2BPCFFTlRJVFkgSnNlcmN5ICImI3g0MDg7Ij48IUVOVElUWSBMSmN5ICImI3g0MDk7Ij48IUVOVElUWSBOSmN5ICImI3g0MEE7Ij48IUVOVElUWSBUU0hjeSAiJiN4NDBCOyI%2BPCFFTlRJVFkgS0pjeSAiJiN4NDBDOyI%2BPCFFTlRJVFkgVWJyY3kgIiYjeDQwRTsiPjwhRU5USVRZIERaY3kgIiYjeDQwRjsiPjwhRU5USVRZIEFjeSAiJiN4NDEwOyI%2BPCFFTlRJVFkgQmN5ICImI3g0MTE7Ij48IUVOVElUWSBWY3kgIiYjeDQxMjsiPjwhRU5USVRZIEdjeSAiJiN4NDEzOyI%2BPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij48IUVOVElUWSBJRWN5ICImI3g0MTU7Ij48IUVOVElUWSBaSGN5ICImI3g0MTY7Ij48IUVOVElUWSBaY3kgIiYjeDQxNzsiPjwhRU5USVRZIEljeSAiJiN4NDE4OyI%2BPCFFTlRJVFkgSmN5ICImI3g0MTk7Ij48IUVOVElUWSBLY3kgIiYjeDQxQTsiPjwhRU5USVRZIExjeSAiJiN4NDFCOyI%2BPCFFTlRJVFkgTWN5ICImI3g0MUM7Ij48IUVOVElUWSBOY3kgIiYjeDQxRDsiPjwhRU5USVRZIE9jeSAiJiN4NDFFOyI%2BPCFFTlRJVFkgUGN5ICImI3g0MUY7Ij48IUVOVElUWSBSY3kgIiYjeDQyMDsiPjwhRU5USVRZIFNjeSAiJiN4NDIxOyI%2BPCFFTlRJVFkgVGN5ICImI3g0MjI7Ij48IUVOVElUWSBVY3kgIiYjeDQyMzsiPjwhRU5USVRZIEZjeSAiJiN4NDI0OyI%2BPCFFTlRJVFkgS0hjeSAiJiN4NDI1OyI%2BPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI%2BPCFFTlRJVFkgQ0hjeSAiJiN4NDI3OyI%2BPCFFTlRJVFkgU0hjeSAiJiN4NDI4OyI%2BPCFFTlRJVFkgU0hDSGN5ICImI3g0Mjk7Ij48IUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiPjwhRU5USVRZIFljeSAiJiN4NDJCOyI%2BPCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij48IUVOVElUWSBFY3kgIiYjeDQyRDsiPjwhRU5USVRZIFlVY3kgIiYjeDQyRTsiPjwhRU5USVRZIFlBY3kgIiYjeDQyRjsiPjwhRU5USVRZIGFjeSAiJiN4NDMwOyI%2BPCFFTlRJVFkgYmN5ICImI3g0MzE7Ij48IUVOVElUWSB2Y3kgIiYjeDQzMjsiPjwhRU5USVRZIGdjeSAiJiN4NDMzOyI%2BPCFFTlRJVFkgZGN5ICImI3g0MzQ7Ij48IUVOVElUWSBpZWN5ICImI3g0MzU7Ij48IUVOVElUWSB6aGN5ICImI3g0MzY7Ij48IUVOVElUWSB6Y3kgIiYjeDQzNzsiPjwhRU5USVRZIGljeSAiJiN4NDM4OyI%2BPCFFTlRJVFkgamN5ICImI3g0Mzk7Ij48IUVOVElUWSBrY3kgIiYjeDQzQTsiPjwhRU5USVRZIGxjeSAiJiN4NDNCOyI%2BPCFFTlRJVFkgbWN5ICImI3g0M0M7Ij48IUVOVElUWSBuY3kgIiYjeDQzRDsiPjwhRU5USVRZIG9jeSAiJiN4NDNFOyI%2BPCFFTlRJVFkgcGN5ICImI3g0M0Y7Ij48IUVOVElUWSByY3kgIiYjeDQ0MDsiPjwhRU5USVRZIHNjeSAiJiN4NDQxOyI%2BPCFFTlRJVFkgdGN5ICImI3g0NDI7Ij48IUVOVElUWSB1Y3kgIiYjeDQ0MzsiPjwhRU5USVRZIGZjeSAiJiN4NDQ0OyI%2BPCFFTlRJVFkga2hjeSAiJiN4NDQ1OyI%2BPCFFTlRJVFkgdHNjeSAiJiN4NDQ2OyI%2BPCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI%2BPCFFTlRJVFkgc2hjeSAiJiN4NDQ4OyI%2BPCFFTlRJVFkgc2hjaGN5ICImI3g0NDk7Ij48IUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiPjwhRU5USVRZIHljeSAiJiN4NDRCOyI%2BPCFFTlRJVFkgc29mdGN5ICImI3g0NEM7Ij48IUVOVElUWSBlY3kgIiYjeDQ0RDsiPjwhRU5USVRZIHl1Y3kgIiYjeDQ0RTsiPjwhRU5USVRZIHlhY3kgIiYjeDQ0RjsiPjwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPjwhRU5USVRZIGRqY3kgIiYjeDQ1MjsiPjwhRU5USVRZIGdqY3kgIiYjeDQ1MzsiPjwhRU5USVRZIGp1a2N5ICImI3g0NTQ7Ij48IUVOVElUWSBkc2N5ICImI3g0NTU7Ij48IUVOVElUWSBpdWtjeSAiJiN4NDU2OyI%2BPCFFTlRJVFkgeWljeSAiJiN4NDU3OyI%2BPCFFTlRJVFkganNlcmN5ICImI3g0NTg7Ij48IUVOVElUWSBsamN5ICImI3g0NTk7Ij48IUVOVElUWSBuamN5ICImI3g0NUE7Ij48IUVOVElUWSB0c2hjeSAiJiN4NDVCOyI%2BPCFFTlRJVFkga2pjeSAiJiN4NDVDOyI%2BPCFFTlRJVFkgdWJyY3kgIiYjeDQ1RTsiPjwhRU5USVRZIGR6Y3kgIiYjeDQ1RjsiPjwhRU5USVRZIGVuc3AgIiYjeDIwMDI7Ij48IUVOVElUWSBlbXNwICImI3gyMDAzOyI%2BPCFFTlRJVFkgZW1zcDEzICImI3gyMDA0OyI%2BPCFFTlRJVFkgZW1zcDE0ICImI3gyMDA1OyI%2BPCFFTlRJVFkgbnVtc3AgIiYjeDIwMDc7Ij48IUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ij48IUVOVElUWSB0aGluc3AgIiYjeDIwMDk7Ij48IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij48IUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ij48IUVOVElUWSBWZXJ5VGhpblNwYWNlICImI3gyMDBBOyI%2BPCFFTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij48IUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ij48IUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiPjwhRU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij48IUVOVElUWSBOZWdhdGl2ZVRoaWNrU3BhY2UgIiYjeDIwMEI7Ij48IUVOVElUWSB6d25qICImI3gyMDBDOyI%2BPCFFTlRJVFkgendqICImI3gyMDBEOyI%2BPCFFTlRJVFkgbHJtICImI3gyMDBFOyI%2BPCFFTlRJVFkgcmxtICImI3gyMDBGOyI%2BPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI%2BPCFFTlRJVFkgZGFzaCAiJiN4MjAxMDsiPjwhRU5USVRZIG5kYXNoICImI3gyMDEzOyI%2BPCFFTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ij48IUVOVElUWSBob3JiYXIgIiYjeDIwMTU7Ij48IUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ij48IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI%2BPCFFTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ij48IUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiPjwhRU5USVRZIHJzcXVvICImI3gyMDE5OyI%2BPCFFTlRJVFkgcnNxdW9yICImI3gyMDE5OyI%2BPCFFTlRJVFkgQ2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyI%2BPCFFTlRJVFkgbHNxdW9yICImI3gyMDFBOyI%2BPCFFTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ij48IUVOVElUWSBsZHF1byAiJiN4MjAxQzsiPjwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI%2BPCFFTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ij48IUVOVElUWSByZHF1b3IgIiYjeDIwMUQ7Ij48IUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij48IUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ij48IUVOVElUWSBiZHF1byAiJiN4MjAxRTsiPjwhRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiPjwhRU5USVRZIERhZ2dlciAiJiN4MjAyMTsiPjwhRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ij48IUVOVElUWSBidWxsICImI3gyMDIyOyI%2BPCFFTlRJVFkgYnVsbGV0ICImI3gyMDIyOyI%2BPCFFTlRJVFkgbmxkciAiJiN4MjAyNTsiPjwhRU5USVRZIGhlbGxpcCAiJiN4MjAyNjsiPjwhRU5USVRZIG1sZHIgIiYjeDIwMjY7Ij48IUVOVElUWSBwZXJtaWwgIiYjeDIwMzA7Ij48IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI%2BPCFFTlRJVFkgcHJpbWUgIiYjeDIwMzI7Ij48IUVOVElUWSBQcmltZSAiJiN4MjAzMzsiPjwhRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiPjwhRU5USVRZIGJwcmltZSAiJiN4MjAzNTsiPjwhRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiPjwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPjwhRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiPjwhRU5USVRZIG9saW5lICImI3gyMDNFOyI%2BPCFFTlRJVFkgT3ZlckJhciAiJiN4MjAzRTsiPjwhRU5USVRZIGNhcmV0ICImI3gyMDQxOyI%2BPCFFTlRJVFkgaHlidWxsICImI3gyMDQzOyI%2BPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij48IUVOVElUWSBic2VtaSAiJiN4MjA0RjsiPjwhRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiPjwhRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyI%2BPCFFTlRJVFkgVGhpY2tTcGFjZSAiJiN4MjA1RjsmI3gyMDBBOyI%2BPCFFTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiPjwhRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ij48IUVOVElUWSBhZiAiJiN4MjA2MTsiPjwhRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyI%2BPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij48IUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4MjA2MzsiPjwhRU5USVRZIGljICImI3gyMDYzOyI%2BPCFFTlRJVFkgZXVybyAiJiN4MjBBQzsiPjwhRU5USVRZIHRkb3QgIiYjeDIwREI7Ij48IUVOVElUWSBUcmlwbGVEb3QgIiYjeDIwREI7Ij48IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij48IUVOVElUWSBDb3BmICImI3gyMTAyOyI%2BPCFFTlRJVFkgY29tcGxleGVzICImI3gyMTAyOyI%2BPCFFTlRJVFkgaW5jYXJlICImI3gyMTA1OyI%2BPCFFTlRJVFkgZ3NjciAiJiN4MjEwQTsiPjwhRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiPjwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiPjwhRU5USVRZIEhzY3IgIiYjeDIxMEI7Ij48IUVOVElUWSBIZnIgIiYjeDIxMEM7Ij48IUVOVElUWSBQb2luY2FyZXBsYW5lICImI3gyMTBDOyI%2BPCFFTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ij48IUVOVElUWSBIb3BmICImI3gyMTBEOyI%2BPCFFTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsiPjwhRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiPjwhRU5USVRZIGhiYXIgIiYjeDIxMEY7Ij48IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij48IUVOVElUWSBoc2xhc2ggIiYjeDIxMEY7Ij48IUVOVElUWSBJc2NyICImI3gyMTEwOyI%2BPCFFTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ij48IUVOVElUWSBpbWFnZSAiJiN4MjExMTsiPjwhRU5USVRZIEltICImI3gyMTExOyI%2BPCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij48IUVOVElUWSBJZnIgIiYjeDIxMTE7Ij48IUVOVElUWSBMc2NyICImI3gyMTEyOyI%2BPCFFTlRJVFkgbGFncmFuICImI3gyMTEyOyI%2BPCFFTlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiPjwhRU5USVRZIGVsbCAiJiN4MjExMzsiPjwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij48IUVOVElUWSBuYXR1cmFscyAiJiN4MjExNTsiPjwhRU5USVRZIG51bWVybyAiJiN4MjExNjsiPjwhRU5USVRZIGNvcHlzciAiJiN4MjExNzsiPjwhRU5USVRZIHdlaWVycCAiJiN4MjExODsiPjwhRU5USVRZIHdwICImI3gyMTE4OyI%2BPCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPjwhRU5USVRZIHByaW1lcyAiJiN4MjExOTsiPjwhRU5USVRZIHJhdGlvbmFscyAiJiN4MjExQTsiPjwhRU5USVRZIFFvcGYgIiYjeDIxMUE7Ij48IUVOVElUWSBSc2NyICImI3gyMTFCOyI%2BPCFFTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiPjwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij48IUVOVElUWSBSZSAiJiN4MjExQzsiPjwhRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyI%2BPCFFTlRJVFkgUmZyICImI3gyMTFDOyI%2BPCFFTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ij48IUVOVElUWSBSb3BmICImI3gyMTFEOyI%2BPCFFTlRJVFkgcnggIiYjeDIxMUU7Ij48IUVOVElUWSB0cmFkZSAiJiN4MjEyMjsiPjwhRU5USVRZIFRSQURFICImI3gyMTIyOyI%2BPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ij48IUVOVElUWSBab3BmICImI3gyMTI0OyI%2BPCFFTlRJVFkgbWhvICImI3gyMTI3OyI%2BPCFFTlRJVFkgWmZyICImI3gyMTI4OyI%2BPCFFTlRJVFkgemVldHJmICImI3gyMTI4OyI%2BPCFFTlRJVFkgaWlvdGEgIiYjeDIxMjk7Ij48IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij48IUVOVElUWSBCZXJub3VsbGlzICImI3gyMTJDOyI%2BPCFFTlRJVFkgQnNjciAiJiN4MjEyQzsiPjwhRU5USVRZIENmciAiJiN4MjEyRDsiPjwhRU5USVRZIENheWxleXMgIiYjeDIxMkQ7Ij48IUVOVElUWSBlc2NyICImI3gyMTJGOyI%2BPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPjwhRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyI%2BPCFFTlRJVFkgRnNjciAiJiN4MjEzMTsiPjwhRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ij48IUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ij48IUVOVElUWSBNZWxsaW50cmYgIiYjeDIxMzM7Ij48IUVOVElUWSBNc2NyICImI3gyMTMzOyI%2BPCFFTlRJVFkgb3JkZXIgIiYjeDIxMzQ7Ij48IUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyI%2BPCFFTlRJVFkgb3NjciAiJiN4MjEzNDsiPjwhRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7Ij48IUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiPjwhRU5USVRZIGJldGggIiYjeDIxMzY7Ij48IUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiPjwhRU5USVRZIGRhbGV0aCAiJiN4MjEzODsiPjwhRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI%2BPCFFTlRJVFkgREQgIiYjeDIxNDU7Ij48IUVOVElUWSBEaWZmZXJlbnRpYWxEICImI3gyMTQ2OyI%2BPCFFTlRJVFkgZGQgIiYjeDIxNDY7Ij48IUVOVElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ij48IUVOVElUWSBleHBvbmVudGlhbGUgIiYjeDIxNDc7Ij48IUVOVElUWSBlZSAiJiN4MjE0NzsiPjwhRU5USVRZIEltYWdpbmFyeUkgIiYjeDIxNDg7Ij48IUVOVElUWSBpaSAiJiN4MjE0ODsiPjwhRU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiPjwhRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsiPjwhRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiPjwhRU5USVRZIGZyYWMyNSAiJiN4MjE1NjsiPjwhRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiPjwhRU5USVRZIGZyYWM0NSAiJiN4MjE1ODsiPjwhRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiPjwhRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiPjwhRU5USVRZIGZyYWMxOCAiJiN4MjE1QjsiPjwhRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiPjwhRU5USVRZIGZyYWM1OCAiJiN4MjE1RDsiPjwhRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiPjwhRU5USVRZIGxhcnIgIiYjeDIxOTA7Ij48IUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ij48IUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ij48IUVOVElUWSBzbGFyciAiJiN4MjE5MDsiPjwhRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyI%2BPCFFTlRJVFkgdWFyciAiJiN4MjE5MTsiPjwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij48IUVOVElUWSBVcEFycm93ICImI3gyMTkxOyI%2BPCFFTlRJVFkgU2hvcnRVcEFycm93ICImI3gyMTkxOyI%2BPCFFTlRJVFkgcmFyciAiJiN4MjE5MjsiPjwhRU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ij48IUVOVElUWSBSaWdodEFycm93ICImI3gyMTkyOyI%2BPCFFTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ij48IUVOVElUWSBTaG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ij48IUVOVElUWSBkYXJyICImI3gyMTkzOyI%2BPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI%2BPCFFTlRJVFkgRG93bkFycm93ICImI3gyMTkzOyI%2BPCFFTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ij48IUVOVElUWSBoYXJyICImI3gyMTk0OyI%2BPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3cgIiYjeDIxOTQ7Ij48IUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiPjwhRU5USVRZIHZhcnIgIiYjeDIxOTU7Ij48IUVOVElUWSB1cGRvd25hcnJvdyAiJiN4MjE5NTsiPjwhRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyI%2BPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij48IUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4MjE5NjsiPjwhRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ij48IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPjwhRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5NzsiPjwhRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ij48IUVOVElUWSBzZWFyciAiJiN4MjE5ODsiPjwhRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ij48IUVOVElUWSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ij48IUVOVElUWSBzd2FyciAiJiN4MjE5OTsiPjwhRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ij48IUVOVElUWSBMb3dlckxlZnRBcnJvdyAiJiN4MjE5OTsiPjwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI%2BPCFFTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiPjwhRU5USVRZIG5yYXJyICImI3gyMTlCOyI%2BPCFFTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ij48IUVOVElUWSByYXJydyAiJiN4MjE5RDsiPjwhRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjE5RDsiPjwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ij48IUVOVElUWSBMYXJyICImI3gyMTlFOyI%2BPCFFTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5RTsiPjwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij48IUVOVElUWSBSYXJyICImI3gyMUEwOyI%2BPCFFTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ij48IUVOVElUWSBEYXJyICImI3gyMUExOyI%2BPCFFTlRJVFkgbGFycnRsICImI3gyMUEyOyI%2BPCFFTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiPjwhRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiPjwhRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gyMUEzOyI%2BPCFFTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyI%2BPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPjwhRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIxQTU7Ij48IUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiPjwhRU5USVRZIG1hcCAiJiN4MjFBNjsiPjwhRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ij48IUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ij48IUVOVElUWSBEb3duVGVlQXJyb3cgIiYjeDIxQTc7Ij48IUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyI%2BPCFFTlRJVFkgbGFycmhrICImI3gyMUE5OyI%2BPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPjwhRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiPjwhRU5USVRZIGhvb2tyaWdodGFycm93ICImI3gyMUFBOyI%2BPCFFTlRJVFkgbGFycmxwICImI3gyMUFCOyI%2BPCFFTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiPjwhRU5USVRZIHJhcnJscCAiJiN4MjFBQzsiPjwhRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyI%2BPCFFTlRJVFkgaGFycncgIiYjeDIxQUQ7Ij48IUVOVElUWSBsZWZ0cmlnaHRzcXVpZ2Fycm93ICImI3gyMUFEOyI%2BPCFFTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ij48IUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ij48IUVOVElUWSBsc2ggIiYjeDIxQjA7Ij48IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij48IUVOVElUWSByc2ggIiYjeDIxQjE7Ij48IUVOVElUWSBSc2ggIiYjeDIxQjE7Ij48IUVOVElUWSBsZHNoICImI3gyMUIyOyI%2BPCFFTlRJVFkgcmRzaCAiJiN4MjFCMzsiPjwhRU5USVRZIGNyYXJyICImI3gyMUI1OyI%2BPCFFTlRJVFkgY3VsYXJyICImI3gyMUI2OyI%2BPCFFTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ij48IUVOVElUWSBjdXJhcnIgIiYjeDIxQjc7Ij48IUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7Ij48IUVOVElUWSBvbGFyciAiJiN4MjFCQTsiPjwhRU5USVRZIGNpcmNsZWFycm93bGVmdCAiJiN4MjFCQTsiPjwhRU5USVRZIG9yYXJyICImI3gyMUJCOyI%2BPCFFTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiPjwhRU5USVRZIGxoYXJ1ICImI3gyMUJDOyI%2BPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPjwhRU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ij48IUVOVElUWSBsaGFyZCAiJiN4MjFCRDsiPjwhRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiPjwhRU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyI%2BPCFFTlRJVFkgdWhhcnIgIiYjeDIxQkU7Ij48IUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiPjwhRU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ij48IUVOVElUWSB1aGFybCAiJiN4MjFCRjsiPjwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ij48IUVOVElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ij48IUVOVElUWSByaGFydSAiJiN4MjFDMDsiPjwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI%2BPCFFTlRJVFkgcmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ij48IUVOVElUWSByaGFyZCAiJiN4MjFDMTsiPjwhRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij48IUVOVElUWSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ij48IUVOVElUWSBkaGFyciAiJiN4MjFDMjsiPjwhRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiPjwhRU5USVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ij48IUVOVElUWSBkaGFybCAiJiN4MjFDMzsiPjwhRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyI%2BPCFFTlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyI%2BPCFFTlRJVFkgcmxhcnIgIiYjeDIxQzQ7Ij48IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ij48IUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyI%2BPCFFTlRJVFkgdWRhcnIgIiYjeDIxQzU7Ij48IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyI%2BPCFFTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ij48IUVOVElUWSBsZWZ0cmlnaHRhcnJvd3MgIiYjeDIxQzY7Ij48IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI%2BPCFFTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ij48IUVOVElUWSBsZWZ0bGVmdGFycm93cyAiJiN4MjFDNzsiPjwhRU5USVRZIHV1YXJyICImI3gyMUM4OyI%2BPCFFTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiPjwhRU5USVRZIHJyYXJyICImI3gyMUM5OyI%2BPCFFTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiPjwhRU5USVRZIGRkYXJyICImI3gyMUNBOyI%2BPCFFTlRJVFkgZG93bmRvd25hcnJvd3MgIiYjeDIxQ0E7Ij48IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPjwhRU5USVRZIFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiPjwhRU5USVRZIGxlZnRyaWdodGhhcnBvb25zICImI3gyMUNCOyI%2BPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij48IUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiPjwhRU5USVRZIEVxdWlsaWJyaXVtICImI3gyMUNDOyI%2BPCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij48IUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyI%2BPCFFTlRJVFkgbmhBcnIgIiYjeDIxQ0U7Ij48IUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ij48IUVOVElUWSBuckFyciAiJiN4MjFDRjsiPjwhRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNGOyI%2BPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPjwhRU5USVRZIExlZnRhcnJvdyAiJiN4MjFEMDsiPjwhRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiPjwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij48IUVOVElUWSBVcGFycm93ICImI3gyMUQxOyI%2BPCFFTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiPjwhRU5USVRZIHJBcnIgIiYjeDIxRDI7Ij48IUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyI%2BPCFFTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiPjwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ij48IUVOVElUWSBkQXJyICImI3gyMUQzOyI%2BPCFFTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyI%2BPCFFTlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI%2BPCFFTlRJVFkgaEFyciAiJiN4MjFENDsiPjwhRU5USVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyI%2BPCFFTlRJVFkgRG91YmxlTGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij48IUVOVElUWSBpZmYgIiYjeDIxRDQ7Ij48IUVOVElUWSB2QXJyICImI3gyMUQ1OyI%2BPCFFTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7Ij48IUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiPjwhRU5USVRZIG53QXJyICImI3gyMUQ2OyI%2BPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij48IUVOVElUWSBzZUFyciAiJiN4MjFEODsiPjwhRU5USVRZIHN3QXJyICImI3gyMUQ5OyI%2BPCFFTlRJVFkgbEFhcnIgIiYjeDIxREE7Ij48IUVOVElUWSBMbGVmdGFycm93ICImI3gyMURBOyI%2BPCFFTlRJVFkgckFhcnIgIiYjeDIxREI7Ij48IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiPjwhRU5USVRZIHppZ3JhcnIgIiYjeDIxREQ7Ij48IUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiPjwhRU5USVRZIExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPjwhRU5USVRZIHJhcnJiICImI3gyMUU1OyI%2BPCFFTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiPjwhRU5USVRZIGR1YXJyICImI3gyMUY1OyI%2BPCFFTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiPjwhRU5USVRZIGxvYXJyICImI3gyMUZEOyI%2BPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij48IUVOVElUWSBob2FyciAiJiN4MjFGRjsiPjwhRU5USVRZIGZvcmFsbCAiJiN4MjIwMDsiPjwhRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiPjwhRU5USVRZIGNvbXAgIiYjeDIyMDE7Ij48IUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyI%2BPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPjwhRU5USVRZIFBhcnRpYWxEICImI3gyMjAyOyI%2BPCFFTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyI%2BPCFFTlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij48IUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ij48IUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ij48IUVOVElUWSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ij48IUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyI%2BPCFFTlRJVFkgZW1wdHkgIiYjeDIyMDU7Ij48IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPjwhRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiPjwhRU5USVRZIHZhcm5vdGhpbmcgIiYjeDIyMDU7Ij48IUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiPjwhRU5USVRZIERlbCAiJiN4MjIwNzsiPjwhRU5USVRZIGlzaW4gIiYjeDIyMDg7Ij48IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPjwhRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ij48IUVOVElUWSBpbiAiJiN4MjIwODsiPjwhRU5USVRZIG5vdGluICImI3gyMjA5OyI%2BPCFFTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiPjwhRU5USVRZIG5vdGludmEgIiYjeDIyMDk7Ij48IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij48IUVOVElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiPjwhRU5USVRZIG5pICImI3gyMjBCOyI%2BPCFFTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ij48IUVOVElUWSBub3RuaSAiJiN4MjIwQzsiPjwhRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ij48IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiPjwhRU5USVRZIHByb2QgIiYjeDIyMEY7Ij48IUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyI%2BPCFFTlRJVFkgY29wcm9kICImI3gyMjEwOyI%2BPCFFTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyI%2BPCFFTlRJVFkgc3VtICImI3gyMjExOyI%2BPCFFTlRJVFkgU3VtICImI3gyMjExOyI%2BPCFFTlRJVFkgbWludXMgIiYjeDIyMTI7Ij48IUVOVElUWSBtbnBsdXMgIiYjeDIyMTM7Ij48IUVOVElUWSBtcCAiJiN4MjIxMzsiPjwhRU5USVRZIE1pbnVzUGx1cyAiJiN4MjIxMzsiPjwhRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiPjwhRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ij48IUVOVElUWSBzZXRtbiAiJiN4MjIxNjsiPjwhRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyI%2BPCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI%2BPCFFTlRJVFkgc3NldG1uICImI3gyMjE2OyI%2BPCFFTlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiPjwhRU5USVRZIGxvd2FzdCAiJiN4MjIxNzsiPjwhRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiPjwhRU5USVRZIFNtYWxsQ2lyY2xlICImI3gyMjE4OyI%2BPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij48IUVOVElUWSBTcXJ0ICImI3gyMjFBOyI%2BPCFFTlRJVFkgcHJvcCAiJiN4MjIxRDsiPjwhRU5USVRZIHByb3B0byAiJiN4MjIxRDsiPjwhRU5USVRZIFByb3BvcnRpb25hbCAiJiN4MjIxRDsiPjwhRU5USVRZIHZwcm9wICImI3gyMjFEOyI%2BPCFFTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyI%2BPCFFTlRJVFkgaW5maW4gIiYjeDIyMUU7Ij48IUVOVElUWSBhbmdydCAiJiN4MjIxRjsiPjwhRU5USVRZIGFuZyAiJiN4MjIyMDsiPjwhRU5USVRZIGFuZ2xlICImI3gyMjIwOyI%2BPCFFTlRJVFkgbmFuZyAiJiN4MjIyMDsmI3gyMEQyOyI%2BPCFFTlRJVFkgYW5nbXNkICImI3gyMjIxOyI%2BPCFFTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiPjwhRU5USVRZIGFuZ3NwaCAiJiN4MjIyMjsiPjwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPjwhRU5USVRZIFZlcnRpY2FsQmFyICImI3gyMjIzOyI%2BPCFFTlRJVFkgc21pZCAiJiN4MjIyMzsiPjwhRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyI%2BPCFFTlRJVFkgbm1pZCAiJiN4MjIyNDsiPjwhRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyI%2BPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij48IUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7Ij48IUVOVElUWSBwYXIgIiYjeDIyMjU7Ij48IUVOVElUWSBwYXJhbGxlbCAiJiN4MjIyNTsiPjwhRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyI%2BPCFFTlRJVFkgc3BhciAiJiN4MjIyNTsiPjwhRU5USVRZIHNob3J0cGFyYWxsZWwgIiYjeDIyMjU7Ij48IUVOVElUWSBucGFyICImI3gyMjI2OyI%2BPCFFTlRJVFkgbnBhcmFsbGVsICImI3gyMjI2OyI%2BPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjY7Ij48IUVOVElUWSBuc3BhciAiJiN4MjIyNjsiPjwhRU5USVRZIG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyI%2BPCFFTlRJVFkgYW5kICImI3gyMjI3OyI%2BPCFFTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ij48IUVOVElUWSBvciAiJiN4MjIyODsiPjwhRU5USVRZIHZlZSAiJiN4MjIyODsiPjwhRU5USVRZIGNhcCAiJiN4MjIyOTsiPjwhRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiPjwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPjwhRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsiPjwhRU5USVRZIGludCAiJiN4MjIyQjsiPjwhRU5USVRZIEludGVncmFsICImI3gyMjJCOyI%2BPCFFTlRJVFkgSW50ICImI3gyMjJDOyI%2BPCFFTlRJVFkgdGludCAiJiN4MjIyRDsiPjwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI%2BPCFFTlRJVFkgY29uaW50ICImI3gyMjJFOyI%2BPCFFTlRJVFkgb2ludCAiJiN4MjIyRTsiPjwhRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiPjwhRU5USVRZIENvbmludCAiJiN4MjIyRjsiPjwhRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRjsiPjwhRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ij48IUVOVElUWSBjd2ludCAiJiN4MjIzMTsiPjwhRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyI%2BPCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI%2BPCFFTlRJVFkgYXdjb25pbnQgIiYjeDIyMzM7Ij48IUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMzOyI%2BPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI%2BPCFFTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyI%2BPCFFTlRJVFkgVGhlcmVmb3JlICImI3gyMjM0OyI%2BPCFFTlRJVFkgYmVjYXVzICImI3gyMjM1OyI%2BPCFFTlRJVFkgYmVjYXVzZSAiJiN4MjIzNTsiPjwhRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ij48IUVOVElUWSByYXRpbyAiJiN4MjIzNjsiPjwhRU5USVRZIENvbG9uICImI3gyMjM3OyI%2BPCFFTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiPjwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPjwhRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyI%2BPCFFTlRJVFkgbUREb3QgIiYjeDIyM0E7Ij48IUVOVElUWSBob210aHQgIiYjeDIyM0I7Ij48IUVOVElUWSBzaW0gIiYjeDIyM0M7Ij48IUVOVElUWSBUaWxkZSAiJiN4MjIzQzsiPjwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPjwhRU5USVRZIHRoaWNrc2ltICImI3gyMjNDOyI%2BPCFFTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBEMjsiPjwhRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ij48IUVOVElUWSBiYWNrc2ltICImI3gyMjNEOyI%2BPCFFTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ij48IUVOVElUWSBhYyAiJiN4MjIzRTsiPjwhRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiPjwhRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ij48IUVOVElUWSBhY2QgIiYjeDIyM0Y7Ij48IUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ij48IUVOVElUWSBWZXJ0aWNhbFRpbGRlICImI3gyMjQwOyI%2BPCFFTlRJVFkgd3IgIiYjeDIyNDA7Ij48IUVOVElUWSBuc2ltICImI3gyMjQxOyI%2BPCFFTlRJVFkgTm90VGlsZGUgIiYjeDIyNDE7Ij48IUVOVElUWSBlc2ltICImI3gyMjQyOyI%2BPCFFTlRJVFkgRXF1YWxUaWxkZSAiJiN4MjI0MjsiPjwhRU5USVRZIGVxc2ltICImI3gyMjQyOyI%2BPCFFTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ij48IUVOVElUWSBuZXNpbSAiJiN4MjI0MjsmI3gzMzg7Ij48IUVOVElUWSBzaW1lICImI3gyMjQzOyI%2BPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiPjwhRU5USVRZIHNpbWVxICImI3gyMjQzOyI%2BPCFFTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ij48IUVOVElUWSBuc2ltZXEgIiYjeDIyNDQ7Ij48IUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyI%2BPCFFTlRJVFkgY29uZyAiJiN4MjI0NTsiPjwhRU5USVRZIFRpbGRlRnVsbEVxdWFsICImI3gyMjQ1OyI%2BPCFFTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ij48IUVOVElUWSBuY29uZyAiJiN4MjI0NzsiPjwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI%2BPCFFTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ij48IUVOVElUWSBhcCAiJiN4MjI0ODsiPjwhRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ij48IUVOVElUWSBhcHByb3ggIiYjeDIyNDg7Ij48IUVOVElUWSB0aGthcCAiJiN4MjI0ODsiPjwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyI%2BPCFFTlRJVFkgbmFwICImI3gyMjQ5OyI%2BPCFFTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiPjwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij48IUVOVElUWSBhcGUgIiYjeDIyNEE7Ij48IUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiPjwhRU5USVRZIGFwaWQgIiYjeDIyNEI7Ij48IUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ij48IUVOVElUWSBiY29uZyAiJiN4MjI0QzsiPjwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI%2BPCFFTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiPjwhRU5USVRZIEN1cENhcCAiJiN4MjI0RDsiPjwhRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiPjwhRU5USVRZIGJ1bXAgIiYjeDIyNEU7Ij48IUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIyNEU7Ij48IUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ij48IUVOVElUWSBOb3RIdW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyI%2BPCFFTlRJVFkgbmJ1bXAgIiYjeDIyNEU7JiN4MzM4OyI%2BPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij48IUVOVElUWSBIdW1wRXF1YWwgIiYjeDIyNEY7Ij48IUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ij48IUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI%2BPCFFTlRJVFkgTm90SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiPjwhRU5USVRZIGVzZG90ICImI3gyMjUwOyI%2BPCFFTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ij48IUVOVElUWSBkb3RlcSAiJiN4MjI1MDsiPjwhRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiPjwhRU5USVRZIGVEb3QgIiYjeDIyNTE7Ij48IUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1MTsiPjwhRU5USVRZIGVmRG90ICImI3gyMjUyOyI%2BPCFFTlRJVFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPjwhRU5USVRZIGVyRG90ICImI3gyMjUzOyI%2BPCFFTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyI%2BPCFFTlRJVFkgY29sb25lICImI3gyMjU0OyI%2BPCFFTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiPjwhRU5USVRZIEFzc2lnbiAiJiN4MjI1NDsiPjwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPjwhRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ij48IUVOVElUWSBlY2lyICImI3gyMjU2OyI%2BPCFFTlRJVFkgZXFjaXJjICImI3gyMjU2OyI%2BPCFFTlRJVFkgY2lyZSAiJiN4MjI1NzsiPjwhRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiPjwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPjwhRU5USVRZIHZlZWVxICImI3gyMjVBOyI%2BPCFFTlRJVFkgdHJpZSAiJiN4MjI1QzsiPjwhRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1QzsiPjwhRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiPjwhRU5USVRZIHF1ZXN0ZXEgIiYjeDIyNUY7Ij48IUVOVElUWSBuZSAiJiN4MjI2MDsiPjwhRU5USVRZIE5vdEVxdWFsICImI3gyMjYwOyI%2BPCFFTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ij48IUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ij48IUVOVElUWSBibmVxdWl2ICImI3gyMjYxOyYjeDIwRTU7Ij48IUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ij48IUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ij48IUVOVElUWSBsZSAiJiN4MjI2NDsiPjwhRU5USVRZIGxlcSAiJiN4MjI2NDsiPjwhRU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPjwhRU5USVRZIGdlICImI3gyMjY1OyI%2BPCFFTlRJVFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyI%2BPCFFTlRJVFkgZ2VxICImI3gyMjY1OyI%2BPCFFTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyI%2BPCFFTlRJVFkgbEUgIiYjeDIyNjY7Ij48IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI%2BPCFFTlRJVFkgbGVxcSAiJiN4MjI2NjsiPjwhRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gzMzg7Ij48IUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij48IUVOVElUWSBnRSAiJiN4MjI2NzsiPjwhRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7Ij48IUVOVElUWSBnZXFxICImI3gyMjY3OyI%2BPCFFTlRJVFkgbmdFICImI3gyMjY3OyYjeDMzODsiPjwhRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiPjwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyI%2BPCFFTlRJVFkgbG5FICImI3gyMjY4OyI%2BPCFFTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ij48IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij48IUVOVElUWSBsdmVydG5lcXEgIiYjeDIyNjg7JiN4RkUwMDsiPjwhRU5USVRZIGduRSAiJiN4MjI2OTsiPjwhRU5USVRZIGduZXFxICImI3gyMjY5OyI%2BPCFFTlRJVFkgZ3ZuRSAiJiN4MjI2OTsmI3hGRTAwOyI%2BPCFFTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ij48IUVOVElUWSBMdCAiJiN4MjI2QTsiPjwhRU5USVRZIE5lc3RlZExlc3NMZXNzICImI3gyMjZBOyI%2BPCFFTlRJVFkgbGwgIiYjeDIyNkE7Ij48IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPjwhRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYjeDMzODsiPjwhRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyI%2BPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij48IUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MjI2QjsiPjwhRU5USVRZIGdnICImI3gyMjZCOyI%2BPCFFTlRJVFkgbkd0diAiJiN4MjI2QjsmI3gzMzg7Ij48IUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2QjsmI3gzMzg7Ij48IUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiPjwhRU5USVRZIHR3aXh0ICImI3gyMjZDOyI%2BPCFFTlRJVFkgYmV0d2VlbiAiJiN4MjI2QzsiPjwhRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiPjwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPjwhRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ij48IUVOVElUWSBubGVzcyAiJiN4MjI2RTsiPjwhRU5USVRZIG5ndCAiJiN4MjI2RjsiPjwhRU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ij48IUVOVElUWSBuZ3RyICImI3gyMjZGOyI%2BPCFFTlRJVFkgbmxlICImI3gyMjcwOyI%2BPCFFTlRJVFkgTm90TGVzc0VxdWFsICImI3gyMjcwOyI%2BPCFFTlRJVFkgbmxlcSAiJiN4MjI3MDsiPjwhRU5USVRZIG5nZSAiJiN4MjI3MTsiPjwhRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3MTsiPjwhRU5USVRZIG5nZXEgIiYjeDIyNzE7Ij48IUVOVElUWSBsc2ltICImI3gyMjcyOyI%2BPCFFTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyI%2BPCFFTlRJVFkgbGVzc3NpbSAiJiN4MjI3MjsiPjwhRU5USVRZIGdzaW0gIiYjeDIyNzM7Ij48IUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ij48IUVOVElUWSBHcmVhdGVyVGlsZGUgIiYjeDIyNzM7Ij48IUVOVElUWSBubHNpbSAiJiN4MjI3NDsiPjwhRU5USVRZIE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiPjwhRU5USVRZIG5nc2ltICImI3gyMjc1OyI%2BPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI%2BPCFFTlRJVFkgbGcgIiYjeDIyNzY7Ij48IUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyI%2BPCFFTlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ij48IUVOVElUWSBnbCAiJiN4MjI3NzsiPjwhRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ij48IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiPjwhRU5USVRZIG50bGcgIiYjeDIyNzg7Ij48IUVOVElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiPjwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij48IUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiPjwhRU5USVRZIHByICImI3gyMjdBOyI%2BPCFFTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ij48IUVOVElUWSBwcmVjICImI3gyMjdBOyI%2BPCFFTlRJVFkgc2MgIiYjeDIyN0I7Ij48IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPjwhRU5USVRZIHN1Y2MgIiYjeDIyN0I7Ij48IUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiPjwhRU5USVRZIFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiPjwhRU5USVRZIHByZWNjdXJseWVxICImI3gyMjdDOyI%2BPCFFTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ij48IUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ij48IUVOVElUWSBzdWNjY3VybHllcSAiJiN4MjI3RDsiPjwhRU5USVRZIHByc2ltICImI3gyMjdFOyI%2BPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPjwhRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7Ij48IUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiPjwhRU5USVRZIHN1Y2NzaW0gIiYjeDIyN0Y7Ij48IUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyI%2BPCFFTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ij48IUVOVElUWSBucHIgIiYjeDIyODA7Ij48IUVOVElUWSBucHJlYyAiJiN4MjI4MDsiPjwhRU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyI%2BPCFFTlRJVFkgbnNjICImI3gyMjgxOyI%2BPCFFTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ij48IUVOVElUWSBOb3RTdWNjZWVkcyAiJiN4MjI4MTsiPjwhRU5USVRZIHN1YiAiJiN4MjI4MjsiPjwhRU5USVRZIHN1YnNldCAiJiN4MjI4MjsiPjwhRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIwRDI7Ij48IUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ij48IUVOVElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiPjwhRU5USVRZIHN1cCAiJiN4MjI4MzsiPjwhRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiPjwhRU5USVRZIFN1cGVyc2V0ICImI3gyMjgzOyI%2BPCFFTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiPjwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPjwhRU5USVRZIE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ij48IUVOVElUWSBuc3ViICImI3gyMjg0OyI%2BPCFFTlRJVFkgbnN1cCAiJiN4MjI4NTsiPjwhRU5USVRZIHN1YmUgIiYjeDIyODY7Ij48IUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiPjwhRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyI%2BPCFFTlRJVFkgc3VwZSAiJiN4MjI4NzsiPjwhRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyI%2BPCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPjwhRU5USVRZIG5zdWJlICImI3gyMjg4OyI%2BPCFFTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyI%2BPCFFTlRJVFkgTm90U3Vic2V0RXF1YWwgIiYjeDIyODg7Ij48IUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiPjwhRU5USVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiPjwhRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYjeDIyODk7Ij48IUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiPjwhRU5USVRZIHN1YnNldG5lcSAiJiN4MjI4QTsiPjwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI%2BPCFFTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ij48IUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiPjwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPjwhRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyI%2BPCFFTlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ij48IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij48IUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiPjwhRU5USVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiPjwhRU5USVRZIHNxc3ViICImI3gyMjhGOyI%2BPCFFTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyI%2BPCFFTlRJVFkgc3FzdWJzZXQgIiYjeDIyOEY7Ij48IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4MzM4OyI%2BPCFFTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ij48IUVOVElUWSBTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiPjwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI%2BPCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyI%2BPCFFTlRJVFkgc3FzdWJlICImI3gyMjkxOyI%2BPCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij48IUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyI%2BPCFFTlRJVFkgc3FzdXBlICImI3gyMjkyOyI%2BPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPjwhRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ij48IUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiPjwhRU5USVRZIFNxdWFyZUludGVyc2VjdGlvbiAiJiN4MjI5MzsiPjwhRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAwOyI%2BPCFFTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ij48IUVOVElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsiPjwhRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyI%2BPCFFTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ij48IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI%2BPCFFTlRJVFkgb21pbnVzICImI3gyMjk2OyI%2BPCFFTlRJVFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ij48IUVOVElUWSBvdGltZXMgIiYjeDIyOTc7Ij48IUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiPjwhRU5USVRZIG9zb2wgIiYjeDIyOTg7Ij48IUVOVElUWSBvZG90ICImI3gyMjk5OyI%2BPCFFTlRJVFkgQ2lyY2xlRG90ICImI3gyMjk5OyI%2BPCFFTlRJVFkgb2NpciAiJiN4MjI5QTsiPjwhRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI%2BPCFFTlRJVFkgb2FzdCAiJiN4MjI5QjsiPjwhRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ij48IUVOVElUWSBvZGFzaCAiJiN4MjI5RDsiPjwhRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlEOyI%2BPCFFTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ij48IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI%2BPCFFTlRJVFkgbWludXNiICImI3gyMjlGOyI%2BPCFFTlRJVFkgYm94bWludXMgIiYjeDIyOUY7Ij48IUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ij48IUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiPjwhRU5USVRZIHNkb3RiICImI3gyMkExOyI%2BPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyI%2BPCFFTlRJVFkgdmRhc2ggIiYjeDIyQTI7Ij48IUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiPjwhRU5USVRZIGRhc2h2ICImI3gyMkEzOyI%2BPCFFTlRJVFkgTGVmdFRlZSAiJiN4MjJBMzsiPjwhRU5USVRZIHRvcCAiJiN4MjJBNDsiPjwhRU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ij48IUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ij48IUVOVElUWSBib3QgIiYjeDIyQTU7Ij48IUVOVElUWSBwZXJwICImI3gyMkE1OyI%2BPCFFTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ij48IUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7Ij48IUVOVElUWSB2RGFzaCAiJiN4MjJBODsiPjwhRU5USVRZIERvdWJsZVJpZ2h0VGVlICImI3gyMkE4OyI%2BPCFFTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ij48IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij48IUVOVElUWSBWRGFzaCAiJiN4MjJBQjsiPjwhRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiPjwhRU5USVRZIG52RGFzaCAiJiN4MjJBRDsiPjwhRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiPjwhRU5USVRZIG5WRGFzaCAiJiN4MjJBRjsiPjwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPjwhRU5USVRZIHZsdHJpICImI3gyMkIyOyI%2BPCFFTlRJVFkgdmFydHJpYW5nbGVsZWZ0ICImI3gyMkIyOyI%2BPCFFTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyI%2BPCFFTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ij48IUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0ICImI3gyMkIzOyI%2BPCFFTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiPjwhRU5USVRZIGx0cmllICImI3gyMkI0OyI%2BPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYjeDIyQjQ7Ij48IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiPjwhRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiPjwhRU5USVRZIHJ0cmllICImI3gyMkI1OyI%2BPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI%2BPCFFTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyI%2BPCFFTlRJVFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyI%2BPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI%2BPCFFTlRJVFkgaW1vZiAiJiN4MjJCNzsiPjwhRU5USVRZIG11bWFwICImI3gyMkI4OyI%2BPCFFTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ij48IUVOVElUWSBoZXJjb24gIiYjeDIyQjk7Ij48IUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ij48IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPjwhRU5USVRZIHZlZWJhciAiJiN4MjJCQjsiPjwhRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiPjwhRU5USVRZIGFuZ3J0dmIgIiYjeDIyQkU7Ij48IUVOVElUWSBscnRyaSAiJiN4MjJCRjsiPjwhRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiPjwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI%2BPCFFTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ij48IUVOVElUWSB4dmVlICImI3gyMkMxOyI%2BPCFFTlRJVFkgVmVlICImI3gyMkMxOyI%2BPCFFTlRJVFkgYmlndmVlICImI3gyMkMxOyI%2BPCFFTlRJVFkgeGNhcCAiJiN4MjJDMjsiPjwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiPjwhRU5USVRZIGJpZ2NhcCAiJiN4MjJDMjsiPjwhRU5USVRZIHhjdXAgIiYjeDIyQzM7Ij48IUVOVElUWSBVbmlvbiAiJiN4MjJDMzsiPjwhRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiPjwhRU5USVRZIGRpYW0gIiYjeDIyQzQ7Ij48IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI%2BPCFFTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiPjwhRU5USVRZIHNkb3QgIiYjeDIyQzU7Ij48IUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ij48IUVOVElUWSBTdGFyICImI3gyMkM2OyI%2BPCFFTlRJVFkgZGl2b254ICImI3gyMkM3OyI%2BPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiPjwhRU5USVRZIGJvd3RpZSAiJiN4MjJDODsiPjwhRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiPjwhRU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPjwhRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiPjwhRU5USVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyI%2BPCFFTlRJVFkgcnRocmVlICImI3gyMkNDOyI%2BPCFFTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyI%2BPCFFTlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ij48IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ij48IUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiPjwhRU5USVRZIGN1cmx5dmVlICImI3gyMkNFOyI%2BPCFFTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ij48IUVOVElUWSBjdXJseXdlZGdlICImI3gyMkNGOyI%2BPCFFTlRJVFkgU3ViICImI3gyMkQwOyI%2BPCFFTlRJVFkgU3Vic2V0ICImI3gyMkQwOyI%2BPCFFTlRJVFkgU3VwICImI3gyMkQxOyI%2BPCFFTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyI%2BPCFFTlRJVFkgQ2FwICImI3gyMkQyOyI%2BPCFFTlRJVFkgQ3VwICImI3gyMkQzOyI%2BPCFFTlRJVFkgZm9yayAiJiN4MjJENDsiPjwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiPjwhRU5USVRZIGVwYXIgIiYjeDIyRDU7Ij48IUVOVElUWSBsdGRvdCAiJiN4MjJENjsiPjwhRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ij48IUVOVElUWSBndGRvdCAiJiN4MjJENzsiPjwhRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiPjwhRU5USVRZIExsICImI3gyMkQ4OyI%2BPCFFTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiPjwhRU5USVRZIEdnICImI3gyMkQ5OyI%2BPCFFTlRJVFkgZ2dnICImI3gyMkQ5OyI%2BPCFFTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiPjwhRU5USVRZIGxlZyAiJiN4MjJEQTsiPjwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ij48IUVOVElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ij48IUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZFMDA7Ij48IUVOVElUWSBnZWwgIiYjeDIyREI7Ij48IUVOVElUWSBndHJlcWxlc3MgIiYjeDIyREI7Ij48IUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRCOyI%2BPCFFTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI%2BPCFFTlRJVFkgY3VlcHIgIiYjeDIyREU7Ij48IUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiPjwhRU5USVRZIGN1ZXNjICImI3gyMkRGOyI%2BPCFFTlRJVFkgY3VybHllcXN1Y2MgIiYjeDIyREY7Ij48IUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ij48IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ij48IUVOVElUWSBuc2NjdWUgIiYjeDIyRTE7Ij48IUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7Ij48IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI%2BPCFFTlRJVFkgTm90U3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ij48IUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyI%2BPCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPjwhRU5USVRZIGxuc2ltICImI3gyMkU2OyI%2BPCFFTlRJVFkgZ25zaW0gIiYjeDIyRTc7Ij48IUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ij48IUVOVElUWSBwcmVjbnNpbSAiJiN4MjJFODsiPjwhRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiPjwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyI%2BPCFFTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ij48IUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyI%2BPCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI%2BPCFFTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ij48IUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiPjwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij48IUVOVElUWSBubHRyaWUgIiYjeDIyRUM7Ij48IUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ij48IUVOVElUWSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiPjwhRU5USVRZIG5ydHJpZSAiJiN4MjJFRDsiPjwhRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ij48IUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ij48IUVOVElUWSB2ZWxsaXAgIiYjeDIyRUU7Ij48IUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiPjwhRU5USVRZIHV0ZG90ICImI3gyMkYwOyI%2BPCFFTlRJVFkgZHRkb3QgIiYjeDIyRjE7Ij48IUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiPjwhRU5USVRZIGlzaW5zdiAiJiN4MjJGMzsiPjwhRU5USVRZIGlzaW5zICImI3gyMkY0OyI%2BPCFFTlRJVFkgaXNpbmRvdCAiJiN4MjJGNTsiPjwhRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsiPjwhRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ij48IUVOVElUWSBub3RpbnZiICImI3gyMkY3OyI%2BPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij48IUVOVElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyI%2BPCFFTlRJVFkgbmlzZCAiJiN4MjJGQTsiPjwhRU5USVRZIHhuaXMgIiYjeDIyRkI7Ij48IUVOVElUWSBuaXMgIiYjeDIyRkM7Ij48IUVOVElUWSBub3RuaXZjICImI3gyMkZEOyI%2BPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPjwhRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiPjwhRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyI%2BPCFFTlRJVFkgQmFyd2VkICImI3gyMzA2OyI%2BPCFFTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ij48IUVOVElUWSBsY2VpbCAiJiN4MjMwODsiPjwhRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyI%2BPCFFTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ij48IUVOVElUWSBSaWdodENlaWxpbmcgIiYjeDIzMDk7Ij48IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij48IUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ij48IUVOVElUWSByZmxvb3IgIiYjeDIzMEI7Ij48IUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyI%2BPCFFTlRJVFkgZHJjcm9wICImI3gyMzBDOyI%2BPCFFTlRJVFkgZGxjcm9wICImI3gyMzBEOyI%2BPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI%2BPCFFTlRJVFkgdWxjcm9wICImI3gyMzBGOyI%2BPCFFTlRJVFkgYm5vdCAiJiN4MjMxMDsiPjwhRU5USVRZIHByb2ZsaW5lICImI3gyMzEyOyI%2BPCFFTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ij48IUVOVElUWSB0ZWxyZWMgIiYjeDIzMTU7Ij48IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ij48IUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ij48IUVOVElUWSB1bGNvcm5lciAiJiN4MjMxQzsiPjwhRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiPjwhRU5USVRZIHVyY29ybmVyICImI3gyMzFEOyI%2BPCFFTlRJVFkgZGxjb3JuICImI3gyMzFFOyI%2BPCFFTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ij48IUVOVElUWSBkcmNvcm4gIiYjeDIzMUY7Ij48IUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiPjwhRU5USVRZIGZyb3duICImI3gyMzIyOyI%2BPCFFTlRJVFkgc2Zyb3duICImI3gyMzIyOyI%2BPCFFTlRJVFkgc21pbGUgIiYjeDIzMjM7Ij48IUVOVElUWSBzc21pbGUgIiYjeDIzMjM7Ij48IUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ij48IUVOVElUWSBwcm9mYWxhciAiJiN4MjMyRTsiPjwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPjwhRU5USVRZIG92YmFyICImI3gyMzNEOyI%2BPCFFTlRJVFkgc29sYmFyICImI3gyMzNGOyI%2BPCFFTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiPjwhRU5USVRZIGxtb3VzdCAiJiN4MjNCMDsiPjwhRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ij48IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij48IUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyI%2BPCFFTlRJVFkgdGJyayAiJiN4MjNCNDsiPjwhRU5USVRZIE92ZXJCcmFja2V0ICImI3gyM0I0OyI%2BPCFFTlRJVFkgYmJyayAiJiN4MjNCNTsiPjwhRU5USVRZIFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiPjwhRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyI%2BPCFFTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyI%2BPCFFTlRJVFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiPjwhRU5USVRZIE92ZXJCcmFjZSAiJiN4MjNERTsiPjwhRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ij48IUVOVElUWSB0cnBleml1bSAiJiN4MjNFMjsiPjwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI%2BPCFFTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ij48IUVOVElUWSBvUyAiJiN4MjRDODsiPjwhRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyI%2BPCFFTlRJVFkgYm94aCAiJiN4MjUwMDsiPjwhRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyI%2BPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPjwhRU5USVRZIGJveGRyICImI3gyNTBDOyI%2BPCFFTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ij48IUVOVElUWSBib3h1ciAiJiN4MjUxNDsiPjwhRU5USVRZIGJveHVsICImI3gyNTE4OyI%2BPCFFTlRJVFkgYm94dnIgIiYjeDI1MUM7Ij48IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPjwhRU5USVRZIGJveGhkICImI3gyNTJDOyI%2BPCFFTlRJVFkgYm94aHUgIiYjeDI1MzQ7Ij48IUVOVElUWSBib3h2aCAiJiN4MjUzQzsiPjwhRU5USVRZIGJveEggIiYjeDI1NTA7Ij48IUVOVElUWSBib3hWICImI3gyNTUxOyI%2BPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij48IUVOVElUWSBib3hEciAiJiN4MjU1MzsiPjwhRU5USVRZIGJveERSICImI3gyNTU0OyI%2BPCFFTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ij48IUVOVElUWSBib3hEbCAiJiN4MjU1NjsiPjwhRU5USVRZIGJveERMICImI3gyNTU3OyI%2BPCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij48IUVOVElUWSBib3hVciAiJiN4MjU1OTsiPjwhRU5USVRZIGJveFVSICImI3gyNTVBOyI%2BPCFFTlRJVFkgYm94dUwgIiYjeDI1NUI7Ij48IUVOVElUWSBib3hVbCAiJiN4MjU1QzsiPjwhRU5USVRZIGJveFVMICImI3gyNTVEOyI%2BPCFFTlRJVFkgYm94dlIgIiYjeDI1NUU7Ij48IUVOVElUWSBib3hWciAiJiN4MjU1RjsiPjwhRU5USVRZIGJveFZSICImI3gyNTYwOyI%2BPCFFTlRJVFkgYm94dkwgIiYjeDI1NjE7Ij48IUVOVElUWSBib3hWbCAiJiN4MjU2MjsiPjwhRU5USVRZIGJveFZMICImI3gyNTYzOyI%2BPCFFTlRJVFkgYm94SGQgIiYjeDI1NjQ7Ij48IUVOVElUWSBib3hoRCAiJiN4MjU2NTsiPjwhRU5USVRZIGJveEhEICImI3gyNTY2OyI%2BPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7Ij48IUVOVElUWSBib3hoVSAiJiN4MjU2ODsiPjwhRU5USVRZIGJveEhVICImI3gyNTY5OyI%2BPCFFTlRJVFkgYm94dkggIiYjeDI1NkE7Ij48IUVOVElUWSBib3hWaCAiJiN4MjU2QjsiPjwhRU5USVRZIGJveFZIICImI3gyNTZDOyI%2BPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij48IUVOVElUWSBsaGJsayAiJiN4MjU4NDsiPjwhRU5USVRZIGJsb2NrICImI3gyNTg4OyI%2BPCFFTlRJVFkgYmxrMTQgIiYjeDI1OTE7Ij48IUVOVElUWSBibGsxMiAiJiN4MjU5MjsiPjwhRU5USVRZIGJsazM0ICImI3gyNTkzOyI%2BPCFFTlRJVFkgc3F1ICImI3gyNUExOyI%2BPCFFTlRJVFkgc3F1YXJlICImI3gyNUExOyI%2BPCFFTlRJVFkgU3F1YXJlICImI3gyNUExOyI%2BPCFFTlRJVFkgc3F1ZiAiJiN4MjVBQTsiPjwhRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsiPjwhRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyI%2BPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyI%2BPCFFTlRJVFkgRW1wdHlWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUI7Ij48IUVOVElUWSByZWN0ICImI3gyNUFEOyI%2BPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI%2BPCFFTlRJVFkgZmx0bnMgIiYjeDI1QjE7Ij48IUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiPjwhRU5USVRZIGJpZ3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij48IUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiPjwhRU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ij48IUVOVElUWSB1dHJpICImI3gyNUI1OyI%2BPCFFTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ij48IUVOVElUWSBydHJpZiAiJiN4MjVCODsiPjwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPjwhRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ij48IUVOVElUWSB0cmlhbmdsZXJpZ2h0ICImI3gyNUI5OyI%2BPCFFTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ij48IUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ij48IUVOVElUWSBkdHJpZiAiJiN4MjVCRTsiPjwhRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyI%2BPCFFTlRJVFkgZHRyaSAiJiN4MjVCRjsiPjwhRU5USVRZIHRyaWFuZ2xlZG93biAiJiN4MjVCRjsiPjwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI%2BPCFFTlRJVFkgYmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ij48IUVOVElUWSBsdHJpICImI3gyNUMzOyI%2BPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI%2BPCFFTlRJVFkgbG96ICImI3gyNUNBOyI%2BPCFFTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiPjwhRU5USVRZIGNpciAiJiN4MjVDQjsiPjwhRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiPjwhRU5USVRZIHhjaXJjICImI3gyNUVGOyI%2BPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPjwhRU5USVRZIHVsdHJpICImI3gyNUY4OyI%2BPCFFTlRJVFkgdXJ0cmkgIiYjeDI1Rjk7Ij48IUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiPjwhRU5USVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ij48IUVOVElUWSBGaWxsZWRTbWFsbFNxdWFyZSAiJiN4MjVGQzsiPjwhRU5USVRZIHN0YXJmICImI3gyNjA1OyI%2BPCFFTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiPjwhRU5USVRZIHN0YXIgIiYjeDI2MDY7Ij48IUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiPjwhRU5USVRZIGZlbWFsZSAiJiN4MjY0MDsiPjwhRU5USVRZIG1hbGUgIiYjeDI2NDI7Ij48IUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ij48IUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ij48IUVOVElUWSBjbHVicyAiJiN4MjY2MzsiPjwhRU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI%2BPCFFTlRJVFkgaGVhcnRzICImI3gyNjY1OyI%2BPCFFTlRJVFkgaGVhcnRzdWl0ICImI3gyNjY1OyI%2BPCFFTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ij48IUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiPjwhRU5USVRZIHN1bmcgIiYjeDI2NkE7Ij48IUVOVElUWSBmbGF0ICImI3gyNjZEOyI%2BPCFFTlRJVFkgbmF0dXIgIiYjeDI2NkU7Ij48IUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyI%2BPCFFTlRJVFkgc2hhcnAgIiYjeDI2NkY7Ij48IUVOVElUWSBjaGVjayAiJiN4MjcxMzsiPjwhRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiPjwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI%2BPCFFTlRJVFkgbWFsdCAiJiN4MjcyMDsiPjwhRU5USVRZIG1hbHRlc2UgIiYjeDI3MjA7Ij48IUVOVElUWSBzZXh0ICImI3gyNzM2OyI%2BPCFFTlRJVFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ij48IUVOVElUWSBsYmJyayAiJiN4Mjc3MjsiPjwhRU5USVRZIHJiYnJrICImI3gyNzczOyI%2BPCFFTlRJVFkgYnNvbGhzdWIgIiYjeDI3Qzg7Ij48IUVOVElUWSBzdXBoc29sICImI3gyN0M5OyI%2BPCFFTlRJVFkgbG9icmsgIiYjeDI3RTY7Ij48IUVOVElUWSBMZWZ0RG91YmxlQnJhY2tldCAiJiN4MjdFNjsiPjwhRU5USVRZIHJvYnJrICImI3gyN0U3OyI%2BPCFFTlRJVFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyI%2BPCFFTlRJVFkgbGFuZyAiJiN4MjdFODsiPjwhRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ij48IUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ij48IUVOVElUWSByYW5nICImI3gyN0U5OyI%2BPCFFTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ij48IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij48IUVOVElUWSBMYW5nICImI3gyN0VBOyI%2BPCFFTlRJVFkgUmFuZyAiJiN4MjdFQjsiPjwhRU5USVRZIGxvYW5nICImI3gyN0VDOyI%2BPCFFTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ij48IUVOVElUWSB4bGFyciAiJiN4MjdGNTsiPjwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij48IUVOVElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyI%2BPCFFTlRJVFkgeHJhcnIgIiYjeDI3RjY7Ij48IUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPjwhRU5USVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyI%2BPCFFTlRJVFkgeGhhcnIgIiYjeDI3Rjc7Ij48IUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ij48IUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ij48IUVOVElUWSB4bEFyciAiJiN4MjdGODsiPjwhRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ij48IUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyI%2BPCFFTlRJVFkgeHJBcnIgIiYjeDI3Rjk7Ij48IUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsiPjwhRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyI%2BPCFFTlRJVFkgeGhBcnIgIiYjeDI3RkE7Ij48IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ij48IUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3RkE7Ij48IUVOVElUWSB4bWFwICImI3gyN0ZDOyI%2BPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiPjwhRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyI%2BPCFFTlRJVFkgbnZsQXJyICImI3gyOTAyOyI%2BPCFFTlRJVFkgbnZyQXJyICImI3gyOTAzOyI%2BPCFFTlRJVFkgbnZIYXJyICImI3gyOTA0OyI%2BPCFFTlRJVFkgTWFwICImI3gyOTA1OyI%2BPCFFTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ij48IUVOVElUWSByYmFyciAiJiN4MjkwRDsiPjwhRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiPjwhRU5USVRZIGxCYXJyICImI3gyOTBFOyI%2BPCFFTlRJVFkgckJhcnIgIiYjeDI5MEY7Ij48IUVOVElUWSBkYmthcm93ICImI3gyOTBGOyI%2BPCFFTlRJVFkgUkJhcnIgIiYjeDI5MTA7Ij48IUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiPjwhRU5USVRZIEREb3RyYWhkICImI3gyOTExOyI%2BPCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPjwhRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiPjwhRU5USVRZIFJhcnJ0bCAiJiN4MjkxNjsiPjwhRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiPjwhRU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiPjwhRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsiPjwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPjwhRU5USVRZIGxhcnJmcyAiJiN4MjkxRDsiPjwhRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiPjwhRU5USVRZIGxhcnJiZnMgIiYjeDI5MUY7Ij48IUVOVElUWSByYXJyYmZzICImI3gyOTIwOyI%2BPCFFTlRJVFkgbndhcmhrICImI3gyOTIzOyI%2BPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI%2BPCFFTlRJVFkgc2VhcmhrICImI3gyOTI1OyI%2BPCFFTlRJVFkgaGtzZWFyb3cgIiYjeDI5MjU7Ij48IUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ij48IUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiPjwhRU5USVRZIG53bmVhciAiJiN4MjkyNzsiPjwhRU5USVRZIG5lc2VhciAiJiN4MjkyODsiPjwhRU5USVRZIHRvZWEgIiYjeDI5Mjg7Ij48IUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ij48IUVOVElUWSB0b3NhICImI3gyOTI5OyI%2BPCFFTlRJVFkgc3dud2FyICImI3gyOTJBOyI%2BPCFFTlRJVFkgcmFycmMgIiYjeDI5MzM7Ij48IUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4MzM4OyI%2BPCFFTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiPjwhRU5USVRZIGxkY2EgIiYjeDI5MzY7Ij48IUVOVElUWSByZGNhICImI3gyOTM3OyI%2BPCFFTlRJVFkgY3VkYXJybCAiJiN4MjkzODsiPjwhRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsiPjwhRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ij48IUVOVElUWSBjdWxhcnJwICImI3gyOTNEOyI%2BPCFFTlRJVFkgcmFycnBsICImI3gyOTQ1OyI%2BPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPjwhRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyI%2BPCFFTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ij48IUVOVElUWSBsZHJ1c2hhciAiJiN4Mjk0QjsiPjwhRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiPjwhRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyI%2BPCFFTlRJVFkgRG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiPjwhRU5USVRZIExlZnRVcERvd25WZWN0b3IgIiYjeDI5NTE7Ij48IUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyI%2BPCFFTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ij48IUVOVElUWSBSaWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyI%2BPCFFTlRJVFkgUmlnaHREb3duVmVjdG9yQmFyICImI3gyOTU1OyI%2BPCFFTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij48IUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ij48IUVOVElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ij48IUVOVElUWSBMZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPjwhRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7Ij48IUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiPjwhRU5USVRZIFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij48IUVOVElUWSBSaWdodERvd25UZWVWZWN0b3IgIiYjeDI5NUQ7Ij48IUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1RTsiPjwhRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPjwhRU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiPjwhRU5USVRZIExlZnREb3duVGVlVmVjdG9yICImI3gyOTYxOyI%2BPCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPjwhRU5USVRZIHVIYXIgIiYjeDI5NjM7Ij48IUVOVElUWSBySGFyICImI3gyOTY0OyI%2BPCFFTlRJVFkgZEhhciAiJiN4Mjk2NTsiPjwhRU5USVRZIGx1cnVoYXIgIiYjeDI5NjY7Ij48IUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyI%2BPCFFTlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPjwhRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ij48IUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ij48IUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7Ij48IUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ij48IUVOVElUWSBscmhhcmQgIiYjeDI5NkQ7Ij48IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPjwhRU5USVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ij48IUVOVElUWSBkdWhhciAiJiN4Mjk2RjsiPjwhRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyI%2BPCFFTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyI%2BPCFFTlRJVFkgZXJhcnIgIiYjeDI5NzE7Ij48IUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyI%2BPCFFTlRJVFkgbGFycnNpbSAiJiN4Mjk3MzsiPjwhRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ij48IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij48IUVOVElUWSBsdGxhcnIgIiYjeDI5NzY7Ij48IUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ij48IUVOVElUWSBzdWJyYXJyICImI3gyOTc5OyI%2BPCFFTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiPjwhRU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiPjwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPjwhRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiPjwhRU5USVRZIGRmaXNodCAiJiN4Mjk3RjsiPjwhRU5USVRZIGxvcGFyICImI3gyOTg1OyI%2BPCFFTlRJVFkgcm9wYXIgIiYjeDI5ODY7Ij48IUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiPjwhRU5USVRZIHJicmtlICImI3gyOThDOyI%2BPCFFTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsiPjwhRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ij48IUVOVElUWSBsYnJrc2xkICImI3gyOThGOyI%2BPCFFTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiPjwhRU5USVRZIGxhbmdkICImI3gyOTkxOyI%2BPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij48IUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ij48IUVOVElUWSBycGFyZ3QgIiYjeDI5OTQ7Ij48IUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ij48IUVOVElUWSBsdHJQYXIgIiYjeDI5OTY7Ij48IUVOVElUWSB2emlnemFnICImI3gyOTlBOyI%2BPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI%2BPCFFTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7Ij48IUVOVElUWSBhbmdlICImI3gyOUE0OyI%2BPCFFTlRJVFkgcmFuZ2UgIiYjeDI5QTU7Ij48IUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyI%2BPCFFTlRJVFkgdXdhbmdsZSAiJiN4MjlBNzsiPjwhRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyI%2BPCFFTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ij48IUVOVElUWSBhbmdtc2RhYyAiJiN4MjlBQTsiPjwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI%2BPCFFTlRJVFkgYW5nbXNkYWUgIiYjeDI5QUM7Ij48IUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsiPjwhRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyI%2BPCFFTlRJVFkgYW5nbXNkYWggIiYjeDI5QUY7Ij48IUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyI%2BPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPjwhRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7Ij48IUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiPjwhRU5USVRZIGxhZW1wdHl2ICImI3gyOUI0OyI%2BPCFFTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ij48IUVOVElUWSBvbWlkICImI3gyOUI2OyI%2BPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsiPjwhRU5USVRZIG9wZXJwICImI3gyOUI5OyI%2BPCFFTlRJVFkgb2xjcm9zcyAiJiN4MjlCQjsiPjwhRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiPjwhRU5USVRZIG9sY2lyICImI3gyOUJFOyI%2BPCFFTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ij48IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij48IUVOVElUWSBvZ3QgIiYjeDI5QzE7Ij48IUVOVElUWSBjaXJzY2lyICImI3gyOUMyOyI%2BPCFFTlRJVFkgY2lyRSAiJiN4MjlDMzsiPjwhRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ij48IUVOVElUWSBic29sYiAiJiN4MjlDNTsiPjwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPjwhRU5USVRZIHRyaXNiICImI3gyOUNEOyI%2BPCFFTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ij48IUVOVElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij48IUVOVElUWSBOb3RMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyI%2BPCFFTlRJVFkgUmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsiPjwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI%2BPCFFTlRJVFkgaWluZmluICImI3gyOURDOyI%2BPCFFTlRJVFkgaW5maW50aWUgIiYjeDI5REQ7Ij48IUVOVElUWSBudmluZmluICImI3gyOURFOyI%2BPCFFTlRJVFkgZXBhcnNsICImI3gyOUUzOyI%2BPCFFTlRJVFkgc21lcGFyc2wgIiYjeDI5RTQ7Ij48IUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiPjwhRU5USVRZIGxvemYgIiYjeDI5RUI7Ij48IUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ij48IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPjwhRU5USVRZIGRzb2wgIiYjeDI5RjY7Ij48IUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiPjwhRU5USVRZIGJpZ29kb3QgIiYjeDJBMDA7Ij48IUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ij48IUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiPjwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPjwhRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiPjwhRU5USVRZIHh1cGx1cyAiJiN4MkEwNDsiPjwhRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyI%2BPCFFTlRJVFkgeHNxY3VwICImI3gyQTA2OyI%2BPCFFTlRJVFkgYmlnc3FjdXAgIiYjeDJBMDY7Ij48IUVOVElUWSBxaW50ICImI3gyQTBDOyI%2BPCFFTlRJVFkgaWlpaW50ICImI3gyQTBDOyI%2BPCFFTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ij48IUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiPjwhRU5USVRZIGF3aW50ICImI3gyQTExOyI%2BPCFFTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ij48IUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsiPjwhRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ij48IUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiPjwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij48IUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiPjwhRU5USVRZIHBsdXNjaXIgIiYjeDJBMjI7Ij48IUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiPjwhRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ij48IUVOVElUWSBwbHVzZHUgIiYjeDJBMjU7Ij48IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI%2BPCFFTlRJVFkgcGx1c3R3byAiJiN4MkEyNzsiPjwhRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiPjwhRU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ij48IUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7Ij48IUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ij48IUVOVElUWSBDcm9zcyAiJiN4MkEyRjsiPjwhRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiPjwhRU5USVRZIHRpbWVzYmFyICImI3gyQTMxOyI%2BPCFFTlRJVFkgc21hc2hwICImI3gyQTMzOyI%2BPCFFTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiPjwhRU5USVRZIHJvdGltZXMgIiYjeDJBMzU7Ij48IUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiPjwhRU5USVRZIE90aW1lcyAiJiN4MkEzNzsiPjwhRU5USVRZIG9kaXYgIiYjeDJBMzg7Ij48IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI%2BPCFFTlRJVFkgdHJpbWludXMgIiYjeDJBM0E7Ij48IUVOVElUWSB0cml0aW1lICImI3gyQTNCOyI%2BPCFFTlRJVFkgaXByb2QgIiYjeDJBM0M7Ij48IUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyI%2BPCFFTlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ij48IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij48IUVOVElUWSBuY3VwICImI3gyQTQyOyI%2BPCFFTlRJVFkgbmNhcCAiJiN4MkE0MzsiPjwhRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiPjwhRU5USVRZIGN1cG9yICImI3gyQTQ1OyI%2BPCFFTlRJVFkgY3VwY2FwICImI3gyQTQ2OyI%2BPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI%2BPCFFTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ij48IUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiPjwhRU5USVRZIGN1cGN1cCAiJiN4MkE0QTsiPjwhRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiPjwhRU5USVRZIGNjdXBzICImI3gyQTRDOyI%2BPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij48IUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyI%2BPCFFTlRJVFkgQW5kICImI3gyQTUzOyI%2BPCFFTlRJVFkgT3IgIiYjeDJBNTQ7Ij48IUVOVElUWSBhbmRhbmQgIiYjeDJBNTU7Ij48IUVOVElUWSBvcm9yICImI3gyQTU2OyI%2BPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPjwhRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyI%2BPCFFTlRJVFkgYW5kdiAiJiN4MkE1QTsiPjwhRU5USVRZIG9ydiAiJiN4MkE1QjsiPjwhRU5USVRZIGFuZGQgIiYjeDJBNUM7Ij48IUVOVElUWSBvcmQgIiYjeDJBNUQ7Ij48IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij48IUVOVElUWSBzZG90ZSAiJiN4MkE2NjsiPjwhRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiPjwhRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7Ij48IUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7Ij48IUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ij48IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij48IUVOVElUWSBhcEUgIiYjeDJBNzA7Ij48IUVOVElUWSBuYXBFICImI3gyQTcwOyYjeDMzODsiPjwhRU5USVRZIGVwbHVzICImI3gyQTcxOyI%2BPCFFTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ij48IUVOVElUWSBFc2ltICImI3gyQTczOyI%2BPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI%2BPCFFTlRJVFkgRXF1YWwgIiYjeDJBNzU7Ij48IUVOVElUWSBlRERvdCAiJiN4MkE3NzsiPjwhRU5USVRZIGRkb3RzZXEgIiYjeDJBNzc7Ij48IUVOVElUWSBlcXVpdkREICImI3gyQTc4OyI%2BPCFFTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ij48IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPjwhRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ij48IUVOVElUWSBndHF1ZXN0ICImI3gyQTdDOyI%2BPCFFTlRJVFkgbGVzICImI3gyQTdEOyI%2BPCFFTlRJVFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ij48IUVOVElUWSBsZXFzbGFudCAiJiN4MkE3RDsiPjwhRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyI%2BPCFFTlRJVFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyI%2BPCFFTlRJVFkgbmxlcXNsYW50ICImI3gyQTdEOyYjeDMzODsiPjwhRU5USVRZIGdlcyAiJiN4MkE3RTsiPjwhRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyI%2BPCFFTlRJVFkgZ2Vxc2xhbnQgIiYjeDJBN0U7Ij48IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiPjwhRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiPjwhRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ij48IUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ij48IUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ij48IUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyI%2BPCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPjwhRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyI%2BPCFFTlRJVFkgZ2VzZG90b2wgIiYjeDJBODQ7Ij48IUVOVElUWSBsYXAgIiYjeDJBODU7Ij48IUVOVElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyI%2BPCFFTlRJVFkgZ2FwICImI3gyQTg2OyI%2BPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI%2BPCFFTlRJVFkgbG5lICImI3gyQTg3OyI%2BPCFFTlRJVFkgbG5lcSAiJiN4MkE4NzsiPjwhRU5USVRZIGduZSAiJiN4MkE4ODsiPjwhRU5USVRZIGduZXEgIiYjeDJBODg7Ij48IUVOVElUWSBsbmFwICImI3gyQTg5OyI%2BPCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij48IUVOVElUWSBnbmFwICImI3gyQThBOyI%2BPCFFTlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7Ij48IUVOVElUWSBsRWcgIiYjeDJBOEI7Ij48IUVOVElUWSBsZXNzZXFxZ3RyICImI3gyQThCOyI%2BPCFFTlRJVFkgZ0VsICImI3gyQThDOyI%2BPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPjwhRU5USVRZIGxzaW1lICImI3gyQThEOyI%2BPCFFTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ij48IUVOVElUWSBsc2ltZyAiJiN4MkE4RjsiPjwhRU5USVRZIGdzaW1sICImI3gyQTkwOyI%2BPCFFTlRJVFkgbGdFICImI3gyQTkxOyI%2BPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI%2BPCFFTlRJVFkgbGVzZ2VzICImI3gyQTkzOyI%2BPCFFTlRJVFkgZ2VzbGVzICImI3gyQTk0OyI%2BPCFFTlRJVFkgZWxzICImI3gyQTk1OyI%2BPCFFTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJBOTU7Ij48IUVOVElUWSBlZ3MgIiYjeDJBOTY7Ij48IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI%2BPCFFTlRJVFkgZWxzZG90ICImI3gyQTk3OyI%2BPCFFTlRJVFkgZWdzZG90ICImI3gyQTk4OyI%2BPCFFTlRJVFkgZWwgIiYjeDJBOTk7Ij48IUVOVElUWSBlZyAiJiN4MkE5QTsiPjwhRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ij48IUVOVElUWSBzaW1nICImI3gyQTlFOyI%2BPCFFTlRJVFkgc2ltbEUgIiYjeDJBOUY7Ij48IUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiPjwhRU5USVRZIExlc3NMZXNzICImI3gyQUExOyI%2BPCFFTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7JiN4MzM4OyI%2BPCFFTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ij48IUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ij48IUVOVElUWSBnbGogIiYjeDJBQTQ7Ij48IUVOVElUWSBnbGEgIiYjeDJBQTU7Ij48IUVOVElUWSBsdGNjICImI3gyQUE2OyI%2BPCFFTlRJVFkgZ3RjYyAiJiN4MkFBNzsiPjwhRU5USVRZIGxlc2NjICImI3gyQUE4OyI%2BPCFFTlRJVFkgZ2VzY2MgIiYjeDJBQTk7Ij48IUVOVElUWSBzbXQgIiYjeDJBQUE7Ij48IUVOVElUWSBsYXQgIiYjeDJBQUI7Ij48IUVOVElUWSBzbXRlICImI3gyQUFDOyI%2BPCFFTlRJVFkgc210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiPjwhRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ij48IUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyI%2BPCFFTlRJVFkgYnVtcEUgIiYjeDJBQUU7Ij48IUVOVElUWSBwcmUgIiYjeDJBQUY7Ij48IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij48IUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFGOyI%2BPCFFTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ij48IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPjwhRU5USVRZIE5vdFByZWNlZGVzRXF1YWwgIiYjeDJBQUY7JiN4MzM4OyI%2BPCFFTlRJVFkgc2NlICImI3gyQUIwOyI%2BPCFFTlRJVFkgc3VjY2VxICImI3gyQUIwOyI%2BPCFFTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4MkFCMDsiPjwhRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyI%2BPCFFTlRJVFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ij48IUVOVElUWSBOb3RTdWNjZWVkc0VxdWFsICImI3gyQUIwOyYjeDMzODsiPjwhRU5USVRZIHByRSAiJiN4MkFCMzsiPjwhRU5USVRZIHNjRSAiJiN4MkFCNDsiPjwhRU5USVRZIHBybkUgIiYjeDJBQjU7Ij48IUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiPjwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij48IUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiPjwhRU5USVRZIHByYXAgIiYjeDJBQjc7Ij48IUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyI%2BPCFFTlRJVFkgc2NhcCAiJiN4MkFCODsiPjwhRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJBQjg7Ij48IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPjwhRU5USVRZIHByZWNuYXBwcm94ICImI3gyQUI5OyI%2BPCFFTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ij48IUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiPjwhRU5USVRZIFByICImI3gyQUJCOyI%2BPCFFTlRJVFkgU2MgIiYjeDJBQkM7Ij48IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij48IUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ij48IUVOVElUWSBzdWJwbHVzICImI3gyQUJGOyI%2BPCFFTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiPjwhRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ij48IUVOVElUWSBzdXBtdWx0ICImI3gyQUMyOyI%2BPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiPjwhRU5USVRZIHN1cGVkb3QgIiYjeDJBQzQ7Ij48IUVOVElUWSBzdWJFICImI3gyQUM1OyI%2BPCFFTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyI%2BPCFFTlRJVFkgbnN1YkUgIiYjeDJBQzU7JiN4MzM4OyI%2BPCFFTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ij48IUVOVElUWSBzdXBFICImI3gyQUM2OyI%2BPCFFTlRJVFkgc3Vwc2V0ZXFxICImI3gyQUM2OyI%2BPCFFTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyI%2BPCFFTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ij48IUVOVElUWSBzdWJzaW0gIiYjeDJBQzc7Ij48IUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ij48IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPjwhRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ij48IUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiPjwhRU5USVRZIHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPjwhRU5USVRZIHN1cG5FICImI3gyQUNDOyI%2BPCFFTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiPjwhRU5USVRZIHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyI%2BPCFFTlRJVFkgdmFyc3Vwc2V0bmVxcSAiJiN4MkFDQzsmI3hGRTAwOyI%2BPCFFTlRJVFkgY3N1YiAiJiN4MkFDRjsiPjwhRU5USVRZIGNzdXAgIiYjeDJBRDA7Ij48IUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiPjwhRU5USVRZIGNzdXBlICImI3gyQUQyOyI%2BPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI%2BPCFFTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyI%2BPCFFTlRJVFkgc3Vic3ViICImI3gyQUQ1OyI%2BPCFFTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyI%2BPCFFTlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiPjwhRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7Ij48IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPjwhRU5USVRZIHRvcGZvcmsgIiYjeDJBREE7Ij48IUVOVElUWSBtbGNwICImI3gyQURCOyI%2BPCFFTlRJVFkgRGFzaHYgIiYjeDJBRTQ7Ij48IUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyI%2BPCFFTlRJVFkgVmRhc2hsICImI3gyQUU2OyI%2BPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPjwhRU5USVRZIHZCYXIgIiYjeDJBRTg7Ij48IUVOVElUWSB2QmFydiAiJiN4MkFFOTsiPjwhRU5USVRZIFZiYXIgIiYjeDJBRUI7Ij48IUVOVElUWSBOb3QgIiYjeDJBRUM7Ij48IUVOVElUWSBiTm90ICImI3gyQUVEOyI%2BPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij48IUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ij48IUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ij48IUVOVElUWSB0b3BjaXIgIiYjeDJBRjE7Ij48IUVOVElUWSBuaHBhciAiJiN4MkFGMjsiPjwhRU5USVRZIHBhcnNpbSAiJiN4MkFGMzsiPjwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI%2BPCFFTlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ij48IUVOVElUWSBmZmxpZyAiJiN4RkIwMDsiPjwhRU5USVRZIGZpbGlnICImI3hGQjAxOyI%2BPCFFTlRJVFkgZmxsaWcgIiYjeEZCMDI7Ij48IUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ij48IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij48IUVOVElUWSBBc2NyICImI3gxRDQ5QzsiPjwhRU5USVRZIENzY3IgIiYjeDFENDlFOyI%2BPCFFTlRJVFkgRHNjciAiJiN4MUQ0OUY7Ij48IUVOVElUWSBHc2NyICImI3gxRDRBMjsiPjwhRU5USVRZIEpzY3IgIiYjeDFENEE1OyI%2BPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij48IUVOVElUWSBOc2NyICImI3gxRDRBOTsiPjwhRU5USVRZIE9zY3IgIiYjeDFENEFBOyI%2BPCFFTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ij48IUVOVElUWSBRc2NyICImI3gxRDRBQzsiPjwhRU5USVRZIFNzY3IgIiYjeDFENEFFOyI%2BPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij48IUVOVElUWSBVc2NyICImI3gxRDRCMDsiPjwhRU5USVRZIFZzY3IgIiYjeDFENEIxOyI%2BPCFFTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ij48IUVOVElUWSBYc2NyICImI3gxRDRCMzsiPjwhRU5USVRZIFlzY3IgIiYjeDFENEI0OyI%2BPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij48IUVOVElUWSBhc2NyICImI3gxRDRCNjsiPjwhRU5USVRZIGJzY3IgIiYjeDFENEI3OyI%2BPCFFTlRJVFkgY3NjciAiJiN4MUQ0Qjg7Ij48IUVOVElUWSBkc2NyICImI3gxRDRCOTsiPjwhRU5USVRZIGZzY3IgIiYjeDFENEJCOyI%2BPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij48IUVOVElUWSBpc2NyICImI3gxRDRCRTsiPjwhRU5USVRZIGpzY3IgIiYjeDFENEJGOyI%2BPCFFTlRJVFkga3NjciAiJiN4MUQ0QzA7Ij48IUVOVElUWSBsc2NyICImI3gxRDRDMTsiPjwhRU5USVRZIG1zY3IgIiYjeDFENEMyOyI%2BPCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij48IUVOVElUWSBwc2NyICImI3gxRDRDNTsiPjwhRU5USVRZIHFzY3IgIiYjeDFENEM2OyI%2BPCFFTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ij48IUVOVElUWSBzc2NyICImI3gxRDRDODsiPjwhRU5USVRZIHRzY3IgIiYjeDFENEM5OyI%2BPCFFTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij48IUVOVElUWSB2c2NyICImI3gxRDRDQjsiPjwhRU5USVRZIHdzY3IgIiYjeDFENENDOyI%2BPCFFTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ij48IUVOVElUWSB5c2NyICImI3gxRDRDRTsiPjwhRU5USVRZIHpzY3IgIiYjeDFENENGOyI%2BPCFFTlRJVFkgQWZyICImI3gxRDUwNDsiPjwhRU5USVRZIEJmciAiJiN4MUQ1MDU7Ij48IUVOVElUWSBEZnIgIiYjeDFENTA3OyI%2BPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPjwhRU5USVRZIEZmciAiJiN4MUQ1MDk7Ij48IUVOVElUWSBHZnIgIiYjeDFENTBBOyI%2BPCFFTlRJVFkgSmZyICImI3gxRDUwRDsiPjwhRU5USVRZIEtmciAiJiN4MUQ1MEU7Ij48IUVOVElUWSBMZnIgIiYjeDFENTBGOyI%2BPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPjwhRU5USVRZIE5mciAiJiN4MUQ1MTE7Ij48IUVOVElUWSBPZnIgIiYjeDFENTEyOyI%2BPCFFTlRJVFkgUGZyICImI3gxRDUxMzsiPjwhRU5USVRZIFFmciAiJiN4MUQ1MTQ7Ij48IUVOVElUWSBTZnIgIiYjeDFENTE2OyI%2BPCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPjwhRU5USVRZIFVmciAiJiN4MUQ1MTg7Ij48IUVOVElUWSBWZnIgIiYjeDFENTE5OyI%2BPCFFTlRJVFkgV2ZyICImI3gxRDUxQTsiPjwhRU5USVRZIFhmciAiJiN4MUQ1MUI7Ij48IUVOVElUWSBZZnIgIiYjeDFENTFDOyI%2BPCFFTlRJVFkgYWZyICImI3gxRDUxRTsiPjwhRU5USVRZIGJmciAiJiN4MUQ1MUY7Ij48IUVOVElUWSBjZnIgIiYjeDFENTIwOyI%2BPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPjwhRU5USVRZIGVmciAiJiN4MUQ1MjI7Ij48IUVOVElUWSBmZnIgIiYjeDFENTIzOyI%2BPCFFTlRJVFkgZ2ZyICImI3gxRDUyNDsiPjwhRU5USVRZIGhmciAiJiN4MUQ1MjU7Ij48IUVOVElUWSBpZnIgIiYjeDFENTI2OyI%2BPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPjwhRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ij48IUVOVElUWSBsZnIgIiYjeDFENTI5OyI%2BPCFFTlRJVFkgbWZyICImI3gxRDUyQTsiPjwhRU5USVRZIG5mciAiJiN4MUQ1MkI7Ij48IUVOVElUWSBvZnIgIiYjeDFENTJDOyI%2BPCFFTlRJVFkgcGZyICImI3gxRDUyRDsiPjwhRU5USVRZIHFmciAiJiN4MUQ1MkU7Ij48IUVOVElUWSByZnIgIiYjeDFENTJGOyI%2BPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsiPjwhRU5USVRZIHRmciAiJiN4MUQ1MzE7Ij48IUVOVElUWSB1ZnIgIiYjeDFENTMyOyI%2BPCFFTlRJVFkgdmZyICImI3gxRDUzMzsiPjwhRU5USVRZIHdmciAiJiN4MUQ1MzQ7Ij48IUVOVElUWSB4ZnIgIiYjeDFENTM1OyI%2BPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPjwhRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ij48IUVOVElUWSBBb3BmICImI3gxRDUzODsiPjwhRU5USVRZIEJvcGYgIiYjeDFENTM5OyI%2BPCFFTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ij48IUVOVElUWSBFb3BmICImI3gxRDUzQzsiPjwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI%2BPCFFTlRJVFkgR29wZiAiJiN4MUQ1M0U7Ij48IUVOVElUWSBJb3BmICImI3gxRDU0MDsiPjwhRU5USVRZIEpvcGYgIiYjeDFENTQxOyI%2BPCFFTlRJVFkgS29wZiAiJiN4MUQ1NDI7Ij48IUVOVElUWSBMb3BmICImI3gxRDU0MzsiPjwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI%2BPCFFTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ij48IUVOVElUWSBTb3BmICImI3gxRDU0QTsiPjwhRU5USVRZIFRvcGYgIiYjeDFENTRCOyI%2BPCFFTlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ij48IUVOVElUWSBWb3BmICImI3gxRDU0RDsiPjwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI%2BPCFFTlRJVFkgWG9wZiAiJiN4MUQ1NEY7Ij48IUVOVElUWSBZb3BmICImI3gxRDU1MDsiPjwhRU5USVRZIGFvcGYgIiYjeDFENTUyOyI%2BPCFFTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ij48IUVOVElUWSBjb3BmICImI3gxRDU1NDsiPjwhRU5USVRZIGRvcGYgIiYjeDFENTU1OyI%2BPCFFTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ij48IUVOVElUWSBmb3BmICImI3gxRDU1NzsiPjwhRU5USVRZIGdvcGYgIiYjeDFENTU4OyI%2BPCFFTlRJVFkgaG9wZiAiJiN4MUQ1NTk7Ij48IUVOVElUWSBpb3BmICImI3gxRDU1QTsiPjwhRU5USVRZIGpvcGYgIiYjeDFENTVCOyI%2BPCFFTlRJVFkga29wZiAiJiN4MUQ1NUM7Ij48IUVOVElUWSBsb3BmICImI3gxRDU1RDsiPjwhRU5USVRZIG1vcGYgIiYjeDFENTVFOyI%2BPCFFTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ij48IUVOVElUWSBvb3BmICImI3gxRDU2MDsiPjwhRU5USVRZIHBvcGYgIiYjeDFENTYxOyI%2BPCFFTlRJVFkgcW9wZiAiJiN4MUQ1NjI7Ij48IUVOVElUWSByb3BmICImI3gxRDU2MzsiPjwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI%2BPCFFTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ij48IUVOVElUWSB1b3BmICImI3gxRDU2NjsiPjwhRU5USVRZIHZvcGYgIiYjeDFENTY3OyI%2BPCFFTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ij48IUVOVElUWSB4b3BmICImI3gxRDU2OTsiPjwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI%2BPCFFTlRJVFkgem9wZiAiJiN4MUQ1NkI7Ij4%3D">the URL given by this
1.190 sruby 30028: link</a>. (This URL is a DTD containing the entity reference
30029: declarations for the names listed in the <a href="#named-character-references">named character
30030: references</a> section.)</p>
30031:
30032: <ul class="brief"><li><code title="">-//W3C//DTD XHTML 1.0 Transitional//EN</code></li>
30033: <li><code title="">-//W3C//DTD XHTML 1.1//EN</code></li>
30034: <li><code title="">-//W3C//DTD XHTML 1.0 Strict//EN</code></li>
30035: <li><code title="">-//W3C//DTD XHTML 1.0 Frameset//EN</code></li>
30036: <li><code title="">-//W3C//DTD XHTML Basic 1.0//EN</code></li>
30037: <li><code title="">-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN</code></li>
30038: <li><code title="">-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN</code></li>
30039: <li><code title="">-//W3C//DTD MathML 2.0//EN</code></li>
30040: <li><code title="">-//WAPFORUM//DTD XHTML Mobile 1.0//EN</code></li>
30041: </ul><p>Furthermore, user agents should attempt to retrieve the above
30042: external entity's content when one of the above public identifiers
30043: is used, and should not attempt to retrieve any other external
30044: entity's content.</p>
30045:
30046: <p class="note">This is not strictly a <a href="introduction.html#willful-violation" title="willful
30047: violation">violation</a> of the XML specification, but it does
30048: contradict the spirit of the XML specification's requirements. This
30049: is motivated by a desire for user agents to all handle entities in
30050: an interoperable fashion without requiring any network access for
30051: handling external subsets. <a href="#refsXML">[XML]</a></p>
30052:
30053: <p id="scriptTagXML">When an <a href="#xml-parser">XML parser</a> creates a
30054: <code><a href="the-script-element.html#the-script-element">script</a></code> element, it must be marked as being
30055: <a href="the-script-element.html#parser-inserted">"parser-inserted"</a> and its <a href="the-script-element.html#force-async">"force-async"</a>
30056: flag must be unset. If the parser was originally created for the
30057: <a href="#xml-fragment-parsing-algorithm">XML fragment parsing algorithm</a>, then the element must
30058: be marked as <a href="the-script-element.html#already-started">"already started"</a> also. When the element's
30059: end tag is parsed, the user agent must <a href="#provide-a-stable-state">provide a stable
30060: state</a>, and then <a href="the-script-element.html#prepare-a-script" title="prepare a script">prepare</a>
30061: the <code><a href="the-script-element.html#the-script-element">script</a></code> element. If this causes there to be a
30062: <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking script</a>, then the user agent
30063: must run the following steps:</p>
30064:
30065: <ol><li><p>Block this instance of the <a href="#xml-parser">XML parser</a>, such
30066: that the <a href="#event-loop">event loop</a> will not run <a href="#concept-task" title="concept-task">tasks</a> that invoke it.</p></li>
30067:
30068: <li><p><a href="#spin-the-event-loop">Spin the event loop</a> until the parser's
30069: <code><a href="dom.html#document">Document</a></code> <a href="styling.html#has-no-style-sheet-that-is-blocking-scripts">has no style sheet that is blocking
30070: scripts</a> and the <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking
30071: script</a>'s <a href="the-script-element.html#ready-to-be-parser-executed">"ready to be parser-executed"</a> flag is
30072: set.</p></li>
30073:
30074: <li><p>Unblock this instance of the <a href="#xml-parser">XML parser</a>, such
30075: that <a href="#concept-task" title="concept-task">tasks</a> that invoke it can
30076: again be run.</p></li>
30077:
30078: <li><p><a href="the-script-element.html#execute-the-script-block" title="execute the script block">Execute</a> the
30079: <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking script</a>.</p></li>
30080:
30081: <li><p>There is no longer a <a href="the-script-element.html#pending-parsing-blocking-script">pending parsing-blocking
30082: script</a>.</p></li>
30083:
30084: </ol><p class="note">Since the <code title="dom-document-write"><a href="dynamic-markup-insertion.html#dom-document-write">document.write()</a></code> API is not
30085: available for <a href="infrastructure.html#xml-documents">XML documents</a>, much of the complexity in
30086: the <a href="#html-parser">HTML parser</a> is not needed in the <a href="#xml-parser">XML
30087: parser</a>.</p>
30088:
30089: <p>Certain algorithms in this specification <dfn id="feed-the-parser" title="feed the
30090: parser">spoon-feed the parser</dfn> characters one string at a
30091: time. In such cases, the <a href="#xml-parser">XML parser</a> must act as it
30092: would have if faced with a single string consisting of the
30093: concatenation of all those characters.</p>
30094:
30095: <p>When an <a href="#xml-parser">XML parser</a> reaches the end of its input, it
30096: must <a href="#stop-parsing">stop parsing</a>, following the same rules as the
30097: <a href="#html-parser">HTML parser</a>. An <a href="#xml-parser">XML parser</a> can also be
30098: <a href="#abort-a-parser" title="abort a parser">aborted</a>, which must again by
30099: done in the same way as for an <a href="#html-parser">HTML parser</a>.</p>
30100:
30101: <p>For the purposes of conformance checkers, if a resource is
30102: determined to be in <a href="#the-xhtml-syntax">the XHTML syntax</a>, then it is an
30103: <a href="infrastructure.html#xml-documents" title="XML documents">XML document</a>.</p>
30104:
30105:
30106:
30107: <h3 id="serializing-xhtml-fragments"><span class="secno">9.3 </span>Serializing XHTML fragments</h3>
30108:
30109: <p>The <dfn id="xml-fragment-serialization-algorithm">XML fragment serialization algorithm</dfn> for a
30110: <code><a href="dom.html#document">Document</a></code> or <code><a href="infrastructure.html#element">Element</a></code> node either returns a
30111: fragment of XML that represents that node or throws an
30112: exception.</p>
30113:
30114: <p>For <code><a href="dom.html#document">Document</a></code>s, the algorithm must return a string in
30115: the form of a <a href="http://www.w3.org/TR/xml/#sec-well-formed">document
30116: entity</a>, if none of the error cases below apply.</p>
30117:
30118: <p>For <code><a href="infrastructure.html#element">Element</a></code>s, the algorithm must return a string in
30119: the form of an <a href="http://www.w3.org/TR/xml/#wf-entities">internal general parsed
30120: entity</a>, if none of the error cases below apply.</p>
30121:
30122: <p>In both cases, the string returned must be XML
30123: namespace-well-formed and must be an isomorphic serialization of all
30124: of that node's child nodes, in <a href="infrastructure.html#tree-order">tree order</a>. User agents
30125: may adjust prefixes and namespace declarations in the serialization
30126: (and indeed might be forced to do so in some cases to obtain
30127: namespace-well-formed XML). User agents may use a combination of
30128: regular text and character references to represent
30129: <code><a href="infrastructure.html#text-0">Text</a></code> nodes in the DOM.</p>
30130:
30131: <p>For <code><a href="infrastructure.html#element">Element</a></code>s, if any of the elements in the
30132: serialization are in no namespace, the default namespace in scope
30133: for those elements must be explicitly declared as the empty
30134: string.<!-- because otherwise round-tripping might break since it'll
30135: pick up the surrounding default ns when setting --> (This doesn't
30136: apply in the <code><a href="dom.html#document">Document</a></code> case.) <a href="#refsXML">[XML]</a> <a href="#refsXMLNS">[XMLNS]</a></p>
30137:
30138: <p>For the purposes of this section, an internal general parsed
30139: entity is considered XML namespace-well-formed if a document
30140: consisting of an element with no namespace declarations whose
30141: contents are the internal general parsed entity would itself be XML
30142: namespace-well-formed.</p>
30143:
30144: <p>If any of the following error cases are found in the DOM subtree
30145: being serialized, then the algorithm must throw an
30146: <code><a href="infrastructure.html#invalidstateerror">InvalidStateError</a></code> exception instead of returning a
30147: string:</p>
30148:
30149: <ul><li>A <code><a href="dom.html#document">Document</a></code> node with no child element nodes.</li>
30150:
30151: <li>A <code><a href="infrastructure.html#documenttype">DocumentType</a></code> node that has an external subset
30152: public identifier that contains characters that are not matched by
30153: the XML <code title="">PubidChar</code> production. <a href="#refsXML">[XML]</a></li>
30154:
30155: <li>A <code><a href="infrastructure.html#documenttype">DocumentType</a></code> node that has an external subset
30156: system identifier that contains both a """ (U+0022)
30157: and a "'" (U+0027) or that contains characters that are
30158: not matched by the XML <code title="">Char</code> production. <a href="#refsXML">[XML]</a></li>
30159:
30160: <li>A node with a <!--prefix or--> local name containing a ":" (U+003A).</li> <!--(prefixes can get adjusted, so this isn't an
30161: excuse) -->
30162:
30163: <li>A node with a <!--prefix or--> local name that does not match
30164: the XML <code title="">Name</code> production. <a href="#refsXML">[XML]</a></li> <!--(again, prefixes can get
30165: adjusted, so this isn't an excuse) -->
30166:
30167: <li>An <code><a href="infrastructure.html#attr">Attr</a></code> node with no namespace whose local name is
30168: the lowercase string "<code title="">xmlns</code>". <a href="#refsXMLNS">[XMLNS]</a></li>
30169:
30170: <li>An <code><a href="infrastructure.html#element">Element</a></code> node with two or more attributes with
30171: the same local name and namespace.</li>
30172:
30173: <li>An <code><a href="infrastructure.html#attr">Attr</a></code> node, <code><a href="infrastructure.html#text-0">Text</a></code> node,
30174: <code><a href="infrastructure.html#comment-0">Comment</a></code> node, or <code><a href="infrastructure.html#processinginstruction">ProcessingInstruction</a></code>
30175: node whose data contains characters that are not matched by the XML
30176: <code title="">Char</code> production. <a href="#refsXML">[XML]</a></li>
30177:
30178: <li>A <code><a href="infrastructure.html#comment-0">Comment</a></code> node whose data contains two adjacent
30179: "-" (U+002D) characters or ends with such a
30180: character.</li>
30181:
30182: <li>A <code><a href="infrastructure.html#processinginstruction">ProcessingInstruction</a></code> node whose target name is
30183: an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">xml</code>".</li>
30184:
30185: <li>A <code><a href="infrastructure.html#processinginstruction">ProcessingInstruction</a></code> node whose target name
30186: contains a ":" (U+003A).</li>
30187:
30188: <li>A <code><a href="infrastructure.html#processinginstruction">ProcessingInstruction</a></code> node whose data contains
30189: the string "<code title="">?></code>".</li>
30190:
30191: </ul><p class="note">These are the only ways to make a DOM
30192: unserializable. The DOM enforces all the other XML constraints; for
30193: example, trying to append two elements to a <code><a href="dom.html#document">Document</a></code>
30194: node will throw a <code><a href="infrastructure.html#hierarchyrequesterror">HierarchyRequestError</a></code> exception.</p>
30195:
30196:
30197:
30198: <h3 id="parsing-xhtml-fragments"><span class="secno">9.4 </span>Parsing XHTML fragments</h3>
30199:
30200: <p>The <dfn id="xml-fragment-parsing-algorithm">XML fragment parsing algorithm</dfn> either returns a
30201: <code><a href="dom.html#document">Document</a></code> or throws a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception.
30202: Given a string <var title="">input</var> and an optional context
30203: element <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var>, the
30204: algorithm is as follows:</p>
30205:
30206: <ol><li>
30207:
30208: <p>Create a new <a href="#xml-parser">XML parser</a>.</p>
30209:
30210: </li>
30211:
30212: <li>
30213:
30214: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element,
30215: <a href="#feed-the-parser">feed the parser</a> just created the string corresponding
30216: to the start tag of that element, declaring all the namespace
30217: prefixes that are in scope on that element in the DOM, as well as
30218: declaring the default namespace (if any) that is in scope on that
30219: element in the DOM.</p>
30220:
30221: <p>A namespace prefix is in scope if the DOM Core <code title="">lookupNamespaceURI()</code> method on the element would
30222: return a non-null value for that prefix.</p>
30223:
30224: <p>The default namespace is the namespace for which the DOM Core
30225: <code title="">isDefaultNamespace()</code> method on the element
30226: would return true.</p>
30227:
30228: <p class="note">If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, no <code title="">DOCTYPE</code> is passed to the parser, and therefore no
30229: external subset is referenced, and therefore no entities will be
30230: recognized.</p>
30231:
30232: </li>
30233:
30234: <li>
30235:
30236: <p><a href="#feed-the-parser">Feed the parser</a> just created the string <var title="">input</var>.</p>
30237:
30238: </li>
30239:
30240: <li>
30241:
30242: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element,
30243: <a href="#feed-the-parser">feed the parser</a> just created the string corresponding
30244: to the end tag of that element.</p>
30245:
30246: </li>
30247:
30248: <li>
30249:
30250: <p>If there is an XML well-formedness or XML namespace
30251: well-formedness error, then throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code>
30252: exception and abort these steps.</p>
30253:
30254: </li>
30255:
30256: <li>
30257:
30258: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, and the
30259: root element of the resulting <code><a href="dom.html#document">Document</a></code> has any
30260: sibling nodes, then throw a <code><a href="infrastructure.html#syntaxerror">SyntaxError</a></code> exception and
30261: abort these steps.</p>
30262:
30263: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1443 -->
30264:
30265: </li>
30266:
30267: <li>
30268:
30269: <p>If there is a <var title="concept-frag-parse-context"><a href="#concept-frag-parse-context">context</a></var> element, then
30270: return the child nodes of the root element of the resulting
30271: <code><a href="dom.html#document">Document</a></code>, in <a href="infrastructure.html#tree-order">tree order</a>.</p>
30272:
30273: <p>Otherwise, return the children of the <code><a href="dom.html#document">Document</a></code>
30274: object, in <a href="infrastructure.html#tree-order">tree order</a>.</p>
30275:
30276: </li>
30277:
30278: </ol></div>
30279:
30280:
30281: <!--TOPIC:Rendering-->
30282:
30283: <div class="impl">
30284:
30285: <h2 id="rendering"><span class="secno">10 </span>Rendering</h2>
30286:
30287: <p><i>User agents are not required to present HTML documents in any
30288: particular way. However, this section provides a set of suggestions
30289: for rendering HTML documents that, if followed, are likely to lead
30290: to a user experience that closely resembles the experience intended
30291: by the documents' authors. So as to avoid confusion regarding the
30292: normativity of this section, RFC2119 terms have not been used.
30293: Instead, the term "expected" is used to indicate behavior that will
30294: lead to this experience. For the purposes of conformance for user
30295: agents designated as <a href="infrastructure.html#renderingUA">supporting the suggested
30296: default rendering</a>, the term "expected" in this section has the
30297: same conformance implications as the RFC2119-defined term
30298: "must".</i></p>
30299:
30300:
30301: <h3 id="introduction-8"><span class="secno">10.1 </span>Introduction</h3>
30302:
30303: <p>In general, user agents are expected to support CSS, and many of
30304: the suggestions in this section are expressed in CSS terms. User
30305: agents that use other presentation mechanisms can derive their
30306: expected behavior by translating from the CSS rules given in this
30307: section.</p>
30308:
30309: <p>In the absence of style-layer rules to the contrary (e.g. author
30310: style sheets), user agents are expected to render an element so that
30311: it conveys to the user the meaning that the element
30312: <dfn id="represents">represents</dfn>, as described by this specification.</p>
30313:
30314: <p>The suggestions in this section generally assume a visual output
30315: medium with a resolution of 96dpi or greater, but HTML is intended
30316: to apply to multiple media (it is a <i>media-independent</i>
30317: language). User agent implementors are encouraged to adapt the
30318: suggestions in this section to their target media.</p>
30319:
30320: <hr><p>An element is <dfn id="being-rendered">being rendered</dfn> if it is <a href="infrastructure.html#in-a-document">in a
30321: <code>Document</code></a>, either its parent node is itself
30322: <a href="#being-rendered">being rendered</a> or it is the <code><a href="dom.html#document">Document</a></code> node,
30323: and it is not explicitly excluded from the rendering using either:</p>
30324: <ul class="brief"><li>the CSS 'display' property's 'none' value, or</li>
30325: <li>the 'visibility' property's 'collapse' value unless it is being treated as equivalent to the 'hidden' value, or</li>
30326: <li>some equivalent in other styling languages.</li>
30327: </ul><p class="note">Just being off-screen does not mean the element is
30328: not <a href="#being-rendered">being rendered</a>. The presence of the <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute normally means the
30329: element is not <a href="#being-rendered">being rendered</a>, though this might be
30330: overridden by the style sheets.</p>
30331:
30332: <hr><p>User agents that do not honor author-level CSS style sheets are
30333: nonetheless expected to act as if they applied the CSS rules given
30334: in these sections in a manner consistent with this specification and
30335: the relevant CSS and Unicode specifications. <a href="#refsCSS">[CSS]</a> <a href="#refsUNICODE">[UNICODE]</a> <a href="#refsBIDI">[BIDI]</a></p>
30336:
30337: <p class="note">This is especially important for issues relating to
30338: the 'display', 'unicode-bidi', and 'direction' properties.</p>
30339:
30340:
30341:
30342: <h3 id="the-css-user-agent-style-sheet-and-presentational-hints"><span class="secno">10.2 </span>The CSS user agent style sheet and presentational hints</h3>
30343:
30344: <p>The CSS rules given in these subsections are, except where
30345: otherwise specified, expected to be used as part of the user-agent
30346: level style sheet defaults for all documents that contain <a href="infrastructure.html#html-elements">HTML
30347: elements</a>.</p>
30348:
30349: <p>Some rules are intended for the author-level zero-specificity
30350: presentational hints part of the CSS cascade; these are explicitly
30351: called out as <dfn id="presentational-hints">presentational hints</dfn>.</p>
30352:
30353: <p>Some of the rules regarding left and right margins are given here
30354: as appropriate for elements whose 'direction' property is 'ltr', and
30355: are expected to be flipped around on elements whose 'direction'
30356: property is 'rtl'. These are marked "<dfn id="ltr-specific">LTR-specific</dfn>".</p>
30357:
30358: <p class="note">These markings only affect the handling of attribute
30359: <em>values</em>, not attribute names or element names.</p>
30360:
30361: <hr><p>When the text below says that an attribute <var title="">attribute</var> on an element <var title="">element</var>
30362: <dfn id="maps-to-the-pixel-length-property">maps to the pixel length property</dfn> (or properties) <var title="">properties</var>, it means that if <var title="">element</var> has an attribute <var title="">attribute</var> set, and parsing that attribute's value
30363: using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative integers</a>
30364: doesn't generate an error, then the user agent is expected to use
30365: the parsed value as a pixel length for a <a href="#presentational-hints" title="presentational
30366: hints">presentational hint</a> for <var title="">properties</var>.</p>
30367:
30368: <p>When the text below says that an attribute <var title="">attribute</var> on an element <var title="">element</var>
30369: <dfn id="maps-to-the-dimension-property">maps to the dimension property</dfn> (or properties) <var title="">properties</var>, it means that if <var title="">element</var> has an attribute <var title="">attribute</var> set, and parsing that attribute's value
30370: using the <a href="common-microsyntaxes.html#rules-for-parsing-dimension-values">rules for parsing dimension values</a> doesn't
30371: generate an error, then the user agent is expected to use the parsed
30372: dimension as the value for a <a href="#presentational-hints" title="presentational
30373: hints">presentational hint</a> for <var title="">properties</var>, with the value given as a pixel length if
30374: the dimension was an integer, and with the value given as a
30375: percentage if the dimension was a percentage.</p>
30376:
30377: <p>When a user agent is to <dfn id="align-descendants">align descendants</dfn> of a node,
30378: the user agent is expected to align only those descendants that have
30379: both their 'margin-left' and 'margin-right' properties computing to
30380: a value other than 'auto', that are over-constrained and that have
30381: one of those two margins with a used value forced to a greater
30382: value, and that do not themselves have an applicable <code title="attr-align">align</code> attribute. When multiple elements
30383: are to <a href="#align-descendants" title="align descendants">align</a> a particular
30384: descendant, the most deeply nested such element is expected to
30385: override the others. Aligned elements are expected to be aligned by
30386: having the used values of their left and right margins be set
30387: accordingly.</p>
30388:
30389:
30390:
30391: <h3 id="non-replaced-elements"><span class="secno">10.3 </span>Non-replaced elements</h3>
30392:
30393:
30394: <h4 id="hidden-elements"><span class="secno">10.3.1 </span>Hidden elements</h4>
30395:
30396: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30397:
30398: [hidden], area, base, basefont, command, datalist, head,
30399: input[type=hidden i], link, menu[type=context i], meta, noembed, noframes,
30400: param, rp, script, source, style, track, title {
30401: display: none;
30402: }</pre>
30403:
30404: <p>The user agent is expected to force the 'display' property of
30405: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code> elements for whom <a href="#concept-n-script" title="concept-n-script">scripting is enabled</a> to compute to
30406: 'none', irrespective of CSS rules.</p>
30407:
30408:
30409: <h4 id="the-page"><span class="secno">10.3.2 </span>The page</h4>
30410:
30411: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30412:
30413: html, body { display: block; }</pre>
30414:
30415:
30416: <!-- body { margin: 8px; } -->
30417:
30418: <p>For each property in the table below, given a <code><a href="the-body-element.html#the-body-element">body</a></code>
30419: element, the first attribute that exists <a href="#maps-to-the-pixel-length-property">maps to the pixel
30420: length property</a> on the <code><a href="the-body-element.html#the-body-element">body</a></code> element. If none of
30421: the attributes for a property are found, or if the value of the
30422: attribute that was found cannot be parsed successfully, then, if the
30423: <code><a href="the-body-element.html#the-body-element">body</a></code> element's <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing
30424: context</a> does not have its <a href="the-iframe-element.html#seamless-browsing-context-flag">seamless browsing context
30425: flag</a> set, a default value of 8px is expected to be used for
30426: that property instead.</p>
30427:
30428: <table><thead><tr><th>Property
30429: </th><th>Source
30430: </th></tr></thead><tbody><tr><td rowspan="3">'margin-top'
30431: </td><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-marginheight"><a href="#attr-body-marginheight">marginheight</a></code> attribute
30432: </td></tr><tr><td>The <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#container-frame-element">container frame element</a>'s <code title="attr-iframe-marginheight"><a href="#attr-iframe-marginheight">marginheight</a></code> attribute
30433: </td></tr><tr><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-topmargin">topmargin</code> attribute
30434: </td></tr></tbody><tbody><tr><td rowspan="3">'margin-right'
30435: </td><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-marginwidth"><a href="#attr-body-marginwidth">marginwidth</a></code> attribute
30436: </td></tr><tr><td>The <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#container-frame-element">container frame element</a>'s <code title="attr-iframe-marginwidth"><a href="#attr-iframe-marginwidth">marginwidth</a></code> attribute
30437: </td></tr><tr><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-rightmargin">rightmargin</code> attribute
30438: </td></tr></tbody><tbody><tr><td rowspan="3">'margin-bottom'
30439: </td><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-marginheight"><a href="#attr-body-marginheight">marginheight</a></code> attribute
30440: </td></tr><tr><td>The <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#container-frame-element">container frame element</a>'s <code title="attr-iframe-marginheight"><a href="#attr-iframe-marginheight">marginheight</a></code> attribute
30441: </td></tr><tr><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-bottommargin">bottommargin</code> attribute
30442: </td></tr></tbody><tbody><tr><td rowspan="3">'margin-left'
30443: </td><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-marginwidth"><a href="#attr-body-marginwidth">marginwidth</a></code> attribute
30444: </td></tr><tr><td>The <code><a href="the-body-element.html#the-body-element">body</a></code> element's <a href="#container-frame-element">container frame element</a>'s <code title="attr-iframe-marginwidth"><a href="#attr-iframe-marginwidth">marginwidth</a></code> attribute
30445: </td></tr><tr><td><code><a href="the-body-element.html#the-body-element">body</a></code> element's <code title="attr-body-leftmargin">leftmargin</code> attribute
30446: </td></tr></tbody></table><p>If the <code><a href="the-body-element.html#the-body-element">body</a></code> element's <code><a href="dom.html#document">Document</a></code>'s
30447: <a href="#browsing-context">browsing context</a> is a <a href="#nested-browsing-context">nested browsing
30448: context</a>, and the <a href="#browsing-context-container">browsing context container</a> of
30449: that <a href="#nested-browsing-context">nested browsing context</a> is a <code><a href="#frame">frame</a></code> or
30450: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element, then the <dfn id="container-frame-element">container frame
30451: element</dfn> of the <code><a href="the-body-element.html#the-body-element">body</a></code> element is that
30452: <code><a href="#frame">frame</a></code> or <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element. Otherwise, there
30453: is no <a href="#container-frame-element">container frame element</a>.</p>
30454:
30455: <p class="warning">The above requirements imply that a page can
30456: change the margins of another page (including one from another
30457: <a href="#origin-0">origin</a>) using, for example, an
30458: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>. This is potentially a security risk, as it
30459: might in some cases allow an attack to contrive a situation in which
30460: a page is rendered not as the author intended, possibly for the
30461: purposes of phishing or otherwise misleading the user.</p>
30462:
30463: <hr><p>If the <code><a href="dom.html#document">Document</a></code> has a <a href="infrastructure.html#root-element">root element</a>, and
30464: the <code><a href="dom.html#document">Document</a></code>'s <a href="#browsing-context">browsing context</a> is a
30465: <a href="#nested-browsing-context">nested browsing context</a>, and the <a href="#browsing-context-container">browsing context
30466: container</a> of that <a href="#nested-browsing-context">nested browsing context</a> is a
30467: <code><a href="#frame">frame</a></code> or <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element, and that element
30468: has a <code title="attr-frames-scrolling">scrolling</code>
30469: attribute, then the user agent is expected to compare the value of
30470: the attribute in an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> manner to
30471: the values in the first column of the following table, and if one of
30472: them matches, then the user agent is expected to treat that
30473: attribute as a <a href="#presentational-hints" title="presentational hints">presentational
30474: hint</a> for the aforementioned root element's 'overflow'
30475: property, setting it to the value given in the corresponding cell on
30476: the same row in the second column:</p>
30477:
30478: <table><thead><tr><th> Attribute value
30479: </th><th> 'overflow' value
30480: </th></tr></thead><tbody><tr><td><code title="">on</code>
30481: </td><td>'scroll'
30482: </td></tr><tr><td><code title="">scroll</code>
30483: </td><td>'scroll'
30484: </td></tr><tr><td><code title="">yes</code>
30485: </td><td>'scroll'
30486: </td></tr><tr><td><code title="">off</code>
30487: </td><td>'hidden'
30488: </td></tr><tr><td><code title="">noscroll</code>
30489: </td><td>'hidden'
30490: </td></tr><tr><td><code title="">no</code>
30491: </td><td>'hidden'
30492: </td></tr><tr><td><code title="">auto</code>
30493: </td><td>'auto'
30494: </td></tr></tbody></table><hr><p>When a <code><a href="dom.html#document">Document</a></code> is in <a href="infrastructure.html#quirks-mode">quirks mode</a>,
30495: vertical margins on <a href="infrastructure.html#html-elements">HTML elements</a> at the top or bottom
30496: of <code><a href="the-body-element.html#the-body-element">body</a></code> elements are expected to be collapsed to
30497: zero.</p>
30498:
30499: <hr><p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-background"><a href="#attr-background">background</a></code> attribute set to a
30500: non-empty value, the new value is expected to be <a href="urls.html#resolve-a-url" title="resolve a url">resolved</a> relative to the element, and
30501: if this is successful, the user agent is expected to treat the
30502: attribute as a <a href="#presentational-hints" title="presentational hints">presentational
30503: hint</a> setting the element's 'background-image' property to the
30504: resulting <a href="urls.html#absolute-url">absolute URL</a>.</p>
30505:
30506: <p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-body-bgcolor"><a href="#attr-body-bgcolor">bgcolor</a></code> attribute set, the new
30507: value is expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a
30508: legacy color value</a>, and if that does not return an error, the
30509: user agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30510: element's 'background-color' property to the resulting color.</p>
30511:
30512: <p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-body-text"><a href="#attr-body-text">text</a></code> attribute, its value is expected
30513: to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy color
30514: value</a>, and if that does not return an error, the user
30515: agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30516: element's 'color' property to the resulting color.</p>
30517:
30518: <p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-body-link"><a href="#attr-body-link">link</a></code> attribute, its value is expected
30519: to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy color
30520: value</a>, and if that does not return an error, the user agent
30521: is expected to treat the attribute as a <a href="#presentational-hints" title="presentational
30522: hints">presentational hint</a> setting the 'color' property of
30523: any element in the <code><a href="dom.html#document">Document</a></code> matching the ':link'
30524: pseudo-class to the resulting color.</p>
30525:
30526: <p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-body-vlink"><a href="#attr-body-vlink">vlink</a></code> attribute, its value is
30527: expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy
30528: color value</a>, and if that does not return an error, the user
30529: agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30530: 'color' property of any element in the <code><a href="dom.html#document">Document</a></code>
30531: matching the ':visited' pseudo-class to the resulting color.</p>
30532:
30533: <p>When a <code><a href="the-body-element.html#the-body-element">body</a></code> element has a <code title="attr-body-alink"><a href="#attr-body-alink">alink</a></code> attribute, its value is
30534: expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy
30535: color value</a>, and if that does not return an error, the user
30536: agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30537: 'color' property of any element in the <code><a href="dom.html#document">Document</a></code>
30538: matching the ':active' pseudo-class and either the ':link'
30539: pseudo-class or the ':visited' pseudo-class to the resulting
30540: color.</p>
30541:
30542:
30543:
30544: <h4 id="flow-content-0"><span class="secno">10.3.3 </span>Flow content</h4>
30545:
30546: <!-- del, ins, and map are inline. -->
30547:
30548: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30549:
30550: address, blockquote, center, div, figure, figcaption, footer, form,
30551: header, hr, legend, listing, p, plaintext, pre, summary, xmp {
30552: display: block;<!-- see also unicode-bidi: isolate rules-->
30553: }
30554:
30555: blockquote, figure, listing, p, plaintext, pre, xmp {
30556: margin-top: 1em; margin-bottom: 1em;
30557: }
30558:
30559: blockquote, figure { margin-left: 40px; margin-right: 40px; }
30560:
30561: address { font-style: italic; }
30562: listing, plaintext, pre, xmp {
30563: font-family: monospace; white-space: pre;
30564: }
30565:
30566: dialog:not([open]) { display: none; }
30567: dialog {
30568: position: absolute;
30569: left: 0; right: 0;
30570: margin: auto;
30571: border: solid;
30572: padding: 1em;
30573: background: white;
30574: color: black;
30575: }
30576: dialog::backdrop { background: rgba(0,0,0,0.1); }</pre>
30577:
30578: <p>The following rules are also expected to apply, as
30579: <a href="#presentational-hints">presentational hints</a>:</p>
30580:
30581: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30582:
30583: pre[wrap] { white-space: pre-wrap; }</pre>
30584:
30585: <p>In <a href="infrastructure.html#quirks-mode">quirks mode</a>, the following rules are also
30586: expected to apply:</p>
30587:
30588: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30589:
30590: form { margin-bottom: 1em; }</pre>
30591:
30592: <hr><p>The <code><a href="#center">center</a></code> element, and the <code><a href="the-div-element.html#the-div-element">div</a></code> element
30593: when it has an <code title="attr-div-align"><a href="#attr-div-align">align</a></code> attribute
30594: whose value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for
30595: either the string "<code title="">center</code>" or the string
30596: "<code title="">middle</code>", are expected to center text within
30597: themselves, as if they had their 'text-align' property set to
30598: 'center' in a <a href="#presentational-hints" title="presentational hints">presentational
30599: hint</a>, and to <a href="#align-descendants">align descendants</a> to the
30600: center.</p>
30601:
30602: <p>The <code><a href="the-div-element.html#the-div-element">div</a></code> element, when it has an <code title="attr-align">align</code> attribute whose value is an
30603: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">left</code>", is expected to left-align text within itself,
30604: as if it had its 'text-align' property set to 'left' in a <a href="#presentational-hints" title="presentational hints">presentational hint</a>, and to
30605: <a href="#align-descendants">align descendants</a> to the left.</p>
30606:
30607: <p>The <code><a href="the-div-element.html#the-div-element">div</a></code> element, when it has an <code title="attr-align">align</code> attribute whose value is an
30608: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">right</code>", is expected to right-align text within
30609: itself, as if it had its 'text-align' property set to 'right' in a
30610: <a href="#presentational-hints" title="presentational hints">presentational hint</a>, and
30611: to <a href="#align-descendants">align descendants</a> to the right.</p>
30612:
30613: <p>The <code><a href="the-div-element.html#the-div-element">div</a></code> element, when it has an <code title="attr-align">align</code> attribute whose value is an
30614: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">justify</code>", is expected to full-justify text within
30615: itself, as if it had its 'text-align' property set to 'justify' in a
30616: <a href="#presentational-hints" title="presentational hints">presentational hint</a>, and
30617: to <a href="#align-descendants">align descendants</a> to the left.</p>
30618:
30619:
30620:
30621: <h4 id="phrasing-content-0"><span class="secno">10.3.4 </span>Phrasing content</h4>
30622:
30623: <p class="critical">The rule for <code><a href="the-b-element.html#the-b-element">b</a></code> and
30624: <code><a href="the-strong-element.html#the-strong-element">strong</a></code> elements below might change (to 'bolder' instead
30625: of 'bold'). See <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=12154">W3C bug
30626: 12154</a>. Implementation feedback is desired.</p>
30627:
30628: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30629:
30630: cite, dfn, em, i, var { font-style: italic; }
30631: b, strong { font-weight: bold; }
30632: code, kbd, samp, tt { font-family: monospace; }
30633: big { font-size: larger; }
30634: small { font-size: smaller; }
30635:
30636: sub { vertical-align: sub; }
30637: sup { vertical-align: super; }
30638: sub, sup { line-height: normal; font-size: smaller; }
30639:
30640: ruby { display: ruby; }
30641: rt { display: ruby-text; }
30642:
30643: :link { color: #0000EE; }
30644: :visited { color: #551A8B; }
30645: :link, :visited { text-decoration: underline; }
30646: a:link[rel~=help], a:visited[rel~=help],
30647: area:link[rel~=help], area:visited[rel~=help] { cursor: help; }
30648:
30649: :focus { outline: auto; }
30650:
30651: mark { background: yellow; color: black; } /* this color is just a suggestion and can be changed based on implementation feedback */
30652:
30653: abbr[title], acronym[title] { text-decoration: dotted underline; }<!-- CSS3 http://dev.w3.org/csswg/css3-text/#text-decoration-style -->
30654: ins, u { text-decoration: underline; }
30655: del, s, strike { text-decoration: line-through; }
30656: blink { text-decoration: blink; }
30657:
30658: q::before { content: open-quote; }
30659: q::after { content: close-quote; }
30660:
30661: br { content: '\A'; white-space: pre; }
30662: nobr { white-space: nowrap; }
30663: wbr { content: '\200B'; }
30664: nobr wbr { white-space: normal; }</pre>
30665:
30666: <p>The following rules are also expected to apply, as
30667: <a href="#presentational-hints">presentational hints</a>:</p>
30668:
30669: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30670:
30671: br[clear=left i] { clear: left; }
30672: br[clear=right i] { clear: right; }
30673: br[clear=all i], br[clear=both i] { clear: both; }</pre>
30674:
30675: <p>For the purposes of the CSS ruby model, runs of children of
30676: <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code> elements that are not <code><a href="the-rt-element.html#the-rt-element">rt</a></code> or
30677: <code><a href="the-rp-element.html#the-rp-element">rp</a></code> elements are expected to be wrapped in anonymous
30678: boxes whose 'display' property has the value 'ruby-base'. <a href="#refsCSSRUBY">[CSSRUBY]</a></p>
30679:
30680: <p>When a particular part of a ruby has more than one annotation,
30681: the annotations should be distributed on both sides of the base text
30682: so as to minimise the stacking of ruby annotations on one side.</p>
30683:
30684: <p class="note">When it becomes possible to do so, the preceding
30685: requirement will be updated to be expressed in terms of CSS ruby.
30686: (Currently, CSS ruby does not handle nested <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code>
30687: elements or multiple sequential <code><a href="the-rt-element.html#the-rt-element">rt</a></code> elements, which is
30688: how this semantic is expressed.)</p>
30689:
30690: <p>User agents that do not support correct ruby rendering are
30691: expected to render parentheses around the text of <code><a href="the-rt-element.html#the-rt-element">rt</a></code>
30692: elements in the absence of <code><a href="the-rp-element.html#the-rp-element">rp</a></code> elements.</p>
30693:
30694: <hr><p>User agents are expected to
30695: support the 'clear' property on inline elements (in order to render
30696: <code><a href="the-br-element.html#the-br-element">br</a></code> elements with <code title="attr-br-clear"><a href="#attr-br-clear">clear</a></code> attributes) in the manner
30697: described in the non-normative note to this effect in CSS2.1.</p>
30698: <!-- section 9.5.2 of CSS2.1 -->
30699:
30700: <p>The initial value for the 'color' property is expected to be
30701: black. The initial value for the 'background-color' property is
30702: expected to be 'transparent'. The canvas' background is expected to
30703: be white.</p>
30704:
30705: <hr><p>When a <code><a href="#font">font</a></code> element has a <code title="attr-font-color">color</code> attribute, its value is
30706: expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy
30707: color value</a>, and if that does not return an error, the user
30708: agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30709: element's 'color' property to the resulting color.</p>
30710:
30711: <p>When a <code><a href="#font">font</a></code> element has a <code title="attr-font-face">face</code> attribute, the user agent is
30712: expected to treat the attribute as a <a href="#presentational-hints" title="presentational
30713: hints">presentational hint</a> setting the element's
30714: 'font-family' property to the attribute's value.</p>
30715:
30716: <!-- (Apparently only IE supports this?) (Note: if you add this
30717: back, make sure to define which of 'size' vs 'pointsize' wins.)
30718:
30719: <p>When a <code>font</code> element has a <code
30720: title="attr-font-pointsize">pointsize</code> attribute, the user
30721: agent is expected to parse that attribute's value using the
30722: <span>rules for parsing non-negative integers</span>, and if this
30723: doesn't generate an error, then the user agent is expected to use
30724: the parsed value as a <em>point</em> length for a <span
30725: title="presentational hints">presentational hint</span> for the
30726: 'font-size' property on the element.</p>
30727: -->
30728:
30729: <p>When a <code><a href="#font">font</a></code> element has a <code title="attr-font-size">size</code> attribute, the user agent is
30730: expected to use the following steps, known as the <dfn id="rules-for-parsing-a-legacy-font-size">rules for
30731: parsing a legacy font size</dfn>, to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
30732: element's 'font-size' property:</p>
30733:
30734: <ol><li><p>Let <var title="">input</var> be the attribute's
30735: value.</p></li>
30736:
30737: <li><p>Let <var title="">position</var> be a pointer into <var title="">input</var>, initially pointing at the start of the
30738: string.</p></li>
30739:
30740: <li><p><a href="common-microsyntaxes.html#skip-whitespace">Skip whitespace</a>.</p></li>
30741:
30742: <li><p>If <var title="">position</var> is past the end of <var title="">input</var>, there is no <a href="#presentational-hints" title="presentational
30743: hints">presentational hint</a>. Abort these steps.</p></li>
30744:
30745: <li><p>If the character at <var title="">position</var> is a "+" (U+002B) character, then let <var title="">mode</var> be
30746: <i>relative-plus</i>, and advance <var title="">position</var> to
30747: the next character. Otherwise, if the character at <var title="">position</var> is a "-" (U+002D) character,
30748: then let <var title="">mode</var> be <i>relative-minus</i>, and
30749: advance <var title="">position</var> to the next
30750: character. Otherwise, let <var title="">mode</var> be
30751: <i>absolute</i>.</p></li>
30752:
30753: <li><p><a href="common-microsyntaxes.html#collect-a-sequence-of-characters">Collect a sequence of characters</a> in the range
30754: <a href="common-microsyntaxes.html#ascii-digits">ASCII digits</a>, and let the
30755: resulting sequence be <var title="">digits</var>.</p></li>
30756:
30757: <li><p>If <var title="">digits</var> is the empty string, there is
30758: no <a href="#presentational-hints" title="presentational hints">presentational
30759: hint</a>. Abort these steps.</p></li>
30760:
30761: <li><p>Interpret <var title="">digits</var> as a base-ten
30762: integer. Let <var title="">value</var> be the resulting
30763: number.</p></li>
30764:
30765: <li>
30766:
30767: <!-- basefont support would go here, but we removed it -->
30768:
30769: <p>If <var title="">mode</var> is <i>relative-plus</i>, then
30770: increment <var title="">value</var> by 3. If <var title="">mode</var> is <i>relative-minus</i>, then let <var title="">value</var> be the result of subtracting <var title="">value</var> from 3.</p>
30771:
30772: </li>
30773:
30774: <li><p>If <var title="">value</var> is greater than 7, let it be
30775: 7.</p></li>
30776:
30777: <li><p>If <var title="">value</var> is less than 1, let it be
30778: 1.</p></li>
30779:
30780: <li>
30781:
30782: <p>Set 'font-size' to the keyword corresponding to the value of
30783: <var title="">value</var> according to the following table:</p>
30784:
30785: <table><thead><tr><th><var title="">value</var>
30786: </th><th>'font-size' keyword
30787: </th><th>Notes
30788: </th></tr></thead><tbody><tr><td>1
30789: </td><td>x-small
30790: </td><td>
30791: </td></tr><tr><td>2
30792: </td><td>small
30793: </td><td>
30794: </td></tr><tr><td>3
30795: </td><td>medium
30796: </td><td>
30797: </td></tr><tr><td>4
30798: </td><td>large
30799: </td><td>
30800: </td></tr><tr><td>5
30801: </td><td>x-large
30802: </td><td>
30803: </td></tr><tr><td>6
30804: </td><td>xx-large
30805: </td><td>
30806: </td></tr><tr><td>7
30807: </td><td>x<!---->xx-large
30808: </td><td><i>see below</i>
30809: </td></tr></tbody></table><p>The 'x<!---->xx-large' value is a non-CSS value used here to
30810: indicate a font size 50% larger than 'xx-large'.</p>
30811:
30812: </li>
30813:
30814: </ol><h4 id="bidirectional-text"><span class="secno">10.3.5 </span>Bidirectional text</h4>
30815:
30816: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30817:
30818: :dir(ltr) { direction: ltr; }
30819: :dir(rtl) { direction: rtl; }
30820:
30821: address, blockquote, center, div, figure, figcaption, footer, form,
30822: header, hr, legend, listing, p, plaintext, pre, summary, xmp, article,
30823: aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section, table, caption,
30824: colgroup, col, thead, tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu,
30825: ol, ul, li {
30826: unicode-bidi: isolate;<!-- basically anything that is display:block-like -->
30827: }
30828:
30829: :matches([dir=ltr i], [dir=rtl i], [dir=auto i]):not(address):not(blockquote
30830: ):not(center):not(div):not(figure):not(figcaption):not(footer):not(form
30831: ):not(header):not(hr):not(legend):not(listing):not(p):not(plaintext):not(pre
30832: ):not(summary):not(xmp):not(article):not(aside):not(h1):not(h2):not(h3):not(h4
30833: ):not(h5):not(h6):not(hgroup):not(nav):not(section):not(table):not(caption
30834: ):not(colgroup):not(col):not(thead):not(tbody):not(tfoot):not(tr):not(td
30835: ):not(th):not(dir):not(dd):not(dl):not(dt):not(menu):not(ol):not(ul):not(li) {
30836: unicode-bidi: embed;
30837: }
30838:
30839: bdi, bdi:matches([dir=ltr i], [dir=rtl i]),
30840: output, output:matches([dir=ltr i], [dir=rtl i]),
30841: [dir=auto i] {
30842: unicode-bidi: isolate;
30843: }
30844:
30845: bdo, bdo:matches([dir=ltr i], [dir=rtl i]) { unicode-bidi: bidi-override; }
30846: bdo[dir=auto i] { unicode-bidi: isolate-override; }
30847:
30848: textarea[dir=auto i], pre[dir=auto i] { unicode-bidi: plaintext; }</pre>
30849:
30850:
30851: <h4 id="quotes"><span class="secno">10.3.6 </span>Quotes</h4>
30852:
30853: <p>This block is automatically generated from the Unicode Common
30854: Locale Data Repository. <a href="#refsCLDR">[CLDR]</a></p>
30855:
30856: <p>User agents are expected to use either the block below (which
30857: will be regularly updated) or to automatically generate their own
30858: copy directly from the source material. The language codes are
30859: derived from the CLDR file names. The quotes are derived from the
30860: <code title="">delimiter</code> blocks, with fallback handled as
30861: specified in the CLDR documentation.</p>
30862:
30863: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
30864:
1.193 sruby 30865: :root { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30866: :root:lang(af), :not(:lang(af)) > :lang(af) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30867: :root:lang(agq), :not(:lang(agq)) > :lang(agq) { quotes: '\201e' '\201d' '\201a' '\2019' } /* „ ” ‚ ’ */
30868: :root:lang(ak), :not(:lang(ak)) > :lang(ak) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30869: :root:lang(am), :not(:lang(am)) > :lang(am) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30870: :root:lang(ar), :not(:lang(ar)) > :lang(ar) { quotes: '\201d' '\201c' '\2019' '\2018' } /* ” “ ’ ‘ */
30871: :root:lang(asa), :not(:lang(asa)) > :lang(asa) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30872: :root:lang(az-Cyrl), :not(:lang(az-Cyrl)) > :lang(az-Cyrl) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30873: :root:lang(bas), :not(:lang(bas)) > :lang(bas) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */
30874: :root:lang(bem), :not(:lang(bem)) > :lang(bem) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30875: :root:lang(bez), :not(:lang(bez)) > :lang(bez) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30876: :root:lang(bg), :not(:lang(bg)) > :lang(bg) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30877: :root:lang(bm), :not(:lang(bm)) > :lang(bm) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30878: :root:lang(bn), :not(:lang(bn)) > :lang(bn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30879: :root:lang(br), :not(:lang(br)) > :lang(br) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30880: :root:lang(brx), :not(:lang(brx)) > :lang(brx) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30881: :root:lang(bs-Cyrl), :not(:lang(bs-Cyrl)) > :lang(bs-Cyrl) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30882: :root:lang(ca), :not(:lang(ca)) > :lang(ca) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */
30883: :root:lang(cgg), :not(:lang(cgg)) > :lang(cgg) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30884: :root:lang(chr), :not(:lang(chr)) > :lang(chr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30885: :root:lang(cs), :not(:lang(cs)) > :lang(cs) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30886: :root:lang(da), :not(:lang(da)) > :lang(da) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30887: :root:lang(dav), :not(:lang(dav)) > :lang(dav) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30888: :root:lang(de), :not(:lang(de)) > :lang(de) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30889: :root:lang(de-CH), :not(:lang(de-CH)) > :lang(de-CH) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30890: :root:lang(dje), :not(:lang(dje)) > :lang(dje) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30891: :root:lang(dua), :not(:lang(dua)) > :lang(dua) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */
30892: :root:lang(dyo), :not(:lang(dyo)) > :lang(dyo) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30893: :root:lang(dz), :not(:lang(dz)) > :lang(dz) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30894: :root:lang(ebu), :not(:lang(ebu)) > :lang(ebu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30895: :root:lang(ee), :not(:lang(ee)) > :lang(ee) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30896: :root:lang(el), :not(:lang(el)) > :lang(el) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30897: :root:lang(en), :not(:lang(en)) > :lang(en) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30898: :root:lang(es), :not(:lang(es)) > :lang(es) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */
30899: :root:lang(et), :not(:lang(et)) > :lang(et) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30900: :root:lang(eu), :not(:lang(eu)) > :lang(eu) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */
30901: :root:lang(ewo), :not(:lang(ewo)) > :lang(ewo) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30902: :root:lang(fa), :not(:lang(fa)) > :lang(fa) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30903: :root:lang(ff), :not(:lang(ff)) > :lang(ff) { quotes: '\201e' '\201d' '\201a' '\2019' } /* „ ” ‚ ’ */
30904: :root:lang(fi), :not(:lang(fi)) > :lang(fi) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */
30905: :root:lang(fr), :not(:lang(fr)) > :lang(fr) { quotes: '\00ab' '\00bb' '\00ab' '\00bb' } /* « » « » */
30906: :root:lang(fr-CA), :not(:lang(fr-CA)) > :lang(fr-CA) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30907: :root:lang(fr-CH), :not(:lang(fr-CH)) > :lang(fr-CH) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30908: :root:lang(gsw), :not(:lang(gsw)) > :lang(gsw) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30909: :root:lang(gu), :not(:lang(gu)) > :lang(gu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30910: :root:lang(guz), :not(:lang(guz)) > :lang(guz) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30911: :root:lang(ha), :not(:lang(ha)) > :lang(ha) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30912: :root:lang(he), :not(:lang(he)) > :lang(he) { quotes: '\0022' '\0022' '\0027' '\0027' } /* " " ' ' */
30913: :root:lang(hi), :not(:lang(hi)) > :lang(hi) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30914: :root:lang(hr), :not(:lang(hr)) > :lang(hr) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30915: :root:lang(hu), :not(:lang(hu)) > :lang(hu) { quotes: '\201e' '\201d' '\00bb' '\00ab' } /* „ ” » « */
30916: :root:lang(id), :not(:lang(id)) > :lang(id) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30917: :root:lang(ig), :not(:lang(ig)) > :lang(ig) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30918: :root:lang(it), :not(:lang(it)) > :lang(it) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30919: :root:lang(ja), :not(:lang(ja)) > :lang(ja) { quotes: '\300c' '\300d' '\300e' '\300f' } /* 「 」 『 』 */
30920: :root:lang(jgo), :not(:lang(jgo)) > :lang(jgo) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30921: :root:lang(jmc), :not(:lang(jmc)) > :lang(jmc) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30922: :root:lang(kab), :not(:lang(kab)) > :lang(kab) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30923: :root:lang(kam), :not(:lang(kam)) > :lang(kam) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30924: :root:lang(kde), :not(:lang(kde)) > :lang(kde) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30925: :root:lang(kea), :not(:lang(kea)) > :lang(kea) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30926: :root:lang(khq), :not(:lang(khq)) > :lang(khq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30927: :root:lang(ki), :not(:lang(ki)) > :lang(ki) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30928: :root:lang(kkj), :not(:lang(kkj)) > :lang(kkj) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */
30929: :root:lang(kln), :not(:lang(kln)) > :lang(kln) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30930: :root:lang(km), :not(:lang(km)) > :lang(km) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30931: :root:lang(kn), :not(:lang(kn)) > :lang(kn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30932: :root:lang(ko), :not(:lang(ko)) > :lang(ko) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30933: :root:lang(ksb), :not(:lang(ksb)) > :lang(ksb) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30934: :root:lang(ksf), :not(:lang(ksf)) > :lang(ksf) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */
30935: :root:lang(lag), :not(:lang(lag)) > :lang(lag) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */
30936: :root:lang(lg), :not(:lang(lg)) > :lang(lg) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30937: :root:lang(ln), :not(:lang(ln)) > :lang(ln) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30938: :root:lang(lo), :not(:lang(lo)) > :lang(lo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30939: :root:lang(lt), :not(:lang(lt)) > :lang(lt) { quotes: '\201e' '\201c' '\201e' '\201c' } /* „ “ „ “ */
30940: :root:lang(lu), :not(:lang(lu)) > :lang(lu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30941: :root:lang(luo), :not(:lang(luo)) > :lang(luo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30942: :root:lang(luy), :not(:lang(luy)) > :lang(luy) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30943: :root:lang(lv), :not(:lang(lv)) > :lang(lv) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30944: :root:lang(mas), :not(:lang(mas)) > :lang(mas) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30945: :root:lang(mer), :not(:lang(mer)) > :lang(mer) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30946: :root:lang(mfe), :not(:lang(mfe)) > :lang(mfe) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30947: :root:lang(mg), :not(:lang(mg)) > :lang(mg) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30948: :root:lang(mgo), :not(:lang(mgo)) > :lang(mgo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30949: :root:lang(mk), :not(:lang(mk)) > :lang(mk) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30950: :root:lang(ml), :not(:lang(ml)) > :lang(ml) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30951: :root:lang(mr), :not(:lang(mr)) > :lang(mr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30952: :root:lang(ms), :not(:lang(ms)) > :lang(ms) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30953: :root:lang(mua), :not(:lang(mua)) > :lang(mua) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30954: :root:lang(my), :not(:lang(my)) > :lang(my) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30955: :root:lang(naq), :not(:lang(naq)) > :lang(naq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30956: :root:lang(nb), :not(:lang(nb)) > :lang(nb) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */
30957: :root:lang(nd), :not(:lang(nd)) > :lang(nd) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30958: :root:lang(nl), :not(:lang(nl)) > :lang(nl) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30959: :root:lang(nmg), :not(:lang(nmg)) > :lang(nmg) { quotes: '\201e' '\201d' '\00ab' '\00bb' } /* „ ” « » */
30960: :root:lang(nn), :not(:lang(nn)) > :lang(nn) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */
30961: :root:lang(nnh), :not(:lang(nnh)) > :lang(nnh) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30962: :root:lang(nus), :not(:lang(nus)) > :lang(nus) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30963: :root:lang(nyn), :not(:lang(nyn)) > :lang(nyn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30964: :root:lang(pl), :not(:lang(pl)) > :lang(pl) { quotes: '\201e' '\201d' '\00ab' '\00bb' } /* „ ” « » */
30965: :root:lang(pt), :not(:lang(pt)) > :lang(pt) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30966: :root:lang(pt-PT), :not(:lang(pt-PT)) > :lang(pt-PT) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30967: :root:lang(rn), :not(:lang(rn)) > :lang(rn) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */
30968: :root:lang(ro), :not(:lang(ro)) > :lang(ro) { quotes: '\201e' '\201d' '\00ab' '\00bb' } /* „ ” « » */
30969: :root:lang(rof), :not(:lang(rof)) > :lang(rof) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30970: :root:lang(ru), :not(:lang(ru)) > :lang(ru) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */
30971: :root:lang(rw), :not(:lang(rw)) > :lang(rw) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */
30972: :root:lang(rwk), :not(:lang(rwk)) > :lang(rwk) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30973: :root:lang(saq), :not(:lang(saq)) > :lang(saq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30974: :root:lang(sbp), :not(:lang(sbp)) > :lang(sbp) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30975: :root:lang(seh), :not(:lang(seh)) > :lang(seh) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30976: :root:lang(ses), :not(:lang(ses)) > :lang(ses) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30977: :root:lang(sg), :not(:lang(sg)) > :lang(sg) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
30978: :root:lang(shi), :not(:lang(shi)) > :lang(shi) { quotes: '\00ab' '\00bb' '\201e' '\201d' } /* « » „ ” */
30979: :root:lang(shi-Latn), :not(:lang(shi-Latn)) > :lang(shi-Latn) { quotes: '\00ab' '\00bb' '\201e' '\201d' } /* « » „ ” */
30980: :root:lang(si), :not(:lang(si)) > :lang(si) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30981: :root:lang(sk), :not(:lang(sk)) > :lang(sk) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30982: :root:lang(sl), :not(:lang(sl)) > :lang(sl) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30983: :root:lang(sn), :not(:lang(sn)) > :lang(sn) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */
30984: :root:lang(so), :not(:lang(so)) > :lang(so) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30985: :root:lang(sq), :not(:lang(sq)) > :lang(sq) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30986: :root:lang(sr), :not(:lang(sr)) > :lang(sr) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30987: :root:lang(sr-Latn), :not(:lang(sr-Latn)) > :lang(sr-Latn) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */
30988: :root:lang(sv), :not(:lang(sv)) > :lang(sv) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */
30989: :root:lang(sw), :not(:lang(sw)) > :lang(sw) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30990: :root:lang(swc), :not(:lang(swc)) > :lang(swc) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30991: :root:lang(ta), :not(:lang(ta)) > :lang(ta) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30992: :root:lang(te), :not(:lang(te)) > :lang(te) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30993: :root:lang(teo), :not(:lang(teo)) > :lang(teo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30994: :root:lang(th), :not(:lang(th)) > :lang(th) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30995: :root:lang(ti-ER), :not(:lang(ti-ER)) > :lang(ti-ER) { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */
30996: :root:lang(to), :not(:lang(to)) > :lang(to) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30997: :root:lang(tr), :not(:lang(tr)) > :lang(tr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30998: :root:lang(twq), :not(:lang(twq)) > :lang(twq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
30999: :root:lang(tzm), :not(:lang(tzm)) > :lang(tzm) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31000: :root:lang(uk), :not(:lang(uk)) > :lang(uk) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */
31001: :root:lang(ur), :not(:lang(ur)) > :lang(ur) { quotes: '\201d' '\201c' '\2019' '\2018' } /* ” “ ’ ‘ */
31002: :root:lang(vai), :not(:lang(vai)) > :lang(vai) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31003: :root:lang(vai-Latn), :not(:lang(vai-Latn)) > :lang(vai-Latn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31004: :root:lang(vi), :not(:lang(vi)) > :lang(vi) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31005: :root:lang(vun), :not(:lang(vun)) > :lang(vun) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31006: :root:lang(xh), :not(:lang(xh)) > :lang(xh) { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */
31007: :root:lang(xog), :not(:lang(xog)) > :lang(xog) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31008: :root:lang(yav), :not(:lang(yav)) > :lang(yav) { quotes: '\00ab' '\00bb' '\00ab' '\00bb' } /* « » « » */
31009: :root:lang(yo), :not(:lang(yo)) > :lang(yo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31010: :root:lang(zh), :not(:lang(zh)) > :lang(zh) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31011: :root:lang(zh-Hant), :not(:lang(zh-Hant)) > :lang(zh-Hant) { quotes: '\300c' '\300d' '\300e' '\300f' } /* 「 」 『 』 */
31012: :root:lang(zu), :not(:lang(zu)) > :lang(zu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
31013: </pre>
1.190 sruby 31014:
31015:
31016: <h4 id="sections-and-headings"><span class="secno">10.3.7 </span>Sections and headings</h4>
31017:
31018: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31019:
31020: article, aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section {
31021: display: block;<!-- see also unicode-bidi: isolate rules-->
31022: }
31023:
31024: h1 { margin-top: 0.67em; margin-bottom: 0.67em; font-size: 2.00em; font-weight: bold; }
31025: h2 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; font-weight: bold; }
31026: h3 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; font-weight: bold; }
31027: h4 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; font-weight: bold; }
31028: h5 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; font-weight: bold; }
31029: h6 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; font-weight: bold; }</pre>
31030:
31031: <p>The <code><a href="the-article-element.html#the-article-element">article</a></code>, <code><a href="the-aside-element.html#the-aside-element">aside</a></code>, <code><a href="the-nav-element.html#the-nav-element">nav</a></code>,
31032: and <code><a href="the-section-element.html#the-section-element">section</a></code> elements are expected to affect the margins
31033: and font size of <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code> elements, based on the nesting
31034: depth. If <var title="">x</var> is a selector that matches elements
31035: that are either <code><a href="the-article-element.html#the-article-element">article</a></code>, <code><a href="the-aside-element.html#the-aside-element">aside</a></code>,
31036: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>, or <code><a href="the-section-element.html#the-section-element">section</a></code> elements, then the
31037: following rules capture what is expected:</p>
31038:
31039: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31040:
31041: <var title="">x</var> h1 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; }
31042: <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; }
31043: <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; }
31044: <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; }
31045: <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; }</pre>
31046:
31047:
31048:
31049: <h4 id="lists"><span class="secno">10.3.8 </span>Lists</h4>
31050:
31051: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31052:
31053: dir, dd, dl, dt, menu, ol, ul { display: block; }<!-- see also unicode-bidi:isolate rules -->
31054: li { display: list-item; }<!-- see also unicode-bidi:isolate rules -->
31055:
31056: dir, dl, menu, ol, ul { margin-top: 1em; margin-bottom: 1em; }
31057:
31058: dir dir, dir dl, dir menu, dir ol, dir ul,
31059: dl dir, dl dl, dl menu, dl ol, dl ul,
31060: menu dir, menu dl, menu menu, menu ol, menu ul,
31061: ol dir, ol dl, ol menu, ol ol, ol ul,
31062: ul dir, ul dl, ul menu, ul ol, ul ul {
31063: margin-top: 0; margin-bottom: 0;
31064: }
31065:
31066: dd { margin-left: 40px; } /* <a href="#ltr-specific">LTR-specific</a>: use 'margin-right' for rtl elements */
31067: dir, menu, ol, ul { padding-left: 40px; } /* <a href="#ltr-specific">LTR-specific</a>: use 'padding-right' for rtl elements */
31068:
31069: ol { list-style-type: decimal; }
31070:
31071: dir, menu, ul { list-style-type: disc; }
31072:
31073: dir dl, dir menu, dir ul,
31074: menu dl, menu menu, menu ul,
31075: ol dl, ol menu, ol ul,
31076: ul dl, ul menu, ul ul {
31077: list-style-type: circle;
31078: }
31079:
31080: dir dir dl, dir dir menu, dir dir ul,
31081: dir menu dl, dir menu menu, dir menu ul,
31082: dir ol dl, dir ol menu, dir ol ul,
31083: dir ul dl, dir ul menu, dir ul ul,
31084: menu dir dl, menu dir menu, menu dir ul,
31085: menu menu dl, menu menu menu, menu menu ul,
31086: menu ol dl, menu ol menu, menu ol ul,
31087: menu ul dl, menu ul menu, menu ul ul,
31088: ol dir dl, ol dir menu, ol dir ul,
31089: ol menu dl, ol menu menu, ol menu ul,
31090: ol ol dl, ol ol menu, ol ol ul,
31091: ol ul dl, ol ul menu, ol ul ul,
31092: ul dir dl, ul dir menu, ul dir ul,
31093: ul menu dl, ul menu menu, ul menu ul,
31094: ul ol dl, ul ol menu, ul ol ul,
31095: ul ul dl, ul ul menu, ul ul ul {
31096: list-style-type: square;
31097: }</pre>
31098:
31099: <p id="decohints">The following rules are also expected to apply, as
31100: <a href="#presentational-hints">presentational hints</a>:</p>
31101:
31102: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31103:
31104: ol[type=1], li[type=1] { list-style-type: decimal; }
31105: ol[type=a], li[type=a] { list-style-type: lower-alpha; }
31106: ol[type=A], li[type=A] { list-style-type: upper-alpha; }
31107: ol[type=i], li[type=i] { list-style-type: lower-roman; }
31108: ol[type=I], li[type=I] { list-style-type: upper-roman; }
31109: ul[type=disc i], li[type=disc i] { list-style-type: disc; }
31110: ul[type=circle i], li[type=circle i] { list-style-type: circle; }
31111: ul[type=square i], li[type=square i] { list-style-type: square; }</pre>
31112:
31113: <p>When rendering <code><a href="the-li-element.html#the-li-element">li</a></code> elements, user agents are expected
31114: to use the <a href="the-li-element.html#ordinal-value">ordinal value</a> of the <code><a href="the-li-element.html#the-li-element">li</a></code> element
31115: to render the counter in the list item marker.</p>
31116:
31117:
31118: <h4 id="tables"><span class="secno">10.3.9 </span>Tables</h4>
31119:
31120: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31121:
31122: table { display: table; }<!-- see also unicode-bidi:isolate rules -->
31123: caption { display: table-caption; }<!-- see also unicode-bidi:isolate rules -->
31124: colgroup, colgroup[hidden] { display: table-column-group; }<!-- see also unicode-bidi:isolate rules -->
31125: col, col[hidden] { display: table-column; }<!-- see also unicode-bidi:isolate rules -->
31126: thead, thead[hidden] { display: table-header-group; }<!-- see also unicode-bidi:isolate rules -->
31127: tbody, tbody[hidden] { display: table-row-group; }<!-- see also unicode-bidi:isolate rules -->
31128: tfoot, tfoot[hidden] { display: table-footer-group; }<!-- see also unicode-bidi:isolate rules -->
31129: tr, tr[hidden] { display: table-row; }<!-- see also unicode-bidi:isolate rules -->
31130: td, th, td[hidden], th[hidden] { display: table-cell; }<!-- see also unicode-bidi:isolate rules -->
31131:
31132: colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
31133: tfoot[hidden], tr[hidden], td[hidden], th[hidden] {
31134: visibility: collapse;
31135: }
31136:
31137: table {
31138: border-spacing: 2px;
31139: border-collapse: separate;
31140: text-indent: initial;
31141: }
31142: td, th { padding: 1px; }
31143: th { font-weight: bold; }
31144:
31145: thead, tbody, tfoot, table > tr { vertical-align: middle; }
31146: tr, td, th { vertical-align: inherit; }
31147:
31148: table, td, th { border-color: gray; }
31149: thead, tbody, tfoot, tr { border-color: inherit; }
31150: table[rules=none i], table[rules=groups i], table[rules=rows i],
31151: table[rules=cols i], table[rules=all i], table[frame=void i],
31152: table[frame=above i], table[frame=below i], table[frame=hsides i],
31153: table[frame=lhs i], table[frame=rhs i], table[frame=vsides i],
31154: table[frame=box i], table[frame=border i],
31155: table[rules=none i] > tr > td, table[rules=none i] > tr > th,
31156: table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
31157: table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
31158: table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
31159: table[rules=all i] > tr > td, table[rules=all i] > tr > th,
31160: table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
31161: table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
31162: table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
31163: table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
31164: table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
31165: table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
31166: table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
31167: table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
31168: table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
31169: table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
31170: table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
31171: table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
31172: table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th,
31173: table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th,
31174: table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th {
31175: border-color: black;
31176: }</pre>
31177:
31178: <p>The following rules are also expected to apply, as
31179: <a href="#presentational-hints">presentational hints</a>:</p>
31180:
31181: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31182:
31183: table[align=left i] { float: left; }
31184: table[align=right i] { float: right; }
31185: table[align=center i] { margin-left: auto; margin-right: auto; }
31186: thead[align=absmiddle i], tbody[align=absmiddle i], tfoot[align=absmiddle i],
31187: tr[align=absmiddle i], td[align=absmiddle i], th[align=absmiddle i] {
31188: text-align: center;
31189: }
31190:
31191: caption[align=bottom i] { caption-side: bottom; }
31192: p[align=left i], h1[align=left i], h2[align=left i], h3[align=left i],
31193: h4[align=left i], h5[align=left i], h6[align=left i] {
31194: text-align: left;
31195: }
31196: p[align=right i], h1[align=right i], h2[align=right i], h3[align=right i],
31197: h4[align=right i], h5[align=right i], h6[align=right i] {
31198: text-align: right;
31199: }
31200: p[align=center i], h1[align=center i], h2[align=center i], h3[align=center i],
31201: h4[align=center i], h5[align=center i], h6[align=center i] {
31202: text-align: center;
31203: }
31204: p[align=justify i], h1[align=justify i], h2[align=justify i], h3[align=justify i],
31205: h4[align=justify i], h5[align=justify i], h6[align=justify i] {
31206: text-align: justify;
31207: }
31208: thead[valign=top i], tbody[valign=top i], tfoot[valign=top i],
31209: tr[valign=top i], td[valign=top i], th[valign=top i] {
31210: vertical-align: top;
31211: }
31212: thead[valign=middle i], tbody[valign=middle i], tfoot[valign=middle i],
31213: tr[valign=middle i], td[valign=middle i], th[valign=middle i] {
31214: vertical-align: middle;
31215: }
31216: thead[valign=bottom i], tbody[valign=bottom i], tfoot[valign=bottom i],
31217: tr[valign=bottom i], td[valign=bottom i], th[valign=bottom i] {
31218: vertical-align: bottom;
31219: }
31220: thead[valign=baseline i], tbody[valign=baseline i], tfoot[valign=baseline i],
31221: tr[valign=baseline i], td[valign=baseline i], th[valign=baseline i] {
31222: vertical-align: baseline;
31223: }
31224:
31225: td[nowrap], th[nowrap] { white-space: nowrap; }
31226:
31227: table[rules=none i], table[rules=groups i], table[rules=rows i],
31228: table[rules=cols i], table[rules=all i] {
31229: border-style: hidden;
31230: border-collapse: collapse;
31231: }
31232: table[border] { border-style: outset; } /* <a href="#magic-border-selector">only if border is not equivalent to zero</a> */
31233: table[frame=void i] { border-style: hidden; }
31234: table[frame=above i] { border-style: outset hidden hidden hidden; }
31235: table[frame=below i] { border-style: hidden hidden outset hidden; }
31236: table[frame=hsides i] { border-style: outset hidden outset hidden; }
31237: table[frame=lhs i] { border-style: hidden hidden hidden outset; }
31238: table[frame=rhs i] { border-style: hidden outset hidden hidden; }
31239: table[frame=vsides i] { border-style: hidden outset; }
31240: table[frame=box i], table[frame=border i] { border-style: outset; }
31241:
31242: table[border] > tr > td, table[border] > tr > th,
31243: table[border] > thead > tr > td, table[border] > thead > tr > th,
31244: table[border] > tbody > tr > td, table[border] > tbody > tr > th,
31245: table[border] > tfoot > tr > td, table[border] > tfoot > tr > th {
31246: /* <a href="#magic-border-selector">only if border is not equivalent to zero</a> */
31247: border-width: 1px;
31248: border-style: inset;
31249: }
31250: table[rules=none i] > tr > td, table[rules=none i] > tr > th,
31251: table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
31252: table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
31253: table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
31254: table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
31255: table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
31256: table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
31257: table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
31258: table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
31259: table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
31260: table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
31261: table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th {
31262: border-width: 1px;
31263: border-style: none;
31264: }
31265: table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
31266: table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
31267: table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
31268: table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th {
31269: border-width: 1px;
31270: border-style: none solid;
31271: }
31272: table[rules=all i] > tr > td, table[rules=all i] > tr > th,
31273: table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
31274: table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
31275: table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th {
31276: border-width: 1px;
31277: border-style: solid;
31278: }
31279:
31280: table[rules=groups i] > colgroup {
31281: border-left-width: 1px;
31282: border-left-style: solid;
31283: border-right-width: 1px;
31284: border-right-style: solid;
31285: }
31286: table[rules=groups i] > thead,
31287: table[rules=groups i] > tbody,
31288: table[rules=groups i] > tfoot {
31289: border-top-width: 1px;
31290: border-top-style: solid;
31291: border-bottom-width: 1px;
31292: border-bottom-style: solid;
31293: }
31294:
31295: table[rules=rows i] > tr, table[rules=rows i] > thead > tr,
31296: table[rules=rows i] > tbody > tr, table[rules=rows i] > tfoot > tr {
31297: border-top-width: 1px;
31298: border-top-style: solid;
31299: border-bottom-width: 1px;
31300: border-bottom-style: solid;
31301: }</pre>
31302:
31303: <!--
31304: Demos that the above (and prose below) must explain:
31305: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1191
31306: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1194
31307: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1195
31308: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1196
31309: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1197
31310: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1199
31311: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1200
31312: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1201
31313: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1209
31314: -->
31315:
31316:
31317: <p>In <a href="infrastructure.html#quirks-mode">quirks mode</a>, the following rules are also
31318: expected to apply:</p>
31319:
31320: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31321:
31322: table {
31323: font-weight: initial;
31324: font-style: initial;
31325: font-variant: initial;
31326: font-size: initial;
31327: line-height: initial;
31328: white-space: initial;
31329: text-align: initial;
31330: }</pre>
31331:
31332: <hr><p>For the purposes of the CSS table model, the <code><a href="the-col-element.html#the-col-element">col</a></code>
31333: element is expected to be treated as if it was present as many times
31334: as its <code title="attr-col-span"><a href="the-col-element.html#attr-col-span">span</a></code> attribute <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers" title="rules for parsing non-negative
31335: integers">specifies</a>.</p>
31336:
31337: <p>For the purposes of the CSS table model, the
31338: <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code> element, if it contains no <code><a href="the-col-element.html#the-col-element">col</a></code>
31339: element, is expected to be treated as if it had as many such
31340: children as its <code title="attr-colgroup-span"><a href="the-colgroup-element.html#attr-colgroup-span">span</a></code>
31341: attribute <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers" title="rules for parsing non-negative
31342: integers">specifies</a>.</p>
31343:
31344: <p>For the purposes of the CSS table model, the <code title="attr-tdth-colspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-colspan">colspan</a></code> and <code title="attr-tdth-rowspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-rowspan">rowspan</a></code> attributes on
31345: <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements are expected to <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers" title="rules for parsing non-negative integers">provide</a> the
31346: <i>special knowledge</i> regarding cells spanning rows and
31347: columns.</p>
31348:
31349: <p>In <a href="infrastructure.html#html-documents">HTML documents</a>, the user agent is expected to
31350: force the 'display' property of <code><a href="the-form-element.html#the-form-element">form</a></code> elements that are
31351: children of <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>,
31352: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, or <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements
31353: to compute to 'none', irrespective of CSS rules.</p>
31354:
31355: <hr><p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-cellspacing"><a href="#attr-table-cellspacing">cellspacing</a></code> attribute
31356: <a href="#maps-to-the-pixel-length-property">maps to the pixel length property</a> 'border-spacing' on the
31357: element.</p>
31358:
31359: <p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-cellpadding"><a href="#attr-table-cellpadding">cellpadding</a></code> attribute <a href="#maps-to-the-pixel-length-property" title="maps to the pixel length property">maps to the pixel length
31360: properties</a> 'padding-top', 'padding-right', 'padding-bottom',
31361: and 'padding-left' of any <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code>
31362: elements that have corresponding <a href="attributes-common-to-td-and-th-elements.html#concept-cell" title="concept-cell">cells</a> in the <a href="attributes-common-to-td-and-th-elements.html#concept-table" title="concept-table">table</a> corresponding to the
31363: <code><a href="the-table-element.html#the-table-element">table</a></code> element.</p>
31364:
31365: <p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-hspace">hspace</code> attribute <a href="#maps-to-the-dimension-property" title="maps
31366: to the dimension property">maps to the dimension properties</a>
31367: 'margin-left' and 'margin-right' on the <code><a href="the-table-element.html#the-table-element">table</a></code>
31368: element.</p>
31369:
31370: <p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-vspace">vspace</code> attribute <a href="#maps-to-the-dimension-property" title="maps
31371: to the dimension property">maps to the dimension properties</a>
31372: 'margin-top' and 'margin-bottom' on the <code><a href="the-table-element.html#the-table-element">table</a></code>
31373: element.</p>
31374:
31375: <p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-height">height</code> attribute <a href="#maps-to-the-dimension-property">maps to the
31376: dimension property</a> 'height' on the <code><a href="the-table-element.html#the-table-element">table</a></code>
31377: element.</p>
31378:
31379: <p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-width"><a href="#attr-table-width">width</a></code> attribute <a href="#maps-to-the-dimension-property">maps to the
31380: dimension property</a> 'width' on the <code><a href="the-table-element.html#the-table-element">table</a></code>
31381: element.</p>
31382:
31383: <p>The <code><a href="the-col-element.html#the-col-element">col</a></code> element's <code title="attr-col-width"><a href="#attr-col-width">width</a></code> attribute <a href="#maps-to-the-dimension-property">maps to the
31384: dimension property</a> 'width' on the <code><a href="the-col-element.html#the-col-element">col</a></code>
31385: element.</p>
31386:
31387: <p>The <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element's <code title="attr-tr-height">height</code> attribute <a href="#maps-to-the-dimension-property">maps to the
31388: dimension property</a> 'height' on the <code><a href="the-tr-element.html#the-tr-element">tr</a></code>
31389: element.</p>
31390:
31391: <p>The <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements' <code title="attr-tdth-height"><a href="#attr-tdth-height">height</a></code> attributes <a href="#maps-to-the-dimension-property" title="maps
31392: to the dimension property">map to the dimension property</a> 'height'
31393: on the element.</p>
31394:
31395: <p>The <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements' <code title="attr-tdth-width"><a href="#attr-tdth-width">width</a></code> attributes <a href="#maps-to-the-dimension-property" title="maps
31396: to the dimension property">map to the dimension property</a> 'width'
31397: on the element.</p>
31398:
31399: <p>When a <code><a href="dom.html#document">Document</a></code> is in <a href="infrastructure.html#quirks-mode">quirks mode</a>,
31400: vertical margins on <a href="infrastructure.html#html-elements">HTML elements</a> at the top or bottom
31401: of <code><a href="the-td-element.html#the-td-element">td</a></code> or <code><a href="the-th-element.html#the-th-element">th</a></code> elements are expected to be
31402: collapsed to zero.</p>
31403:
31404: <hr><p>The <code><a href="the-caption-element.html#the-caption-element">caption</a></code> element unless specified otherwise
31405: below, and the <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
31406: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, and
31407: <code><a href="the-th-element.html#the-th-element">th</a></code> elements when they have an <code title="attr-div-align"><a href="#attr-div-align">align</a></code> attribute whose value is an
31408: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for either the string
31409: "<code title="">center</code>" or the string "<code title="">middle</code>", are expected to center text within
31410: themselves, as if they had their 'text-align' property set to
31411: 'center' in a <a href="#presentational-hints" title="presentational hints">presentational
31412: hint</a>, and to <a href="#align-descendants">align descendants</a> to the
31413: center.</p>
31414:
31415: <p>The <code><a href="the-caption-element.html#the-caption-element">caption</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
31416: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, and
31417: <code><a href="the-th-element.html#the-th-element">th</a></code> elements, when they have an <code title="attr-align">align</code> attribute whose value is an
31418: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">left</code>", are expected to left-align text within
31419: themselves, as if they had their 'text-align' property set to 'left'
31420: in a <a href="#presentational-hints" title="presentational hints">presentational hint</a>,
31421: and to <a href="#align-descendants">align descendants</a> to the left.</p>
31422:
31423: <p>The <code><a href="the-caption-element.html#the-caption-element">caption</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
31424: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, and
31425: <code><a href="the-th-element.html#the-th-element">th</a></code> elements, when they have an <code title="attr-align">align</code> attribute whose value is an
31426: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">right</code>", are expected to right-align text within
31427: themselves, as if they had their 'text-align' property set to
31428: 'right' in a <a href="#presentational-hints" title="presentational hints">presentational
31429: hint</a>, and to <a href="#align-descendants">align descendants</a> to the right.</p>
31430:
31431: <p>The <code><a href="the-caption-element.html#the-caption-element">caption</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>,
31432: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, and
31433: <code><a href="the-th-element.html#the-th-element">th</a></code> elements, when they have an <code title="attr-align">align</code> attribute whose value is an
31434: <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">justify</code>", are expected to full-justify text within
31435: themselves, as if they had their 'text-align' property set to
31436: 'justify' in a <a href="#presentational-hints" title="presentational hints">presentational
31437: hint</a>, and to <a href="#align-descendants">align descendants</a> to the left.</p>
31438:
31439: <p>User agents are expected to have a rule in their user agent
31440: stylesheet that matches <code><a href="the-th-element.html#the-th-element">th</a></code> elements that have a parent
31441: node whose computed value for the 'text-align' property is its
31442: initial value, whose declaration block consists of just a single
31443: declaration that sets the 'text-align' property to the value
31444: 'center'.</p> <!-- q.v. '-moz-center-or-inherit' -->
31445:
31446: <hr><p>When a <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>,
31447: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>,
31448: <code><a href="the-td-element.html#the-td-element">td</a></code>, or <code><a href="the-th-element.html#the-th-element">th</a></code> element has a <code title="attr-background"><a href="#attr-background">background</a></code> attribute set to a
31449: non-empty value, the new value is expected to be <a href="urls.html#resolve-a-url" title="resolve a url">resolved</a> relative to the element, and
31450: if this is successful, the user agent is expected to treat the
31451: attribute as a <a href="#presentational-hints" title="presentational hints">presentational
31452: hint</a> setting the element's 'background-image' property to the
31453: resulting <a href="urls.html#absolute-url">absolute URL</a>.</p>
31454:
31455: <p>When a <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>,
31456: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>,
31457: <code><a href="the-td-element.html#the-td-element">td</a></code>, or <code><a href="the-th-element.html#the-th-element">th</a></code> element has a <code title="">bgcolor</code> attribute set, the new value is expected to
31458: be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy color
31459: value</a>, and if that does not return an error, the user agent
31460: is expected to treat the attribute as a <a href="#presentational-hints" title="presentational
31461: hints">presentational hint</a> setting the element's
31462: 'background-color' property to the resulting color.</p>
31463:
31464: <p>When a <code><a href="the-table-element.html#the-table-element">table</a></code> element has a <code title="attr-table-bordercolor">bordercolor</code> attribute, its
31465: value is expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a
31466: legacy color value</a>, and if that does not return an error, the
31467: user agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
31468: element's 'border-top-color', 'border-right-color',
31469: 'border-bottom-color', and 'border-right-color' properties to the
31470: resulting color.</p>
31471:
31472: <hr><p>The <code><a href="the-table-element.html#the-table-element">table</a></code> element's <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">border</a></code> attribute <a href="#maps-to-the-pixel-length-property" title="maps
31473: to the pixel length property">maps to the pixel length
31474: properties</a> 'border-top-width', 'border-right-width',
31475: 'border-bottom-width', 'border-left-width' on the element. If the
31476: attribute is present but parsing the attribute's value using the
31477: <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative integers</a> generates an
31478: error, a default value of 1px is expected to be used for that
31479: property instead.</p>
31480:
31481: <p>Rules marked "<dfn id="magic-border-selector">only if border is
31482: not equivalent to zero</dfn>" in the CSS block above is expected to
31483: only be applied if the <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">border</a></code>
31484: attribute mentioned in the selectors for the rule is not only
31485: present but, when parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing
31486: non-negative integers</a>, is also found to have a value other
31487: than zero or to generate an error.</p>
31488:
31489: <hr><p>In <a href="infrastructure.html#quirks-mode">quirks mode</a>, a <code><a href="the-td-element.html#the-td-element">td</a></code> element or a
31490: <code><a href="the-th-element.html#the-th-element">th</a></code> element that has a <code title="attr-tdth-nowrap"><a href="#attr-tdth-nowrap">nowrap</a></code> attribute but also has a
31491: <code title="attr-tdth-width"><a href="#attr-tdth-width">width</a></code> attribute whose value,
31492: when parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-dimension-values">rules for parsing dimension
31493: values</a>, is found to be a length (not an error or a number
31494: classified as a percentage), is expected to have a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
31495: element's 'white-space' property to 'normal', overriding the rule in
31496: the CSS block above that sets it to 'nowrap'.</p>
31497: <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1793 -->
31498: <!-- note that the "rules for parsing dimension values" can't return 0, if the value is "0" they treat it as an error -->
31499:
31500:
31501: <h4 id="form-controls"><span class="secno">10.3.10 </span>Form controls</h4>
31502:
31503: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31504:
31505: input, select, option, optgroup, button, textarea, keygen {
31506: text-indent: initial;
31507: }
31508:
31509: textarea { white-space: pre-wrap; }
31510: </pre>
31511:
31512: <p>In <a href="infrastructure.html#quirks-mode">quirks mode</a>, the following rules are also
31513: expected to apply:</p>
31514:
31515: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31516:
31517: input { box-sizing: border-box; }</pre>
31518:
31519: <p>Each kind of form control is also given a specific default
31520: binding, as described in subsequent sections, which implements the
31521: look and feel of the control.</p>
31522:
31523:
31524:
31525: <h4 id="the-hr-element-0"><span class="secno">10.3.11 </span>The <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element</h4>
31526:
31527: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31528:
31529: hr { color: gray; border-style: inset; border-width: 1px; margin: 0.5em auto; }</pre>
31530:
31531: <p>The following rules are also expected to apply, as
31532: <a href="#presentational-hints">presentational hints</a>:</p>
31533:
31534: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31535:
31536: hr[align=left] { margin-left: 0; margin-right: auto; }
31537: hr[align=right] { margin-left: auto; margin-right: 0; }
31538: hr[align=center] { margin-left: auto; margin-right: auto; }
31539: hr[color], hr[noshade] { border-style: solid; }</pre>
31540:
31541: <p>If an <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element has either a <code title="attr-hr-color"><a href="#attr-hr-color">color</a></code> attribute or a <code title="attr-hr-noshade"><a href="#attr-hr-noshade">noshade</a></code> attribute, and furthermore
31542: also has a <code title="attr-hr-size"><a href="#attr-hr-size">size</a></code> attribute, and
31543: parsing that attribute's value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing
31544: non-negative integers</a> doesn't generate an error, then the
31545: user agent is expected to use the parsed value divided by two as a
31546: pixel length for <a href="#presentational-hints">presentational hints</a> for the properties
31547: 'border-top-width', 'border-right-width', 'border-bottom-width', and
31548: 'border-left-width' on the element.</p>
31549:
31550: <p>Otherwise, if an <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element has neither a <code title="attr-hr-color"><a href="#attr-hr-color">color</a></code> attribute nor a <code title="attr-hr-noshade"><a href="#attr-hr-noshade">noshade</a></code> attribute, but does have a
31551: <code title="attr-hr-size"><a href="#attr-hr-size">size</a></code> attribute, and parsing that
31552: attribute's value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
31553: integers</a> doesn't generate an error, then: if the parsed value
31554: is one, then the user agent is expected to use the attribute as a
31555: <a href="#presentational-hints" title="presentational hints">presentational hint</a>
31556: setting the element's 'border-bottom-width' to 0; otherwise, if the
31557: parsed value is greater than one, then the user agent is expected to
31558: use the parsed value minus two as a pixel length for
31559: <a href="#presentational-hints">presentational hints</a> for the 'height' property on the
31560: element.</p>
31561:
31562: <p>The <code title="attr-hr-width"><a href="#attr-hr-width">width</a></code> attribute on an
31563: <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element <a href="#maps-to-the-dimension-property">maps to the dimension property</a>
31564: 'width' on the element.</p>
31565:
31566: <p>When an <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element has a <code title="attr-hr-color"><a href="#attr-hr-color">color</a></code> attribute, its value is expected
31567: to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy color
31568: value</a>, and if that does not return an error, the user agent
31569: is expected to treat the attribute as a <a href="#presentational-hints" title="presentational
31570: hints">presentational hint</a> setting the element's 'color'
31571: property to the resulting color.</p>
31572:
31573:
31574:
31575: <h4 id="the-fieldset-element-0"><span class="secno">10.3.12 </span>The <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element</h4>
31576:
31577: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31578:
31579: fieldset {
31580: margin-left: 2px; margin-right: 2px;
31581: border: groove 2px ThreeDFace;
31582: padding: 0.35em 0.625em 0.75em;
31583: }</pre>
31584:
31585: <p>The <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element is expected to establish a new
31586: block formatting context.</p>
31587:
31588: <p>If the <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element has a child that matches the
31589: conditions in the list below, then the first such child is the
31590: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element's <dfn id="rendered-legend">rendered legend</dfn>:</p>
31591:
31592: <ul class="brief"><li>The child is a <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element.</li>
31593:
31594: <li>The child is not out-of-flow (e.g. not absolutely positioned or floated).</li>
31595:
31596: <li>The child is generating a box (e.g. it is not 'display:none').</li>
31597:
31598: </ul><p>A <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element's <a href="#rendered-legend">rendered legend</a>,
31599: if any, is expected to be rendered over the top border edge of the
31600: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code> element as a 'block' box (overriding any
31601: explicit 'display' value). In the absence of an explicit width, the
31602: box should shrink-wrap. If the <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element in
31603: question has an <code title="attr-legend-align"><a href="#attr-legend-align">align</a></code>
31604: attribute, and its value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>
31605: match for one of the strings in the first column of the following
31606: table, then the <code><a href="the-legend-element.html#the-legend-element">legend</a></code> is expected to be rendered
31607: horizontally aligned over the border edge in the position given in
31608: the corresponding cell on the same row in the second column. If the
31609: attribute is absent or has a value that doesn't match any of the
31610: cases in the table, then the position is expected to be on the right
31611: if the 'direction' property on this element has a computed value of
31612: 'rtl', and on the left otherwise.</p>
31613:
31614: <table><thead><tr><th>Attribute value
31615: </th><th>Alignment position
31616: </th></tr></thead><tbody><tr><td><code title="">left</code>
31617: </td><td>On the left
31618: </td></tr><tr><td><code title="">right</code>
31619: </td><td>On the right
31620: </td></tr><tr><td><code title="">center</code>
31621: </td><td>In the middle
31622: </td></tr></tbody></table><h3 id="replaced-elements"><span class="secno">10.4 </span>Replaced elements</h3>
31623:
31624: <h4 id="embedded-content-1"><span class="secno">10.4.1 </span>Embedded content</h4>
31625:
31626: <p>The <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, and
31627: <code><a href="the-video-element.html#the-video-element">video</a></code> elements are expected to be treated as replaced
31628: elements.</p>
31629:
31630: <p>A <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code> element that <a href="#represents">represents</a>
31631: <a href="content-models.html#embedded-content-2">embedded content</a> is expected to be treated as a
31632: replaced element. Other <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code> elements are expected to
31633: be treated as ordinary elements in the rendering model.</p>
31634:
31635: <p>An <code><a href="the-object-element.html#the-object-element">object</a></code> element that <a href="#represents">represents</a> an
31636: image, plugin, or <a href="#nested-browsing-context">nested browsing context</a> is expected
31637: to be treated as a replaced element. Other <code><a href="the-object-element.html#the-object-element">object</a></code>
31638: elements are expected to be treated as ordinary elements in the
31639: rendering model.</p>
31640:
31641: <p>An <code><a href="#the-applet-element">applet</a></code> element that <a href="#represents">represents</a> a
31642: <a href="infrastructure.html#plugin">plugin</a> is expected to be treated as a replaced
31643: element. Other <code><a href="#the-applet-element">applet</a></code> elements are expected to be
31644: treated as ordinary elements in the rendering model.</p>
31645:
31646: <p>The <code><a href="the-audio-element.html#the-audio-element">audio</a></code> element, when it is <a href="media-elements.html#expose-a-user-interface-to-the-user" title="expose a
31647: user interface to the user">exposing a user interface</a>, is
31648: expected to be treated as a replaced element about one line high, as
31649: wide as is necessary to expose the user agent's user interface
31650: features. When an <code><a href="the-audio-element.html#the-audio-element">audio</a></code> element is not <a href="media-elements.html#expose-a-user-interface-to-the-user" title="expose a user interface to the user">exposing a user
31651: interface</a>, the user agent is expected to force its 'display'
31652: property to compute to 'none', irrespective of CSS rules.</p>
31653:
31654: <p>Whether a <code><a href="the-video-element.html#the-video-element">video</a></code> element is <a href="media-elements.html#expose-a-user-interface-to-the-user" title="expose a
31655: user interface to the user">exposing a user interface</a> is not
31656: expected to affect the size of the rendering; controls are expected
31657: to be overlaid above the page content without causing any layout
31658: changes, and are expected to disappear when the user does not need
31659: them.</p>
31660:
31661: <p>When a <code><a href="the-video-element.html#the-video-element">video</a></code> element represents a poster frame or
31662: frame of video, the poster frame or frame of video is expected to be
31663: rendered at the largest size that maintains the aspect ratio of that
31664: poster frame or frame of video without being taller or wider than
31665: the <code><a href="the-video-element.html#the-video-element">video</a></code> element itself, and is expected to be
31666: centered in the <code><a href="the-video-element.html#the-video-element">video</a></code> element.</p>
31667:
31668: <p>Any subtitles or captions are expected to be overlayed directly
31669: on top of their <code><a href="the-video-element.html#the-video-element">video</a></code> element, as defined by the
31670: relevant rendering rules; for <a href="infrastructure.html#webvtt">WebVTT</a>, those are the
31671: <a href="infrastructure.html#webvtt-cue-text-rendering-rules">WebVTT cue text rendering rules</a>. <a href="#refsWEBVTT">[WEBVTT]</a></p>
31672:
31673: <p>When the user agent starts <a href="media-elements.html#expose-a-user-interface-to-the-user" title="expose a user interface
31674: to the user">exposing a user interface</a> for a
31675: <code><a href="the-video-element.html#the-video-element">video</a></code> element, the user agent should run the
31676: <a href="media-elements.html#rules-for-updating-the-text-track-rendering">rules for updating the text track rendering</a> of each of
31677: the <a href="media-elements.html#text-track" title="text track">text tracks</a> in the
31678: <code><a href="the-video-element.html#the-video-element">video</a></code> element's <a href="media-elements.html#list-of-text-tracks">list of text tracks</a> that
31679: are <a href="media-elements.html#text-track-showing" title="text track showing">showing</a> (e.g., for <a href="media-elements.html#text-track" title="text track">text tracks</a> based on <a href="infrastructure.html#webvtt">WebVTT</a>,
31680: the <a href="infrastructure.html#rules-for-updating-the-display-of-webvtt-text-tracks">rules for updating the display of WebVTT text
31681: tracks</a>). <a href="#refsWEBVTT">[WEBVTT]</a></p>
31682:
31683: <p class="note">Resizing <code><a href="the-video-element.html#the-video-element">video</a></code> and <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>
31684: elements does not interrupt video playback or clear the canvas.</p>
31685:
31686: <hr><p>The following CSS rules are expected to apply:</p>
31687:
31688: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31689:
31690: iframe:not([seamless]) { border: 2px inset; }
31691: iframe[seamless] { display: block; }
31692: <span id="video-object-fit">video { object-fit: contain; }</span></pre>
31693:
31694: </div>
31695:
31696:
31697:
31698:
31699: <!--TOPIC:Rendering-->
31700: <div class="impl">
31701:
31702: <h4 id="images"><span class="secno">10.4.2 </span>Images</h4>
31703:
31704: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element or an <code><a href="the-input-element.html#the-input-element">input</a></code> element
31705: when its <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in
31706: the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state
31707: <a href="#represents">represents</a> an image, it is expected to be treated as a
31708: replaced element.</p>
31709:
31710: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element or an <code><a href="the-input-element.html#the-input-element">input</a></code> element
31711: when its <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in
31712: the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state
31713: does not <a href="#represents" title="represents">represent</a> an image, but the
31714: element already has intrinsic dimensions (e.g. from the
31715: <a href="dimension-attributes.html#dimension-attributes">dimension attributes</a> or CSS rules), and either the user
31716: agent has reason to believe that the image will become <i title="img-available"><a href="the-img-element.html#img-available">available</a></i><!--input-img-available also-->
31717: and be rendered in due course or the <code><a href="dom.html#document">Document</a></code> is in
31718: <a href="infrastructure.html#quirks-mode">quirks mode</a>, the element is expected to be treated as a
31719: replaced element whose content is the text that the element
31720: represents, if any, optionally alongside an icon indicating that the
31721: image is being obtained. For <code><a href="the-input-element.html#the-input-element">input</a></code> elements, the text
31722: is expected to appear button-like to indicate that the element is a
31723: <a href="forms.html#concept-button" title="concept-button">button</a>.</p>
31724:
31725: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element <a href="#represents">represents</a> some
31726: text and the user agent does not expect this to change, the element
31727: is expected to be treated as a non-replaced phrasing element whose
31728: content is the text, optionally with an icon indicating that an
31729: image is missing.</p>
31730:
31731: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element <a href="#represents">represents</a> nothing
31732: and the user agent does not expect this to change, the element is
31733: expected to not be rendered at all.</p>
31734:
31735: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element might be a key part of the
31736: content, but neither the image nor any kind of alternative text is
31737: available, and the user agent does not expect this to change, the
31738: element is expected to be treated as a non-replaced phrasing element
31739: whose content is an icon indicating that an image is missing.</p>
31740: <!-- there's also a should requirement for this case in the <img>
31741: section itself -->
31742:
31743: <p>When an <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state does not
31744: <a href="#represents" title="represents">represent</a> an image and the user
31745: agent does not expect this to change, the element is expected to be
31746: treated as a replaced element consisting of a button whose content
31747: is the element's alternative text. The intrinsic dimensions of the
31748: button are expected to be about one line in height and whatever
31749: width is necessary to render the text on one line.</p>
31750:
31751: <p>The icons mentioned above are expected to be relatively small so
31752: as not to disrupt most text but be easily clickable. In a visual
31753: environment, for instance, icons could be 16 pixels by 16 pixels
31754: square, or 1em by 1em if the images are scalable. In an audio
31755: environment, the icon could be a short bleep. The icons are intended
31756: to indicate to the user that they can be used to get to whatever
31757: options the UA provides for images, and, where appropriate, are
31758: expected to provide access to the context menu that would have come
31759: up if the user interacted with the actual image.</p>
31760:
31761: <hr><p>All animated images with the same <a href="urls.html#absolute-url">absolute URL</a> and
31762: the same image data are expected to be rendered synchronized to the
31763: same timeline as a group, with the timeline starting at the time of
31764: the most recent addition to the group.</p>
31765:
31766: <p class="note">In other words, the animation loop of an animated
31767: image is restarted each time another image with the same
31768: <a href="urls.html#absolute-url">absolute URL</a> and image data begins to animate, e.g.
31769: after being inserted into the document.</p>
31770:
31771: <hr><p>The following CSS rules are expected to apply when the
31772: <code><a href="dom.html#document">Document</a></code> is in <a href="infrastructure.html#quirks-mode">quirks mode</a>:</p>
31773:
31774: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31775:
31776: img[align=left i] { margin-right: 3px; }
31777: img[align=right i] { margin-left: 3px; }</pre>
31778:
31779: </div>
31780:
31781:
31782: <div class="impl">
31783:
31784: <h4 id="attributes-for-embedded-content-and-images"><span class="secno">10.4.3 </span>Attributes for embedded content and images</h4>
31785:
31786: <p>The following CSS rules are expected to apply as
31787: <a href="#presentational-hints">presentational hints</a>:</p>
31788:
31789: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31790:
31791: iframe[frameborder=0], iframe[frameborder=no i] { border: none; }
31792:
31793: applet[align=left i], embed[align=left i], iframe[align=left i],
31794: img[align=left i], input[type=image i][align=left i], object[align=left i] {
31795: float: left;
31796: }
31797:
31798: applet[align=right i], embed[align=right i], iframe[align=right i],
31799: img[align=right i], input[type=image i][align=right i], object[align=right i] {
31800: float: right;
31801: }
31802:
31803: applet[align=top i], embed[align=top i], iframe[align=top i],
31804: img[align=top i], input[type=image i][align=top i], object[align=top i] {
31805: vertical-align: top;
31806: }
31807:
31808: applet[align=baseline i], embed[align=baseline i], iframe[align=baseline i],
31809: img[align=baseline i], input[type=image i][align=baseline i], object[align=baseline i] {
31810: vertical-align: baseline;
31811: }
31812:
31813: applet[align=texttop i], embed[align=texttop i], iframe[align=texttop i],
31814: img[align=texttop i], input[type=image i][align=texttop i], object[align=texttop i] {
31815: vertical-align: text-top;
31816: }
31817:
31818: applet[align=absmiddle i], embed[align=absmiddle i], iframe[align=absmiddle i],
31819: img[align=absmiddle i], input[type=image i][align=absmiddle i], object[align=absmiddle i],
31820: applet[align=abscenter i], embed[align=abscenter i], iframe[align=abscenter i],
31821: img[align=abscenter i], input[type=image i][align=abscenter i], object[align=abscenter i] {
31822: vertical-align: middle;
31823: }
31824:
31825: applet[align=bottom i], embed[align=bottom i], iframe[align=bottom i],
31826: img[align=bottom i], input[type=image i][align=bottom i],
31827: object[align=bottom i] {
31828: vertical-align: bottom;
31829: }</pre>
31830:
31831: <p>When an <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>,
31832: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <code><a href="the-img-element.html#the-img-element">img</a></code>, or <code><a href="the-object-element.html#the-object-element">object</a></code>
31833: element, or an <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, has an
31834: <code title="attr-dim-align">align</code> attribute whose value is
31835: an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string "<code title="">center</code>" or the string "<code title="">middle</code>", the user agent is expected to act as if the
31836: element's 'vertical-align' property was set to a value that aligns
31837: the vertical middle of the element with the parent element's
31838: baseline.</p>
31839:
31840: <p>The <code title="attr-dim-hspace">hspace</code> attribute of
31841: <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>,
31842: <code><a href="the-img-element.html#the-img-element">img</a></code>, or <code><a href="the-object-element.html#the-object-element">object</a></code> elements, and
31843: <code><a href="the-input-element.html#the-input-element">input</a></code> elements with a <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, <a href="#maps-to-the-dimension-property" title="maps to the dimension property">maps to the dimension
31844: properties</a> 'margin-left' and 'margin-right' on the
31845: element.</p>
31846:
31847: <p>The <code title="attr-dim-vspace">vspace</code> attribute of
31848: <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>,
31849: <code><a href="the-img-element.html#the-img-element">img</a></code>, or <code><a href="the-object-element.html#the-object-element">object</a></code> elements, and
31850: <code><a href="the-input-element.html#the-input-element">input</a></code> elements with a <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, <a href="#maps-to-the-dimension-property" title="maps to the dimension property">maps to the dimension
31851: properties</a> 'margin-top' and 'margin-bottom' on the
31852: element.</p>
31853:
31854: <p>When an <code><a href="the-img-element.html#the-img-element">img</a></code> element, <code><a href="the-object-element.html#the-object-element">object</a></code> element, or
31855: <code><a href="the-input-element.html#the-input-element">input</a></code> element with a <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state is contained
31856: within a <a href="#hyperlink">hyperlink</a> and has a <code title="attr-dim-border">border</code> attribute whose value, when
31857: parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
31858: integers</a>, is found to be a number greater than zero, the user
31859: agent is expected to use the parsed value for eight
31860: <a href="#presentational-hints">presentational hints</a>: four setting the parsed value as
31861: a pixel length for the element's 'border-top-width',
31862: 'border-right-width', 'border-bottom-width', and 'border-left-width'
31863: properties, and four setting the element's 'border-top-style',
31864: 'border-right-style', 'border-bottom-style', and 'border-left-style'
31865: properties to the value 'solid'.</p>
31866:
31867: <p id="dimRendering">The <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>
31868: and <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code> attributes on
31869: <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>,
31870: <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-object-element.html#the-object-element">object</a></code> or <code><a href="the-video-element.html#the-video-element">video</a></code>
31871: elements, and <code><a href="the-input-element.html#the-input-element">input</a></code> elements with a <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute in the <a href="states-of-the-type-attribute.html#image-button-state-(type=image)" title="attr-input-type-image">Image Button</a> state, <a href="#maps-to-the-dimension-property" title="maps to the dimension property">map to the dimension
31872: properties</a> 'width' and 'height' on the element
31873: respectively.</p>
31874:
31875: </div>
31876:
31877:
31878: <div class="impl">
31879:
31880: <h4 id="image-maps-0"><span class="secno">10.4.4 </span>Image maps</h4>
31881:
31882: <p>Shapes on an <a href="image-maps.html#image-map">image map</a> are expected to act, for the
31883: purpose of the CSS cascade, as elements independent of the original
31884: <code><a href="the-area-element.html#the-area-element">area</a></code> element that happen to match the same style rules
31885: but inherit from the <code><a href="the-img-element.html#the-img-element">img</a></code> or <code><a href="the-object-element.html#the-object-element">object</a></code>
31886: element.</p>
31887:
31888: <p>For the purposes of the rendering, only the 'cursor' property is
31889: expected to have any effect on the shape.</p>
31890:
31891: <p class="example">Thus, for example, if an <code><a href="the-area-element.html#the-area-element">area</a></code>
31892: element has a <code title="attr-style"><a href="global-attributes.html#the-style-attribute">style</a></code> attribute that
31893: sets the 'cursor' property to 'help', then when the user designates
31894: that shape, the cursor would change to a Help cursor.</p>
31895:
31896: <p class="example">Similarly, if an <code><a href="the-area-element.html#the-area-element">area</a></code> element had a
31897: CSS rule that set its 'cursor' property to 'inherit' (or if no rule
31898: setting the 'cursor' property matched the element at all), the
31899: shape's cursor would be inherited from the <code><a href="the-img-element.html#the-img-element">img</a></code> or
31900: <code><a href="the-object-element.html#the-object-element">object</a></code> element of the <a href="image-maps.html#image-map">image map</a>, not from
31901: the parent of the <code><a href="the-area-element.html#the-area-element">area</a></code> element.</p>
31902:
31903: </div>
31904:
31905:
31906: <div class="impl">
31907:
31908: <h4 id="toolbars-0"><span class="secno">10.4.5 </span>Toolbars</h4>
31909:
31910: <p>When a <code><a href="#the-menu-element">menu</a></code> element's <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state, the element is
31911: expected to be treated as a replaced element with a height about two
31912: lines high and a width derived from the contents of the element.</p>
31913:
31914: <p>The element is expected to have, by default, the appearance of a
31915: toolbar on the user agent's platform. It is expected to contain the
31916: menu that is <a href="#building-menus-and-toolbars" title="building menus and toolbars">built</a>
31917: from the element.</p>
31918:
31919: </div>
31920:
31921:
31922: <div class="impl">
31923:
31924: <h3 id="bindings"><span class="secno">10.5 </span>Bindings</h3>
31925:
31926: <h4 id="introduction-9"><span class="secno">10.5.1 </span>Introduction</h4>
31927:
31928: <p>A number of elements have their rendering defined in terms of the
31929: 'binding' property. <a href="#refsBECSS">[BECSS]</a></p>
31930:
31931: <p>The CSS snippets below set the 'binding' property to a
31932: user-agent-defined value, represented below by keywords like <code title=""><i title="">button</i></code>. The rules then described for
31933: these bindings are only expected to apply if the element's 'binding'
31934: property has not been overridden (e.g. by the author) to have
31935: another value.</p>
31936:
31937: <p>Exactly how the bindings are implemented is not specified by this
31938: specification. User agents are encouraged to make their bindings set
31939: the 'appearance' CSS property appropriately to achieve
31940: platform-native appearances for widgets, and are expected to
31941: implement any relevant animations, etc, that are appropriate for the
31942: platform. <a href="#refsCSSUI">[CSSUI]</a></p>
31943:
31944: </div>
31945:
31946:
31947: <div class="impl">
31948:
31949: <h4 id="the-button-element-0"><span class="secno">10.5.2 </span>The <code><a href="the-button-element.html#the-button-element">button</a></code> element</h4>
31950:
31951: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31952:
31953: button { binding: <i title="">button</i>; }</pre>
31954:
31955: <p>When the <i title="">button</i> binding applies to a
31956: <code><a href="the-button-element.html#the-button-element">button</a></code> element, the element is expected to render as an
31957: 'inline-block' box rendered as a button whose contents are the
31958: contents of the element.</p>
31959:
31960: </div>
31961:
31962:
31963: <div class="impl">
31964:
31965: <h4 id="the-details-element-0"><span class="secno">10.5.3 </span>The <code><a href="#the-details-element">details</a></code> element</h4>
31966:
31967: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
31968:
31969: details { binding: <i title="">details</i>; }</pre>
31970:
31971: <p>When the <i title="">details</i> binding applies to a
31972: <code><a href="#the-details-element">details</a></code> element, the element is expected to render as a
31973: 'block' box with its 'padding-left' property set to '40px' for
31974: left-to-right elements (<a href="#ltr-specific">LTR-specific</a>) and with its
31975: 'padding-right' property set to '40px' for right-to-left
31976: elements. The element's shadow tree is expected to take the
31977: element's first child <code><a href="#the-summary-element">summary</a></code> element, if any, and
31978: place it in a first 'block' box container, and then take the
31979: element's remaining descendants, if any, and place them in a second
31980: 'block' box container.</p>
31981:
31982: <p>The first container is expected to contain at least one line box,
31983: and that line box is expected to contain a disclosure widget
31984: (typically a triangle), horizontally positioned within the left
31985: padding of the <code><a href="#the-details-element">details</a></code> element. That widget is expected
31986: to allow the user to request that the details be shown or
31987: hidden.</p>
31988:
31989: <p>The second container is expected to have its 'overflow' property
31990: set to 'hidden'. When the <code><a href="#the-details-element">details</a></code> element does not have
31991: an <code title="attr-details-open"><a href="#attr-details-open">open</a></code> attribute, this
31992: second container is expected to be removed from the rendering.</p>
31993:
31994: <!-- http://mail.gnome.org/archives/usability/2006-June/msg00015.html -->
31995:
31996: </div>
31997:
31998: <div class="impl">
31999:
32000: <h4 id="the-input-element-as-a-text-entry-widget"><span class="secno">10.5.4 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a text entry widget</h4>
32001:
32002: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32003:
32004: input { binding: <i title="">input-textfield</i>; }
32005: input[type=password i] { binding: <i title="">input-password</i>; }
32006: /* later rules override this for other values of type="" */</pre>
32007:
32008: <p>When the <i title="">input-textfield</i> binding applies to an
32009: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">Text</a>, <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-search">Search</a>, <a href="states-of-the-type-attribute.html#telephone-state-(type=tel)" title="attr-input-type-tel">Telephone</a>, <a href="states-of-the-type-attribute.html#url-state-(type=url)" title="attr-input-type-url">URL</a>, or <a href="states-of-the-type-attribute.html#e-mail-state-(type=email)" title="attr-input-type-email">E-mail</a> state, the element is
32010: expected to render as an 'inline-block' box rendered as a text
32011: field.</p>
32012:
32013: <p>When the <i title="">input-password</i> binding applies, to an
32014: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#password-state-(type=password)" title="attr-input-type-password">Password</a> state, the element
32015: is expected to render as an 'inline-block' box rendered as a text
32016: field whose contents are obscured.</p>
32017:
32018: <p>If an <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in one of the above
32019: states has a <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">size</a></code> attribute,
32020: and parsing that attribute's value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing
32021: non-negative integers</a> doesn't generate an error, then the
32022: user agent is expected to use the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> for the
32023: 'width' property on the element, with the value obtained from
32024: applying the <a href="#converting-a-character-width-to-pixels">converting a character width to pixels</a>
32025: algorithm to the value of the attribute.</p>
32026:
32027: <p>If an <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in one of the above
32028: states does <em>not</em> have a <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">size</a></code> attribute, then the user agent
32029: is expected to act as if it had a user-agent-level style sheet rule
32030: setting the 'width' property on the element to the value obtained
32031: from applying the <a href="#converting-a-character-width-to-pixels">converting a character width to
32032: pixels</a> algorithm to the number 20.</p>
32033:
32034: <p>The <dfn id="converting-a-character-width-to-pixels">converting a character width to pixels</dfn> algorithm
32035: returns <span title="">(<var title="">size</var>-1)×<var title="">avg</var> + <var title="">max</var></span>, where
32036: <var title="">size</var> is the character width to convert, <var title="">avg</var> is the average character width of the primary
32037: font for the element for which the algorithm is being run, in
32038: pixels, and <var title="">max</var> is the maximum character width
32039: of that same font, also in pixels. (The element's 'letter-spacing'
32040: property does not affect the result.)</p>
32041:
32042: </div>
32043:
32044:
32045: <div class="impl">
32046:
32047: <h4 id="the-input-element-as-domain-specific-widgets"><span class="secno">10.5.5 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as domain-specific widgets</h4>
32048:
32049: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32050:
32051: input[type=datetime i] { binding: <i title="">input-datetime</i>; }
32052: input[type=date i] { binding: <i title="">input-date</i>; }
32053: input[type=month i] { binding: <i title="">input-month</i>; }
32054: input[type=week i] { binding: <i title="">input-week</i>; }
32055: input[type=time i] { binding: <i title="">input-time</i>; }
32056: input[type=datetime-local i] { binding: <i title="">input-datetime-local</i>; }
32057: input[type=number i] { binding: <i title="">input-number</i>; }</pre>
32058:
32059: <p>When the <i title="">input-datetime</i> binding applies to an
32060: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#date-and-time-state-(type=datetime)" title="attr-input-type-datetime">Date and Time</a> state, the
32061: element is expected to render as an 'inline-block' box depicting a
32062: Date and Time control.</p>
32063:
32064: <p>When the <i title="">input-date</i> binding applies to an
32065: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#date-state-(type=date)" title="attr-input-type-date">Date</a> state, the element is
32066: expected to render as an 'inline-block' box depicting a Date
32067: control.</p>
32068:
32069: <p>When the <i title="">input-month</i> binding applies to an
32070: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#month-state-(type=month)" title="attr-input-type-month">Month</a> state, the element is
32071: expected to render as an 'inline-block' box depicting a Month
32072: control.</p>
32073:
32074: <p>When the <i title="">input-week</i> binding applies to an
32075: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#week-state-(type=week)" title="attr-input-type-week">Week</a> state, the element is
32076: expected to render as an 'inline-block' box depicting a Week
32077: control.</p>
32078:
32079: <p>When the <i title="">input-time</i> binding applies to an
32080: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#time-state-(type=time)" title="attr-input-type-time">Time</a> state, the element is
32081: expected to render as an 'inline-block' box depicting a Time
32082: control.</p>
32083:
32084: <p>When the <i title="">input-datetime-local</i> binding applies to an
32085: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#local-date-and-time-state-(type=datetime-local)" title="attr-input-type-datetime-local">Local Date and Time</a>
32086: state, the element is expected to render as an 'inline-block' box
32087: depicting a Local Date and Time control.</p>
32088:
32089: <p>When the <i title="">input-number</i> binding applies to an
32090: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a> state, the element is
32091: expected to render as an 'inline-block' box depicting a Number
32092: control.</p>
32093:
32094: <p>These controls are all expected to be about one line high, and
32095: about as wide as necessary to show the widest possible value.</p>
32096:
32097: </div>
32098:
32099:
32100: <div class="impl">
32101:
32102: <h4 id="the-input-element-as-a-range-control"><span class="secno">10.5.6 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a range control</h4>
32103:
32104: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32105:
32106: input[type=range i] { binding: <i title="">input-range</i>; }</pre>
32107:
32108: <p>When the <i title="">input-range</i> binding applies to an
32109: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#range-state-(type=range)" title="attr-input-type-range">Range</a> state, the element is
32110: expected to render as an 'inline-block' box depicting a slider
32111: control.</p>
32112:
32113: <p>When the control is wider than it is tall (or square), the
32114: control is expected to be a horizontal slider, with the lowest value
32115: on the right if the 'direction' property on this element has a
32116: computed value of 'rtl', and on the left otherwise. When the control
32117: is taller than it is wide, it is expected to be a vertical slider,
32118: with the lowest value on the bottom.</p>
32119:
32120: <p>Predefined suggested values (provided by the <code title="attr-input-list"><a href="common-input-element-attributes.html#attr-input-list">list</a></code> attribute) are expected to be
32121: shown as tick marks on the slider, which the slider can snap to.</p>
32122:
32123: <p>User agents are expected to use the used value of the 'direction'
32124: property on the element to determine the direction in which the
32125: slider operates. Typically, a left-to-right ('ltr') horizontal
32126: control would have the lowest value on the left and the highest
32127: value on the right, and vice versa.</p>
32128:
32129: </div>
32130:
32131:
32132: <div class="impl">
32133:
32134: <h4 id="the-input-element-as-a-color-well"><span class="secno">10.5.7 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a color well</h4>
32135:
32136: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32137:
32138: input[type=color i] { binding: <i title="">input-color</i>; }</pre>
32139:
32140: <p>When the <i title="">input-color</i> binding applies to an
32141: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#color-state-(type=color)" title="attr-input-type-color">Color</a> state, the element is
32142: expected to render as an 'inline-block' box depicting a color well,
32143: which, when activated, provides the user with a color picker (e.g. a
32144: color wheel or color palette) from which the color can be
32145: changed.</p>
32146:
32147: <p>Predefined suggested values (provided by the <code title="attr-input-list"><a href="common-input-element-attributes.html#attr-input-list">list</a></code> attribute) are expected to be
32148: shown in the color picker interface, not on the color well
32149: itself.</p>
32150:
32151: </div>
32152:
32153:
32154: <div class="impl">
32155:
32156: <h4 id="the-input-element-as-a-checkbox-and-radio-button-widgets"><span class="secno">10.5.8 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a checkbox and radio button widgets</h4>
32157:
32158: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32159:
32160: input[type=checkbox i] { binding: <i title="">input-checkbox</i>; }
32161: input[type=radio i] { binding: <i title="">input-radio</i>; }</pre>
32162:
32163: <p>When the <i title="">input-checkbox</i> binding applies to an
32164: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#checkbox-state-(type=checkbox)" title="attr-input-type-checkbox">Checkbox</a> state, the element
32165: is expected to render as an 'inline-block' box containing a single
32166: checkbox control, with no label.</p>
32167:
32168: <p>When the <i title="">input-radio</i> binding applies to an
32169: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#radio-button-state-(type=radio)" title="attr-input-type-radio">Radio Button</a> state, the element
32170: is expected to render as an 'inline-block' box containing a single
32171: radio button control, with no label.</p>
32172:
32173: </div>
32174:
32175:
32176: <div class="impl">
32177:
32178: <h4 id="the-input-element-as-a-file-upload-control"><span class="secno">10.5.9 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a file upload control</h4>
32179:
32180: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32181:
32182: input[type=file i] { binding: <i title="">input-file</i>; }</pre>
32183:
32184: <p>When the <i title="">input-file</i> binding applies to an
32185: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#file-upload-state-(type=file)" title="attr-input-type-file">File Upload</a> state, the element
32186: is expected to render as an 'inline-block' box containing a span of
32187: text giving the filename(s) of the <a href="states-of-the-type-attribute.html#concept-input-type-file-selected" title="concept-input-type-file-selected">selected files</a>, if
32188: any, followed by a button that, when activated, provides the user
32189: with a file picker from which the selection can be changed.</p>
32190:
32191: </div>
32192:
32193:
32194: <div class="impl">
32195:
32196: <h4 id="the-input-element-as-a-button"><span class="secno">10.5.10 </span>The <code><a href="the-input-element.html#the-input-element">input</a></code> element as a button</h4>
32197:
32198: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32199:
32200: input[type=submit i], input[type=reset i], input[type=button i] {
32201: binding: <i title="">input-button</i>;
32202: }</pre>
32203:
32204: <p>When the <i title="">input-button</i> binding applies to an
32205: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#submit-button-state-(type=submit)" title="attr-input-type-submit">Submit Button</a>, <a href="states-of-the-type-attribute.html#reset-button-state-(type=reset)" title="attr-input-type-reset">Reset Button</a>, or <a href="states-of-the-type-attribute.html#button-state-(type=button)" title="attr-input-type-button">Button</a> state, the element is
32206: expected to render as an 'inline-block' box rendered as a button,
32207: about one line high, containing the contents of the element's <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code> attribute, if any, or text
32208: derived from the element's <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>
32209: attribute in a user-agent-defined (and probably locale-specific)
32210: fashion, if not.</p>
32211:
32212: </div>
32213:
32214:
32215: <div class="impl">
32216:
32217: <h4 id="the-marquee-element"><span class="secno">10.5.11 </span>The <code><a href="#the-marquee-element-0">marquee</a></code> element</h4>
32218:
32219: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32220:
32221: marquee { binding: <i title="">marquee</i>; }</pre>
32222:
32223: <p>When the <i title="">marquee</i> binding applies to a
32224: <code><a href="#the-marquee-element-0">marquee</a></code> element, while the element is <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>, the element is expected
32225: to render in an animated fashion according to its attributes as
32226: follows:</p>
32227:
32228: <dl><dt>If the element's <code title="attr-marquee-behavior"><a href="#attr-marquee-behavior">behavior</a></code> attribute is in the
32229: <a href="#attr-marquee-behavior-scroll" title="attr-marquee-behavior-scroll">scroll</a> state</dt>
32230:
32231: <dd>
32232:
32233: <p>Slide the contents of the element in the direction described by
32234: the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code>
32235: attribute as defined below, such that it begins off the start side
32236: of the <code><a href="#the-marquee-element-0">marquee</a></code>, and ends flush with the inner end
32237: side.</p>
32238:
32239: <p class="example">For example, if the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute is <a href="#attr-marquee-direction-left" title="attr-marquee-direction-left">left</a> (the default),
32240: then the contents would start such that their left edge are off
32241: the side of the right edge of the <code><a href="#the-marquee-element-0">marquee</a></code>'s content
32242: area, and the contents would then slide up to the point where the
32243: left edge of the contents are flush with the left inner edge of
32244: the <code><a href="#the-marquee-element-0">marquee</a></code>'s content area.</p>
32245:
32246: <p>Once the animation has ended, the user agent is expected to
32247: <a href="#increment-the-marquee-current-loop-index">increment the marquee current loop index</a>. If the
32248: element is still <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>
32249: after this, then the user agent is expected to restart the
32250: animation.</p>
32251:
32252: </dd>
32253:
32254: <dt>If the element's <code title="attr-marquee-behavior"><a href="#attr-marquee-behavior">behavior</a></code> attribute is in the
32255: <a href="#attr-marquee-behavior-slide" title="attr-marquee-behavior-slide">slide</a> state</dt>
32256:
32257: <dd>
32258:
32259: <p>Slide the contents of the element in the direction described by
32260: the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code>
32261: attribute as defined below, such that it begins off the start side
32262: of the <code><a href="#the-marquee-element-0">marquee</a></code>, and ends off the end side of the
32263: <code><a href="#the-marquee-element-0">marquee</a></code>.</p>
32264:
32265: <p class="example">For example, if the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute is <a href="#attr-marquee-direction-left" title="attr-marquee-direction-left">left</a> (the default),
32266: then the contents would start such that their left edge are off
32267: the side of the right edge of the <code><a href="#the-marquee-element-0">marquee</a></code>'s content
32268: area, and the contents would then slide up to the point where the
32269: <em>right</em> edge of the contents are flush with the left inner
32270: edge of the <code><a href="#the-marquee-element-0">marquee</a></code>'s content area.</p>
32271:
32272: <p>Once the animation has ended, the user agent is expected to
32273: <a href="#increment-the-marquee-current-loop-index">increment the marquee current loop index</a>. If the
32274: element is still <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>
32275: after this, then the user agent is expected to restart the
32276: animation.</p>
32277:
32278: </dd>
32279:
32280: <dt>If the element's <code title="attr-marquee-behavior"><a href="#attr-marquee-behavior">behavior</a></code> attribute is in the
32281: <a href="#attr-marquee-behavior-alternate" title="attr-marquee-behavior-alternate">alternate</a>
32282: state</dt>
32283:
32284: <dd>
32285:
32286: <p>When the <a href="#marquee-current-loop-index">marquee current loop index</a> is even (or
32287: zero), slide the contents of the element in the direction
32288: described by the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute as
32289: defined below, such that it begins flush with the start side of
32290: the <code><a href="#the-marquee-element-0">marquee</a></code>, and ends flush with the end side of the
32291: <code><a href="#the-marquee-element-0">marquee</a></code>.</p>
32292:
32293: <p>When the <a href="#marquee-current-loop-index">marquee current loop index</a> is odd, slide
32294: the contents of the element in the opposite direction than that
32295: described by the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute as
32296: defined below, such that it begins flush with the end side of the
32297: <code><a href="#the-marquee-element-0">marquee</a></code>, and ends flush with the start side of the
32298: <code><a href="#the-marquee-element-0">marquee</a></code>.</p>
32299:
32300: <p class="example">For example, if the <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute is <a href="#attr-marquee-direction-left" title="attr-marquee-direction-left">left</a> (the default),
32301: then the contents would with their right edge flush with the right
32302: inner edge of the <code><a href="#the-marquee-element-0">marquee</a></code>'s content area, and the
32303: contents would then slide up to the point where the <em>left</em>
32304: edge of the contents are flush with the left inner edge of the
32305: <code><a href="#the-marquee-element-0">marquee</a></code>'s content area.</p>
32306:
32307: <p>Once the animation has ended, the user agent is expected to
32308: <a href="#increment-the-marquee-current-loop-index">increment the marquee current loop index</a>. If the
32309: element is still <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>
32310: after this, then the user agent is expected to continue the
32311: animation.</p>
32312:
32313: </dd>
32314:
32315: </dl><p>The <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code>
32316: attribute has the meanings described in the following table:</p>
32317:
32318: <table><thead><tr><th><code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute state
32319: </th><th>Direction of animation
32320: </th><th>Start edge
32321: </th><th>End edge
32322: </th><th>Opposite direction
32323: </th></tr></thead><tbody><tr><td><a href="#attr-marquee-direction-left" title="attr-marquee-direction-left">left</a>
32324: </td><td>← Right to left
32325: </td><td>Right
32326: </td><td>Left
32327: </td><td>→ Left to Right
32328: </td></tr><tr><td><a href="#attr-marquee-direction-right" title="attr-marquee-direction-right">right</a>
32329: </td><td>→ Left to Right
32330: </td><td>Left
32331: </td><td>Right
32332: </td><td>← Right to left
32333: </td></tr><tr><td><a href="#attr-marquee-direction-up" title="attr-marquee-direction-up">up</a>
32334: </td><td>↑ Up (Bottom to Top)
32335: </td><td>Bottom
32336: </td><td>Top
32337: </td><td>↓ Down (Top to Bottom)
32338: </td></tr><tr><td><a href="#attr-marquee-direction-down" title="attr-marquee-direction-down">down</a>
32339: </td><td>↓ Down (Top to Bottom)
32340: </td><td>Top
32341: </td><td>Bottom
32342: </td><td>↑ Up (Bottom to Top)
32343: </td></tr></tbody></table><p>In any case, the animation should proceed such that there is a
32344: delay given by the <a href="#marquee-scroll-interval">marquee scroll interval</a> between each
32345: frame, and such that the content moves at most the distance given by
32346: the <a href="#marquee-scroll-distance">marquee scroll distance</a> with each frame.</p>
32347:
32348: <p>When a <code><a href="#the-marquee-element-0">marquee</a></code> element has a <code title="attr-marquee-bgcolor">bgcolor</code> attribute set, the value
32349: is expected to be parsed using the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy
32350: color value</a>, and if that does not return an error, the user
32351: agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
32352: element's 'background-color' property to the resulting color.</p>
32353:
32354: <p>The <code title="attr-marquee-width">width</code> and <code title="attr-marquee-height">height</code> attributes on a
32355: <code><a href="#the-marquee-element-0">marquee</a></code> element <a href="#maps-to-the-dimension-property" title="maps to the dimension
32356: property">map to the dimension properties</a> 'width' and
32357: 'height' on the element respectively.</p>
32358:
32359: <p>The intrinsic height of a <code><a href="#the-marquee-element-0">marquee</a></code> element with its
32360: <code title="attr-marquee-direction"><a href="#attr-marquee-direction">direction</a></code> attribute in
32361: the <a href="#attr-marquee-direction-up" title="attr-marquee-direction-up">up</a> or <a href="#attr-marquee-direction-down" title="attr-marquee-direction-down">down</a> states is 200 CSS
32362: pixels.</p>
32363:
32364: <p>The <code title="attr-marquee-vspace">vspace</code> attribute of
32365: a <code><a href="#the-marquee-element-0">marquee</a></code> element <a href="#maps-to-the-dimension-property" title="maps to the dimension
32366: property">maps to the dimension properties</a> 'margin-top' and
32367: 'margin-bottom' on the element. The <code title="attr-marquee-hspace">hspace</code> attribute of a
32368: <code><a href="#the-marquee-element-0">marquee</a></code> element <a href="#maps-to-the-dimension-property" title="maps to the dimension
32369: property">maps to the dimension properties</a> 'margin-left' and
32370: 'margin-right' on the element.</p>
32371:
32372: <p>The 'overflow' property on the <code><a href="#the-marquee-element-0">marquee</a></code> element is
32373: expected to be ignored; overflow is expected to always be
32374: hidden.</p>
32375:
32376: </div>
32377:
32378:
32379: <div class="impl">
32380:
32381: <h4 id="the-meter-element-0"><span class="secno">10.5.12 </span>The <code><a href="the-meter-element.html#the-meter-element">meter</a></code> element</h4>
32382:
32383: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32384:
32385: meter { binding: <i title="">meter</i>; }</pre>
32386:
32387: <p>When the <i title="">meter</i> binding applies to a
32388: <code><a href="the-meter-element.html#the-meter-element">meter</a></code> element, the element is expected to render as an
32389: 'inline-block' box with a 'height' of '1em' and a 'width' of '5em',
32390: a 'vertical-align' of '-0.2em', and with its contents depicting a
32391: gauge.</p>
32392:
32393: <p>When the element is wider than it is tall (or square), the
32394: depiction is expected to be of a horizontal gauge, with the minimum
32395: value on the right if the 'direction' property on this element has a
32396: computed value of 'rtl', and on the left otherwise. When the element
32397: is taller than it is wide, it is expected to depict a vertical
32398: gauge, with the minimum value on the bottom.</p>
32399:
32400: <p>User agents are expected to use a presentation consistent with
32401: platform conventions for gauges, if any.</p>
32402:
32403: <p class="note">Requirements for what must be depicted in the gauge
32404: are included in the definition of the <code><a href="the-meter-element.html#the-meter-element">meter</a></code>
32405: element.</p>
32406:
32407: </div>
32408:
32409:
32410: <div class="impl">
32411:
32412: <h4 id="the-progress-element-0"><span class="secno">10.5.13 </span>The <code><a href="the-progress-element.html#the-progress-element">progress</a></code> element</h4>
32413:
32414: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32415:
32416: progress { binding: <i title="">progress</i>; }</pre>
32417:
32418: <p>When the <i title="">progress</i> binding applies to a
32419: <code><a href="the-progress-element.html#the-progress-element">progress</a></code> element, the element is expected to render as
32420: an 'inline-block' box with a 'height' of '1em' and a 'width' of
32421: '10em', and a 'vertical-align' of '-0.2em'.</p>
32422:
32423: <!-- http://software.hixie.ch/utilities/js/canvas/?c.clearRect(0%2C%200%2C%20640%2C%20480)%3B%0Ac.save()%3B%0Atry%20{%0A%20%20c.fillStyle%20%3D%20'black'%3B%0A%20%20c.font%20%3D%20'8px%20sans-serif'%3B%0A%20%20c.fillText('Wide'%2C%2043%2C105)%3B%0A%20%20c.fillText('Tall'%2C%20100%2C105)%3B%0A%20%20c.fillText('Square'%2C%20128%2C105)%3B%0A%20%20c.font%20%3D%20'700%2010px%20sans-serif'%3B%0A%20%20c.fillText('Progress%20Bars'%2C%2013%2C30)%3B%0A%20%20c.font%20%3D%20'100%2010px%20sans-serif'%3B%0A%20%20c.fillText('(80%25)'%2C%2037%2C45)%3B%0A%20%20c.beginPath()%3B%0A%20%20var%20g%20%3D%20c.createLinearGradient(10%2C0%2C80%2C0)%3B%0A%20%20g.addColorStop(0%2C%20'%2300FF00')%3B%0A%20%20g.addColorStop(0.8%2C%20'%2300FF00')%3B%0A%20%20g.addColorStop(0.9%2C%20'%23FFFF00')%3B%0A%20%20c.fillStyle%20%3D%20g%3B%0A%20%20c.rect(10%2C80%2C80%2C15)%3B%0A%20%20c.fill()%3B%0A%20%20c.strokeStyle%20%3D%20'black'%3B%0A%20%20c.stroke()%3B%0A%20%20c.beginPath()%3B%0A%20%20var%20g%20%3D%20c.createLinearGradient(0%2C80%2C0%2C20)%3B%0A%20%20g.addColorStop(0%2C%20'%2300FF00')%3B%0A%20%20g.addColorStop(0.75%2C%20'%2300FF00')%3B%0A%20%20g.addColorStop(0.85%2C%20'%23FFFF00')%3B%0A%20%20c.fillStyle%20%3D%20g%3B%0A%20%20c.rect(100%2C15%2C15%2C80)%3B%0A%20%20c.fill()%3B%0A%20%20c.strokeStyle%20%3D%20'black'%3B%0A%20%20c.stroke()%3B%0A%0A%20%20c.beginPath()%3B%0A%20%20c.fillStyle%20%3D%20'yellow'%3B%0A%20%20c.arc(140%2C80%2C15%2C0%2C2*Math.PI%2C%20true)%3B%0A%20%20c.fill()%3B%0A%20%20c.beginPath()%3B%0A%20%20c.fillStyle%20%3D%20'lime'%3B%0A%20%20c.moveTo(140%2C80)%3B%0A%20%20c.arc(140%2C80%2C15%2C-Math.PI%2F2%2C1.2*Math.PI%2C%20false)%3B%0A%20%20c.fill()%3B%0A%20%20c.beginPath()%3B%0A%20%20c.arc(140%2C80%2C15%2C0%2C2*Math.PI%2C%20true)%3B%0A%20%20c.strokeStyle%20%3D%20'black'%3B%0A%20%20c.stroke()%3B%0A}%20finally%20{%0A%20%20c.restore()%3B%0A}%0A -->
32424:
32425: <p> <img alt="" class="extra" src="images/sample-progress.png">
32426: When the element is wider than it is tall, the element is
32427: expected to be depicted as a horizontal progress bar, with the start
32428: on the right and the end on the left if the 'direction' property on
32429: this element has a computed value of 'rtl', and with the start on
32430: the left and the end on the right otherwise. When the element is
32431: taller than it is wide, it is expected to depicted as a vertical
32432: progress bar, with the lowest value on the bottom. When the element
32433: is square, it is expected to be depicted as a direction-independent
32434: progress widget (e.g. a circular progress ring).</p>
32435:
32436: <p>User agents are expected to use a presentation consistent with
32437: platform conventions for progress bars. In particular, user agents
32438: are expected to use different presentations for determinate and
32439: indeterminate progress bars. User agents are also expected to vary
32440: the presentation based on the dimensions of the element.</p>
32441:
32442: <p class="example">For example, on some platforms for showing
32443: indeterminate progress there is an asynchronous progress indicator
32444: with square dimensions, which could be used when the element is
32445: square, and an indeterminate progress bar, which could be used when
32446: the element is wide.</p>
32447:
32448: <p class="note">Requirements for how to determine if the progress
32449: bar is determinate or indeterminate, and what progress a determinate
32450: progress bar is to show, are included in the definition of the
32451: <code><a href="the-progress-element.html#the-progress-element">progress</a></code> element.</p>
32452:
32453: </div>
32454:
32455:
32456: <div class="impl">
32457:
32458: <h4 id="the-select-element-0"><span class="secno">10.5.14 </span>The <code><a href="the-select-element.html#the-select-element">select</a></code> element</h4>
32459:
32460: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32461:
32462: select { binding: <i title="">select</i>; }</pre>
32463:
32464: <p>When the <i title="">select</i> binding applies to a
32465: <code><a href="the-select-element.html#the-select-element">select</a></code> element whose <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">multiple</a></code> attribute is present,
32466: the element is expected to render as a multi-select list box.</p>
32467:
32468: <p>When the <i title="">select</i> binding applies to a
32469: <code><a href="the-select-element.html#the-select-element">select</a></code> element whose <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">multiple</a></code> attribute is absent,
32470: and the element's <a href="the-select-element.html#concept-select-size" title="concept-select-size">display
32471: size</a> is greater than 1, the element is expected to render as
32472: a single-select list box.</p>
32473:
32474: <p>When the element renders as a list box, it is expected to render
32475: as an 'inline-block' box whose 'height' is the height necessary to
32476: contain as many rows for items as given by the element's <a href="the-select-element.html#concept-select-size" title="concept-select-size">display size</a>, or four rows if the
32477: attribute is absent, and whose 'width' is the <a href="#width-of-the-select's-labels">width of the
32478: <code>select</code>'s labels</a> plus the width of a
32479: scrollbar.</p>
32480:
32481: <p>When the <i title="">select</i> binding applies to a
32482: <code><a href="the-select-element.html#the-select-element">select</a></code> element whose <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">multiple</a></code> attribute is absent,
32483: and the element's <a href="the-select-element.html#concept-select-size" title="concept-select-size">display
32484: size</a> is 1, the element is expected to render as a one-line
32485: drop down box whose width is the <a href="#width-of-the-select's-labels">width of the
32486: <code>select</code>'s labels</a>.</p>
32487:
32488: <p>In either case (list box or drop-down box), the element's items
32489: are expected to be the element's <a href="the-select-element.html#concept-select-option-list" title="concept-select-option-list">list of options</a>, with the
32490: element's <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element children providing headers
32491: for groups of options where applicable.</p>
32492:
32493: <p>An <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element is expected to be rendered by
32494: displaying the element's <code title="attr-optgroup-label"><a href="the-optgroup-element.html#attr-optgroup-label">label</a></code> attribute.</p>
32495:
32496: <p>An <code><a href="the-option-element.html#the-option-element">option</a></code> element is expected to be rendered by
32497: displaying the element's <a href="the-option-element.html#concept-option-label" title="concept-option-label">label</a>, indented under its
32498: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code> element if it has one.</p>
32499:
32500: <p>The <dfn id="width-of-the-select's-labels">width of the <code>select</code>'s labels</dfn> is the
32501: wider of the width necessary to render the widest
32502: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code>, and the width necessary to render the widest
32503: <code><a href="the-option-element.html#the-option-element">option</a></code> element in the element's <a href="the-select-element.html#concept-select-option-list" title="concept-select-option-list">list of options</a> (including
32504: its indent, if any).</p>
32505:
32506: <p>If a <code><a href="the-select-element.html#the-select-element">select</a></code> element contains a <a href="the-select-element.html#placeholder-label-option">placeholder
32507: label option</a>, the user agent is expected to render that
32508: <code><a href="the-option-element.html#the-option-element">option</a></code> in a manner that conveys that it is a label,
32509: rather than a valid option of the control. This can include
32510: preventing the <a href="the-select-element.html#placeholder-label-option">placeholder label option</a> from being
32511: explicitly selected by the user. When the <a href="the-select-element.html#placeholder-label-option">placeholder label
32512: option</a>'s <a href="the-option-element.html#concept-option-selectedness" title="concept-option-selectedness">selectedness</a> is true, the
32513: control is expected to be displayed in a fashion that indicates that
32514: no valid option is currently selected.</p>
32515:
32516: <p>User agents are expected to render the labels in a
32517: <code><a href="the-select-element.html#the-select-element">select</a></code> in such a manner that any alignment remains
32518: consistent whether the label is being displayed as part of the page
32519: or in a menu control.</p>
32520:
32521: </div>
32522:
32523:
32524: <div class="impl">
32525:
32526: <h4 id="the-textarea-element-0"><span class="secno">10.5.15 </span>The <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element</h4>
32527:
32528: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32529:
32530: textarea { binding: <i title="">textarea</i>; white-space: pre-wrap; }</pre>
32531:
32532: <p>When the <i title="">textarea</i> binding applies to a
32533: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element, the element is expected to render as
32534: an 'inline-block' box rendered as a multiline text field.</p>
32535:
32536: <p>If the element has a <code title="attr-textarea-cols"><a href="the-textarea-element.html#attr-textarea-cols">cols</a></code>
32537: attribute, and parsing that attribute's value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules
32538: for parsing non-negative integers</a> doesn't generate an error,
32539: then the user agent is expected to use the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> for the
32540: 'width' property on the element, with the value being the
32541: <a href="#textarea-effective-width">textarea effective width</a> (as defined below). Otherwise,
32542: the user agent is expected to act as if it had a user-agent-level
32543: style sheet rule setting the 'width' property on the element to the
32544: <a href="#textarea-effective-width">textarea effective width</a>.</p>
32545:
32546: <p>The <dfn id="textarea-effective-width">textarea effective width</dfn> of a
32547: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element is <span><var title="">size</var>×<var title="">avg</var> + <var title="">sbw</var></span>, where <var title="">size</var> is the
32548: element's <a href="the-textarea-element.html#attr-textarea-cols-value" title="attr-textarea-cols-value">character
32549: width</a>, <var title="">avg</var> is the average character width
32550: of the primary font of the element, in CSS pixels, and <var title="">sbw</var> is the width of a scroll bar, in CSS pixels. (The
32551: element's 'letter-spacing' property does not affect the result.)</p>
32552:
32553: <p>If the element has a <code title="attr-textarea-rows"><a href="the-textarea-element.html#attr-textarea-rows">rows</a></code>
32554: attribute, and parsing that attribute's value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules
32555: for parsing non-negative integers</a> doesn't generate an error,
32556: then the user agent is expected to use the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> for the
32557: 'height' property on the element, with the value being the
32558: <a href="#textarea-effective-height">textarea effective height</a> (as defined
32559: below). Otherwise, the user agent is expected to act as if it had a
32560: user-agent-level style sheet rule setting the 'height' property on
32561: the element to the <a href="#textarea-effective-height">textarea effective height</a>.</p>
32562:
32563: <p>The <dfn id="textarea-effective-height">textarea effective height</dfn> of a
32564: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> element is the height in CSS pixels of the
32565: number of lines specified the element's <a href="the-textarea-element.html#attr-textarea-rows-value" title="attr-textarea-rows-value">character height</a>, plus the
32566: height of a scrollbar in CSS pixels.</p>
32567:
32568: <p>User agents are expected to apply the 'white-space' CSS property
32569: to <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements. For historical reasons, if the
32570: element has a <code title="attr-textarea-wrap"><a href="the-textarea-element.html#attr-textarea-wrap">wrap</a></code> attribute
32571: whose value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the
32572: string "<code title="attr-textarea-wrap-off">off</code>", then the
32573: user agent is expected to treat the attribute as a <a href="#presentational-hints" title="presentational hints">presentational hint</a> setting the
32574: element's 'white-space' property to 'pre'.</p>
32575:
32576: </div>
32577:
32578:
32579: <div class="impl">
32580:
32581: <h4 id="the-keygen-element-0"><span class="secno">10.5.16 </span>The <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code> element</h4>
32582:
32583: <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
32584:
32585: keygen { binding: <i title="">keygen</i>; }</pre>
32586:
32587: <p>When the <i title="">keygen</i> binding applies to a
32588: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code> element, the element is expected to render as an
32589: 'inline-block' box containing a user interface to configure the key
32590: pair to be generated.</p>
32591:
32592: </div>
32593:
32594:
32595:
32596: <div class="impl">
32597:
32598: <h3 id="frames-and-framesets"><span class="secno">10.6 </span>Frames and framesets</h3>
32599:
32600: <p>When an <code><a href="the-html-element.html#the-html-element">html</a></code> element's <a href="dom.html#the-body-element-0" title="the body
32601: element">body element</a> is actually a <code><a href="#frameset">frameset</a></code>
32602: element, the user agent is expected to render the
32603: <code><a href="#frameset">frameset</a></code> element as described below across the surface
32604: of the viewport, instead of applying the usual CSS rendering
32605: rules.</p>
32606:
32607: <p>When rendering a <code><a href="#frameset">frameset</a></code> on a surface, the user
32608: agent is expected to use the following layout algorithm:</p>
32609:
32610: <ol><li>
32611:
32612: <p>The <var title="">cols</var> and <var title="">rows</var>
32613: variables are lists of zero or more pairs consisting of a number
32614: and a unit, the unit being one of <i>percentage</i>,
32615: <i>relative</i>, and <i>absolute</i>.</p>
32616:
32617: <p>Use the <a href="common-microsyntaxes.html#rules-for-parsing-a-list-of-dimensions">rules for parsing a list of dimensions</a> to
32618: parse the value of the element's <code title="attr-frameset-cols">cols</code> attribute, if there is
32619: one. Let <var title="">cols</var> be the result, or an empty list
32620: if there is no such attribute.</p>
32621:
32622: <p>Use the <a href="common-microsyntaxes.html#rules-for-parsing-a-list-of-dimensions">rules for parsing a list of dimensions</a> to
32623: parse the value of the element's <code title="attr-frameset-rows">rows</code> attribute, if there is
32624: one. Let <var title="">rows</var> be the result, or an empty list
32625: if there is no such attribute.</p>
32626:
32627: </li>
32628:
32629: <li>
32630:
32631: <p>For any of the entries in <var title="">cols</var> or <var title="">rows</var> that have the number zero and the unit
32632: <i>relative</i>, change the entry's number to one.</p>
32633:
32634: </li>
32635:
32636: <li>
32637:
32638: <p>If <var title="">cols</var> has no entries, then add a single
32639: entry consisting of the value 1 and the unit <i>relative</i> to
32640: <var title="">cols</var>.</p>
32641:
32642: <p>If <var title="">rows</var> has no entries, then add a single
32643: entry consisting of the value 1 and the unit <i>relative</i> to
32644: <var title="">rows</var>.</p>
32645:
32646: </li>
32647:
32648: <li>
32649:
32650: <p>Invoke the algorithm defined below to <a href="#convert-a-list-of-dimensions-to-a-list-of-pixel-values">convert a list of
32651: dimensions to a list of pixel values</a> using <var title="">cols</var> as the input list, and the width of the
32652: surface that the <code><a href="#frameset">frameset</a></code> is being rendered into, in
32653: CSS pixels, as the input dimension. Let <var title="">sized
32654: cols</var> be the resulting list.</p>
32655:
32656: <p>Invoke the algorithm defined below to <a href="#convert-a-list-of-dimensions-to-a-list-of-pixel-values">convert a list of
32657: dimensions to a list of pixel values</a> using <var title="">rows</var> as the input list, and the height of the
32658: surface that the <code><a href="#frameset">frameset</a></code> is being rendered into, in
32659: CSS pixels, as the input dimension. Let <var title="">sized
32660: rows</var> be the resulting list.</p>
32661:
32662: </li>
32663:
32664: <li>
32665:
32666: <p>Split the surface into a grid of <span title=""><var title="">w</var>×<var title="">h</var></span> rectangles,
32667: where <var title="">w</var> is the number of entries in <var title="">sized cols</var> and <var title="">h</var> is the number
32668: of entries in <var title="">sized rows</var>.</p>
32669:
32670: <p>Size the columns so that each column in the grid is as many CSS
32671: pixels wide as the corresponding entry in the <var title="">sized
32672: cols</var> list.</p>
32673:
32674: <p>Size the rows so that each row in the grid is as many CSS
32675: pixels high as the corresponding entry in the <var title="">sized
32676: rows</var> list.</p>
32677:
32678: </li>
32679:
32680: <li>
32681:
32682: <p>Let <var title="">children</var> be the list of
32683: <code><a href="#frame">frame</a></code> and <code><a href="#frameset">frameset</a></code> elements that are
32684: children of the <code><a href="#frameset">frameset</a></code> element for which the
32685: algorithm was invoked.</p>
32686:
32687: </li>
32688:
32689: <li>
32690:
32691: <p>For each row of the grid of rectangles created in the previous
32692: step, from top to bottom, run these substeps:</p>
32693:
32694: <ol><li>
32695:
32696: <p>For each rectangle in the row, from left to right, run these
32697: substeps:</p>
32698:
32699: <ol><li>
32700:
32701: <p>If there are any elements left in <var title="">children</var>, take the first element in the list,
32702: and assign it to the rectangle.</p>
32703:
32704: <p>If this is a <code><a href="#frameset">frameset</a></code> element, then recurse
32705: the entire <code><a href="#frameset">frameset</a></code> layout algorithm for that
32706: <code><a href="#frameset">frameset</a></code> element, with the rectangle as the
32707: surface.</p>
32708:
32709: <p>Otherwise, it is a <code><a href="#frame">frame</a></code> element; create a
32710: <a href="#nested-browsing-context">nested browsing context</a> sized to fit the
32711: rectangle.</p>
32712:
32713: </li>
32714:
32715: <li>
32716:
32717: <p>If there are any elements left in <var title="">children</var>, remove the first element from <var title="">children</var>.</p>
32718:
32719: </li></ol></li>
32720:
32721: </ol></li>
32722:
32723: <li>
32724:
32725: <p>If the <code><a href="#frameset">frameset</a></code> element <a href="#has-a-border">has a border</a>,
32726: draw an outer set of borders around the rectangles, using the
32727: element's <a href="#frame-border-color">frame border color</a>.</p>
32728:
32729: <p>For each rectangle, if there is an element assigned to that
32730: rectangle, and that element <a href="#has-a-border">has a border</a>, draw an
32731: inner set of borders around that rectangle, using the
32732: element's <a href="#frame-border-color">frame border color</a>.</p>
32733:
32734: <p>For each (visible) border that does not abut a rectangle that
32735: is assigned a <code><a href="#frame">frame</a></code> element with a <code title="attr-frame-noresize">noresize</code> attribute (including
32736: rectangles in further nested <code><a href="#frameset">frameset</a></code> elements), the
32737: user agent is expected to allow the user to move the border,
32738: resizing the rectangles within, keeping the proportions of any
32739: nested <code><a href="#frameset">frameset</a></code> grids.</p>
32740:
32741: <p>A <code><a href="#frameset">frameset</a></code> or <code><a href="#frame">frame</a></code> element <dfn id="has-a-border">has
32742: a border</dfn> if the following algorithm returns true:</p>
32743:
32744: <ol><li><p>If the element has a <code title="attr-frames-frameborder">frameborder</code> attribute
32745: whose value is not the empty string and whose first character is
32746: either a "1" (U+0031) character, a "y" (U+0079) character, or a "Y" (U+0059) character, then return true.</p></li>
32747:
32748: <li><p>Otherwise, if the element has a <code title="attr-frames-frameborder">frameborder</code> attribute,
32749: return false.</p></li>
32750:
32751: <li><p>Otherwise, if the element has a parent element that is a
32752: <code><a href="#frameset">frameset</a></code> element, then return true if <em>that</em>
32753: element <a href="#has-a-border">has a border</a>, and false if it does
32754: not.</p></li>
32755:
32756: <li><p>Otherwise, return true.</p></li>
32757:
32758: </ol><p>The <dfn id="frame-border-color">frame border color</dfn> of a <code><a href="#frameset">frameset</a></code> or
32759: <code><a href="#frame">frame</a></code> element is the color obtained from the
32760: following algorithm:</p>
32761:
32762: <ol><li><p>If the element has a <code title="attr-frames-bordercolor">bordercolor</code> attribute, and
32763: applying the <a href="common-microsyntaxes.html#rules-for-parsing-a-legacy-color-value">rules for parsing a legacy color value</a>
32764: to that attribute's value does not result in an error, then
32765: return the color so obtained.</p></li>
32766:
32767: <li><p>Otherwise, if the element has a parent element that is a
32768: <code><a href="#frameset">frameset</a></code> element, then the <a href="#frame-border-color">frame border
32769: color</a> of that element.</p>
32770:
32771: </li><li><p>Otherwise, return gray.</p></li>
32772:
32773: </ol></li>
32774:
32775: </ol><p>The algorithm to <dfn id="convert-a-list-of-dimensions-to-a-list-of-pixel-values">convert a list of dimensions to a list of
32776: pixel values</dfn> consists of the following steps:</p>
32777:
32778: <ol><li>
32779:
32780: <p>Let <var title="">input list</var> be the list of numbers and
32781: units passed to the algorithm.</p>
32782:
32783: <p>Let <var title="">output list</var> be a list of numbers the
32784: same length as <var title="">input list</var>, all zero.</p>
32785:
32786: <p>Entries in <var title="">output list</var> correspond to the
32787: entries in <var title="">input list</var> that have the same
32788: position.</p>
32789:
32790: </li>
32791:
32792: <li><p>Let <var title="">input dimension</var> be the size passed
32793: to the algorithm.</p>
32794:
32795: </li><li>
32796:
32797: <p>Let <var title="">count percentage</var> be the number of
32798: entries in <var title="">input list</var> whose unit is
32799: <i>percentage</i>.</p>
32800:
32801: <p>Let <var title="">total percentage</var> be the sum of all the
32802: numbers in <var title="">input list</var> whose unit is
32803: <i>percentage</i>.</p>
32804:
32805: <p>Let <var title="">count relative</var> be the number of
32806: entries in <var title="">input list</var> whose unit is
32807: <i>relative</i>.</p>
32808:
32809: <p>Let <var title="">total relative</var> be the sum of all the
32810: numbers in <var title="">input list</var> whose unit is
32811: <i>relative</i>.</p>
32812:
32813: <p>Let <var title="">count absolute</var> be the number of
32814: entries in <var title="">input list</var> whose unit is
32815: <i>absolute</i>.</p>
32816:
32817: <p>Let <var title="">total absolute</var> be the sum of all the
32818: numbers in <var title="">input list</var> whose unit is
32819: <i>absolute</i>.</p>
32820:
32821: <p>Let <var title="">remaining space</var> be the value of <var title="">input dimension</var>.</p>
32822:
32823: </li>
32824:
32825: <li>
32826:
32827: <p>If <var title="">total absolute</var> is greater than <var title="">remaining space</var>, then for each entry in <var title="">input list</var> whose unit is <i>absolute</i>, set the
32828: corresponding value in <var title="">output list</var> to the
32829: number of the entry in <var title="">input list</var> multiplied
32830: by <var title="">remaining space</var> and divided by <var title="">total absolute</var>. Then, set <var title="">remaining
32831: space</var> to zero.</p>
32832:
32833: <p>Otherwise, for each entry in <var title="">input list</var>
32834: whose unit is <i>absolute</i>, set the corresponding value in <var title="">output list</var> to the number of the entry in <var title="">input list</var>. Then, decrement <var title="">remaining
32835: space</var> by <var title="">total absolute</var>.</p>
32836:
32837: </li>
32838:
32839: <li>
32840:
32841: <p>If <var title="">total percentage</var> multiplied by the <var title="">input dimension</var> and divided by 100 is greater than
32842: <var title="">remaining space</var>, then for each entry in <var title="">input list</var> whose unit is <i>percentage</i>, set the
32843: corresponding value in <var title="">output list</var> to the
32844: number of the entry in <var title="">input list</var> multiplied
32845: by <var title="">remaining space</var> and divided by <var title="">total percentage</var>. Then, set <var title="">remaining
32846: space</var> to zero.</p>
32847:
32848: <p>Otherwise, for each entry in <var title="">input list</var>
32849: whose unit is <i>percentage</i>, set the corresponding value in
32850: <var title="">output list</var> to the number of the entry in <var title="">input list</var> multiplied by the <var title="">input
32851: dimension</var> and divided by 100. Then, decrement <var title="">remaining space</var> by <var title="">total
32852: percentage</var> multiplied by the <var title="">input
32853: dimension</var> and divided by 100.</p>
32854:
32855: </li>
32856:
32857: <li>
32858:
32859: <p>For each entry in <var title="">input list</var> whose unit is
32860: <i>relative</i>, set the corresponding value in <var title="">output list</var> to the number of the entry in <var title="">input list</var> multiplied by <var title="">remaining
32861: space</var> and divided by <var title="">total relative</var>.</p>
32862:
32863: </li>
32864:
32865: <li><p>Return <var title="">output list</var>.</p></li>
32866:
32867: </ol><p>User agents working with integer values for frame widths (as
32868: opposed to user agents that can lay frames out with subpixel
32869: accuracy) are expected to distribute the remainder first to the last
32870: entry whose unit is <i>relative</i>, then equally (not
32871: proportionally) to each entry whose unit is <i>percentage</i>, then
32872: equally (not proportionally) to each entry whose unit is
32873: <i>absolute</i>, and finally, failing all else, to the last
32874: entry.</p>
32875:
32876:
32877: </div>
32878:
32879:
32880: <div class="impl">
32881:
32882: <h3 id="interactive-media"><span class="secno">10.7 </span>Interactive media</h3>
32883:
32884: <h4 id="links,-forms,-and-navigation"><span class="secno">10.7.1 </span>Links, forms, and navigation</h4>
32885:
32886: <p>User agents are expected to allow the user to control aspects of
32887: <a href="#hyperlink">hyperlink</a> activation and <a href="#form-submission-0">form submission</a>,
32888: such as which <a href="#browsing-context">browsing context</a> is to be used for the
32889: subsequent <a href="#navigate" title="navigate">navigation</a>.</p>
32890:
32891: <p>User agents are expected to allow users to discover the
32892: destination of <a href="#hyperlink" title="hyperlink">hyperlinks</a> and of
32893: <a href="the-form-element.html#the-form-element" title="form">forms</a> before triggering their <a href="#navigate" title="navigate">navigation</a>.</p>
32894:
32895: <!--PING-->
32896:
32897: <p>User agents are expected to allow users to
32898: <a href="#navigate">navigate</a><!--DONAV cite=""--> <a href="#browsing-context" title="browsing
32899: context">browsing contexts</a> to the resources <a href="urls.html#resolve-a-url" title="resolve a url">indicated</a> by the <code title="">cite</code> attributes on <code><a href="the-q-element.html#the-q-element">q</a></code>,
32900: <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>,
32901: <code><a href="the-ins-element.html#the-ins-element">ins</a></code>, and <code><a href="the-del-element.html#the-del-element">del</a></code> elements.</p>
32902:
32903: <p>User agents are expected to surface <a href="#hyperlink" title="hyperlink">hyperlinks</a> created by <code><a href="the-link-element.html#the-link-element">link</a></code>
32904: elements in their user interface.</p>
32905:
32906: <p class="note">While <code><a href="the-link-element.html#the-link-element">link</a></code> elements that create <a href="#hyperlink" title="hyperlink">hyperlinks</a> will match the ':link' or
32907: ':visited' pseudo-classes, will react to clicks if visible, and so
32908: forth, this does not extend to any browser interface constructs that
32909: expose those same links. Activating a link through the browser's
32910: interface, rather than in the page itself, does not trigger <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> events and the like.</p>
32911:
32912:
32913:
32914:
32915: <h4 id="the-title-attribute-0"><span class="secno">10.7.2 </span>The <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute</h4>
32916:
32917: <p>User agents are expected to expose the <a href="global-attributes.html#advisory-information">advisory
32918: information</a> of elements upon user request, and to make the
32919: user aware of the presence of such information.</p>
32920:
32921: <p>On interactive graphical systems where the user can use a
32922: pointing device, this could take the form of a tooltip. When the
32923: user is unable to use a pointing device, then the user agent is
32924: expected to make the content available in some other fashion, e.g.
32925: by making the element focusable and always displaying the
32926: <a href="global-attributes.html#advisory-information">advisory information</a> of the currently focused element,
32927: or by showing the <a href="global-attributes.html#advisory-information">advisory information</a> of the elements
32928: under the user's finger on a touch device as the user pans around
32929: the screen.</p>
32930:
32931: <p>"LF" (U+000A) characters are expected to cause line
32932: breaks in the tooltip; "tab" (U+0009) characters
32933: are expected to render as a non-zero horizontal shift that lines up
32934: the next glyph with the next tab stop, with tab stops occurring at
32935: points that are multiples of 8 times the width of a U+0020 SPACE
32936: character.</p>
32937:
32938: <div class="example">
32939:
32940: <p>For example, a visual user agent could make elements with a
32941: <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute focusable, and
32942: could make any focused element with a <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute show its tooltip under
32943: the element while the element has focus. This would allow a user to
32944: tab around the document to find all the advisory text.</p>
32945:
32946: </div>
32947:
32948: <div class="example">
32949:
32950: <p>As another example, a screen reader could provide an audio cue
32951: when reading an element with a tooltip, with an associated key to
32952: read the last tooltip for which a cue was played.</p>
32953:
32954: </div>
32955:
32956:
32957: <h4 id="editing-hosts"><span class="secno">10.7.3 </span>Editing hosts</h4>
32958:
32959: <p>The current text editing caret (i.e. the <a href="#active-range">active
32960: range</a>, if it is empty and in an <a href="#editing-host">editing host</a>),
32961: if any, is expected to act like an inline replaced element with the
32962: vertical dimensions of the caret and with zero width for the
32963: purposes of the CSS rendering model.</p>
32964:
32965: <p class="note">This means that even an empty block can have the
32966: caret inside it, and that when the caret is in such an element, it
32967: prevents margins from collapsing through the element.</p>
32968:
32969:
32970:
32971: <h4 id="text-rendered-in-native-user-interfaces"><span class="secno">10.7.4 </span>Text rendered in native user interfaces</h4>
32972:
32973: <p>User agents are expected to honor the Unicode semantics of text
32974: that is exposed in user interfaces, for example supporting the
32975: bidirectional algorithm in text shown in dialogs, title bars, pop-up
32976: menus, and tooltips. Text from elements (either attribute values or
32977: the contents of elements) is expected to be rendered in a manner
32978: that honors <a href="global-attributes.html#the-directionality">the directionality</a> of the element from
32979: which the text was obtained.</p>
32980:
32981: <div class="example">
32982:
32983: <p>Consider the following markup, which has Hebrew text asking for
32984: a programming language, the languages being text for which a
32985: left-to-right direction is important given the punctuation in some
32986: of their names:</p>
32987:
32988: <pre><p dir="rtl" lang="he">
32989: <label>
32990: <span dir="rtl" lang="he" title="">בחר שפת תכנות:</span>
32991: <select>
32992: <option dir="ltr">C++</option>
32993: <option dir="ltr">C#</option>
32994: <option dir="ltr">FreePascal</option>
32995: <option dir="ltr">F#</option>
32996: </select>
32997: </label>
32998: </p></pre>
32999:
33000: <p>If the <code><a href="the-select-element.html#the-select-element">select</a></code> element was rendered as a drop down
33001: box, a correct rendering would ensure that the punctuation was the
33002: same both in the drop down, and in the box showing the current
33003: selection.</p>
33004:
33005: <p><img alt="" height="105" src="images/bidiselect.png" width="206"></p> <!-- no need for alt text, the previous paragraph
33006: describes it completely -->
33007:
33008: </div>
33009:
33010: <p>A string provided by a script (e.g. the argument to <code title="dom-alert"><a href="#dom-alert">window.alert()</a></code>) is expected to be treated
33011: as an independent set of one or more bidirectional algorithm
33012: paragraphs when displayed, as defined by the bidirectional
33013: algorithm, including, for instance, supporting the
33014: paragraph-breaking behaviour of "LF" (U+000A) characters.
33015: For the purposes of determining the paragraph level of such text in
33016: the bidirectional algorithm, this specification does <em>not</em>
33017: provide a higher-level override of rules P2 and P3. <a href="#refsBIDI">[BIDI]</a></p>
33018:
33019: <p>When necessary, authors can enforce a particular direction for a
33020: given paragraph by starting it with the Unicode U+200E LEFT-TO-RIGHT
33021: MARK or U+200F RIGHT-TO-LEFT MARK characters.</p>
33022:
33023: <div class="example">
33024:
33025: <p>Thus, the following script:</p>
33026:
33027: <pre>alert('\u05DC\u05DE\u05D3 HTML \u05D4\u05D9\u05D5\u05DD!')</pre>
33028:
33029: <p>...would always result in a message reading
33030: "<bdo dir="rtl" lang="" title="">למד LMTH היום!</bdo>"
33031: (not "<bdo dir="ltr" lang="" title="">דמל HTML םויה!</bdo>"),
33032: regardless of the language of the user agent interface or the
33033: direction of the page or any of its elements.</p>
33034:
33035: </div>
33036:
33037: <div class="example">
33038:
33039: <p>For a more complex example, consider the following script:</p>
33040:
33041: <pre class="bad">/* Warning: this script does not handle right-to-left scripts correctly */
33042: var s;
33043: if (s = prompt('What is your name?')) {
33044: alert(s + '! Ok, Fred, ' + s + ', and Wilma will get the car.');
33045: }</pre>
33046:
33047: <p>When the user enters "<kbd>Kitty</kbd>", the user agent would
33048: alert "<samp>Kitty! Ok, Fred, Kitty, and Wilma will get the
33049: car.</samp>". However, if the user enters "<kbd dir="rtl" lang="ar">لا أفهم</kbd>",
33050: then the bidirectional algorithm will determine that the direction
33051: of the paragraph is right-to-left, and so the output will be the
33052: following unintended mess: "<samp lang=""><bdo dir="rtl">لا أفهم! derF ,kO, لا أفهم, rac eht teg lliw amliW dna.</bdo></samp>"</p>
33053:
33054: <p>To force an alert that starts with user-provided text (or other
33055: text of unknown directionality) to render left-to-right, the string
33056: can be prefixed with a U+200E LEFT-TO-RIGHT MARK character:</p>
33057:
33058: <pre>var s;
33059: if (s = prompt('What is your name?')) {
33060: alert('<strong>\u200E</strong>' + s + '! Ok, Fred, ' + s + ', and Wilma will get the car.');
33061: }</pre>
33062:
33063: </div>
33064:
33065:
33066:
33067: <h3 id="print-media"><span class="secno">10.8 </span>Print media</h3>
33068:
33069: <p>User agents are expected to allow the user to request the
33070: opportunity to <dfn id="obtain-a-physical-form">obtain a physical form</dfn> (or a
33071: representation of a physical form) of a <code><a href="dom.html#document">Document</a></code>. For
33072: example, selecting the option to print a page or convert it to PDF
33073: format. <a href="#refsPDF">[PDF]</a></p>
33074:
33075: <p>When the user actually <a href="#obtain-a-physical-form" title="obtain a physical
33076: form">obtains a physical form</a> (or a representation of a
33077: physical form) of a <code><a href="dom.html#document">Document</a></code>, the user agent is
33078: expected to create a new rendering of the <code><a href="dom.html#document">Document</a></code> for
33079: the print media.</p>
33080:
33081:
33082:
33083: </div>
33084:
33085:
33086:
33087: <!--TOPIC:HTML-->
33088:
33089: <h2 id="obsolete"><span class="secno">11 </span>Obsolete features</h2>
33090:
33091: <h3 id="obsolete-but-conforming-features"><span class="secno">11.1 </span>Obsolete but conforming features</h3>
33092:
33093: <p>Features listed in this section will trigger warnings in
33094: conformance checkers.</p>
33095:
33096: <p>Authors should not specify a <code title="attr-img-border"><a href="#attr-img-border">border</a></code> attribute on an
33097: <code><a href="the-img-element.html#the-img-element">img</a></code> element. If the attribute is present, its value
33098: must be the string "<code title="">0</code>". CSS should be used
33099: instead.</p>
33100:
33101: <p>Authors should not specify a <code title="attr-script-language"><a href="#attr-script-language">language</a></code> attribute on a
33102: <code><a href="the-script-element.html#the-script-element">script</a></code> element. If the attribute is present, its value
33103: must be an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the string
33104: "<code title="">JavaScript</code>" and either the <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">type</a></code> attribute must be omitted or
33105: its value must be an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for
33106: the string "<code title="">text/javascript</code>". The attribute
33107: should be entirely omitted instead (with the value "<code title="">JavaScript</code>", it has no effect), or replaced with use
33108: of the <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">type</a></code> attribute.</p>
33109:
33110: <p>Authors should not specify the <code title="attr-a-name"><a href="#attr-a-name">name</a></code> attribute on <code><a href="the-a-element.html#the-a-element">a</a></code>
33111: elements. If the attribute is present, its value must not be the
33112: empty string and must neither be equal to the value of any of the
33113: <a href="infrastructure.html#concept-id" title="concept-id">IDs</a> in the element's <a href="infrastructure.html#home-subtree">home
33114: subtree</a> other than the element's own <a href="infrastructure.html#concept-id" title="concept-id">ID</a>, if any, nor be equal to the value of
33115: any of the other <code title="attr-a-name"><a href="#attr-a-name">name</a></code> attributes on
33116: <code><a href="the-a-element.html#the-a-element">a</a></code> elements in the element's <a href="infrastructure.html#home-subtree">home
33117: subtree</a>. If this attribute is present and the element has an
33118: <a href="infrastructure.html#concept-id" title="concept-id">ID</a>, then the attribute's value must
33119: be equal to the element's <a href="infrastructure.html#concept-id" title="concept-id">ID</a>. In
33120: earlier versions of the language, this attribute was intended as a
33121: way to specify possible targets for fragment identifiers in <a href="urls.html#url" title="URL">URLs</a>. The <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code>
33122: attribute should be used instead.</p>
33123:
33124: <!-- remove this once type=number is widely supported -->
33125: <p>Authors should not, but may despite requirements to the contrary
33126: elsewhere in this specification, specify the <code title="attr-input-maxlength"><a href="common-input-element-attributes.html#attr-input-maxlength">maxlength</a></code> and <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">size</a></code> attributes on <code><a href="the-input-element.html#the-input-element">input</a></code>
33127: elements whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attributes
33128: are in the <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a> state.
33129: One valid reason for using these attributes regardless is to help
33130: legacy user agents that do not support <code><a href="the-input-element.html#the-input-element">input</a></code> elements
33131: with <code title="">type="number"</code> to still render the text
33132: field with a useful width.</p>
33133:
33134: <p class="note">In <a href="#syntax">the HTML syntax</a>, specifying a <a href="#syntax-doctype" title="syntax-DOCTYPE">DOCTYPE</a> that is an <a href="#obsolete-permitted-doctype">obsolete
33135: permitted DOCTYPE</a> will also trigger a warning.</p>
33136:
33137:
33138: <div class="impl">
33139:
33140: <h4 id="warnings-for-obsolete-but-conforming-features"><span class="secno">11.1.1 </span>Warnings for obsolete but conforming features</h4>
33141:
33142: <p>To ease the transition from HTML4 Transitional documents to the
33143: language defined in <em>this</em> specification, and to discourage
33144: certain features that are only allowed in very few circumstances,
33145: conformance checkers are required to warn the user when the
33146: following features are used in a document. These are generally old
33147: obsolete features that have no effect, and are allowed only to
33148: distinguish between likely mistakes (regular conformance errors) and
33149: mere vestigial markup or unusual and discouraged practices (these
33150: warnings).</p>
33151:
33152: <p>The following features must be categorized as described
33153: above:</p>
33154:
33155: <ul><!-- downplayed list --><li><p>The presence of an <a href="#obsolete-permitted-doctype">obsolete permitted DOCTYPE</a>
33156: in an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a>.</p></li>
33157:
33158: <li><p>The presence of a <code title="attr-img-border"><a href="#attr-img-border">border</a></code> attribute on an
33159: <code><a href="the-img-element.html#the-img-element">img</a></code> element if its value is the string "<code title="">0</code>".</p></li>
33160:
33161: <li><p>The presence of a <code title="attr-script-language"><a href="#attr-script-language">language</a></code> attribute on a
33162: <code><a href="the-script-element.html#the-script-element">script</a></code> element if its value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII
33163: case-insensitive</a> match for the string "<code title="">JavaScript</code>" and if there is no <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">type</a></code> attribute or there is and its
33164: value is an <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a> match for the
33165: string "<code title="">text/javascript</code>".</p></li>
33166:
33167: <li><p>The presence of a <code title="attr-a-name"><a href="#attr-a-name">name</a></code>
33168: attribute on an <code><a href="the-a-element.html#the-a-element">a</a></code> element, if its value is not the
33169: empty string.</p></li>
33170:
33171: <li><p>The presence of a <code title="attr-input-maxlength"><a href="common-input-element-attributes.html#attr-input-maxlength">maxlength</a></code> attribute on an
33172: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a> state.</p></li>
33173:
33174: <li><p>The presence of a <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">size</a></code> attribute on an
33175: <code><a href="the-input-element.html#the-input-element">input</a></code> element whose <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is in the <a href="states-of-the-type-attribute.html#number-state-(type=number)" title="attr-input-type-number">Number</a> state.</p></li>
33176:
33177: </ul><p>Conformance checkers must distinguish between pages that have no
33178: conformance errors and have none of these obsolete features, and
33179: pages that have no conformance errors but do have some of these
33180: obsolete features.</p>
33181:
33182: <p class="example">For example, a validator could report some pages
33183: as "Valid HTML" and others as "Valid HTML with warnings".</p>
33184:
33185: </div>
33186:
33187:
33188: <h3 id="non-conforming-features"><span class="secno">11.2 </span>Non-conforming features</h3>
33189:
33190: <p>Elements in the following list are entirely obsolete, and must
33191: not be used by authors:</p>
33192:
33193: <dl><!-- alphabetical by first element in the group, except CSS goes last --><dt><code><a href="#the-applet-element">applet</a></code></dt>
33194: <dd><p>Use <code><a href="the-embed-element.html#the-embed-element">embed</a></code> or <code><a href="the-object-element.html#the-object-element">object</a></code> instead.</p></dd>
33195:
33196: <dt><dfn id="acronym"><code>acronym</code></dfn></dt>
33197: <dd><p>Use <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code> instead.</p></dd>
33198:
33199: <dt><dfn id="bgsound"><code>bgsound</code></dfn></dt>
33200: <dd><p>Use <code><a href="the-audio-element.html#the-audio-element">audio</a></code> instead.</p></dd>
33201:
33202: <dt><dfn id="dir"><code>dir</code></dfn></dt>
33203: <dd><p>Use <code><a href="the-ul-element.html#the-ul-element">ul</a></code> instead.</p></dd>
33204:
33205: <dt><code><a href="#frame">frame</a></code></dt>
33206: <dt><code><a href="#frameset">frameset</a></code></dt>
33207: <dt><dfn id="noframes"><code>noframes</code></dfn></dt>
33208: <dd><p>Either use <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> and CSS instead, or use server-side includes to generate complete pages with the various invariant parts merged in.</p></dd>
33209:
33210: <dt><dfn id="isindex-0"><code>isindex</code></dfn></dt>
33211: <dd><p>Use an explicit <code><a href="the-form-element.html#the-form-element">form</a></code> and <a href="states-of-the-type-attribute.html#text-(type=text)-state-and-search-state-(type=search)" title="attr-input-type-text">text field</a> combination instead.</p></dd>
33212:
33213: <dt><dfn id="listing"><code>listing</code></dfn></dt>
33214: <dd><p>Use <code><a href="the-pre-element.html#the-pre-element">pre</a></code> and <code><a href="the-code-element.html#the-code-element">code</a></code> instead.</p></dd>
33215:
33216: <dt><dfn id="nextid"><code>nextid</code></dfn></dt>
33217: <dd><p>Use GUIDs instead.</p></dd>
33218:
33219: <dt><dfn id="noembed"><code>noembed</code></dfn></dt>
33220: <dd><p>Use <code><a href="the-object-element.html#the-object-element">object</a></code> instead of <code><a href="the-embed-element.html#the-embed-element">embed</a></code> when fallback is necessary.</p></dd>
33221:
33222: <dt><dfn id="plaintext"><code>plaintext</code></dfn></dt>
33223: <dd><p>Use the "<code>text/plain</code>" <a href="infrastructure.html#mime-type">MIME type</a> instead.</p></dd>
33224:
33225: <dt><dfn id="rb"><code>rb</code></dfn></dt>
33226: <dd><p>Providing the ruby base directly inside the <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code> element is sufficient; the <code><a href="#rb">rb</a></code> element is unnecessary. Omit it altogether.</p></dd>
33227:
33228: <dt><dfn id="strike"><code>strike</code></dfn></dt>
33229: <dd><p>Use <code><a href="the-del-element.html#the-del-element">del</a></code> instead if the element is marking an edit, otherwise use <code><a href="the-s-element.html#the-s-element">s</a></code> instead.</p></dd>
33230:
33231: <dt><dfn id="xmp"><code>xmp</code></dfn></dt>
33232: <dd><p>Use <code><a href="the-pre-element.html#the-pre-element">pre</a></code> and <code><a href="the-code-element.html#the-code-element">code</a></code> instead, and escape "<code title=""><</code>" and "<code title="">&</code>" characters as "<code title="">&lt;</code>" and "<code title="">&amp;</code>" respectively.</p></dd>
33233:
33234: <dt><dfn id="basefont"><code>basefont</code></dfn></dt>
33235: <dt><dfn id="big"><code>big</code></dfn></dt>
33236: <dt><dfn id="blink"><code>blink</code></dfn></dt>
33237: <dt><dfn id="center"><code>center</code></dfn></dt>
33238: <dt><dfn id="font"><code>font</code></dfn></dt>
33239: <dt><code><a href="#the-marquee-element-0">marquee</a></code></dt>
33240: <dt><dfn id="multicol"><code>multicol</code></dfn></dt>
33241: <dt><dfn id="nobr"><code>nobr</code></dfn></dt>
33242: <dt><dfn id="spacer"><code>spacer</code></dfn></dt>
33243: <dt><dfn id="tt"><code>tt</code></dfn></dt>
33244:
33245: <dd>
33246:
33247: <p>Use appropriate elements and/or CSS instead.</p>
33248:
33249: <p>Where the <code><a href="#tt">tt</a></code> element would have been used for
33250: marking up keyboard input, consider the <code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code> element;
33251: for variables, consider the <code><a href="the-var-element.html#the-var-element">var</a></code> element; for computer
33252: code, consider the <code><a href="the-code-element.html#the-code-element">code</a></code> element; and for computer
33253: output, consider the <code><a href="the-samp-element.html#the-samp-element">samp</a></code> element.</p>
33254:
33255: <p>Similarly, if the <code><a href="#big">big</a></code> element is being used to
33256: denote a heading, consider using the <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code> element; if
33257: it is being used for marking up important passages, consider the
33258: <code><a href="the-strong-element.html#the-strong-element">strong</a></code> element; and if it is being used for
33259: highlighting text for reference purposes, consider the
33260: <code><a href="the-mark-element.html#the-mark-element">mark</a></code> element.</p>
33261:
33262: <p>See also the <a href="usage-summary.html#usage-summary">text-level semantics
33263: usage summary</a> for more suggestions with examples.</p>
33264:
33265: </dd>
33266:
33267: </dl><hr><p>The following attributes are obsolete (though the elements are
33268: still part of the language), and must not be used by authors:</p>
33269:
33270: <dl><!-- alphabetical by element then attribute of first item in group, except CSS goes last --><dt><dfn id="attr-a-charset" title="attr-a-charset"><code>charset</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33271: <dt><dfn id="attr-link-charset" title="attr-link-charset"><code>charset</code></dfn> on <code><a href="the-link-element.html#the-link-element">link</a></code> elements</dt>
33272: <dd><p>Use an HTTP Content-Type header on the linked resource instead.</p></dd>
33273:
33274: <dt><dfn id="attr-a-coords" title="attr-a-coords"><code>coords</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33275: <dt><dfn id="attr-a-shape" title="attr-a-shape"><code>shape</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33276: <dd><p>Use <code><a href="the-area-element.html#the-area-element">area</a></code> instead of <code><a href="the-a-element.html#the-a-element">a</a></code> for image maps.</p></dd>
33277:
33278: <dt><dfn id="attr-a-methods" title="attr-a-methods"><code>methods</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33279: <dt><dfn id="attr-link-methods" title="attr-link-methods"><code>methods</code></dfn> on <code><a href="the-link-element.html#the-link-element">link</a></code> elements</dt>
33280: <dd><p>Use the HTTP OPTIONS feature instead.</p></dd>
33281:
33282: <dt><dfn id="attr-a-name" title="attr-a-name"><code>name</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements (except as noted in the previous section)</dt>
33283: <dt><dfn id="attr-embed-name" title="attr-embed-name"><code>name</code></dfn> on <code><a href="the-embed-element.html#the-embed-element">embed</a></code> elements</dt>
33284: <dt><dfn id="attr-img-name" title="attr-img-name"><code>name</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33285: <dt><dfn id="attr-option-name" title="attr-option-name"><code>name</code></dfn> on <code><a href="the-option-element.html#the-option-element">option</a></code> elements</dt>
33286: <dd><p>Use the <code title="attr-id"><a href="global-attributes.html#the-id-attribute">id</a></code> attribute instead.</p></dd>
33287:
33288: <dt><dfn id="attr-a-rev" title="attr-a-rev"><code>rev</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33289: <dt><dfn id="attr-link-rev" title="attr-link-rev"><code>rev</code></dfn> on <code><a href="the-link-element.html#the-link-element">link</a></code> elements</dt>
33290: <dd><p>Use the <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code>
33291: attribute instead, with an opposite term. (For example, instead of
33292: <code title="">rev="made"</code>, use <code title="">rel="author"</code>.)</p></dd>
33293:
33294: <dt><dfn id="attr-a-urn" title="attr-a-urn"><code>urn</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code> elements</dt>
33295: <dt><dfn id="attr-link-urn" title="attr-link-urn"><code>urn</code></dfn> on <code><a href="the-link-element.html#the-link-element">link</a></code> elements</dt>
33296: <dd><p>Specify the preferred persistent identifier using the <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code> attribute instead.</p></dd>
33297:
33298: <dt><dfn id="attr-form-accept" title="attr-form-accept"><code>accept</code></dfn> on <code><a href="the-form-element.html#the-form-element">form</a></code> elements</dt>
33299: <dd><p>Use the <code title="attr-input-accept"><a href="states-of-the-type-attribute.html#attr-input-accept">accept</a></code> attribute directly on the <code><a href="the-input-element.html#the-input-element">input</a></code> elements instead.</p></dd>
33300:
33301: <dt><dfn id="attr-area-nohref" title="attr-area-nohref"><code>nohref</code></dfn> on <code><a href="the-area-element.html#the-area-element">area</a></code> elements</dt>
33302: <dd><p>Omitting the <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>
33303: attribute is sufficient; the <code title="attr-area-nohref"><a href="#attr-area-nohref">nohref</a></code> attribute is
33304: unnecessary. Omit it altogether.</p></dd>
33305:
33306: <dt><dfn id="attr-head-profile" title="attr-head-profile"><code>profile</code></dfn> on <code><a href="the-head-element.html#the-head-element">head</a></code> elements</dt>
33307: <dd><p>When used for declaring which <code><a href="the-meta-element.html#the-meta-element">meta</a></code> terms are
33308: used in the document, unnecessary; omit it altogether, and <a href="the-meta-element.html#concept-meta-extensions" title="concept-meta-extensions">register the names</a>.</p></dd>
33309: <dd><p>When used for triggering specific user agent behaviors: use
33310: a <code><a href="the-link-element.html#the-link-element">link</a></code> element instead.</p></dd>
33311:
33312: <dt><dfn id="attr-html-version" title="attr-html-version"><code>version</code></dfn> on <code><a href="the-html-element.html#the-html-element">html</a></code> elements</dt>
33313: <dd><p>Unnecessary. Omit it altogether.</p></dd>
33314:
33315: <dt><dfn id="attr-input-usemap" title="attr-input-usemap"><code>usemap</code></dfn> on <code><a href="the-input-element.html#the-input-element">input</a></code> elements</dt>
33316: <dd><p>Use <code><a href="the-img-element.html#the-img-element">img</a></code> instead of <code><a href="the-input-element.html#the-input-element">input</a></code> for image maps.</p></dd>
33317:
33318: <dt><dfn id="attr-iframe-longdesc" title="attr-iframe-longdesc"><code>longdesc</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33319: <dt><dfn id="attr-img-longdesc" title="attr-img-longdesc"><code>longdesc</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33320: <dd><p>Use a regular <code><a href="the-a-element.html#the-a-element">a</a></code> element to link to the
33321: description, or (in the case of images) use an <a href="image-maps.html#image-map">image
33322: map</a> to provide a link from the image to the image's
33323: description.</p></dd>
33324:
33325: <dt><dfn id="attr-img-lowsrc" title="attr-img-lowsrc"><code>lowsrc</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33326: <dd><p>Use a progressive JPEG image (given in the <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code> attribute),
33327: instead of using two separate images.</p></dd>
33328:
33329: <dt><dfn id="attr-link-target" title="attr-link-target"><code>target</code></dfn> on <code><a href="the-link-element.html#the-link-element">link</a></code> elements</dt>
33330: <dd><p>Unnecessary. Omit it altogether.</p></dd>
33331:
33332: <dt><dfn id="attr-meta-scheme" title="attr-meta-scheme"><code>scheme</code></dfn> on <code><a href="the-meta-element.html#the-meta-element">meta</a></code> elements</dt>
33333: <dd><p>Use only one scheme per field, or make the scheme declaration part of the value.</p></dd>
33334:
33335: <dt><dfn id="attr-object-archive" title="attr-object-archive"><code>archive</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33336: <dt><dfn id="attr-object-classid" title="attr-object-classid"><code>classid</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33337: <dt><dfn id="attr-object-code" title="attr-object-code"><code>code</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33338: <dt><dfn id="attr-object-codebase" title="attr-object-codebase"><code>codebase</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33339: <dt><dfn id="attr-object-codetype" title="attr-object-codetype"><code>codetype</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33340: <dd><p>Use the <code title="attr-object-data"><a href="the-object-element.html#attr-object-data">data</a></code> and <code title="attr-object-type"><a href="the-object-element.html#attr-object-type">type</a></code> attributes to invoke <a href="infrastructure.html#plugin" title="plugin">plugins</a>. To set parameters with these names
33341: in particular, the <code><a href="the-param-element.html#the-param-element">param</a></code> element can be used.</p></dd>
33342:
33343: <dt><dfn id="attr-object-declare" title="attr-object-declare"><code>declare</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33344: <dd><p>Repeat the <code><a href="the-object-element.html#the-object-element">object</a></code> element completely each time the resource is to be reused.</p></dd>
33345:
33346: <dt><dfn id="attr-object-standby" title="attr-object-standby"><code>standby</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33347: <dd><p>Optimize the linked resource so that it loads quickly or, at least, incrementally.</p></dd>
33348:
33349: <dt><dfn id="attr-param-type" title="attr-param-type"><code>type</code></dfn> on <code><a href="the-param-element.html#the-param-element">param</a></code> elements</dt>
33350: <dt><dfn id="attr-param-valuetype" title="attr-param-valuetype"><code>valuetype</code></dfn> on <code><a href="the-param-element.html#the-param-element">param</a></code> elements</dt>
33351: <dd><p>Use the <code title="attr-param-name"><a href="the-param-element.html#attr-param-name">name</a></code> and <code title="attr-param-value"><a href="the-param-element.html#attr-param-value">value</a></code> attributes without declaring
33352: value types.</p></dd>
33353:
33354: <dt><dfn id="attr-script-language" title="attr-script-language"><code>language</code></dfn> on <code><a href="the-script-element.html#the-script-element">script</a></code> elements (except as noted in the previous section)</dt>
33355: <dd><p>Use the <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">type</a></code> attribute
33356: instead.</p></dd>
33357:
33358: <dt><dfn id="attr-script-event" title="attr-script-event"><code>event</code></dfn> on <code><a href="the-script-element.html#the-script-element">script</a></code> elements</dt>
33359: <dt><dfn id="attr-script-for" title="attr-script-for"><code>for</code></dfn> on <code><a href="the-script-element.html#the-script-element">script</a></code> elements</dt>
33360: <dd><p>Use DOM Events mechanisms to register event listeners. <a href="#refsDOMCORE">[DOMCORE]</a></p></dd>
33361:
33362: <dt><dfn id="attr-table-datapagesize" title="attr-table-datapagesize"><code>datapagesize</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33363: <dd><p>Unnecessary. Omit it altogether.</p></dd>
33364:
33365: <dt><dfn id="attr-table-summary" title="attr-table-summary"><code>summary</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt><!-- 2.65% pages -->
33366: <dd><p>Use one of the <a href="the-table-element.html#table-descriptions-techniques">techniques for describing
33367: tables</a> given in the <code><a href="the-table-element.html#the-table-element">table</a></code> section
33368: instead.</p></dd>
33369:
33370: <dt><dfn id="attr-tdth-abbr" title="attr-tdth-abbr"><code>abbr</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33371: <dd><p>Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The <code title="attr-title"><a href="global-attributes.html#attr-title">title</a></code> attribute can also be useful in including more detailed text, so that the cell's contents can be made terse.</p>
33372:
33373: </dd><dt><dfn id="attr-tdth-axis" title="attr-tdth-axis"><code>axis</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33374: <dd><p>Use the <code title="attr-th-scope"><a href="the-th-element.html#attr-th-scope">scope</a></code> attribute on the relevant <code><a href="the-th-element.html#the-th-element">th</a></code>.</p>
33375:
33376: </dd><dt><dfn id="attr-td-scope" title="attr-td-scope"><code>scope</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> elements</dt>
33377: <dd><p>Use <code><a href="the-th-element.html#the-th-element">th</a></code> elements for heading cells.</p>
33378:
33379: </dd><dt><dfn id="attr-datasrc" title="attr-datasrc"><code>datasrc</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code>, <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-button-element.html#the-button-element">button</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>, <code><a href="#frame">frame</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>, <code><a href="the-label-element.html#the-label-element">label</a></code>, <code><a href="the-legend-element.html#the-legend-element">legend</a></code>, <code><a href="#the-marquee-element-0">marquee</a></code>, <code><a href="the-object-element.html#the-object-element">object</a></code>, <code><a href="the-option-element.html#the-option-element">option</a></code>, <code><a href="the-select-element.html#the-select-element">select</a></code>, <code><a href="the-span-element.html#the-span-element">span</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>, and <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements</dt>
33380: <dt><dfn id="attr-datafld" title="attr-datafld"><code>datafld</code></dfn> on <code><a href="the-a-element.html#the-a-element">a</a></code>, <code><a href="#the-applet-element">applet</a></code>, <code><a href="the-button-element.html#the-button-element">button</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>, <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>, <code><a href="#frame">frame</a></code>, <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>, <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>, <code><a href="the-label-element.html#the-label-element">label</a></code>, <code><a href="the-legend-element.html#the-legend-element">legend</a></code>, <code><a href="#the-marquee-element-0">marquee</a></code>, <code><a href="the-object-element.html#the-object-element">object</a></code>, <code><a href="the-param-element.html#the-param-element">param</a></code>, <code><a href="the-select-element.html#the-select-element">select</a></code>, <code><a href="the-span-element.html#the-span-element">span</a></code>, and <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code> elements</dt>
33381: <dt><dfn id="attr-dataformatas" title="attr-dataformatas"><code>dataformatas</code></dfn> on <code><a href="the-button-element.html#the-button-element">button</a></code>, <code><a href="the-div-element.html#the-div-element">div</a></code>, <code><a href="the-input-element.html#the-input-element">input</a></code>, <code><a href="the-label-element.html#the-label-element">label</a></code>, <code><a href="the-legend-element.html#the-legend-element">legend</a></code>, <code><a href="#the-marquee-element-0">marquee</a></code>, <code><a href="the-object-element.html#the-object-element">object</a></code>, <code><a href="the-option-element.html#the-option-element">option</a></code>, <code><a href="the-select-element.html#the-select-element">select</a></code>, <code><a href="the-span-element.html#the-span-element">span</a></code>, and <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33382: <dd><p>Use script and a mechanism such as <code>XMLHttpRequest</code> to populate the page dynamically. <a href="#refsXHR">[XHR]</a></p></dd>
33383:
33384: <dt><dfn id="attr-body-alink" title="attr-body-alink"><code>alink</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33385: <dt><dfn id="attr-body-bgcolor" title="attr-body-bgcolor"><code>bgcolor</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33386: <dt><dfn id="attr-body-link" title="attr-body-link"><code>link</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33387: <dt><dfn id="attr-body-marginbottom" title="attr-body-marginbottom"><code>marginbottom</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33388: <dt><dfn id="attr-body-marginheight" title="attr-body-marginheight"><code>marginheight</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33389: <dt><dfn id="attr-body-marginleft" title="attr-body-marginleft"><code>marginleft</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33390: <dt><dfn id="attr-body-marginright" title="attr-body-marginright"><code>marginright</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33391: <dt><dfn id="attr-body-margintop" title="attr-body-margintop"><code>margintop</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33392: <dt><dfn id="attr-body-marginwidth" title="attr-body-marginwidth"><code>marginwidth</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33393: <dt><dfn id="attr-body-text" title="attr-body-text"><code>text</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33394: <dt><dfn id="attr-body-vlink" title="attr-body-vlink"><code>vlink</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code> elements</dt>
33395: <dt><dfn id="attr-br-clear" title="attr-br-clear"><code>clear</code></dfn> on <code><a href="the-br-element.html#the-br-element">br</a></code> elements</dt>
33396: <dt><dfn id="attr-caption-align" title="attr-caption-align"><code>align</code></dfn> on <code><a href="the-caption-element.html#the-caption-element">caption</a></code> elements</dt>
33397: <dt><dfn id="attr-col-align" title="attr-col-align"><code>align</code></dfn> on <code><a href="the-col-element.html#the-col-element">col</a></code> elements</dt>
33398: <dt><dfn id="attr-col-char" title="attr-col-char"><code>char</code></dfn> on <code><a href="the-col-element.html#the-col-element">col</a></code> elements</dt>
33399: <dt><dfn id="attr-col-charoff" title="attr-col-charoff"><code>charoff</code></dfn> on <code><a href="the-col-element.html#the-col-element">col</a></code> elements</dt>
33400: <dt><dfn id="attr-col-valign" title="attr-col-valign"><code>valign</code></dfn> on <code><a href="the-col-element.html#the-col-element">col</a></code> elements</dt>
33401: <dt><dfn id="attr-col-width" title="attr-col-width"><code>width</code></dfn> on <code><a href="the-col-element.html#the-col-element">col</a></code> elements</dt>
33402: <dt><dfn id="attr-div-align" title="attr-div-align"><code>align</code></dfn> on <code><a href="the-div-element.html#the-div-element">div</a></code> elements</dt>
33403: <dt><dfn id="attr-dl-compact" title="attr-dl-compact"><code>compact</code></dfn> on <code><a href="the-dl-element.html#the-dl-element">dl</a></code> elements</dt>
33404: <dt><dfn id="attr-embed-align" title="attr-embed-align"><code>align</code></dfn> on <code><a href="the-embed-element.html#the-embed-element">embed</a></code> elements</dt>
33405: <dt><dfn id="attr-embed-hspace" title="attr-embed-hspace"><code>hspace</code></dfn> on <code><a href="the-embed-element.html#the-embed-element">embed</a></code> elements</dt>
33406: <dt><dfn id="attr-embed-vspace" title="attr-embed-vspace"><code>vspace</code></dfn> on <code><a href="the-embed-element.html#the-embed-element">embed</a></code> elements</dt>
33407: <dt><dfn id="attr-hr-align" title="attr-hr-align"><code>align</code></dfn> on <code><a href="the-hr-element.html#the-hr-element">hr</a></code> elements</dt>
33408: <dt><dfn id="attr-hr-color" title="attr-hr-color"><code>color</code></dfn> on <code><a href="the-hr-element.html#the-hr-element">hr</a></code> elements</dt>
33409: <dt><dfn id="attr-hr-noshade" title="attr-hr-noshade"><code>noshade</code></dfn> on <code><a href="the-hr-element.html#the-hr-element">hr</a></code> elements</dt>
33410: <dt><dfn id="attr-hr-size" title="attr-hr-size"><code>size</code></dfn> on <code><a href="the-hr-element.html#the-hr-element">hr</a></code> elements</dt>
33411: <dt><dfn id="attr-hr-width" title="attr-hr-width"><code>width</code></dfn> on <code><a href="the-hr-element.html#the-hr-element">hr</a></code> elements</dt>
33412: <dt><dfn id="attr-hx-align" title="attr-hx-align"><code>align</code></dfn> on <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>—<code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code> elements</dt>
33413: <dt><dfn id="attr-iframe-align" title="attr-iframe-align"><code>align</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33414: <dt><dfn id="attr-iframe-allowtransparency" title="attr-iframe-allowtransparency"><code>allowtransparency</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33415: <dt><dfn id="attr-iframe-frameborder" title="attr-iframe-frameborder"><code>frameborder</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33416: <dt><dfn id="attr-iframe-hspace" title="attr-iframe-hspace"><code>hspace</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33417: <dt><dfn id="attr-iframe-marginheight" title="attr-iframe-marginheight"><code>marginheight</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33418: <dt><dfn id="attr-iframe-marginwidth" title="attr-iframe-marginwidth"><code>marginwidth</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33419: <dt><dfn id="attr-iframe-scrolling" title="attr-iframe-scrolling"><code>scrolling</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33420: <dt><dfn id="attr-iframe-vspace" title="attr-iframe-vspace"><code>vspace</code></dfn> on <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> elements</dt>
33421: <dt><dfn id="attr-input-align" title="attr-input-align"><code>align</code></dfn> on <code><a href="the-input-element.html#the-input-element">input</a></code> elements</dt>
33422: <dt><dfn id="attr-input-hspace" title="attr-input-hspace"><code>hspace</code></dfn> on <code><a href="the-input-element.html#the-input-element">input</a></code> elements</dt>
33423: <dt><dfn id="attr-input-vspace" title="attr-input-vspace"><code>vspace</code></dfn> on <code><a href="the-input-element.html#the-input-element">input</a></code> elements</dt>
33424: <dt><dfn id="attr-img-align" title="attr-img-align"><code>align</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33425: <dt><dfn id="attr-img-border" title="attr-img-border"><code>border</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements (except as noted in the previous section)</dt>
33426: <dt><dfn id="attr-img-hspace" title="attr-img-hspace"><code>hspace</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33427: <dt><dfn id="attr-img-vspace" title="attr-img-vspace"><code>vspace</code></dfn> on <code><a href="the-img-element.html#the-img-element">img</a></code> elements</dt>
33428: <dt><dfn id="attr-legend-align" title="attr-legend-align"><code>align</code></dfn> on <code><a href="the-legend-element.html#the-legend-element">legend</a></code> elements</dt>
33429: <dt><dfn id="attr-li-type" title="attr-li-type"><code>type</code></dfn> on <code><a href="the-li-element.html#the-li-element">li</a></code> elements</dt>
33430: <dt><dfn id="attr-menu-compact" title="attr-menu-compact"><code>compact</code></dfn> on <code><a href="#the-menu-element">menu</a></code> elements</dt>
33431: <dt><dfn id="attr-object-align" title="attr-object-align"><code>align</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33432: <dt><dfn id="attr-object-border" title="attr-object-border"><code>border</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33433: <dt><dfn id="attr-object-hspace" title="attr-object-hspace"><code>hspace</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33434: <dt><dfn id="attr-object-vspace" title="attr-object-vspace"><code>vspace</code></dfn> on <code><a href="the-object-element.html#the-object-element">object</a></code> elements</dt>
33435: <dt><dfn id="attr-ol-compact" title="attr-ol-compact"><code>compact</code></dfn> on <code><a href="the-ol-element.html#the-ol-element">ol</a></code> elements</dt>
33436: <dt><dfn id="attr-p-align" title="attr-p-align"><code>align</code></dfn> on <code><a href="the-p-element.html#the-p-element">p</a></code> elements</dt>
33437: <dt><dfn id="attr-pre-width" title="attr-pre-width"><code>width</code></dfn> on <code><a href="the-pre-element.html#the-pre-element">pre</a></code> elements</dt>
33438: <dt><dfn id="attr-table-align" title="attr-table-align"><code>align</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33439: <dt><dfn id="attr-table-bgcolor" title="attr-table-bgcolor"><code>bgcolor</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33440: <dt><dfn id="attr-table-cellpadding" title="attr-table-cellpadding"><code>cellpadding</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33441: <dt><dfn id="attr-table-cellspacing" title="attr-table-cellspacing"><code>cellspacing</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33442: <dt><dfn id="attr-table-frame" title="attr-table-frame"><code>frame</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33443: <dt><dfn id="attr-table-rules" title="attr-table-rules"><code>rules</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33444: <dt><dfn id="attr-table-width" title="attr-table-width"><code>width</code></dfn> on <code><a href="the-table-element.html#the-table-element">table</a></code> elements</dt>
33445: <dt><dfn id="attr-tbody-align" title="attr-tbody-align"><code>align</code></dfn> on <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements</dt>
33446: <dt><dfn id="attr-tbody-char" title="attr-tbody-char"><code>char</code></dfn> on <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements</dt>
33447: <dt><dfn id="attr-tbody-charoff" title="attr-tbody-charoff"><code>charoff</code></dfn> on <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements</dt>
33448: <dt><dfn id="attr-tbody-valign" title="attr-tbody-vAlign"><code>valign</code></dfn> on <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements</dt>
33449: <dt><dfn id="attr-tdth-align" title="attr-tdth-align"><code>align</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33450: <dt><dfn id="attr-tdth-bgcolor" title="attr-tdth-bgcolor"><code>bgcolor</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33451: <dt><dfn id="attr-tdth-char" title="attr-tdth-char"><code>char</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33452: <dt><dfn id="attr-tdth-charoff" title="attr-tdth-charoff"><code>charoff</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33453: <dt><dfn id="attr-tdth-height" title="attr-tdth-height"><code>height</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33454: <dt><dfn id="attr-tdth-nowrap" title="attr-tdth-nowrap"><code>nowrap</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33455: <dt><dfn id="attr-tdth-valign" title="attr-tdth-valign"><code>valign</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33456: <dt><dfn id="attr-tdth-width" title="attr-tdth-width"><code>width</code></dfn> on <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33457: <dt><dfn id="attr-tr-align" title="attr-tr-align"><code>align</code></dfn> on <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements</dt>
33458: <dt><dfn id="attr-tr-bgcolor" title="attr-tr-bgcolor"><code>bgcolor</code></dfn> on <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements</dt>
33459: <dt><dfn id="attr-tr-char" title="attr-tr-char"><code>char</code></dfn> on <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements</dt>
33460: <dt><dfn id="attr-tr-charoff" title="attr-tr-charoff"><code>charoff</code></dfn> on <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements</dt>
33461: <dt><dfn id="attr-tr-valign" title="attr-tr-valign"><code>valign</code></dfn> on <code><a href="the-tr-element.html#the-tr-element">tr</a></code> elements</dt>
33462: <dt><dfn id="attr-ul-compact" title="attr-ul-compact"><code>compact</code></dfn> on <code><a href="the-ul-element.html#the-ul-element">ul</a></code> elements</dt>
33463: <dt><dfn id="attr-ul-type" title="attr-ul-type"><code>type</code></dfn> on <code><a href="the-ul-element.html#the-ul-element">ul</a></code> elements</dt>
33464: <dt><dfn id="attr-background" title="attr-background"><code>background</code></dfn> on <code><a href="the-body-element.html#the-body-element">body</a></code>, <code><a href="the-table-element.html#the-table-element">table</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>, <code><a href="the-tr-element.html#the-tr-element">tr</a></code>, <code><a href="the-td-element.html#the-td-element">td</a></code>, and <code><a href="the-th-element.html#the-th-element">th</a></code> elements</dt>
33465: <dd><p>Use CSS instead.</p></dd>
33466:
33467: </dl><hr><p>The <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">border</a></code> attribute on
33468: the <code><a href="the-table-element.html#the-table-element">table</a></code> element can be used to provide basic fallback
33469: styling for the purpose of making tables legible in browsing
33470: environments where CSS support is limited or absent, such as
33471: text-based browsers, WYSIWYG editors, and in situations where CSS
33472: support is disabled or the style sheet is lost. Only the empty
33473: string and the value "<code title="">1</code>" may be used as <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">border</a></code> values for this purpose.
33474: Other values are considered obsolete. To regulate the thickness of
33475: such borders, authors should instead use CSS.</p>
33476:
33477:
33478: <div class="impl">
33479:
33480: <h3 id="requirements-for-implementations"><span class="secno">11.3 </span>Requirements for implementations</h3>
33481:
33482: <h4 id="the-applet-element"><span class="secno">11.3.1 </span>The <dfn><code>applet</code></dfn> element</h4>
33483:
33484: <p>The <code><a href="#the-applet-element">applet</a></code> element is a Java-specific variant of the
33485: <code><a href="the-embed-element.html#the-embed-element">embed</a></code> element. The <code><a href="#the-applet-element">applet</a></code> element is now
33486: obsoleted so that all extension frameworks (Java, .NET, Flash, etc)
33487: are handled in a consistent manner.</p>
33488:
33489: <p id="sandboxPluginApplet">When the element is still in the
33490: <a href="#stack-of-open-elements">stack of open elements</a> of an <a href="#html-parser">HTML parser</a>
33491: or <a href="#xml-parser">XML parser</a>, and when the element is not <a href="infrastructure.html#in-a-document">in a
33492: <code>Document</code></a>, and when the element's document is not
33493: <a href="#fully-active">fully active</a>, and when the element's
33494: <code><a href="dom.html#document">Document</a></code>'s <a href="#active-sandboxing-flag-set">active sandboxing flag set</a> has
33495: its <a href="#sandboxed-plugins-browsing-context-flag">sandboxed plugins browsing context flag</a> set, and
33496: when the element has an ancestor <a href="media-elements.html#media-element">media element</a>, and
33497: when the element has an ancestor <code><a href="the-object-element.html#the-object-element">object</a></code> element that is
33498: <em>not</em> showing its <a href="content-models.html#fallback-content">fallback content</a>, and when no
33499: Java Language runtime <a href="infrastructure.html#plugin">plugin</a> is available, and when one
33500: <em>is</em> available but it is disabled, the element
33501: <a href="#represents">represents</a> its contents.</p>
33502:
33503: <!-- we assume here that the Java plugin can't be <span
33504: title="concept-plugin-secure">secured</span>; if anyone does end up
33505: securing one we can always change this -->
33506:
33507: <p>Otherwise, the user agent should instantiate a Java Language
33508: runtime <a href="infrastructure.html#plugin">plugin</a>, and should pass the names and values of
33509: all the attributes on the element, in the order they were added to
33510: the element, with the attributes added by the parser being ordered
33511: in source order, and then a parameter named "PARAM" whose value is
33512: null, and then all the names and values of <a href="the-param-element.html#concept-param-parameter" title="concept-param-parameter">parameters</a> given by
33513: <code><a href="the-param-element.html#the-param-element">param</a></code> elements that are children of the
33514: <code><a href="#the-applet-element">applet</a></code> element, in <a href="infrastructure.html#tree-order">tree order</a>, to the
33515: <a href="infrastructure.html#plugin">plugin</a> used. If the <a href="infrastructure.html#plugin">plugin</a> supports a
33516: scriptable interface, the <code><a href="#htmlappletelement">HTMLAppletElement</a></code> object
33517: representing the element should expose that interface. The
33518: <code><a href="#the-applet-element">applet</a></code> element <a href="#represents">represents</a> the
33519: <a href="infrastructure.html#plugin">plugin</a>.</p>
33520:
33521: <!-- If we ever make this fetch anything manually, remember to delay
33522: the load event, and to include ", from the element's <span>browsing
33523: context scope origin</span> if it has one" when fetching -->
33524:
33525: <p class="note">The <code><a href="#the-applet-element">applet</a></code> element is unaffected by the
33526: CSS 'display' property. The Java Language runtime is instantiated
33527: even if the element is hidden with a 'display:none' CSS style.</p>
33528:
33529: <p>The <code><a href="#the-applet-element">applet</a></code> element must implement the
33530: <code><a href="#htmlappletelement">HTMLAppletElement</a></code> interface.</p>
33531:
33532: <pre class="idl">interface <dfn id="htmlappletelement">HTMLAppletElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
33533: attribute DOMString <a href="#dom-applet-align" title="dom-applet-align">align</a>;
33534: attribute DOMString <a href="#dom-applet-alt" title="dom-applet-alt">alt</a>;
33535: attribute DOMString <a href="#dom-applet-archive" title="dom-applet-archive">archive</a>;
33536: attribute DOMString <a href="#dom-applet-code" title="dom-applet-code">code</a>;
33537: attribute DOMString <a href="#dom-applet-codebase" title="dom-applet-codeBase">codeBase</a>;
33538: attribute DOMString <a href="#dom-applet-height" title="dom-applet-height">height</a>;
33539: attribute unsigned long <a href="#dom-applet-hspace" title="dom-applet-hspace">hspace</a>;
33540: attribute DOMString <a href="#dom-applet-name" title="dom-applet-name">name</a>;
33541: attribute DOMString _<a href="#dom-applet-object" title="dom-applet-object">object</a>; // the underscore is not part of the identifier <!-- it's a Web IDL escaping mechanism -->
33542: attribute unsigned long <a href="#dom-applet-vspace" title="dom-applet-vspace">vspace</a>;
33543: attribute DOMString <a href="#dom-applet-width" title="dom-applet-width">width</a>;
33544: };</pre>
33545:
33546: <p>The <dfn id="dom-applet-align" title="dom-applet-align"><code>align</code></dfn>, <dfn id="dom-applet-alt" title="dom-applet-alt"><code>alt</code></dfn>, <dfn id="dom-applet-archive" title="dom-applet-archive"><code>archive</code></dfn>, <dfn id="dom-applet-code" title="dom-applet-code"><code>code</code></dfn>, <dfn id="dom-applet-height" title="dom-applet-height"><code>height</code></dfn>, <dfn id="dom-applet-hspace" title="dom-applet-hspace"><code>hspace</code></dfn>, <dfn id="dom-applet-name" title="dom-applet-name"><code>name</code></dfn>, <dfn id="dom-applet-object" title="dom-applet-object"><code>object</code></dfn>, <dfn id="dom-applet-vspace" title="dom-applet-vspace"><code>vspace</code></dfn>, and <dfn id="dom-applet-width" title="dom-applet-width"><code>width</code></dfn> IDL attributes
33547: must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the
33548: same name. For the purposes of reflection, the <code><a href="#the-applet-element">applet</a></code>
33549: element's <code title="attr-applet-object">object</code> content
33550: attribute is defined as containing a <a href="urls.html#url">URL</a>.</p>
33551:
33552: <p>The <dfn id="dom-applet-codebase" title="dom-applet-codeBase"><code>codeBase</code></dfn>
33553: IDL attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-applet-codebase">codebase</code> content attribute,
33554: which for the purposes of reflection is defined as containing a
33555: <a href="urls.html#url">URL</a>.</p>
33556:
33557:
33558: <h4 id="the-marquee-element-0"><span class="secno">11.3.2 </span>The <dfn><code>marquee</code></dfn> element</h4>
33559:
33560: <p>The <code><a href="#the-marquee-element-0">marquee</a></code> element is a presentational element that
33561: animates content. CSS transitions and animations are a more
33562: appropriate mechanism.</p>
33563:
33564: <p>The <a href="#task-source">task source</a> for tasks mentioned in this section
33565: is the <a href="#dom-manipulation-task-source">DOM manipulation task source</a>.</p>
33566:
33567: <p>The <code><a href="#the-marquee-element-0">marquee</a></code> element must implement the
33568: <code><a href="#htmlmarqueeelement">HTMLMarqueeElement</a></code> interface.</p>
33569:
33570: <pre class="idl">interface <dfn id="htmlmarqueeelement">HTMLMarqueeElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
33571: attribute DOMString <a href="#dom-marquee-behavior" title="dom-marquee-behavior">behavior</a>;
33572: attribute DOMString <a href="#dom-marquee-bgcolor" title="dom-marquee-bgColor">bgColor</a>;
33573: attribute DOMString <a href="#dom-marquee-direction" title="dom-marquee-direction">direction</a>;
33574: attribute DOMString <a href="#dom-marquee-height" title="dom-marquee-height">height</a>;
33575: attribute unsigned long <a href="#dom-marquee-hspace" title="dom-marquee-hspace">hspace</a>;
33576: attribute long <a href="#dom-marquee-loop" title="dom-marquee-loop">loop</a>;
33577: attribute unsigned long <a href="#dom-marquee-scrollamount" title="dom-marquee-scrollamount">scrollAmount</a>;
33578: attribute unsigned long <a href="#dom-marquee-scrolldelay" title="dom-marquee-scrollDelay">scrollDelay</a>;
33579: attribute boolean <a href="#dom-marquee-truespeed" title="dom-marquee-trueSpeed">trueSpeed</a>;
33580: attribute unsigned long <a href="#dom-marquee-vspace" title="dom-marquee-vspace">vspace</a>;
33581: attribute DOMString <a href="#dom-marquee-width" title="dom-marquee-width">width</a>;
33582:
33583: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-marquee-onbounce" title="handler-marquee-onbounce">onbounce</a>;
33584: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-marquee-onfinish" title="handler-marquee-onfinish">onfinish</a>;
33585: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-marquee-onstart" title="handler-marquee-onstart">onstart</a>;
33586:
33587: void <a href="#dom-marquee-start" title="dom-marquee-start">start</a>();
33588: void <a href="#dom-marquee-stop" title="dom-marquee-stop">stop</a>();
33589: };</pre>
33590:
33591: <p>A <code><a href="#the-marquee-element-0">marquee</a></code> element can be <dfn id="concept-marquee-on" title="concept-marquee-on">turned on</dfn> or <dfn id="concept-marquee-off" title="concept-marquee-off">turned off</dfn>. When it is created, it
33592: is <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>.</p>
33593:
33594: <p>When the <dfn id="dom-marquee-start" title="dom-marquee-start"><code>start()</code></dfn> method is
33595: called, the <code><a href="#the-marquee-element-0">marquee</a></code> element must be <a href="#concept-marquee-on" title="concept-marquee-on">turned on</a>.</p>
33596:
33597: <p>When the <dfn id="dom-marquee-stop" title="dom-marquee-stop"><code>stop()</code></dfn>
33598: method is called, the <code><a href="#the-marquee-element-0">marquee</a></code> element must be <a href="#concept-marquee-off" title="concept-marquee-off">turned off</a>.</p>
33599:
33600: <p>When a <code><a href="#the-marquee-element-0">marquee</a></code> element is created, the user agent
33601: must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a>
33602: named <code title="event-start">start</code> at the element.</p>
33603:
33604: <hr><p>The <dfn id="attr-marquee-behavior" title="attr-marquee-behavior"><code>behavior</code></dfn> content
33605: attribute on <code><a href="#the-marquee-element-0">marquee</a></code> elements is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated
33606: attribute</a> with the following keywords (all
33607: non-conforming):</p>
33608:
33609: <table><thead><tr><th>Keyword
33610: </th><th>State
33611: </th></tr></thead><tbody><tr><td><code title="">scroll</code>
33612: </td><td><dfn id="attr-marquee-behavior-scroll" title="attr-marquee-behavior-scroll">scroll</dfn>
33613: </td></tr><tr><td><code title="">slide</code>
33614: </td><td><dfn id="attr-marquee-behavior-slide" title="attr-marquee-behavior-slide">slide</dfn>
33615: </td></tr><tr><td><code title="">alternate</code>
33616: </td><td><dfn id="attr-marquee-behavior-alternate" title="attr-marquee-behavior-alternate">alternate</dfn>
33617: </td></tr></tbody></table><p>The <i>missing value default</i> is the <a href="#attr-marquee-behavior-scroll" title="attr-marquee-behavior-scroll">scroll</a> state.</p>
33618:
33619: <hr><p>The <dfn id="attr-marquee-direction" title="attr-marquee-direction"><code>direction</code></dfn> content
33620: attribute on <code><a href="#the-marquee-element-0">marquee</a></code> elements is an <a href="common-microsyntaxes.html#enumerated-attribute">enumerated
33621: attribute</a> with the following keywords (all
33622: non-conforming):</p>
33623:
33624: <table><thead><tr><th>Keyword
33625: </th><th>State
33626: </th></tr></thead><tbody><tr><td><code title="">left</code>
33627: </td><td><dfn id="attr-marquee-direction-left" title="attr-marquee-direction-left">left</dfn>
33628: </td></tr><tr><td><code title="">right</code>
33629: </td><td><dfn id="attr-marquee-direction-right" title="attr-marquee-direction-right">right</dfn>
33630: </td></tr><tr><td><code title="">up</code>
33631: </td><td><dfn id="attr-marquee-direction-up" title="attr-marquee-direction-up">up</dfn>
33632: </td></tr><tr><td><code title="">down</code>
33633: </td><td><dfn id="attr-marquee-direction-down" title="attr-marquee-direction-down">down</dfn>
33634: </td></tr></tbody></table><p>The <i>missing value default</i> is the <a href="#attr-marquee-direction-left" title="attr-marquee-direction-left">left</a> state.</p>
33635:
33636: <hr><p>The <dfn id="attr-marquee-truespeed" title="attr-marquee-truespeed"><code>truespeed</code></dfn> content
33637: attribute on <code><a href="#the-marquee-element-0">marquee</a></code> elements is a <a href="common-microsyntaxes.html#boolean-attribute">boolean
33638: attribute</a>.</p>
33639:
33640: <hr><p>A <code><a href="#the-marquee-element-0">marquee</a></code> element has a <dfn id="marquee-scroll-interval">marquee scroll
33641: interval</dfn>, which is obtained as follows:</p>
33642:
33643: <ol><li><p>If the element has a <code title="attr-marquee-scrolldelay">scrolldelay</code> attribute, and
33644: parsing its value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
33645: integers</a> does not return an error, then let <var title="">delay</var> be the parsed value. Otherwise, let <var title="">delay</var> be 85.</p></li>
33646:
33647: <li><p>If the element does not have a <code title="attr-marquee-truespeed"><a href="#attr-marquee-truespeed">truespeed</a></code> attribute, and the
33648: <var title="">delay</var> value is less than 60, then let <var title="">delay</var> be 60 instead.</p></li>
33649:
33650: <li><p>The <a href="#marquee-scroll-interval">marquee scroll interval</a> is <var title="">delay</var>, interpreted in milliseconds.</p></li>
33651:
33652: </ol><hr><p>A <code><a href="#the-marquee-element-0">marquee</a></code> element has a <dfn id="marquee-scroll-distance">marquee scroll
33653: distance</dfn>, which, if the element has a <code title="attr-marquee-scrollamount">scrollamount</code> attribute, and
33654: parsing its value using the <a href="common-microsyntaxes.html#rules-for-parsing-non-negative-integers">rules for parsing non-negative
33655: integers</a> does not return an error, is the parsed value
33656: interpreted in CSS pixels, and otherwise is 6 CSS pixels.</p>
33657:
33658: <hr><p>A <code><a href="#the-marquee-element-0">marquee</a></code> element has a <dfn id="marquee-loop-count">marquee loop
33659: count</dfn>, which, if the element has a <code title="attr-marquee-loop">loop</code> attribute, and parsing its
33660: value using the <a href="common-microsyntaxes.html#rules-for-parsing-integers">rules for parsing integers</a> does not
33661: return an error or a number less than 1, is the parsed value, and
33662: otherwise is −1.</p>
33663:
33664: <p>The <dfn id="dom-marquee-loop" title="dom-marquee-loop"><code>loop</code></dfn> IDL
33665: attribute, on getting, must return the element's <a href="#marquee-loop-count">marquee loop
33666: count</a>; and on setting, if the new value is different than the
33667: element's <a href="#marquee-loop-count">marquee loop count</a> and either greater than
33668: zero or equal to −1, must set the element's <code title="attr-marquee-loop">loop</code> content attribute (adding it
33669: if necessary) to the <a href="common-microsyntaxes.html#valid-integer">valid integer</a> that represents the
33670: new value. (Other values are ignored.)</p>
33671:
33672: <p>A <code><a href="#the-marquee-element-0">marquee</a></code> element also has a <dfn id="marquee-current-loop-index">marquee current
33673: loop index</dfn>, which is zero when the element is created.</p>
33674:
33675: <p>The rendering layer will occasionally <dfn id="increment-the-marquee-current-loop-index">increment the marquee
33676: current loop index</dfn>, which must cause the following steps to be
33677: run:</p>
33678:
33679: <ol><li><p>If the <a href="#marquee-loop-count">marquee loop count</a> is −1, then
33680: abort these steps.</p>
33681:
33682: </li><li><p>Increment the <a href="#marquee-current-loop-index">marquee current loop index</a> by
33683: one.</p></li>
33684:
33685: <li>
33686:
33687: <p>If the <a href="#marquee-current-loop-index">marquee current loop index</a> is now equal to
33688: or greater than the element's <a href="#marquee-loop-count">marquee loop count</a>,
33689: <a href="#concept-marquee-off" title="concept-marquee-off">turn off</a> the
33690: <code><a href="#the-marquee-element-0">marquee</a></code> element and <a href="#queue-a-task">queue a task</a> to
33691: <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-finish">finish</code> at the <code><a href="#the-marquee-element-0">marquee</a></code>
33692: element.</p>
33693:
33694: <p>Otherwise, if the <code title="attr-marquee-behavior"><a href="#attr-marquee-behavior">behavior</a></code> attribute is in the
33695: <a href="#attr-marquee-behavior-alternate" title="attr-marquee-behavior-alternate">alternate</a>
33696: state, then <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple
33697: event</a> named <code title="event-bounce">bounce</code> at
33698: the <code><a href="#the-marquee-element-0">marquee</a></code> element.</p>
33699:
33700: <p>Otherwise, <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple
33701: event</a> named <code title="event-start">start</code> at the
33702: <code><a href="#the-marquee-element-0">marquee</a></code> element.</p>
33703:
33704: </li>
33705:
33706: </ol><hr><p>The following are the <a href="#event-handlers">event handlers</a> (and their
33707: corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
33708: event types</a>) that must be supported, as content and IDL
33709: attributes, by <code><a href="#the-marquee-element-0">marquee</a></code> elements:</p>
33710:
33711: <table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> </th><th><a href="#event-handler-event-type">Event handler event type</a>
33712: </th></tr></thead><tbody><tr><td><dfn id="handler-marquee-onbounce" title="handler-marquee-onbounce"><code>onbounce</code></dfn> </td><td> <code title="event-bounce">bounce</code>
33713: </td></tr><tr><td><dfn id="handler-marquee-onfinish" title="handler-marquee-onfinish"><code>onfinish</code></dfn> </td><td> <code title="event-finish">finish</code>
33714: </td></tr><tr><td><dfn id="handler-marquee-onstart" title="handler-marquee-onstart"><code>onstart</code></dfn> </td><td> <code title="event-start">start</code>
33715: </td></tr></tbody></table><hr><p>The <dfn id="dom-marquee-behavior" title="dom-marquee-behavior"><code>behavior</code></dfn>, <dfn id="dom-marquee-direction" title="dom-marquee-direction"><code>direction</code></dfn>, <dfn id="dom-marquee-height" title="dom-marquee-height"><code>height</code></dfn>, <dfn id="dom-marquee-hspace" title="dom-marquee-hspace"><code>hspace</code></dfn>, <dfn id="dom-marquee-vspace" title="dom-marquee-vspace"><code>vspace</code></dfn>, and <dfn id="dom-marquee-width" title="dom-marquee-width"><code>width</code></dfn> IDL attributes
33716: must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the
33717: same name.</p>
33718:
33719: <p>The <dfn id="dom-marquee-bgcolor" title="dom-marquee-bgColor"><code>bgColor</code></dfn>
33720: IDL attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-marquee-bgcolor">bgcolor</code> content attribute.</p>
33721:
33722: <p>The <dfn id="dom-marquee-scrollamount" title="dom-marquee-scrollAmount"><code>scrollAmount</code></dfn>
33723: IDL attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-marquee-scrollamount">scrollamount</code> content
33724: attribute. The default value is 6.</p>
33725:
33726: <p>The <dfn id="dom-marquee-scrolldelay" title="dom-marquee-scrollDelay"><code>scrollDelay</code></dfn> IDL
33727: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-marquee-scrolldelay">scrolldelay</code> content
33728: attribute. The default value is 85.</p>
33729:
33730: <p>The <dfn id="dom-marquee-truespeed" title="dom-marquee-trueSpeed"><code>trueSpeed</code></dfn> IDL
33731: attribute must <a href="common-dom-interfaces.html#reflect">reflect</a> the <code title="attr-marquee-truespeed"><a href="#attr-marquee-truespeed">truespeed</a></code> content
33732: attribute.</p>
33733:
33734:
33735: <h4 id="frames"><span class="secno">11.3.3 </span>Frames</h4>
33736:
33737: <p>The <dfn id="frameset"><code>frameset</code></dfn> element acts as <a href="dom.html#the-body-element-0">the
33738: body element</a> in documents that use frames.</p>
33739:
33740: <p>The <code><a href="#frameset">frameset</a></code> element must implement the
33741: <code><a href="#htmlframesetelement">HTMLFrameSetElement</a></code> interface.</p>
33742:
33743: <pre class="idl">interface <dfn id="htmlframesetelement">HTMLFrameSetElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
33744: attribute DOMString <a href="#dom-frameset-cols" title="dom-frameset-cols">cols</a>;
33745: attribute DOMString <a href="#dom-frameset-rows" title="dom-frameset-rows">rows</a>;
33746: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onafterprint" title="handler-window-onafterprint">onafterprint</a>;
33747: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onbeforeprint" title="handler-window-onbeforeprint">onbeforeprint</a>;
33748: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onbeforeunload" title="handler-window-onbeforeunload">onbeforeunload</a>;
33749: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onblur" title="handler-window-onblur">onblur</a>;
33750: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onerror" title="handler-window-onerror">onerror</a>;
33751: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onfocus" title="handler-window-onfocus">onfocus</a>;
33752: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onhashchange" title="handler-window-onhashchange">onhashchange</a>;
33753: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onload" title="handler-window-onload">onload</a>;
33754: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onmessage" title="handler-window-onmessage">onmessage</a>;
33755: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onoffline" title="handler-window-onoffline">onoffline</a>;
33756: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-ononline" title="handler-window-ononline">ononline</a>;
33757: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpagehide" title="handler-window-onpagehide">onpagehide</a>;
33758: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpageshow" title="handler-window-onpageshow">onpageshow</a>;
33759: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onpopstate" title="handler-window-onpopstate">onpopstate</a>;
33760: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onresize" title="handler-window-onresize">onresize</a>;
33761: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onscroll" title="handler-window-onscroll">onscroll</a>;
33762: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onstorage" title="handler-window-onstorage">onstorage</a>;
33763: attribute <a href="#eventhandler">EventHandler</a> <a href="#handler-window-onunload" title="handler-window-onunload">onunload</a>;
33764: };</pre>
33765:
33766: <p>The <dfn id="dom-frameset-cols" title="dom-frameset-cols"><code>cols</code></dfn> and
33767: <dfn id="dom-frameset-rows" title="dom-frameset-rows"><code>rows</code></dfn> IDL
33768: attributes of the <code><a href="#frameset">frameset</a></code> element must
33769: <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the same
33770: name.</p>
33771:
33772: <p>The <code><a href="#frameset">frameset</a></code> element must support the following
33773: <a href="#event-handler-content-attributes">event handler content attributes</a> exposing the
33774: <a href="#event-handlers">event handlers</a> of the <code><a href="#window">Window</a></code> object:</p>
33775:
33776: <ul class="brief"><li><code title="handler-window-onafterprint"><a href="#handler-window-onafterprint">onafterprint</a></code></li>
33777: <li><code title="handler-window-onbeforeprint"><a href="#handler-window-onbeforeprint">onbeforeprint</a></code></li>
33778: <li><code title="handler-window-onbeforeunload"><a href="#handler-window-onbeforeunload">onbeforeunload</a></code></li>
33779: <li><code title="handler-window-onblur"><a href="#handler-window-onblur">onblur</a></code></li>
33780: <li><code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code></li>
33781: <li><code title="handler-window-onfocus"><a href="#handler-window-onfocus">onfocus</a></code></li>
33782: <li><code title="handler-window-onhashchange"><a href="#handler-window-onhashchange">onhashchange</a></code></li>
33783: <li><code title="handler-window-onload"><a href="#handler-window-onload">onload</a></code></li>
33784: <li><code title="handler-window-onmessage"><a href="#handler-window-onmessage">onmessage</a></code></li>
33785: <li><code title="handler-window-onoffline"><a href="#handler-window-onoffline">onoffline</a></code></li>
33786: <li><code title="handler-window-ononline"><a href="#handler-window-ononline">ononline</a></code></li>
33787: <li><code title="handler-window-onpagehide"><a href="#handler-window-onpagehide">onpagehide</a></code></li>
33788: <li><code title="handler-window-onpageshow"><a href="#handler-window-onpageshow">onpageshow</a></code></li>
33789: <li><code title="handler-window-onpopstate"><a href="#handler-window-onpopstate">onpopstate</a></code></li>
33790: <li><code title="handler-window-onresize"><a href="#handler-window-onresize">onresize</a></code></li>
33791: <li><code title="handler-window-onscroll"><a href="#handler-window-onscroll">onscroll</a></code></li>
33792: <li><code title="handler-window-onstorage"><a href="#handler-window-onstorage">onstorage</a></code></li>
33793: <li><code title="handler-window-onunload"><a href="#handler-window-onunload">onunload</a></code></li>
33794: </ul><p>The DOM interface also exposes <a href="#event-handler-idl-attributes">event handler IDL
33795: attributes</a> that mirror those on the <code><a href="#window">Window</a></code>
33796: element.</p>
33797:
33798: <p>The <code title="handler-window-onblur"><a href="#handler-window-onblur">onblur</a></code>, <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code>, <code title="handler-window-onfocus"><a href="#handler-window-onfocus">onfocus</a></code>, <code title="handler-window-onload"><a href="#handler-window-onload">onload</a></code>, and <code title="handler-window-onscroll"><a href="#handler-window-onscroll">onscroll</a></code> <a href="#event-handler-idl-attributes">event handler
33799: IDL attributes</a> of the <code><a href="#window">Window</a></code> object, exposed on
33800: the <code><a href="#frameset">frameset</a></code> element, shadow the generic <a href="#event-handler-idl-attributes">event
33801: handler IDL attributes</a> with the same names normally supported
33802: by <a href="infrastructure.html#html-elements">HTML elements</a>.</p>
33803:
33804: <hr><p>The <dfn id="frame"><code>frame</code></dfn> element defines a <a href="#nested-browsing-context">nested
33805: browsing context</a> similar to the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element,
33806: but rendered within a <code><a href="#frameset">frameset</a></code> element.</p>
33807:
33808: <!-- START of section that's very similar to <iframe> -->
33809:
33810: <p>A <code><a href="#frame">frame</a></code> element is said to be an <dfn id="active-frame-element">active
33811: <code>frame</code> element</dfn> when it is <a href="infrastructure.html#in-a-document">in a
33812: <code>Document</code></a> and its <span>parent element</span>, if
33813: any, is a <code><a href="#frameset">frameset</a></code> element.</p>
33814:
33815: <p>When a <code><a href="#frame">frame</a></code> element is created as an <a href="#active-frame-element">active
33816: <code>frame</code> element</a>, or becomes an <a href="#active-frame-element">active
33817: <code>frame</code> element</a> after not having been one, the
33818: user agent must create a <a href="#nested-browsing-context">nested browsing context</a>, and
33819: then <a href="#process-the-frame-attributes">process the <code>frame</code> attributes</a> for the
33820: first time.</p>
33821:
33822: <p>When a <code><a href="#frame">frame</a></code> element stops being an <a href="#active-frame-element">active
33823: <code>frame</code> element</a>, the user agent must <a href="#a-browsing-context-is-discarded" title="a browsing context is discarded">discard</a> the
33824: <a href="#nested-browsing-context">nested browsing context</a>.</p>
33825:
33826: <p>Whenever a <code><a href="#frame">frame</a></code> element with a <a href="#nested-browsing-context">nested
33827: browsing context</a> has its <code title="attr-frame-src">src</code> attribute set, changed, or
33828: removed, the user agent must <a href="#process-the-frame-attributes">process the <code>frame</code>
33829: attributes</a>.</p> <!-- It doesn't happen when the base URL is
33830: changed, though. -->
33831:
33832: <p>When the user agent is to <dfn id="process-the-frame-attributes">process the <code>frame</code>
33833: attributes</dfn>, it must run the first appropriate steps from the
33834: following list:</p>
33835:
33836: <dl class="switch"><dt>If the element has no <code title="attr-frame-src">src</code> attribute specified, and the
33837: user agent is processing the <code><a href="#frame">frame</a></code>'s attributes for
33838: the first time</dt>
33839:
33840: <dd>
33841:
33842: <p><a href="#queue-a-task">Queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a>
33843: named <code title="event-load">load</code> at the
33844: <code><a href="#frame">frame</a></code> element.</p>
33845:
33846: </dd>
33847:
33848: <dt>Otherwise</dt>
33849:
33850: <dd>
33851:
33852: <ol><li>
33853:
33854: <p>If the value of the <code title="attr-frame-src">src</code>
33855: attribute is the empty string, let <var title="">url</var> be
33856: the string "<code><a href="urls.html#about:blank">about:blank</a></code>".</p>
33857:
33858: <p>Otherwise, <a href="urls.html#resolve-a-url" title="resolve a url">resolve</a> the
33859: value of the <code title="attr-frame-src">src</code> attribute,
33860: relative to the <code><a href="#frame">frame</a></code> element.</p>
33861:
33862: <p>If that is not successful, then let <var title="">url</var>
33863: be the string "<code><a href="urls.html#about:blank">about:blank</a></code>". Otherwise, let <var title="">url</var> be the resulting <a href="urls.html#absolute-url">absolute
33864: URL</a>.</p>
33865:
33866: </li>
33867:
33868: <li>
33869:
33870: <p><a href="#navigate">Navigate</a><!--DONAV frame--> the element's
33871: <a href="#child-browsing-context">child browsing context</a> to <var title="">url</var>.</p>
33872:
33873: </li>
33874:
33875: </ol></dd>
33876:
33877: </dl><p>Any <a href="#navigate" title="navigate">navigation</a> required of the user
33878: agent in the <a href="#process-the-frame-attributes">process the <code>frame</code> attributes</a>
33879: algorithm must be completed as an <a href="#explicit-self-navigation-override">explicit self-navigation
33880: override</a> and with the <code><a href="#frame">frame</a></code> element's
33881: document's <a href="#browsing-context">browsing context</a> as the <a href="#source-browsing-context">source
33882: browsing context</a>.</p>
33883:
33884: <p>Furthermore, if the <a href="#active-document">active document</a> of the element's
33885: <a href="#child-browsing-context">child browsing context</a> before such a <a href="#navigate" title="navigate">navigation</a> was not <a href="#completely-loaded">completely
33886: loaded</a> at the time of the new <a href="#navigate" title="navigate">navigation</a>, then the <a href="#navigate" title="navigate">navigation</a> must be completed with
33887: <a href="#replacement-enabled">replacement enabled</a>.</p>
33888:
33889: <p>Similarly, if the <a href="#child-browsing-context">child browsing context</a>'s
33890: <a href="#session-history">session history</a> contained only one
33891: <code><a href="dom.html#document">Document</a></code> when the <a href="#process-the-frame-attributes">process the <code>frame</code>
33892: attributes</a> algorithm was invoked, and that was the
33893: <code><a href="urls.html#about:blank">about:blank</a></code> <code><a href="dom.html#document">Document</a></code> created when the
33894: <a href="#child-browsing-context">child browsing context</a> was created, then any <a href="#navigate" title="navigate">navigation</a> required of the user agent in
33895: that algorithm must be completed with <a href="#replacement-enabled">replacement
33896: enabled</a>.</p> <!-- see also the note near similar text for the
33897: location.assign() method -->
33898:
33899: <!-- END of section that's very similar to <iframe> -->
33900:
33901: <p>When the browsing context is created, if a <code title="attr-frame-name">name</code> attribute is present, the
33902: <a href="#browsing-context-name">browsing context name</a> must be set to the value of this
33903: attribute; otherwise, the <a href="#browsing-context-name">browsing context name</a> must be
33904: set to the empty string.</p>
33905:
33906: <p>Whenever the <code title="attr-frame-name">name</code> attribute
33907: is set, the nested <a href="#browsing-context">browsing context</a>'s <a href="#browsing-context-name" title="browsing context name">name</a> must be changed to the new
33908: value. If the attribute is removed, the <a href="#browsing-context-name">browsing context
33909: name</a> must be set to the empty string.</p>
33910:
33911: <p>When content loads in a <code><a href="#frame">frame</a></code>, after any <code title="event-load">load</code> events are fired within the content
33912: itself, the user agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire
33913: a simple event</a> named <code title="event-load">load</code> at
33914: the <code><a href="#frame">frame</a></code> element. When content fails to load (e.g. due
33915: to a network error), then the user agent must <a href="#queue-a-task">queue a
33916: task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-error">error</code> at the element instead.</p>
33917:
33918: <p>The <a href="#task-source">task source</a> for the <a href="#concept-task" title="concept-task">tasks</a> above is the <a href="#dom-manipulation-task-source">DOM
33919: manipulation task source</a>.</p>
33920:
33921: <p>When there is an <a href="dom.html#active-parser">active parser</a> in the
33922: <code><a href="#frame">frame</a></code>, and when anything in the <code><a href="#frame">frame</a></code> is
33923: <a href="#delay-the-load-event" title="delay the load event">delaying the load event</a> of
33924: the <code><a href="#frame">frame</a></code>'s <a href="#browsing-context">browsing context</a>'s
33925: <a href="#active-document">active document</a>, the <code><a href="#frame">frame</a></code> must
33926: <a href="#delay-the-load-event">delay the load event</a> of its document.</p>
33927:
33928: <p>The <code><a href="#frame">frame</a></code> element must implement the
33929: <code><a href="#htmlframeelement">HTMLFrameElement</a></code> interface.</p>
33930:
33931: <pre class="idl">interface <dfn id="htmlframeelement">HTMLFrameElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
33932: attribute DOMString <a href="#dom-frame-name" title="dom-frame-name">name</a>;
33933: attribute DOMString <a href="#dom-frame-scrolling" title="dom-frame-scrolling">scrolling</a>;
33934: attribute DOMString <a href="#dom-frame-src" title="dom-frame-src">src</a>;
33935: attribute DOMString <a href="#dom-frame-frameborder" title="dom-frame-frameBorder">frameBorder</a>;
33936: attribute DOMString <a href="#dom-frame-longdesc" title="dom-frame-longDesc">longDesc</a>;
33937: attribute boolean <a href="#dom-frame-noresize" title="dom-frame-noResize">noResize</a>;
33938: readonly attribute Document? <a href="#dom-frame-contentdocument" title="dom-frame-contentDocument">contentDocument</a>;
33939: readonly attribute <a href="#windowproxy">WindowProxy</a>? <a href="#dom-frame-contentwindow" title="dom-frame-contentWindow">contentWindow</a>;
33940:
33941: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-frame-marginheight" title="dom-frame-marginHeight">marginHeight</a>;
33942: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-frame-marginwidth" title="dom-frame-marginWidth">marginWidth</a>;
33943: };</pre>
33944:
33945: <p>The <dfn id="dom-frame-name" title="dom-frame-name"><code>name</code></dfn>, <dfn id="dom-frame-scrolling" title="dom-frame-scrolling"><code>scrolling</code></dfn>, and <dfn id="dom-frame-src" title="dom-frame-src"><code>src</code></dfn> IDL attributes of the
33946: <code><a href="#frame">frame</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective
33947: content attributes of the same name.</p>
33948:
33949: <p>The <dfn id="dom-frame-frameborder" title="dom-frame-frameBorder"><code>frameBorder</code></dfn> IDL
33950: attribute of the <code><a href="#frame">frame</a></code> element must
33951: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-frame-frameborder">frameborder</code> content
33952: attribute.</p>
33953:
33954: <p>The <dfn id="dom-frame-longdesc" title="dom-frame-longDesc"><code>longDesc</code></dfn>
33955: IDL attribute of the <code><a href="#frame">frame</a></code> element must
33956: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-frame-longdesc">longdesc</code> content attribute, which
33957: for the purposes of reflection is defined as containing a
33958: <a href="urls.html#url">URL</a>.</p>
33959:
33960: <p>The <dfn id="dom-frame-noresize" title="dom-frame-noResize"><code>noResize</code></dfn>
33961: IDL attribute of the <code><a href="#frame">frame</a></code> element must
33962: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-frame-noresize">noresize</code> content attribute.</p>
33963:
33964: <p>The <dfn id="dom-frame-contentdocument" title="dom-frame-contentDocument"><code>contentDocument</code></dfn>
33965: IDL attribute of the <code><a href="#frame">frame</a></code> element must return the
33966: <code><a href="dom.html#document">Document</a></code> object of the <a href="#active-document">active document</a> of
33967: the <code><a href="#frame">frame</a></code> element's <a href="#nested-browsing-context">nested browsing
33968: context</a>.</p>
33969:
33970: <p>The <dfn id="dom-frame-contentwindow" title="dom-frame-contentWindow"><code>contentWindow</code></dfn>
33971: IDL attribute must return the <code><a href="#windowproxy">WindowProxy</a></code> object of the
33972: <code><a href="#frame">frame</a></code> element's <a href="#nested-browsing-context">nested browsing
33973: context</a>.</p>
33974:
33975: <p>The <dfn id="dom-frame-marginheight" title="dom-frame-marginHeight"><code>marginHeight</code></dfn> IDL
33976: attribute of the <code><a href="#frame">frame</a></code> element must
33977: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-frame-marginheight">marginheight</code> content
33978: attribute.</p>
33979:
33980: <p>The <dfn id="dom-frame-marginwidth" title="dom-frame-marginWidth"><code>marginWidth</code></dfn> IDL
33981: attribute of the <code><a href="#frame">frame</a></code> element must
33982: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-frame-marginwidth">marginwidth</code> content
33983: attribute.</p>
33984:
33985:
33986:
33987: <h4 id="other-elements,-attributes-and-apis"><span class="secno">11.3.4 </span>Other elements, attributes and APIs</h4> <!-- alphabetical by name and attribute -->
33988:
33989: <p>User agents must treat <code><a href="#acronym">acronym</a></code> elements in a manner
33990: equivalent to <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code> elements in terms of semantics and
33991: for purposes of rendering.</p>
33992:
33993: <hr><pre class="idl">partial interface <a href="the-a-element.html#htmlanchorelement">HTMLAnchorElement</a> {
33994: attribute DOMString <a href="#dom-a-coords" title="dom-a-coords">coords</a>;
33995: attribute DOMString <a href="#dom-a-charset" title="dom-a-charset">charset</a>;
33996: attribute DOMString <a href="#dom-a-name" title="dom-a-name">name</a>;
33997: attribute DOMString <a href="#dom-a-rev" title="dom-a-rev">rev</a>;
33998: attribute DOMString <a href="#dom-a-shape" title="dom-a-shape">shape</a>;
33999: };</pre>
34000:
34001: <p>The <dfn id="dom-a-coords" title="dom-a-coords"><code>coords</code></dfn>, <dfn id="dom-a-charset" title="dom-a-charset"><code>charset</code></dfn>, <dfn id="dom-a-name" title="dom-a-name"><code>name</code></dfn>, <dfn id="dom-a-rev" title="dom-a-rev"><code>rev</code></dfn>, and <dfn id="dom-a-shape" title="dom-a-shape"><code>shape</code></dfn> IDL attributes of the
34002: <code><a href="the-a-element.html#the-a-element">a</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective
34003: content attributes of the same name.</p>
34004:
34005: <hr><pre class="idl">partial interface <a href="the-area-element.html#htmlareaelement">HTMLAreaElement</a> {
34006: attribute boolean <a href="#dom-area-nohref" title="dom-area-noHref">noHref</a>;
34007: };</pre>
34008:
34009: <p>The <dfn id="dom-area-nohref" title="dom-area-noHref"><code>noHref</code></dfn> IDL
34010: attribute of the <code><a href="the-area-element.html#the-area-element">area</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34011: the element's <code title="attr-area-nohref"><a href="#attr-area-nohref">nohref</a></code> content
34012: attribute.</p>
34013:
34014: <hr><p>The <code><a href="#basefont">basefont</a></code> element must implement the
34015: <code><a href="#htmlbasefontelement">HTMLBaseFontElement</a></code> interface.</p>
34016:
34017: <pre class="idl">interface <dfn id="htmlbasefontelement">HTMLBaseFontElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
34018: attribute DOMString <a href="#dom-basefont-color" title="dom-basefont-color">color</a>;
34019: attribute DOMString <a href="#dom-basefont-face" title="dom-basefont-face">face</a>;
34020: attribute long <a href="#dom-basefont-size" title="dom-basefont-size">size</a>; <!-- yes, long, not DOMString (so says DOM2 HTML) -->
34021: };</pre>
34022:
34023: <p>The <dfn id="dom-basefont-color" title="dom-basefont-color"><code>color</code></dfn>,
34024: <dfn id="dom-basefont-face" title="dom-basefont-face"><code>face</code></dfn>, and <dfn id="dom-basefont-size" title="dom-basefont-size"><code>size</code></dfn> IDL attributes of
34025: the <code><a href="#basefont">basefont</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34026: respective content attributes of the same name.</p>
34027:
34028: <hr><pre class="idl">partial interface <a href="the-body-element.html#htmlbodyelement">HTMLBodyElement</a> {
34029: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-body-text" title="dom-body-text">text</a>;
34030: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-body-link" title="dom-body-link">link</a>;
34031: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-body-vlink" title="dom-body-vLink">vLink</a>;
34032: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-body-alink" title="dom-body-aLink">aLink</a>;
34033: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-body-bgcolor" title="dom-body-bgColor">bgColor</a>;
34034: attribute DOMString <a href="#dom-body-background" title="dom-body-background">background</a>;
34035: };</pre>
34036:
34037: <p>The <dfn id="dom-body-text" title="dom-body-text"><code>text</code></dfn> IDL
34038: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34039: the element's <code title="attr-body-text"><a href="#attr-body-text">text</a></code> content
34040: attribute.</p>
34041:
34042: <p>The <dfn id="dom-body-link" title="dom-body-link"><code>link</code></dfn> IDL
34043: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34044: the element's <code title="attr-body-link"><a href="#attr-body-link">link</a></code> content
34045: attribute.</p>
34046:
34047: <p>The <dfn id="dom-body-alink" title="dom-body-aLink"><code>aLink</code></dfn> IDL
34048: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34049: the element's <code title="attr-body-alink"><a href="#attr-body-alink">alink</a></code> content
34050: attribute.</p>
34051:
34052: <p>The <dfn id="dom-body-vlink" title="dom-body-vLink"><code>vLink</code></dfn> IDL
34053: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34054: the element's <code title="attr-body-vlink"><a href="#attr-body-vlink">vlink</a></code> content
34055: attribute.</p>
34056:
34057: <p>The <dfn id="dom-body-bgcolor" title="dom-body-bgColor"><code>bgColor</code></dfn> IDL
34058: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34059: the element's <code title="attr-body-bgcolor"><a href="#attr-body-bgcolor">bgcolor</a></code> content
34060: attribute.</p>
34061:
34062: <p>The <dfn id="dom-body-background" title="dom-body-background"><code>background</code></dfn> IDL
34063: attribute of the <code><a href="the-body-element.html#the-body-element">body</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34064: the element's <code title="attr-background"><a href="#attr-background">background</a></code>
34065: content attribute. (The <code title="attr-background"><a href="#attr-background">background</a></code> content is <em>not</em>
34066: defined to contain a <a href="urls.html#url">URL</a>, despite rules regarding its
34067: handling in the rendering section above.)</p>
34068:
34069: <hr><pre class="idl">partial interface <a href="the-br-element.html#htmlbrelement">HTMLBRElement</a> {
34070: attribute DOMString <a href="#dom-br-clear" title="dom-br-clear">clear</a>;
34071: };</pre>
34072:
34073: <p>The <dfn id="dom-br-clear" title="dom-br-clear"><code>clear</code></dfn> IDL
34074: attribute of the <code><a href="the-br-element.html#the-br-element">br</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34075: the content attribute of the same name.</p>
34076:
34077: <hr><pre class="idl">partial interface <a href="the-caption-element.html#htmltablecaptionelement">HTMLTableCaptionElement</a> {
34078: attribute DOMString <a href="#dom-caption-align" title="dom-caption-align">align</a>;
34079: };</pre>
34080:
34081: <p>The <dfn id="dom-caption-align" title="dom-caption-align"><code>align</code></dfn> IDL
34082: attribute of the <code><a href="the-caption-element.html#the-caption-element">caption</a></code> element must
34083: <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the same name.</p>
34084:
34085: <hr><pre class="idl">partial interface <a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a> {
34086: attribute DOMString <a href="#dom-col-align" title="dom-col-align">align</a>;
34087: attribute DOMString <a href="#dom-col-ch" title="dom-col-ch">ch</a>;
34088: attribute DOMString <a href="#dom-col-choff" title="dom-col-chOff">chOff</a>;
34089: attribute DOMString <a href="#dom-col-valign" title="dom-col-vAlign">vAlign</a>;
34090: attribute DOMString <a href="#dom-col-width" title="dom-col-width">width</a>;
34091: };</pre>
34092:
34093: <p>The <dfn id="dom-col-align" title="dom-col-align"><code>align</code></dfn> and <dfn id="dom-col-width" title="dom-col-width"><code>width</code></dfn> IDL attributes of
34094: the <code><a href="the-col-element.html#the-col-element">col</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34095: respective content attributes of the same name.</p>
34096:
34097: <p>The <dfn id="dom-col-ch" title="dom-col-ch"><code>ch</code></dfn> IDL attribute
34098: of the <code><a href="the-col-element.html#the-col-element">col</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34099: element's <code title="attr-col-char"><a href="#attr-col-char">char</a></code> content
34100: attribute.</p>
34101:
34102: <p>The <dfn id="dom-col-choff" title="dom-col-chOff"><code>chOff</code></dfn> IDL
34103: attribute of the <code><a href="the-col-element.html#the-col-element">col</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34104: the element's <code title="attr-col-charoff"><a href="#attr-col-charoff">charoff</a></code> content
34105: attribute.</p>
34106:
34107: <p>The <dfn id="dom-col-valign" title="dom-col-vAlign"><code>vAlign</code></dfn> IDL
34108: attribute of the <code><a href="the-col-element.html#the-col-element">col</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34109: the element's <code title="attr-col-valign"><a href="#attr-col-valign">valign</a></code> content
34110: attribute.</p>
34111:
34112: <hr><p>User agents must treat <code><a href="#dir">dir</a></code> elements in a manner
34113: equivalent to <code><a href="the-ul-element.html#the-ul-element">ul</a></code> elements in terms of semantics and for
34114: purposes of rendering.</p>
34115:
34116: <p>The <code><a href="#dir">dir</a></code> element must implement the
34117: <code><a href="#htmldirectoryelement">HTMLDirectoryElement</a></code> interface.</p>
34118:
34119: <pre class="idl">interface <dfn id="htmldirectoryelement">HTMLDirectoryElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
34120: attribute boolean <a href="#dom-dir-compact" title="dom-dir-compact">compact</a>;
34121: };</pre>
34122:
34123: <p>The <dfn id="dom-dir-compact" title="dom-dir-compact"><code>compact</code></dfn> IDL
34124: attribute of the <code><a href="#dir">dir</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34125: the content attribute of the same name.</p>
34126:
34127: <hr><pre class="idl">partial interface <a href="the-div-element.html#htmldivelement">HTMLDivElement</a> {
34128: attribute DOMString <a href="#dom-div-align" title="dom-div-align">align</a>;
34129: };</pre>
34130:
34131: <p>The <dfn id="dom-div-align" title="dom-div-align"><code>align</code></dfn> IDL
34132: attribute of the <code><a href="the-div-element.html#the-div-element">div</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34133: the content attribute of the same name.</p>
34134:
34135: <hr><pre class="idl">partial interface <a href="the-dl-element.html#htmldlistelement">HTMLDListElement</a> {
34136: attribute boolean <a href="#dom-dl-compact" title="dom-dl-compact">compact</a>;
34137: };</pre>
34138:
34139: <p>The <dfn id="dom-dl-compact" title="dom-dl-compact"><code>compact</code></dfn> IDL
34140: attribute of the <code><a href="the-dl-element.html#the-dl-element">dl</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34141: the content attribute of the same name.</p>
34142:
34143: <hr><pre class="idl">partial interface <a href="the-embed-element.html#htmlembedelement">HTMLEmbedElement</a> {
34144: attribute DOMString <a href="#dom-embed-align" title="dom-embed-align">align</a>;
34145: attribute DOMString <a href="#dom-embed-name" title="dom-embed-name">name</a>;
34146: };</pre>
34147:
34148: <p>The <dfn id="dom-embed-name" title="dom-embed-name"><code>name</code></dfn> and <dfn id="dom-embed-align" title="dom-embed-align"><code>align</code></dfn> IDL attributes of
34149: the <code><a href="the-embed-element.html#the-embed-element">embed</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34150: respective content attributes of the same name.</p>
34151:
34152: <hr><p>The <code><a href="#font">font</a></code> element must implement the
34153: <code><a href="#htmlfontelement">HTMLFontElement</a></code> interface.</p>
34154:
34155: <pre class="idl">interface <dfn id="htmlfontelement">HTMLFontElement</dfn> : <a href="elements.html#htmlelement">HTMLElement</a> {
34156: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-font-color" title="dom-font-color">color</a>;
34157: attribute DOMString <a href="#dom-font-face" title="dom-font-face">face</a>;
34158: attribute DOMString <a href="#dom-font-size" title="dom-font-size">size</a>; <!-- yes, DOMString, not long (so says DOM2 HTML) -->
34159: };</pre>
34160:
34161: <p>The <dfn id="dom-font-color" title="dom-font-color"><code>color</code></dfn>,
34162: <dfn id="dom-font-face" title="dom-font-face"><code>face</code></dfn>, and <dfn id="dom-font-size" title="dom-font-size"><code>size</code></dfn> IDL attributes of
34163: the <code><a href="#font">font</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34164: respective content attributes of the same name.</p>
34165:
34166: <hr><pre class="idl">partial interface <a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a> {
34167: attribute DOMString <a href="#dom-hx-align" title="dom-hx-align">align</a>;
34168: };</pre>
34169:
34170: <p>The <dfn id="dom-hx-align" title="dom-hx-align"><code>align</code></dfn> IDL
34171: attribute of the <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>–<code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code> elements must
34172: <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the same name.</p>
34173:
34174: <hr><p class="note">The <dfn id="dom-head-profile" title="dom-head-profile"><code>profile</code></dfn> IDL attribute on
34175: <code><a href="the-head-element.html#the-head-element">head</a></code> elements (with the <code><a href="the-head-element.html#htmlheadelement">HTMLHeadElement</a></code>
34176: interface) is intentionally omitted. Unless so required by <a href="infrastructure.html#other-applicable-specifications" title="other applicable specifications">another applicable
34177: specification</a>, implementations would therefore not support
34178: this attribute. (It is mentioned here as it was defined in a
34179: previous version of the DOM specifications.)</p>
34180:
34181: <hr><pre class="idl">partial interface <a href="the-hr-element.html#htmlhrelement">HTMLHRElement</a> {
34182: attribute DOMString <a href="#dom-hr-align" title="dom-hr-align">align</a>;
34183: attribute DOMString <a href="#dom-hr-color" title="dom-hr-color">color</a>;
34184: attribute boolean <a href="#dom-hr-noshade" title="dom-hr-noShade">noShade</a>;
34185: attribute DOMString <a href="#dom-hr-size" title="dom-hr-size">size</a>;
34186: attribute DOMString <a href="#dom-hr-width" title="dom-hr-width">width</a>;
34187: };</pre>
34188:
34189: <p>The <dfn id="dom-hr-align" title="dom-hr-align"><code>align</code></dfn>, <dfn id="dom-hr-color" title="dom-hr-color"><code>color</code></dfn>, <dfn id="dom-hr-size" title="dom-hr-size"><code>size</code></dfn>, and <dfn id="dom-hr-width" title="dom-hr-width"><code>width</code></dfn> IDL attributes of the
34190: <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective
34191: content attributes of the same name.</p>
34192:
34193: <p>The <dfn id="dom-hr-noshade" title="dom-hr-noShade"><code>noShade</code></dfn> IDL
34194: attribute of the <code><a href="the-hr-element.html#the-hr-element">hr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34195: the element's <code title="attr-hr-noshade"><a href="#attr-hr-noshade">noshade</a></code> content
34196: attribute.</p>
34197:
34198: <hr><pre class="idl">partial interface <a href="the-html-element.html#htmlhtmlelement">HTMLHtmlElement</a> {
34199: attribute DOMString <a href="#dom-html-version" title="dom-html-version">version</a>;
34200: };</pre>
34201:
34202: <p>The <dfn id="dom-html-version" title="dom-html-version"><code>version</code></dfn> IDL
34203: attribute of the <code><a href="the-html-element.html#the-html-element">html</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34204: the content attribute of the same name.</p>
34205:
34206: <hr><pre class="idl">partial interface <a href="the-iframe-element.html#htmliframeelement">HTMLIFrameElement</a> {
34207: attribute DOMString <a href="#dom-iframe-align" title="dom-iframe-align">align</a>;
34208: attribute DOMString <a href="#dom-iframe-scrolling" title="dom-iframe-scrolling">scrolling</a>;
34209: attribute DOMString <a href="#dom-iframe-frameborder" title="dom-iframe-frameBorder">frameBorder</a>;
34210: attribute DOMString <a href="#dom-iframe-longdesc" title="dom-iframe-longDesc">longDesc</a>;
34211:
34212: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-iframe-marginheight" title="dom-iframe-marginHeight">marginHeight</a>;
34213: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-iframe-marginwidth" title="dom-iframe-marginWidth">marginWidth</a>;
34214: };</pre>
34215:
34216: <p>The <dfn id="dom-iframe-align" title="dom-iframe-align"><code>align</code></dfn> and
34217: <dfn id="dom-iframe-scrolling" title="dom-iframe-scrolling"><code>scrolling</code></dfn> IDL
34218: attributes of the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element must
34219: <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the same
34220: name.</p>
34221:
34222: <p>The <dfn id="dom-iframe-frameborder" title="dom-iframe-frameBorder"><code>frameBorder</code></dfn> IDL
34223: attribute of the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element must
34224: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-iframe-frameborder"><a href="#attr-iframe-frameborder">frameborder</a></code> content
34225: attribute.</p>
34226:
34227: <p>The <dfn id="dom-iframe-longdesc" title="dom-iframe-longDesc"><code>longDesc</code></dfn>
34228: IDL attribute of the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element must
34229: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-iframe-longdesc"><a href="#attr-iframe-longdesc">longdesc</a></code> content attribute,
34230: which for the purposes of reflection is defined as containing a
34231: <a href="urls.html#url">URL</a>.</p>
34232:
34233: <p>The <dfn id="dom-iframe-marginheight" title="dom-iframe-marginHeight"><code>marginHeight</code></dfn> IDL
34234: attribute of the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element must
34235: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-iframe-marginheight"><a href="#attr-iframe-marginheight">marginheight</a></code> content
34236: attribute.</p>
34237:
34238: <p>The <dfn id="dom-iframe-marginwidth" title="dom-iframe-marginWidth"><code>marginWidth</code></dfn> IDL
34239: attribute of the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code> element must
34240: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-iframe-marginwidth"><a href="#attr-iframe-marginwidth">marginwidth</a></code> content
34241: attribute.</p>
34242:
34243: <hr><pre class="idl">partial interface <a href="the-img-element.html#htmlimageelement">HTMLImageElement</a> {
34244: attribute DOMString <a href="#dom-img-name" title="dom-img-name">name</a>;
34245: attribute DOMString <a href="#dom-img-align" title="dom-img-align">align</a>;
34246: attribute unsigned long <a href="#dom-img-hspace" title="dom-img-hspace">hspace</a>;
34247: attribute unsigned long <a href="#dom-img-vspace" title="dom-img-vspace">vspace</a>;
34248: attribute DOMString <a href="#dom-img-longdesc" title="dom-img-longDesc">longDesc</a>;
34249:
34250: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-img-border" title="dom-img-border">border</a>;
34251: };</pre>
34252:
34253: <p>The <dfn id="dom-img-name" title="dom-img-name"><code>name</code></dfn>, <dfn id="dom-img-align" title="dom-img-align"><code>align</code></dfn>, <dfn id="dom-img-border" title="dom-img-border"><code>border</code></dfn>, <dfn id="dom-img-hspace" title="dom-img-hspace"><code>hspace</code></dfn>, and <dfn id="dom-img-vspace" title="dom-img-vspace"><code>vspace</code></dfn> IDL attributes of
34254: the <code><a href="the-img-element.html#the-img-element">img</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34255: respective content attributes of the same name.</p>
34256:
34257: <p>The <dfn id="dom-img-longdesc" title="dom-img-longDesc"><code>longDesc</code></dfn> IDL
34258: attribute of the <code><a href="the-img-element.html#the-img-element">img</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34259: the element's <code title="attr-img-longdesc"><a href="#attr-img-longdesc">longdesc</a></code>
34260: content attribute, which for the purposes of reflection is defined
34261: as containing a <a href="urls.html#url">URL</a>.</p>
34262:
34263: <!-- lowsrc is explicitly not given here, see http://www.w3.org/Bugs/Public/show_bug.cgi?id=10341 -->
34264:
34265: <hr><pre class="idl">partial interface <a href="the-input-element.html#htmlinputelement">HTMLInputElement</a> {
34266: attribute DOMString <a href="#dom-input-align" title="dom-input-align">align</a>;
34267: attribute DOMString <a href="#dom-input-usemap" title="dom-input-useMap">useMap</a>;
34268: };</pre>
34269:
34270: <p>The <dfn id="dom-input-align" title="dom-input-align"><code>align</code></dfn> IDL
34271: attribute of the <code><a href="the-input-element.html#the-input-element">input</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34272: the content attribute of the same name.</p>
34273:
34274: <p>The <dfn id="dom-input-usemap" title="dom-input-useMap"><code>useMap</code></dfn> IDL
34275: attribute of the <code><a href="the-input-element.html#the-input-element">input</a></code> element must
34276: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-input-usemap"><a href="#attr-input-usemap">usemap</a></code> content attribute.</p>
34277:
34278: <hr><pre class="idl">partial interface <a href="the-legend-element.html#htmllegendelement">HTMLLegendElement</a> {
34279: attribute DOMString <a href="#dom-legend-align" title="dom-legend-align">align</a>;
34280: };</pre>
34281:
34282: <p>The <dfn id="dom-legend-align" title="dom-legend-align"><code>align</code></dfn> IDL
34283: attribute of the <code><a href="the-legend-element.html#the-legend-element">legend</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34284: the content attribute of the same name.</p>
34285:
34286: <hr><pre class="idl">partial interface <a href="the-li-element.html#htmllielement">HTMLLIElement</a> {
34287: attribute DOMString <a href="#dom-li-type" title="dom-li-type">type</a>;
34288: };</pre>
34289:
34290: <p>The <dfn id="dom-li-type" title="dom-li-type"><code>type</code></dfn> IDL
34291: attribute of the <code><a href="the-li-element.html#the-li-element">li</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34292: the content attribute of the same name.</p>
34293:
34294: <hr><pre class="idl">partial interface <a href="the-link-element.html#htmllinkelement">HTMLLinkElement</a> {
34295: attribute DOMString <a href="#dom-link-charset" title="dom-link-charset">charset</a>;
34296: attribute DOMString <a href="#dom-link-rev" title="dom-link-rev">rev</a>;
34297: attribute DOMString <a href="#dom-link-target" title="dom-link-target">target</a>;
34298: };</pre>
34299:
34300: <p>The <dfn id="dom-link-charset" title="dom-link-charset"><code>charset</code></dfn>,
34301: <dfn id="dom-link-rev" title="dom-link-rev"><code>rev</code></dfn>, and <dfn id="dom-link-target" title="dom-link-target"><code>target</code></dfn> IDL attributes of
34302: the <code><a href="the-link-element.html#the-link-element">link</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34303: respective content attributes of the same name.</p>
34304:
34305: <hr><p>User agents must treat <code><a href="#listing">listing</a></code> elements in a manner
34306: equivalent to <code><a href="the-pre-element.html#the-pre-element">pre</a></code> elements in terms of semantics and
34307: for purposes of rendering.</p>
34308:
34309: <hr><pre class="idl">partial interface <a href="#htmlmenuelement">HTMLMenuElement</a> {
34310: attribute boolean <a href="#dom-menu-compact" title="dom-menu-compact">compact</a>;
34311: };</pre>
34312:
34313: <p>The <dfn id="dom-menu-compact" title="dom-menu-compact"><code>compact</code></dfn> IDL
34314: attribute of the <code><a href="#the-menu-element">menu</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34315: the content attribute of the same name.</p>
34316:
34317: <hr><pre class="idl">partial interface <a href="the-meta-element.html#htmlmetaelement">HTMLMetaElement</a> {
34318: attribute DOMString <a href="#dom-meta-scheme" title="dom-meta-scheme">scheme</a>;
34319: };</pre>
34320:
34321: <p>User agents may treat the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> content attribute on the
34322: <code><a href="the-meta-element.html#the-meta-element">meta</a></code> element as an extension of the element's <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">name</a></code> content attribute when processing
34323: a <code><a href="the-meta-element.html#the-meta-element">meta</a></code> element with a <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">name</a></code> attribute whose value is one that
34324: the user agent recognizes as supporting the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> attribute.</p>
34325:
34326: <p>User agents are encouraged to ignore the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> attribute and instead process
34327: the value given to the metadata name as if it had been specified for
34328: each expected value of the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> attribute.</p>
34329:
34330: <div class="example">
34331:
34332: <p>For example, if the user agent acts on <code><a href="the-meta-element.html#the-meta-element">meta</a></code>
34333: elements with <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">name</a></code> attributes
34334: having the value "eGMS.subject.keyword", and knows that the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> attribute is used with this
34335: metadata name, then it could take the <code title="attr-meta-scheme"><a href="#attr-meta-scheme">scheme</a></code> attribute into account,
34336: acting as if it was an extension of the <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">name</a></code> attribute. Thus the following
34337: two <code><a href="the-meta-element.html#the-meta-element">meta</a></code> elements could be treated as two elements
34338: giving values for two different metadata names, one consisting of a
34339: combination of "eGMS.subject.keyword" and "LGCL", and the other
34340: consisting of a combination of "eGMS.subject.keyword" and
34341: "ORLY":</p>
34342:
34343: <pre class="bad"><!-- this markup is invalid -->
34344: <meta name="eGMS.subject.keyword" scheme="LGCL" content="Abandoned vehicles">
34345: <meta name="eGMS.subject.keyword" scheme="ORLY" content="Mah car: kthxbye"></pre>
34346:
34347: <p>The recommended processing of this markup, however, would be
34348: equivalent to the following:</p>
34349:
34350: <pre><meta name="eGMS.subject.keyword" content="Abandoned vehicles">
34351: <meta name="eGMS.subject.keyword" content="Mah car: kthxbye"></pre>
34352:
34353: </div>
34354:
34355: <p>The <dfn id="dom-meta-scheme" title="dom-meta-scheme"><code>scheme</code></dfn> IDL
34356: attribute of the <code><a href="the-meta-element.html#the-meta-element">meta</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34357: the content attribute of the same name.</p>
34358:
34359: <hr><pre class="idl">partial interface <a href="the-object-element.html#htmlobjectelement">HTMLObjectElement</a> {
34360: attribute DOMString <a href="#dom-object-align" title="dom-object-align">align</a>;
34361: attribute DOMString <a href="#dom-object-archive" title="dom-object-archive">archive</a>;
34362: attribute DOMString <a href="#dom-object-code" title="dom-object-code">code</a>;
34363: attribute boolean <a href="#dom-object-declare" title="dom-object-declare">declare</a>;
34364: attribute unsigned long <a href="#dom-object-hspace" title="dom-object-hspace">hspace</a>;
34365: attribute DOMString <a href="#dom-object-standby" title="dom-object-standby">standby</a>;
34366: attribute unsigned long <a href="#dom-object-vspace" title="dom-object-vspace">vspace</a>;
34367: attribute DOMString <a href="#dom-object-codebase" title="dom-object-codeBase">codeBase</a>;
34368: attribute DOMString <a href="#dom-object-codetype" title="dom-object-codeType">codeType</a>;
34369:
34370: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-object-border" title="dom-object-border">border</a>;
34371: };</pre>
34372:
34373: <p>The <dfn id="dom-object-align" title="dom-object-align"><code>align</code></dfn>, <dfn id="dom-object-archive" title="dom-object-archive"><code>archive</code></dfn>, <dfn id="dom-object-border" title="dom-object-border"><code>border</code></dfn>, <dfn id="dom-object-code" title="dom-object-code"><code>code</code></dfn>, <dfn id="dom-object-declare" title="dom-object-declare"><code>declare</code></dfn>, <dfn id="dom-object-hspace" title="dom-object-hspace"><code>hspace</code></dfn>, <dfn id="dom-object-standby" title="dom-object-standby"><code>standby</code></dfn>, and <dfn id="dom-object-vspace" title="dom-object-vspace"><code>vspace</code></dfn> IDL attributes
34374: of the <code><a href="the-object-element.html#the-object-element">object</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34375: respective content attributes of the same name.</p>
34376:
34377: <p>The <dfn id="dom-object-codebase" title="dom-object-codeBase"><code>codeBase</code></dfn>
34378: IDL attribute of the <code><a href="the-object-element.html#the-object-element">object</a></code> element must
34379: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-object-codebase"><a href="#attr-object-codebase">codebase</a></code> content attribute,
34380: which for the purposes of reflection is defined as containing a
34381: <a href="urls.html#url">URL</a>.</p>
34382:
34383: <p>The <dfn id="dom-object-codetype" title="dom-object-codeType"><code>codeType</code></dfn> IDL
34384: attribute of the <code><a href="the-object-element.html#the-object-element">object</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34385: the element's <code title="attr-object-codetype"><a href="#attr-object-codetype">codetype</a></code> content
34386: attribute.</p>
34387:
34388: <hr><pre class="idl">partial interface <a href="the-ol-element.html#htmlolistelement">HTMLOListElement</a> {
34389: attribute boolean <a href="#dom-ol-compact" title="dom-ol-compact">compact</a>;
34390: };</pre>
34391:
34392: <p>The <dfn id="dom-ol-compact" title="dom-ol-compact"><code>compact</code></dfn> IDL
34393: attribute of the <code><a href="the-ol-element.html#the-ol-element">ol</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34394: the content attribute of the same name.</p>
34395:
34396: <hr><pre class="idl">partial interface <a href="the-p-element.html#htmlparagraphelement">HTMLParagraphElement</a> {
34397: attribute DOMString <a href="#dom-p-align" title="dom-p-align">align</a>;
34398: };</pre>
34399:
34400: <p>The <dfn id="dom-p-align" title="dom-p-align"><code>align</code></dfn> IDL
34401: attribute of the <code><a href="the-p-element.html#the-p-element">p</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34402: the content attribute of the same name.</p>
34403:
34404: <hr><pre class="idl">partial interface <a href="the-param-element.html#htmlparamelement">HTMLParamElement</a> {
34405: attribute DOMString <a href="#dom-param-type" title="dom-param-type">type</a>;
34406: attribute DOMString <a href="#dom-param-valuetype" title="dom-param-valueType">valueType</a>;
34407: };</pre>
34408:
34409: <p>The <dfn id="dom-param-type" title="dom-param-type"><code>type</code></dfn> IDL
34410: attribute of the <code><a href="the-param-element.html#the-param-element">param</a></code> element must
34411: <a href="common-dom-interfaces.html#reflect">reflect</a> the content attribute of the same name.</p>
34412:
34413: <p>The <dfn id="dom-param-valuetype" title="dom-param-valueType"><code>valueType</code></dfn>
34414: IDL attribute of the <code><a href="the-param-element.html#the-param-element">param</a></code> element must
34415: <a href="common-dom-interfaces.html#reflect">reflect</a> the element's <code title="attr-param-valuetype"><a href="#attr-param-valuetype">valuetype</a></code> content attribute.</p>
34416:
34417: <hr><p>User agents must treat <code><a href="#plaintext">plaintext</a></code> elements in a
34418: manner equivalent to <code><a href="the-pre-element.html#the-pre-element">pre</a></code> elements in terms of semantics
34419: and for purposes of rendering. (The parser has special behavior for
34420: this element, though.)</p>
34421:
34422: <hr><pre class="idl">partial interface <a href="the-pre-element.html#htmlpreelement">HTMLPreElement</a> {
34423: attribute long <a href="#dom-pre-width" title="dom-pre-width">width</a>;
34424: };</pre>
34425:
34426: <p>The <dfn id="dom-pre-width" title="dom-pre-width"><code>width</code></dfn> IDL
34427: attribute of the <code><a href="the-pre-element.html#the-pre-element">pre</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34428: the content attribute of the same name.</p>
34429:
34430: <hr><pre class="idl">partial interface <a href="the-script-element.html#htmlscriptelement">HTMLScriptElement</a> {
34431: attribute DOMString <a href="#dom-script-event" title="dom-script-event">event</a>;
34432: attribute DOMString <a href="#dom-script-htmlfor" title="dom-script-htmlFor">htmlFor</a>;
34433: };</pre>
34434:
34435: <p>The <dfn id="dom-script-event" title="dom-script-event"><code>event</code></dfn> and
34436: <dfn id="dom-script-htmlfor" title="dom-script-htmlFor"><code>htmlFor</code></dfn> IDL
34437: attributes of the <code><a href="the-script-element.html#the-script-element">script</a></code> element must return the empty
34438: string on getting, and do nothing on setting.</p>
34439:
34440: <hr><pre class="idl">partial interface <a href="the-table-element.html#htmltableelement">HTMLTableElement</a> {
34441: attribute DOMString <a href="#dom-table-align" title="dom-table-align">align</a>;
34442: attribute DOMString <a href="#dom-table-frame" title="dom-table-frame">frame</a>;
34443: attribute DOMString <a href="#dom-table-rules" title="dom-table-rules">rules</a>;
34444: attribute DOMString <a href="#dom-table-summary" title="dom-table-summary">summary</a>;
34445: attribute DOMString <a href="#dom-table-width" title="dom-table-width">width</a>;
34446:
34447: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-table-bgcolor" title="dom-table-bgColor">bgColor</a>;
34448: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-table-cellpadding" title="dom-table-cellPadding">cellPadding</a>;
34449: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-table-cellspacing" title="dom-table-cellSpacing">cellSpacing</a>;
34450: };</pre>
34451:
34452: <p>The <dfn id="dom-table-align" title="dom-table-align"><code>align</code></dfn>, <dfn id="dom-table-frame" title="dom-table-frame"><code>frame</code></dfn>, <dfn id="dom-table-summary" title="dom-table-summary"><code>summary</code></dfn>, <dfn id="dom-table-rules" title="dom-table-rules"><code>rules</code></dfn>, and <dfn id="dom-table-width" title="dom-table-width"><code>width</code></dfn>, IDL attributes of
34453: the <code><a href="the-table-element.html#the-table-element">table</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34454: respective content attributes of the same name.</p>
34455:
34456: <p>The <dfn id="dom-table-bgcolor" title="dom-table-bgColor"><code>bgColor</code></dfn> IDL
34457: attribute of the <code><a href="the-table-element.html#the-table-element">table</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34458: the element's <code title="attr-table-bgcolor"><a href="#attr-table-bgcolor">bgcolor</a></code> content
34459: attribute.</p>
34460:
34461: <p>The <dfn id="dom-table-cellpadding" title="dom-table-cellPadding"><code>cellPadding</code></dfn> IDL
34462: attribute of the <code><a href="the-table-element.html#the-table-element">table</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34463: the element's <code title="attr-table-cellpadding"><a href="#attr-table-cellpadding">cellpadding</a></code> content
34464: attribute.</p>
34465:
34466: <p>The <dfn id="dom-table-cellspacing" title="dom-table-cellSpacing"><code>cellSpacing</code></dfn> IDL
34467: attribute of the <code><a href="the-table-element.html#the-table-element">table</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34468: the element's <code title="attr-table-cellspacing"><a href="#attr-table-cellspacing">cellspacing</a></code> content
34469: attribute.</p>
34470:
34471: <hr><pre class="idl">partial interface <a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a> {
34472: attribute DOMString <a href="#dom-tbody-align" title="dom-tbody-align">align</a>;
34473: attribute DOMString <a href="#dom-tbody-ch" title="dom-tbody-ch">ch</a>;
34474: attribute DOMString <a href="#dom-tbody-choff" title="dom-tbody-chOff">chOff</a>;
34475: attribute DOMString <a href="#dom-tbody-valign" title="dom-tbody-vAlign">vAlign</a>;
34476: };</pre>
34477:
34478: <p>The <dfn id="dom-tbody-align" title="dom-tbody-align"><code>align</code></dfn> IDL
34479: attribute of the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and
34480: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements must <a href="common-dom-interfaces.html#reflect">reflect</a> the content
34481: attribute of the same name.</p>
34482:
34483: <p>The <dfn id="dom-tbody-ch" title="dom-tbody-ch"><code>ch</code></dfn> IDL attribute
34484: of the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and
34485: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements must <a href="common-dom-interfaces.html#reflect">reflect</a> the elements'
34486: <code title="attr-tbody-char"><a href="#attr-tbody-char">char</a></code> content attributes.</p>
34487:
34488: <p>The <dfn id="dom-tbody-choff" title="dom-tbody-chOff"><code>chOff</code></dfn> IDL
34489: attribute of the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and
34490: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> elements must <a href="common-dom-interfaces.html#reflect">reflect</a> the elements'
34491: <code title="attr-tbody-charoff"><a href="#attr-tbody-charoff">charoff</a></code> content attributes.</p>
34492:
34493: <p>The <dfn id="dom-tbody-valign" title="dom-tbody-vAlign"><code>vAlign</code></dfn> IDL
34494: attribute of the <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>, <code><a href="the-thead-element.html#the-thead-element">thead</a></code>, and
34495: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the elements'
34496: <code title="attr-tbody-valign"><a href="#attr-tbody-valign">valign</a></code> content
34497: attributes.</p>
34498:
34499: <hr><pre class="idl">partial interface <a href="attributes-common-to-td-and-th-elements.html#htmltablecellelement">HTMLTableCellElement</a> {
34500: attribute DOMString <a href="#dom-tdth-abbr" title="dom-tdth-abbr">abbr</a>;
34501: attribute DOMString <a href="#dom-tdth-align" title="dom-tdth-align">align</a>;
34502: attribute DOMString <a href="#dom-tdth-axis" title="dom-tdth-axis">axis</a>;
34503: attribute DOMString <a href="#dom-tdth-height" title="dom-tdth-height">height</a>;
34504: attribute DOMString <a href="#dom-tdth-width" title="dom-tdth-width">width</a>;
34505:
34506: attribute DOMString <a href="#dom-tdth-ch" title="dom-tdth-ch">ch</a>;
34507: attribute DOMString <a href="#dom-tdth-choff" title="dom-tdth-chOff">chOff</a>;
34508: attribute boolean <a href="#dom-tdth-nowrap" title="dom-tdth-noWrap">noWrap</a>;
34509: attribute DOMString <a href="#dom-tdth-valign" title="dom-tdth-vAlign">vAlign</a>;
34510:
34511: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-tdth-bgcolor" title="dom-tdth-bgColor">bgColor</a>;
34512: };</pre>
34513:
34514: <p>The <dfn id="dom-tdth-abbr" title="dom-tdth-abbr"><code>abbr</code></dfn>, <dfn id="dom-tdth-align" title="dom-tdth-align"><code>align</code></dfn>, <dfn id="dom-tdth-axis" title="dom-tdth-axis"><code>axis</code></dfn>, <dfn id="dom-tdth-height" title="dom-tdth-height"><code>height</code></dfn>, and <dfn id="dom-tdth-width" title="dom-tdth-width"><code>width</code></dfn> IDL attributes of
34515: the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements must
34516: <a href="common-dom-interfaces.html#reflect">reflect</a> the respective content attributes of the same
34517: name.</p>
34518:
34519: <p>The <dfn id="dom-tdth-ch" title="dom-tdth-ch"><code>ch</code></dfn> IDL
34520: attribute of the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements must
34521: <a href="common-dom-interfaces.html#reflect">reflect</a> the elements' <code title="attr-tdth-char"><a href="#attr-tdth-char">char</a></code> content attributes.</p>
34522:
34523: <p>The <dfn id="dom-tdth-choff" title="dom-tdth-chOff"><code>chOff</code></dfn> IDL
34524: attribute of the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements must
34525: <a href="common-dom-interfaces.html#reflect">reflect</a> the elements' <code title="attr-tdth-charoff"><a href="#attr-tdth-charoff">charoff</a></code> content attributes.</p>
34526:
34527: <p>The <dfn id="dom-tdth-nowrap" title="dom-tdth-noWrap"><code>noWrap</code></dfn> IDL
34528: attribute of the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements must
34529: <a href="common-dom-interfaces.html#reflect">reflect</a> the elements' <code title="attr-tdth-nowrap"><a href="#attr-tdth-nowrap">nowrap</a></code> content attributes.</p>
34530:
34531: <p>The <dfn id="dom-tdth-valign" title="dom-tdth-vAlign"><code>vAlign</code></dfn> IDL
34532: attribute of the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> element must
34533: <a href="common-dom-interfaces.html#reflect">reflect</a> the elements' <code title="attr-tdth-valign"><a href="#attr-tdth-valign">valign</a></code> content attributes.</p>
34534:
34535: <p>The <dfn id="dom-tdth-bgcolor" title="dom-tdth-bgColor"><code>bgColor</code></dfn> IDL
34536: attribute of the <code><a href="the-td-element.html#the-td-element">td</a></code> and <code><a href="the-th-element.html#the-th-element">th</a></code> elements must
34537: <a href="common-dom-interfaces.html#reflect">reflect</a> the elements' <code title="attr-tdth-bgcolor"><a href="#attr-tdth-bgcolor">bgcolor</a></code> content attributes.</p>
34538:
34539: <hr><pre class="idl">partial interface <a href="the-tr-element.html#htmltablerowelement">HTMLTableRowElement</a> {
34540: attribute DOMString <a href="#dom-tr-align" title="dom-tr-align">align</a>;
34541: attribute DOMString <a href="#dom-tr-ch" title="dom-tr-ch">ch</a>;
34542: attribute DOMString <a href="#dom-tr-choff" title="dom-tr-chOff">chOff</a>;
34543: attribute DOMString <a href="#dom-tr-valign" title="dom-tr-vAlign">vAlign</a>;
34544:
34545: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-tr-bgcolor" title="dom-tr-bgColor">bgColor</a>;
34546: };</pre>
34547:
34548: <p>The <dfn id="dom-tr-align" title="dom-tr-align"><code>align</code></dfn> IDL
34549: attribute of the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34550: the content attribute of the same name.</p>
34551:
34552: <p>The <dfn id="dom-tr-ch" title="dom-tr-ch"><code>ch</code></dfn> IDL attribute of
34553: the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the element's
34554: <code title="attr-tr-char"><a href="#attr-tr-char">char</a></code> content attribute.</p>
34555:
34556: <p>The <dfn id="dom-tr-choff" title="dom-tr-chOff"><code>chOff</code></dfn> IDL
34557: attribute of the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34558: the element's <code title="attr-tr-charoff"><a href="#attr-tr-charoff">charoff</a></code> content
34559: attribute.</p>
34560:
34561: <p>The <dfn id="dom-tr-valign" title="dom-tr-vAlign"><code>vAlign</code></dfn> IDL
34562: attribute of the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34563: the element's <code title="attr-tr-valign"><a href="#attr-tr-valign">valign</a></code> content
34564: attribute.</p>
34565:
34566: <p>The <dfn id="dom-tr-bgcolor" title="dom-tr-bgColor"><code>bgColor</code></dfn> IDL
34567: attribute of the <code><a href="the-tr-element.html#the-tr-element">tr</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a>
34568: the element's <code title="attr-tr-bgcolor"><a href="#attr-tr-bgcolor">bgcolor</a></code> content
34569: attribute.</p>
34570:
34571: <hr><pre class="idl">partial interface <a href="the-ul-element.html#htmlulistelement">HTMLUListElement</a> {
34572: attribute boolean <a href="#dom-ul-compact" title="dom-ul-compact">compact</a>;
34573: attribute DOMString <a href="#dom-ul-type" title="dom-ul-type">type</a>;
34574: };</pre>
34575:
34576: <p>The <dfn id="dom-ul-compact" title="dom-ul-compact"><code>compact</code></dfn> and
34577: <dfn id="dom-ul-type" title="dom-ul-type"><code>type</code></dfn> IDL attributes of
34578: the <code><a href="the-ul-element.html#the-ul-element">ul</a></code> element must <a href="common-dom-interfaces.html#reflect">reflect</a> the respective
34579: content attributes of the same name.</p>
34580:
34581: <hr><p>User agents must treat <code><a href="#xmp">xmp</a></code> elements in a manner
34582: equivalent to <code><a href="the-pre-element.html#the-pre-element">pre</a></code> elements in terms of semantics and
34583: for purposes of rendering. (The parser has special behavior for this
34584: element though.)</p>
34585:
34586: <hr><p>The <code><a href="#bgsound">bgsound</a></code>, <code><a href="#isindex-0">isindex</a></code>,
34587: <code><a href="#multicol">multicol</a></code>, <code><a href="#nextid">nextid</a></code>, <code><a href="#rb">rb</a></code>, and
34588: <code><a href="#spacer">spacer</a></code> elements must use the
34589: <code><a href="elements.html#htmlunknownelement">HTMLUnknownElement</a></code> interface.</p> <!-- has to be
34590: explicitly listed because technically we define the elements in the
34591: spec, albeit as obsolete, and then we say that only elements not
34592: defined in this spec use HTMLUnknownElement. -->
34593:
34594: <hr><pre class="idl">partial interface <a href="dom.html#document">Document</a> {
34595: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-document-fgcolor" title="dom-document-fgColor">fgColor</a>;
34596: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-document-linkcolor" title="dom-document-linkColor">linkColor</a>;
34597: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-document-vlinkcolor" title="dom-document-vlinkColor">vlinkColor</a>;
34598: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-document-alinkcolor" title="dom-document-alinkColor">alinkColor</a>;
34599: [TreatNullAs=EmptyString] attribute DOMString <a href="#dom-document-bgcolor" title="dom-document-bgColor">bgColor</a>;
34600:
34601: readonly attribute <a href="infrastructure.html#htmlcollection">HTMLCollection</a> <a href="#dom-document-anchors" title="dom-document-anchors">anchors</a>;
34602: readonly attribute <a href="infrastructure.html#htmlcollection">HTMLCollection</a> <a href="#dom-document-applets" title="dom-document-applets">applets</a>;
34603:
34604: void <a href="#dom-document-clear" title="dom-document-clear">clear</a>();
34605:
34606: readonly attribute <a href="common-dom-interfaces.html#htmlallcollection-0">HTMLAllCollection</a> <a href="#dom-document-all" title="dom-document-all">all</a>;
34607: };</pre>
34608:
34609: <p>The attributes of the <code><a href="dom.html#document">Document</a></code> object listed in the
34610: first column of the following table must <a href="common-dom-interfaces.html#reflect">reflect</a> the
34611: content attribute on <a href="dom.html#the-body-element-0">the body element</a> with the name
34612: given in the corresponding cell in the second column on the same
34613: row, if <a href="dom.html#the-body-element-0">the body element</a> is a <code><a href="the-body-element.html#the-body-element">body</a></code> element
34614: (as opposed to a <code><a href="#frameset">frameset</a></code> element). When there is no
34615: <a href="dom.html#the-body-element-0" title="the body element">body element</a> or if it is a
34616: <code><a href="#frameset">frameset</a></code> element, the attributes must instead return
34617: the empty string on getting and do nothing on setting.</p>
34618:
34619: <table><thead><tr><th> IDL attribute
34620: </th><th> Content attribute
34621: </th></tr></thead><tbody><tr><td><dfn id="dom-document-fgcolor" title="dom-document-fgColor"><code>fgColor</code></dfn>
34622: </td><td><code title="attr-body-text"><a href="#attr-body-text">text</a></code>
34623: </td></tr><tr><td><dfn id="dom-document-linkcolor" title="dom-document-linkColor"><code>linkColor</code></dfn>
34624: </td><td><code title="attr-body-link"><a href="#attr-body-link">link</a></code>
34625: </td></tr><tr><td><dfn id="dom-document-vlinkcolor" title="dom-document-vlinkColor"><code>vlinkColor</code></dfn>
34626: </td><td><code title="attr-body-vlink"><a href="#attr-body-vlink">vlink</a></code>
34627: </td></tr><tr><td><dfn id="dom-document-alinkcolor" title="dom-document-alinkColor"><code>alinkColor</code></dfn>
34628: </td><td><code title="attr-body-alink"><a href="#attr-body-alink">alink</a></code>
34629: </td></tr><tr><td><dfn id="dom-document-bgcolor" title="dom-document-bgColor"><code>bgColor</code></dfn>
34630: </td><td><code title="attr-body-bgcolor"><a href="#attr-body-bgcolor">bgcolor</a></code>
34631: </td></tr></tbody></table><hr><p>The <dfn id="dom-document-anchors" title="dom-document-anchors"><code>anchors</code></dfn>
34632: attribute must return an <code><a href="infrastructure.html#htmlcollection">HTMLCollection</a></code> rooted at the
34633: <code><a href="dom.html#document">Document</a></code> node, whose filter matches only <code><a href="the-a-element.html#the-a-element">a</a></code>
34634: elements with <code title="attr-a-name"><a href="#attr-a-name">name</a></code>
34635: attributes.</p>
34636:
34637: <p>The <dfn id="dom-document-applets" title="dom-document-applets"><code>applets</code></dfn>
34638: attribute must return an <code><a href="infrastructure.html#htmlcollection">HTMLCollection</a></code> rooted at the
34639: <code><a href="dom.html#document">Document</a></code> node, whose filter matches only
34640: <code><a href="#the-applet-element">applet</a></code> elements.</p>
34641:
34642: <p>The <dfn id="dom-document-clear" title="dom-document-clear"><code>clear()</code></dfn>
34643: method must do nothing.</p>
34644:
34645: <hr><p>The <dfn id="dom-document-all" title="dom-document-all"><code>all</code></dfn>
34646: attribute must return an <code><a href="common-dom-interfaces.html#htmlallcollection-0">HTMLAllCollection</a></code> rooted at the
34647: <code><a href="dom.html#document">Document</a></code> node, whose filter matches all elements.</p>
34648:
34649: <p>The object returned for <code title="dom-document-all"><a href="#dom-document-all">all</a></code>
34650: has several unusual behaviors:</p>
34651:
34652: <ul><li><p>The user agent must act as if the ToBoolean() operator in
34653: JavaScript converts the object returned for <code title="dom-document-all"><a href="#dom-document-all">all</a></code> to the false value.</p></li>
34654:
34655: <li><p>The user agent must act as if, for the purposes of the <code title="">==</code> and <code title="">!=</code> operators in
34656: JavaScript, the object returned for <code title="dom-document-all"><a href="#dom-document-all">all</a></code> is equal to the <code title="">undefined</code> value.</p></li>
34657:
34658: <li><p>The user agent must act such that the <code title="">typeof</code> operator in JavaScript returns the string
34659: <code title="">undefined</code> when applied to the object returned
34660: for <code title="dom-document-all"><a href="#dom-document-all">all</a></code>.</p></li>
34661:
34662: </ul><p class="note">These requirements are a <a href="introduction.html#willful-violation">willful
34663: violation</a> of the JavaScript specification current at the time
34664: of writing (ECMAScript edition 5). The JavaScript specification
34665: requires that the ToBoolean() operator convert all objects to the
34666: true value, and does not have provisions for objects acting as if
34667: they were <code title="">undefined</code> for the purposes of
34668: certain operators. This violation is motivated by a desire for
34669: compatibility with two classes of legacy content: one that uses the
34670: presence of <code title="dom-document-all"><a href="#dom-document-all">document.all</a></code> as a
34671: way to detect legacy user agents, and one that only supports those
34672: legacy user agents and uses the <code title="dom-document-all"><a href="#dom-document-all">document.all</a></code> object without testing
34673: for its presence first. <a href="#refsECMA262">[ECMA262]</a></p>
34674:
34675: </div>
34676:
34677:
34678:
34679: <h2 id="iana"><span class="secno">12 </span>IANA considerations</h2>
34680:
34681: <!-- http://www.w3.org/2002/06/registering-mediatype.html -->
34682:
34683:
34684: <h3 id="text/html"><span class="secno">12.1 </span><dfn><code>text/html</code></dfn></h3>
34685:
34686: <p>This registration is for community review and will be submitted
34687: to the IESG for review, approval, and registration with IANA.</p>
34688:
34689: <!--
34690: To: ietf-types@iana.org
34691: Subject: Registration of media type text/html
34692: -->
34693:
34694: <!--
34695: Obsoletes:
34696: http://tools.ietf.org/html/rfc2854
34697:
34698: Include a request to retire RFC 2854 persuant to section 6.4 of RFC 2026.
34699: -->
34700:
34701: <dl><dt>Type name:</dt>
34702: <dd>text</dd>
34703: <dt>Subtype name:</dt>
34704: <dd>html</dd>
34705: <dt>Required parameters:</dt>
34706: <dd>No required parameters</dd>
34707: <dt>Optional parameters:</dt>
34708: <dd>
34709: <dl><dt><code title="">charset</code></dt>
34710: <dd>
34711: <p>The <code title="">charset</code> parameter may be provided
34712: to definitively specify the <a href="infrastructure.html#document's-character-encoding">document's character
34713: encoding</a>, overriding any <a href="the-meta-element.html#character-encoding-declaration" title="character encoding
34714: declaration">character encoding declarations</a> in the
34715: document. The parameter's value must be the name of the
34716: character encoding used to serialize the file, must be a valid
34717: character encoding name, and must be an <a href="infrastructure.html#ascii-case-insensitive">ASCII
34718: case-insensitive</a> match for the <a href="infrastructure.html#preferred-mime-name">preferred MIME
34719: name</a> for that encoding. <a href="#refsIANACHARSET">[IANACHARSET]</a></p>
34720: </dd>
34721: </dl></dd>
34722: <dt>Encoding considerations:</dt>
34723: <dd>
34724: 8bit (see the section on <a href="the-meta-element.html#character-encoding-declaration" title="character encoding
34725: declaration">character encoding declarations</a>)
34726: </dd>
34727: <!--ADD-TOPIC:Security-->
34728: <dt>Security considerations:</dt>
34729: <dd>
34730:
34731: <p>Entire novels have been written about the security
34732: considerations that apply to HTML documents. Many are listed in
34733: this document, to which the reader is referred for more
34734: details. Some general concerns bear mentioning here, however:</p>
34735:
34736: <p>HTML is scripted language, and has a large number of APIs (some
34737: of which are described in this document). Script can expose the
34738: user to potential risks of information leakage, credential
34739: leakage, cross-site scripting attacks, cross-site request
34740: forgeries, and a host of other problems. While the designs in this
34741: specification are intended to be safe if implemented correctly, a
34742: full implementation is a massive undertaking and, as with any
34743: software, user agents are likely to have security bugs.</p>
34744:
34745: <p>Even without scripting, there are specific features in HTML
34746: which, for historical reasons, are required for broad
34747: compatibility with legacy content but that expose the user to
34748: unfortunate security problems. In particular, the <code><a href="the-img-element.html#the-img-element">img</a></code>
34749: element can be used in conjunction with some other features as a
34750: way to effect a port scan from the user's location on the
34751: Internet. This can expose local network topologies that the
34752: attacker would otherwise not be able to determine.</p>
34753:
34754: <p>HTML relies on a compartmentalization scheme sometimes known as
34755: the <i>same-origin policy</i>. An <a href="#origin-0">origin</a> in most
34756: cases consists of all the pages served from the same host, on the
34757: same port, using the same protocol.</p>
34758:
34759: <p>It is critical, therefore, to ensure that any untrusted content
34760: that forms part of a site be hosted on a different
34761: <a href="#origin-0">origin</a> than any sensitive content on that site.
34762: Untrusted content can easily spoof any other page on the same
34763: origin, read data from that origin, cause scripts in that origin
34764: to execute, submit forms to and from that origin even if they are
34765: protected from cross-site request forgery attacks by unique
34766: tokens, and make use of any third-party resources exposed to or
34767: rights granted to that origin.</p>
34768:
34769: </dd>
34770: <!--REMOVE-TOPIC:Security-->
34771: <dt>Interoperability considerations:</dt>
34772: <dd>
34773: Rules for processing both conforming and non-conforming content
34774: are defined in this specification.
34775: </dd>
34776: <dt>Published specification:</dt>
34777: <dd id="authors-using-html">
34778: This document is the relevant specification. Labeling a resource
34779: with the <code><a href="#text/html">text/html</a></code> type asserts that the resource is
34780: an <a href="infrastructure.html#html-documents" title="HTML documents">HTML document</a> using
34781: <a href="#syntax">the HTML syntax</a>.
34782: </dd>
34783: <dt>Applications that use this media type:</dt>
34784: <dd>
34785: Web browsers, tools for processing Web content, HTML authoring
34786: tools, search engines, validators.
34787: </dd>
34788: <dt>Additional information:</dt>
34789: <dd>
34790: <dl><dt>Magic number(s):</dt>
34791: <dd>No sequence of bytes can uniquely identify an HTML
34792: document. More information on detecting HTML documents is
34793: available in the Media Type Sniffing specification. <a href="#refsMIMESNIFF">[MIMESNIFF]</a></dd>
34794: <dt>File extension(s):</dt>
34795: <dd>"<code title="">html</code>" and "<code title="">htm</code>"
34796: are commonly, but certainly not exclusively, used as the
34797: extension for HTML documents.</dd>
34798: <dt>Macintosh file type code(s):</dt>
34799: <dd><code title="">TEXT</code></dd>
34800: </dl></dd>
34801: <dt>Person & email address to contact for further information:</dt>
34802: <dd>Ian Hickson <ian@hixie.ch></dd>
34803: <dt>Intended usage:</dt>
34804: <dd>Common</dd>
34805: <dt>Restrictions on usage:</dt>
34806: <dd>No restrictions apply.</dd>
34807: <dt>Author:</dt>
34808: <dd>Ian Hickson <ian@hixie.ch></dd>
34809: <dt>Change controller:</dt>
34810: <dd>W3C</dd>
34811: </dl><p>Fragment identifiers used with <code><a href="#text/html">text/html</a></code> resources
34812: either refer to <a href="#the-indicated-part-of-the-document">the indicated part of the document</a> or
34813: provide state information for in-page scripts.</p>
34814:
34815:
34816:
34817:
34818: <h3 id="multipart/x-mixed-replace"><span class="secno">12.2 </span><dfn><code>multipart/x-mixed-replace</code></dfn></h3>
34819:
34820: <p>This registration is for community review and will be submitted
34821: to the IESG for review, approval, and registration with IANA.</p>
34822:
34823: <!--
34824: To: ietf-types@iana.org
34825: Subject: Registration of media type multipart/x-mixed-replace
34826: -->
34827:
34828: <dl><dt>Type name:</dt>
34829: <dd>multipart</dd>
34830: <dt>Subtype name:</dt>
34831: <dd>x-mixed-replace</dd>
34832: <dt>Required parameters:</dt>
34833: <dd>
34834: <ul class="brief"><li><code title="">boundary</code> (defined in RFC2046) <a href="#refsRFC2046">[RFC2046]</a>
34835: </li></ul></dd>
34836: <dt>Optional parameters:</dt>
34837: <dd>No optional parameters.</dd>
34838: <dt>Encoding considerations:</dt>
34839: <dd>binary</dd>
34840: <!--ADD-TOPIC:Security-->
34841: <dt>Security considerations:</dt>
34842: <dd>
34843: Subresources of a <code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code>
34844: resource can be of any type, including types with non-trivial
34845: security implications such as <code><a href="#text/html">text/html</a></code>.
34846: </dd>
34847: <!--REMOVE-TOPIC:Security-->
34848: <dt>Interoperability considerations:</dt>
34849: <dd>
34850: None.
34851: </dd>
34852: <dt>Published specification:</dt>
34853: <dd>
34854: This specification describes processing rules for Web browsers.
34855: Conformance requirements for generating resources with this type are the same as for <code>multipart/mixed</code>. <a href="#refsRFC2046">[RFC2046]</a>
34856: </dd>
34857: <dt>Applications that use this media type:</dt>
34858: <dd>
34859: This type is intended to be used in resources generated by Web servers, for consumption by Web browsers.
34860: </dd>
34861: <dt>Additional information:</dt>
34862: <dd>
34863: <dl><dt>Magic number(s):</dt>
34864: <dd>No sequence of bytes can uniquely identify a <code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code> resource.</dd>
34865: <dt>File extension(s):</dt>
34866: <dd>No specific file extensions are recommended for this type.</dd>
34867: <dt>Macintosh file type code(s):</dt>
34868: <dd>No specific Macintosh file type codes are recommended for this type.</dd>
34869: </dl></dd>
34870: <dt>Person & email address to contact for further information:</dt>
34871: <dd>Ian Hickson <ian@hixie.ch></dd>
34872: <dt>Intended usage:</dt>
34873: <dd>Common</dd>
34874: <dt>Restrictions on usage:</dt>
34875: <dd>No restrictions apply.</dd>
34876: <dt>Author:</dt>
34877: <dd>Ian Hickson <ian@hixie.ch></dd>
34878: <dt>Change controller:</dt>
34879: <dd>W3C</dd>
34880: </dl><p>Fragment identifiers used with
34881: <code><a href="#multipart/x-mixed-replace">multipart/x-mixed-replace</a></code> resources apply to each body
34882: part as defined by the type used by that body part.</p>
34883:
34884:
34885: <h3 id="application/xhtml+xml"><span class="secno">12.3 </span><dfn><code>application/xhtml+xml</code></dfn></h3>
34886:
34887: <p>This registration is for community review and will be submitted
34888: to the IESG for review, approval, and registration with IANA.</p>
34889:
34890: <!--
34891: To: ietf-types@iana.org
34892: Subject: Registration of media type application/xhtml+xml
34893: -->
34894:
34895: <!--
34896: Obsoletes:
34897: http://tools.ietf.org/html/rfc3236
34898: -->
34899:
34900: <dl><dt>Type name:</dt>
34901: <dd>application</dd>
34902: <dt>Subtype name:</dt>
34903: <dd>xhtml+xml</dd>
34904: <dt>Required parameters:</dt>
34905: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34906: <dt>Optional parameters:</dt>
34907: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34908: <dt>Encoding considerations:</dt>
34909: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34910: <!--ADD-TOPIC:Security-->
34911: <dt>Security considerations:</dt>
34912: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34913: <!--REMOVE-TOPIC:Security-->
34914: <dt>Interoperability considerations:</dt>
34915: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34916: <dt id="authors-using-xhtml">Published specification:</dt>
34917: <dd>
34918: Labeling a resource with the <code><a href="#application/xhtml+xml">application/xhtml+xml</a></code>
34919: type asserts that the resource is an XML document that likely has
34920: a root element from the <a href="namespaces.html#html-namespace-0">HTML namespace</a>. Thus, the
34921: relevant specifications are the XML specification, the Namespaces
34922: in XML specification, and this specification. <a href="#refsXML">[XML]</a> <a href="#refsXMLNS">[XMLNS]</a>
34923: </dd>
34924: <dt>Applications that use this media type:</dt>
34925: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34926: <dt>Additional information:</dt>
34927: <dd>
34928: <dl><dt>Magic number(s):</dt>
34929: <dd>Same as for <code>application/xml</code> <a href="#refsRFC3023">[RFC3023]</a></dd>
34930: <dt>File extension(s):</dt>
34931: <dd>"<code title="">xhtml</code>" and "<code title="">xht</code>"
34932: are sometimes used as extensions for XML resources that have a
34933: root element from the <a href="namespaces.html#html-namespace-0">HTML namespace</a>.</dd>
34934: <dt>Macintosh file type code(s):</dt>
34935: <dd><code title="">TEXT</code></dd>
34936: </dl></dd>
34937: <dt>Person & email address to contact for further information:</dt>
34938: <dd>Ian Hickson <ian@hixie.ch></dd>
34939: <dt>Intended usage:</dt>
34940: <dd>Common</dd>
34941: <dt>Restrictions on usage:</dt>
34942: <dd>No restrictions apply.</dd>
34943: <dt>Author:</dt>
34944: <dd>Ian Hickson <ian@hixie.ch></dd>
34945: <dt>Change controller:</dt>
34946: <dd>W3C</dd>
34947: </dl><p>Fragment identifiers used with <code><a href="#application/xhtml+xml">application/xhtml+xml</a></code>
34948: resources have the same semantics as with any <a href="infrastructure.html#xml-mime-type">XML MIME
34949: type</a>. <a href="#refsRFC3023">[RFC3023]</a></p>
34950:
34951:
34952: <h3 id="application/x-www-form-urlencoded"><span class="secno">12.4 </span><dfn><code>application/x-www-form-urlencoded</code></dfn></h3>
34953:
34954: <p>This registration is for community review and will be submitted
34955: to the IESG for review, approval, and registration with IANA.</p>
34956:
34957: <!--
34958: To: ietf-types@iana.org
34959: Subject: Registration of media type application/x-www-form-urlencoded
34960: -->
34961:
34962: <dl><dt>Type name:</dt>
34963: <dd>application</dd>
34964: <dt>Subtype name:</dt>
34965: <dd>x-www-form-urlencoded</dd>
34966: <dt>Required parameters:</dt>
34967: <dd>No parameters</dd>
34968: <dt>Optional parameters:</dt>
34969: <dd>No parameters</dd>
34970: <dt>Encoding considerations:</dt>
34971: <dd>7bit (US-ASCII encoding of octets that themselves can be encoding text using any <a href="infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>)</dd>
34972: <!--ADD-TOPIC:Security-->
34973: <dt>Security considerations:</dt>
34974: <dd>
34975: <p>In isolation, an <code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code>
34976: payload poses no security risks. However, as this type is usually
34977: used as part of a form submission, all the risks that apply to
34978: HTML forms need to be considered in the context of this type.</p>
34979: </dd>
34980: <!--REMOVE-TOPIC:Security-->
34981: <dt>Interoperability considerations:</dt>
34982: <dd>
34983: Rules for generating and processing
34984: <code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code> payloads are
34985: defined in this specification.
34986: </dd>
34987: <dt>Published specification:</dt>
34988: <dd>
34989: This document is the relevant specification.
34990: Algorithms for <a href="#application/x-www-form-urlencoded-encoding-algorithm" title="application/x-www-form-urlencoded encoding algorithm">encoding</a>
34991: and <a href="#application/x-www-form-urlencoded-decoding-algorithm" title="application/x-www-form-urlencoded decoding algorithm">decoding</a> are defined.
34992: </dd>
34993: <dt>Applications that use this media type:</dt>
34994: <dd>
34995: Web browsers and servers.
34996: </dd>
34997: <dt>Additional information:</dt>
34998: <dd>
34999: <dl><dt>Magic number(s):</dt>
35000: <dd>There is no reliable mechanism for recognising <code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code> payloads.</dd>
35001: <dt>File extension(s):</dt>
35002: <dd>Not applicable.</dd>
35003: <dt>Macintosh file type code(s):</dt>
35004: <dd>Not applicable.</dd>
35005: </dl></dd>
35006: <dt>Person & email address to contact for further information:</dt>
35007: <dd>Ian Hickson <ian@hixie.ch></dd>
35008: <dt>Intended usage:</dt>
35009: <dd>Common</dd>
35010: <dt>Restrictions on usage:</dt>
35011: <dd>This type is only intended to be used to describe HTML form
35012: submission payloads.</dd>
35013: <dt>Author:</dt>
35014: <dd>Ian Hickson <ian@hixie.ch></dd>
35015: <dt>Change controller:</dt>
35016: <dd>W3C</dd>
35017: </dl><p>Fragment identifiers have no meaning with the
35018: <code><a href="#application/x-www-form-urlencoded">application/x-www-form-urlencoded</a></code> type.</p>
35019:
35020:
35021: <h3 id="text/cache-manifest"><span class="secno">12.5 </span><dfn><code>text/cache-manifest</code></dfn></h3>
35022:
35023: <p>This registration is for community review and will be submitted
35024: to the IESG for review, approval, and registration with IANA.</p>
35025:
35026: <!--
35027: To: ietf-types@iana.org
35028: Subject: Registration of media type text/cache-manifest
35029: -->
35030:
35031: <dl><dt>Type name:</dt>
35032: <dd>text</dd>
35033: <dt>Subtype name:</dt>
35034: <dd>cache-manifest</dd>
35035: <dt>Required parameters:</dt>
35036: <dd>No parameters</dd>
35037: <dt>Optional parameters:</dt>
35038: <dd>No parameters</dd>
35039: <dt>Encoding considerations:</dt>
35040: <dd>8bit (always UTF-8)</dd>
35041: <!--ADD-TOPIC:Security-->
35042: <dt>Security considerations:</dt>
35043: <dd>
35044: <p>Cache manifests themselves pose no immediate risk unless
35045: sensitive information is included within the
35046: manifest. Implementations, however, are required to follow
35047: specific rules when populating a cache based on a cache manifest,
35048: to ensure that certain origin-based restrictions are
35049: honored. Failure to correctly implement these rules can result in
35050: information leakage, cross-site scripting attacks, and the
35051: like.</p>
35052: </dd>
35053: <!--REMOVE-TOPIC:Security-->
35054: <dt>Interoperability considerations:</dt>
35055: <dd>
35056: Rules for processing both conforming and non-conforming content
35057: are defined in this specification.
35058: </dd>
35059: <dt>Published specification:</dt>
35060: <dd>
35061: This document is the relevant specification.
35062: </dd>
35063: <dt>Applications that use this media type:</dt>
35064: <dd>
35065: Web browsers.
35066: </dd>
35067: <dt>Additional information:</dt>
35068: <dd>
35069: <dl><dt>Magic number(s):</dt>
35070: <dd>Cache manifests begin with the string "<code title="">CACHE
35071: MANIFEST</code>", followed by either a U+0020 SPACE character, a
35072: "tab" (U+0009) character, a "LF" (U+000A) character, or a "CR" (U+000D) character.</dd>
35073: <dt>File extension(s):</dt>
35074: <dd>"<code title="">appcache</code>"</dd>
35075: <dt>Macintosh file type code(s):</dt>
35076: <dd>No specific Macintosh file type codes are recommended for this type.</dd>
35077: </dl></dd>
35078: <dt>Person & email address to contact for further information:</dt>
35079: <dd>Ian Hickson <ian@hixie.ch></dd>
35080: <dt>Intended usage:</dt>
35081: <dd>Common</dd>
35082: <dt>Restrictions on usage:</dt>
35083: <dd>No restrictions apply.</dd>
35084: <dt>Author:</dt>
35085: <dd>Ian Hickson <ian@hixie.ch></dd>
35086: <dt>Change controller:</dt>
35087: <dd>W3C</dd>
35088: </dl><p>Fragment identifiers have no meaning with
35089: <code><a href="#text/cache-manifest">text/cache-manifest</a></code> resources.</p>
35090:
35091:
35092: <!--PING-->
35093:
35094: <!--MD-->
35095:
35096:
35097: <!--PING-->
35098:
35099:
35100:
35101:
35102:
35103: <h3 id="web+-scheme-prefix"><span class="secno">12.6 </span><dfn title="scheme-web"><code>web+</code> scheme prefix</dfn></h3>
35104:
35105: <p>This section describes a convention for use with the IANA URI
35106: scheme registry. It does not itself register a specific scheme. <a href="#refsRFC4395">[RFC4395]</a></p>
35107:
35108: <p>Schemes using the <code title="">web+</code> prefix must have names
35109: starting with the four characters "<code title="">web+</code>"
35110: followed by one or more letters in the range <code title="">a</code>-<code title="">z</code>.</p>
35111:
35112: <p>Registrations of such schemes should specify the syntax and
35113: semantics of the scheme. Registrations should define what applications
35114: and/or protocols use the scheme.</p>
35115:
35116: <p>All "<code title="">web+</code>" schemes should use UTF-8 encodings were relevant.</p>
35117:
35118: <!--ADD-TOPIC:Security-->
35119: <p>Any Web page is able to register a handler for all "<code title="">web+</code>" schemes. As such, these schemes must not be used
35120: for features intended to be core platform features (e.g. network
35121: transfer protocols like HTTP or FTP). Similarly, such schemes must not
35122: store confidential information in their URLs, such as usernames,
35123: passwords, personal information, or confidential project names.</p>
35124: <!--REMOVE-TOPIC:Security-->
35125: <p>Registrations should reference the description of <code title="">web+</code> schemes in <cite>Custom scheme and content
35126: handlers</cite>, HTML5: <a href="system-state-and-capabilities.html#custom-handlers">http://www.w3.org/TR/html5/system-state-and-capabilities.html#custom-handlers</a></p>
35127:
35128:
35129: <h2 class="no-num" id="index">Index</h2>
35130:
35131: <div class="impl">
35132:
35133: <p>The following sections only cover conforming elements and features.</p>
35134:
35135: </div>
35136:
35137: <h3 class="no-num" id="elements-1">Elements</h3>
35138:
35139: <p><i>This section is non-normative.</i></p>
35140: <!-- XXX this index doesn't list the palpable elements -->
35141:
35142: <table><caption>List of elements</caption>
35143: <thead><tr><th> Element
35144: </th><th> Description
35145: </th><th> Categories
35146: </th><th> Parents†
35147: </th><th> Children
35148: </th><th> Attributes
35149: </th><th> Interface
35150: </th></tr></thead><tbody><tr><th><code><a href="the-a-element.html#the-a-element">a</a></code></th>
35151: <td>Hyperlink</td>
35152: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35153: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*;
35154: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
35155: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35156: <td><a href="content-models.html#transparent">transparent</a>*</td>
35157: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35158: <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>;
35159: <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code>;
35160: <!--DOWNLOAD--><!--PING-->
35161: <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code>;
35162: <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code>;
35163: <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">hreflang</a></code>;
35164: <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code></td>
35165: <td><code><a href="the-a-element.html#htmlanchorelement">HTMLAnchorElement</a></code></td>
35166: </tr><tr><th><code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code></th>
35167: <td>Abbreviation</td>
35168: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35169: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35170: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35171: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35172: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35173: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35174: </tr><tr><th><code><a href="the-address-element.html#the-address-element">address</a></code></th>
35175: <td>Contact information for a page or <code><a href="the-article-element.html#the-article-element">article</a></code> element</td>
35176: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35177: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35178: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35179: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35180: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35181: </tr><tr><th><code><a href="the-area-element.html#the-area-element">area</a></code></th>
35182: <td>Hyperlink or dead area on an image map</td>
35183: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35184: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35185: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35186: <td>empty</td>
35187: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35188: <code title="attr-area-alt"><a href="the-area-element.html#attr-area-alt">alt</a></code>;
35189: <code title="attr-area-coords"><a href="the-area-element.html#attr-area-coords">coords</a></code>;
35190: <code title="attr-area-shape"><a href="the-area-element.html#attr-area-shape">shape</a></code>;
35191: <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">href</a></code>;
35192: <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">target</a></code>;
35193: <!--DOWNLOAD--><!--PING-->
35194: <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">rel</a></code>;
35195: <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">media</a></code>;
35196: <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">hreflang</a></code>;
35197: <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">type</a></code></td>
35198: <td><code><a href="the-area-element.html#htmlareaelement">HTMLAreaElement</a></code></td>
35199: </tr><tr><th><code><a href="the-article-element.html#the-article-element">article</a></code></th>
35200: <td>Self-contained syndicatable or reusable composition</td>
35201: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35202: <a href="content-models.html#sectioning-content-0" title="Sectioning content">sectioning</a></td>
35203: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35204: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35205: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35206: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35207: </tr><tr><th><code><a href="the-aside-element.html#the-aside-element">aside</a></code></th>
35208: <td>Sidebar for tangentially related content</td>
35209: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35210: <a href="content-models.html#sectioning-content-0" title="Sectioning content">sectioning</a></td>
35211: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35212: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35213: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35214: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35215: </tr><tr><th><code><a href="the-audio-element.html#the-audio-element">audio</a></code></th>
35216: <td>Audio player</td>
35217: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35218: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35219: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
35220: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
35221: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35222: <td><code><a href="the-source-element.html#the-source-element">source</a></code>*;
35223: <a href="content-models.html#transparent">transparent</a>*</td>
35224: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35225: <code title="attr-media-src"><a href="media-elements.html#attr-media-src">src</a></code>;
35226: <code title="attr-media-crossorigin"><a href="media-elements.html#attr-media-crossorigin">crossorigin</a></code>;
35227: <code title="attr-media-preload"><a href="media-elements.html#attr-media-preload">preload</a></code>;
35228: <code title="attr-media-autoplay"><a href="media-elements.html#attr-media-autoplay">autoplay</a></code>;
35229: <code title="attr-media-mediagroup"><a href="media-elements.html#attr-media-mediagroup">mediagroup</a></code>;
35230: <code title="attr-media-loop"><a href="media-elements.html#attr-media-loop">loop</a></code>;
35231: <code title="attr-media-muted"><a href="media-elements.html#attr-media-muted">muted</a></code>;
35232: <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">controls</a></code></td>
35233: <td><code><a href="the-audio-element.html#htmlaudioelement">HTMLAudioElement</a></code></td>
35234: </tr><tr><th><code><a href="the-b-element.html#the-b-element">b</a></code></th>
35235: <td>Keywords</td>
35236: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35237: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35238: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35239: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35240: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35241: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35242: </tr><tr><th><code><a href="the-base-element.html#the-base-element">base</a></code></th>
35243: <td>Base URL and default target <a href="#browsing-context">browsing context</a> for <a href="#attr-hyperlink-target" title="attr-hyperlink-target">hyperlinks</a> and <a href="form-submission.html#attr-fs-target" title="attr-fs-target">forms</a></td>
35244: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a></td>
35245: <td><code><a href="the-head-element.html#the-head-element">head</a></code></td>
35246: <td>empty</td>
35247: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35248: <code title="attr-base-href"><a href="the-base-element.html#attr-base-href">href</a></code>;
35249: <code title="attr-base-target"><a href="the-base-element.html#attr-base-target">target</a></code></td>
35250: <td><code><a href="the-base-element.html#htmlbaseelement">HTMLBaseElement</a></code></td>
35251: </tr><tr><th><code><a href="the-bdi-element.html#the-bdi-element">bdi</a></code></th>
35252: <td>Text directionality isolation</td>
35253: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35254: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35255: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35256: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35257: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35258: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35259: </tr><tr><th><code><a href="the-bdo-element.html#the-bdo-element">bdo</a></code></th>
35260: <td>Text directionality formatting</td>
35261: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35262: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35263: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35264: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35265: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35266: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35267: </tr><tr><th><code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code></th>
35268: <td>A section quoted from another source</td>
35269: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35270: <a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a></td>
35271: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35272: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35273: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35274: <code title="attr-blockquote-cite"><a href="the-blockquote-element.html#attr-blockquote-cite">cite</a></code></td>
35275: <td><code><a href="the-blockquote-element.html#htmlquoteelement">HTMLQuoteElement</a></code></td>
35276: </tr><tr><th><code><a href="the-body-element.html#the-body-element">body</a></code></th>
35277: <td>Document body</td>
35278: <td><a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a></td>
35279: <td><code><a href="the-html-element.html#the-html-element">html</a></code></td>
35280: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35281: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35282: <code title="handler-window-onafterprint"><a href="#handler-window-onafterprint">onafterprint</a></code>;
35283: <code title="handler-window-onbeforeprint"><a href="#handler-window-onbeforeprint">onbeforeprint</a></code>;
35284: <code title="handler-window-onbeforeunload"><a href="#handler-window-onbeforeunload">onbeforeunload</a></code>;
35285: <code title="handler-window-onblur"><a href="#handler-window-onblur">onblur</a></code>;
35286: <code title="handler-window-onerror"><a href="#handler-window-onerror">onerror</a></code>;
35287: <code title="handler-window-onfocus"><a href="#handler-window-onfocus">onfocus</a></code>;
35288: <code title="handler-window-onhashchange"><a href="#handler-window-onhashchange">onhashchange</a></code>;
35289: <code title="handler-window-onload"><a href="#handler-window-onload">onload</a></code>;
35290: <code title="handler-window-onmessage"><a href="#handler-window-onmessage">onmessage</a></code>;
35291: <code title="handler-window-onoffline"><a href="#handler-window-onoffline">onoffline</a></code>;
35292: <code title="handler-window-ononline"><a href="#handler-window-ononline">ononline</a></code>;
35293: <code title="handler-window-onpagehide"><a href="#handler-window-onpagehide">onpagehide</a></code>;
35294: <code title="handler-window-onpageshow"><a href="#handler-window-onpageshow">onpageshow</a></code>;
35295: <code title="handler-window-onpopstate"><a href="#handler-window-onpopstate">onpopstate</a></code>;
35296: <code title="handler-window-onresize"><a href="#handler-window-onresize">onresize</a></code>;
35297: <code title="handler-window-onscroll"><a href="#handler-window-onscroll">onscroll</a></code>;
35298: <code title="handler-window-onstorage"><a href="#handler-window-onstorage">onstorage</a></code>;
35299: <code title="handler-window-onunload"><a href="#handler-window-onunload">onunload</a></code></td>
35300: <td><code><a href="the-body-element.html#htmlbodyelement">HTMLBodyElement</a></code></td>
35301: </tr><tr><th><code><a href="the-br-element.html#the-br-element">br</a></code></th>
35302: <td>Line break, e.g. in poem or postal address</td>
35303: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35304: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35305: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35306: <td>empty</td>
35307: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35308: <td><code><a href="the-br-element.html#htmlbrelement">HTMLBRElement</a></code></td>
35309: </tr><tr><th><code><a href="the-button-element.html#the-button-element">button</a></code></th>
35310: <td>Button control</td>
35311: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35312: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35313: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>;
35314: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35315: <a href="forms.html#category-label" title="category-label">labelable</a>;
35316: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
35317: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35318: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35319: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35320: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35321: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code>;
35322: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code>;
35323: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35324: <code title="attr-fs-formaction"><a href="form-submission.html#attr-fs-formaction">formaction</a></code>;
35325: <code title="attr-fs-formenctype"><a href="form-submission.html#attr-fs-formenctype">formenctype</a></code>;
35326: <code title="attr-fs-formmethod"><a href="form-submission.html#attr-fs-formmethod">formmethod</a></code>;
35327: <code title="attr-fs-formnovalidate"><a href="form-submission.html#attr-fs-formnovalidate">formnovalidate</a></code>;
35328: <code title="attr-fs-formtarget"><a href="form-submission.html#attr-fs-formtarget">formtarget</a></code>;
35329: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code>;
35330: <code title="attr-button-type"><a href="the-button-element.html#attr-button-type">type</a></code>;
35331: <code title="attr-button-value"><a href="the-button-element.html#attr-button-value">value</a></code></td>
35332: <td><code><a href="the-button-element.html#htmlbuttonelement">HTMLButtonElement</a></code></td>
35333: </tr><tr><th><code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code></th>
35334: <td>Scriptable bitmap canvas</td>
35335: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35336: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35337: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a></td>
35338: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35339: <td><a href="content-models.html#transparent">transparent</a></td>
35340: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35341: <code title="attr-canvas-width"><a href="the-canvas-element.html#attr-canvas-width">width</a></code>;
35342: <code title="attr-canvas-height"><a href="the-canvas-element.html#attr-canvas-height">height</a></code></td>
35343: <td><code><a href="the-canvas-element.html#htmlcanvaselement">HTMLCanvasElement</a></code></td>
35344: </tr><tr><th><code><a href="the-caption-element.html#the-caption-element">caption</a></code></th>
35345: <td>Table caption</td>
35346: <td>none</td>
35347: <td><code><a href="the-table-element.html#the-table-element">table</a></code></td>
35348: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35349: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35350: <td><code><a href="the-caption-element.html#htmltablecaptionelement">HTMLTableCaptionElement</a></code></td>
35351: </tr><tr><th><code><a href="the-cite-element.html#the-cite-element">cite</a></code></th>
35352: <td>Title of a work</td>
35353: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35354: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35355: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35356: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35357: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35358: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35359: </tr><tr><th><code><a href="the-code-element.html#the-code-element">code</a></code></th>
35360: <td>Computer code</td>
35361: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35362: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35363: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35364: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35365: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35366: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35367: </tr><tr><th><code><a href="the-col-element.html#the-col-element">col</a></code></th>
35368: <td>Table column</td>
35369: <td>none</td>
35370: <td><code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code></td>
35371: <td>empty</td>
35372: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35373: <code title="attr-col-span"><a href="the-col-element.html#attr-col-span">span</a></code></td>
35374: <td><code><a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a></code></td>
35375: </tr><tr><th><code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code></th>
35376: <td>Group of columns in a table</td>
35377: <td>none</td>
35378: <td><code><a href="the-table-element.html#the-table-element">table</a></code></td>
35379: <td><code><a href="the-col-element.html#the-col-element">col</a></code></td>
35380: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35381: <code title="attr-colgroup-span"><a href="the-colgroup-element.html#attr-colgroup-span">span</a></code></td>
35382: <td><code><a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a></code></td>
35383: </tr><tr><th><code><a href="#the-command-element">command</a></code></th>
35384: <td>Menu command</td>
35385: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
35386: <a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35387: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35388: <td><code><a href="the-head-element.html#the-head-element">head</a></code>;
35389: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35390: <td>empty</td>
35391: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35392: <code title="attr-command-type"><a href="#attr-command-type">type</a></code>;
35393: <code title="attr-command-label"><a href="#attr-command-label">label</a></code>;
35394: <code title="attr-command-icon"><a href="#attr-command-icon">icon</a></code>;
35395: <code title="attr-command-disabled"><a href="#attr-command-disabled">disabled</a></code>;
35396: <code title="attr-command-checked"><a href="#attr-command-checked">checked</a></code>;
35397: <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">radiogroup</a></code>;
35398: <code title="attr-command-command"><a href="#attr-command-command">command</a></code></td>
35399: <td><code><a href="#htmlcommandelement">HTMLCommandElement</a></code></td>
35400: </tr><!--DATA--><!--FORK--><tr><th><code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code></th>
35401: <td>Container for options for <a href="common-input-element-attributes.html#attr-input-list" title="attr-input-list">combo box control</a></td>
35402: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35403: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35404: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35405: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35406: <code><a href="the-option-element.html#the-option-element">option</a></code></td>
35407: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35408: <td><code><a href="the-datalist-element.html#htmldatalistelement">HTMLDataListElement</a></code></td>
35409: </tr><tr><th><code><a href="the-dd-element.html#the-dd-element">dd</a></code></th>
35410: <td>Content for corresponding <code><a href="the-dt-element.html#the-dt-element">dt</a></code> element(s)</td>
35411: <td>none</td>
35412: <td><code><a href="the-dl-element.html#the-dl-element">dl</a></code></td>
35413: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35414: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35415: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35416: </tr><tr><th><code><a href="the-del-element.html#the-del-element">del</a></code></th>
35417: <td>A removal from the document</td>
35418: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35419: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35420: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35421: <td><a href="content-models.html#transparent">transparent</a></td>
35422: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35423: <code title="attr-mod-cite"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-cite">cite</a></code>;
35424: <code title="attr-mod-datetime"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-datetime">datetime</a></code></td>
35425: <td><code><a href="attributes-common-to-ins-and-del-elements.html#htmlmodelement">HTMLModElement</a></code></td>
35426: </tr><tr><th><code><a href="#the-details-element">details</a></code></th>
35427: <td>Disclosure control for hiding details</td>
35428: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35429: <a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a>;
35430: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
35431: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35432: <td><code><a href="#the-summary-element">summary</a></code>*;
35433: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35434: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35435: <code title="attr-details-open"><a href="#attr-details-open">open</a></code></td>
35436: <td><code><a href="#htmldetailselement">HTMLDetailsElement</a></code></td>
35437: </tr><tr><th><code><a href="the-dfn-element.html#the-dfn-element">dfn</a></code></th>
35438: <td>Defining instance</td>
35439: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35440: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35441: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35442: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35443: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35444: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35445: </tr><tr><th><code><a href="#the-dialog-element">dialog</a></code></th>
35446: <td>Dialog box or window</td>
35447: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35448: <a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a></td>
35449: <td><code><a href="the-dt-element.html#the-dt-element">dt</a></code>;
35450: <code><a href="the-th-element.html#the-th-element">th</a></code>;
35451: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35452: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35453: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35454: <code title="attr-dialog-open"><a href="#attr-dialog-open">open</a></code></td>
35455: <td><code><a href="#htmldialogelement">HTMLDialogElement</a></code></td>
35456: </tr><tr><th><code><a href="the-div-element.html#the-div-element">div</a></code></th>
35457: <td>Generic flow container</td>
35458: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35459: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35460: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35461: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35462: <td><code><a href="the-div-element.html#htmldivelement">HTMLDivElement</a></code></td>
35463: </tr><tr><th><code><a href="the-dl-element.html#the-dl-element">dl</a></code></th>
35464: <td>Association list consisting of zero or more name-value groups</td>
35465: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35466: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35467: <td><code><a href="the-dt-element.html#the-dt-element">dt</a></code>*;
35468: <code><a href="the-dd-element.html#the-dd-element">dd</a></code>*</td>
35469: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35470: <td><code><a href="the-dl-element.html#htmldlistelement">HTMLDListElement</a></code></td>
35471: </tr><tr><th><code><a href="the-dt-element.html#the-dt-element">dt</a></code></th>
35472: <td>Legend for corresponding <code><a href="the-dd-element.html#the-dd-element">dd</a></code> element(s)</td>
35473: <td>none</td>
35474: <td><code><a href="the-dl-element.html#the-dl-element">dl</a></code></td>
35475: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35476: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35477: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35478: </tr><tr><th><code><a href="the-em-element.html#the-em-element">em</a></code></th>
35479: <td>Stress emphasis</td>
35480: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35481: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35482: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35483: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35484: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35485: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35486: </tr><tr><th><code><a href="the-embed-element.html#the-embed-element">embed</a></code></th>
35487: <td><a href="infrastructure.html#plugin">Plugin</a></td>
35488: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35489: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35490: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
35491: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
35492: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35493: <td>empty</td>
35494: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35495: <code title="attr-embed-src"><a href="the-embed-element.html#attr-embed-src">src</a></code>;
35496: <code title="attr-embed-type"><a href="the-embed-element.html#attr-embed-type">type</a></code>;
35497: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>;
35498: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code>;
35499: any*</td>
35500: <td><code><a href="the-embed-element.html#htmlembedelement">HTMLEmbedElement</a></code></td>
35501: </tr><tr><th><code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code></th>
35502: <td>Group of form controls</td>
35503: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35504: <a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a>;
35505: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35506: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35507: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35508: <td><code><a href="the-legend-element.html#the-legend-element">legend</a></code>*;
35509: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35510: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35511: <code title="attr-fieldset-disabled"><a href="the-fieldset-element.html#attr-fieldset-disabled">disabled</a></code>;
35512: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35513: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code></td>
35514: <td><code><a href="the-fieldset-element.html#htmlfieldsetelement">HTMLFieldSetElement</a></code></td>
35515: </tr><tr><th><code><a href="the-figcaption-element.html#the-figcaption-element">figcaption</a></code></th>
35516: <td>Caption for <code><a href="the-figure-element.html#the-figure-element">figure</a></code></td>
35517: <td>none</td>
35518: <td><code><a href="the-figure-element.html#the-figure-element">figure</a></code></td>
35519: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35520: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35521: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35522: </tr><tr><th><code><a href="the-figure-element.html#the-figure-element">figure</a></code></th>
35523: <td>Figure with optional caption</td>
35524: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35525: <a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a></td>
35526: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35527: <td><code><a href="the-figcaption-element.html#the-figcaption-element">figcaption</a></code>*;
35528: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35529: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35530: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35531: </tr><tr><th><code><a href="the-footer-element.html#the-footer-element">footer</a></code></th>
35532: <td>Footer for a page or section</td>
35533: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35534: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35535: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35536: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35537: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35538: </tr><tr><th><code><a href="the-form-element.html#the-form-element">form</a></code></th>
35539: <td>User-submittable form</td>
35540: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35541: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35542: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35543: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35544: <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">accept-charset</a></code>;
35545: <code title="attr-fs-action"><a href="form-submission.html#attr-fs-action">action</a></code>;
35546: <code title="attr-form-autocomplete"><a href="the-form-element.html#attr-form-autocomplete">autocomplete</a></code>;
35547: <code title="attr-fs-enctype"><a href="form-submission.html#attr-fs-enctype">enctype</a></code>;
35548: <code title="attr-fs-method"><a href="form-submission.html#attr-fs-method">method</a></code>;
35549: <code title="attr-form-name"><a href="the-form-element.html#attr-form-name">name</a></code>;
35550: <code title="attr-fs-novalidate"><a href="form-submission.html#attr-fs-novalidate">novalidate</a></code>;
35551: <code title="attr-fs-target"><a href="form-submission.html#attr-fs-target">target</a></code></td>
35552: <td><code><a href="the-form-element.html#htmlformelement">HTMLFormElement</a></code></td>
35553: </tr><tr><th><code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code></th>
35554: <td>Section heading</td>
35555: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35556: <a href="content-models.html#heading-content-0" title="Heading content">heading</a></td>
35557: <td><code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>;
35558: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35559: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35560: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35561: <td><code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code></td>
35562: </tr><tr><th><code><a href="the-head-element.html#the-head-element">head</a></code></th>
35563: <td>Container for document metadata</td>
35564: <td>none</td>
35565: <td><code><a href="the-html-element.html#the-html-element">html</a></code></td>
35566: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata content</a>*</td>
35567: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35568: <td><code><a href="the-head-element.html#htmlheadelement">HTMLHeadElement</a></code></td>
35569: </tr><tr><th><code><a href="the-header-element.html#the-header-element">header</a></code></th>
35570: <td>Introductory or navigational aids for a page or section</td>
35571: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35572: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35573: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
35574: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35575: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35576: </tr><tr><th><code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code></th>
35577: <td>heading group</td>
35578: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35579: <a href="content-models.html#heading-content-0" title="Heading content">heading</a></td>
35580: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35581: <td>One or more <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>, <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>, and/or <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code></td>
35582: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35583: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35584: </tr><tr><th><code><a href="the-hr-element.html#the-hr-element">hr</a></code></th>
35585: <td>Thematic break</td>
35586: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35587: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35588: <td>empty</td>
35589: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35590: <td><code><a href="the-hr-element.html#htmlhrelement">HTMLHRElement</a></code></td>
35591: </tr><tr><th><code><a href="the-html-element.html#the-html-element">html</a></code></th>
35592: <td>Root element</td>
35593: <td>none</td>
35594: <td>none*</td>
35595: <td><code><a href="the-head-element.html#the-head-element">head</a></code>*;
35596: <code><a href="the-body-element.html#the-body-element">body</a></code>*</td>
35597: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35598: <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">manifest</a></code></td>
35599: <td><code><a href="the-html-element.html#htmlhtmlelement">HTMLHtmlElement</a></code></td>
35600: </tr><tr><th><code><a href="the-i-element.html#the-i-element">i</a></code></th>
35601: <td>Alternate voice</td>
35602: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35603: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35604: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35605: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35606: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35607: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35608: </tr><tr><th><code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code></th>
35609: <td><a href="#nested-browsing-context">Nested browsing context</a></td>
35610: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35611: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35612: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
35613: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
35614: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35615: <td>text*</td>
35616: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35617: <code title="attr-iframe-src"><a href="the-iframe-element.html#attr-iframe-src">src</a></code>;
35618: <code title="attr-iframe-srcdoc"><a href="the-iframe-element.html#attr-iframe-srcdoc">srcdoc</a></code>;
35619: <code title="attr-iframe-name"><a href="the-iframe-element.html#attr-iframe-name">name</a></code>;
35620: <code title="attr-iframe-sandbox"><a href="the-iframe-element.html#attr-iframe-sandbox">sandbox</a></code>;
35621: <code title="attr-iframe-seamless"><a href="the-iframe-element.html#attr-iframe-seamless">seamless</a></code>;
35622: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>;
35623: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code></td>
35624: <td><code><a href="the-iframe-element.html#htmliframeelement">HTMLIFrameElement</a></code></td>
35625: </tr><tr><th><code><a href="the-img-element.html#the-img-element">img</a></code></th>
35626: <td>Image</td>
35627: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35628: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35629: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
35630: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>*</td>
35631: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35632: <td>empty</td>
35633: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35634: <code title="attr-img-alt"><a href="the-img-element.html#attr-img-alt">alt</a></code>;
35635: <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">src</a></code>;
35636: <code title="attr-img-crossorigin"><a href="the-img-element.html#attr-img-crossorigin">crossorigin</a></code>;
35637: <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">usemap</a></code>;
35638: <code title="attr-img-ismap"><a href="the-img-element.html#attr-img-ismap">ismap</a></code>;
35639: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>;
35640: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code></td>
35641: <td><code><a href="the-img-element.html#htmlimageelement">HTMLImageElement</a></code></td>
35642: </tr><tr><th><code><a href="the-input-element.html#the-input-element">input</a></code></th>
35643: <td>Form control</td>
35644: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35645: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35646: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>*;
35647: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35648: <a href="forms.html#category-label" title="category-label">labelable</a>;
35649: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
35650: <a href="forms.html#category-reset" title="category-reset">resettable</a>;
35651: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35652: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35653: <td>empty</td>
35654: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35655: <code title="attr-input-accept"><a href="states-of-the-type-attribute.html#attr-input-accept">accept</a></code>;
35656: <code title="attr-input-alt"><a href="states-of-the-type-attribute.html#attr-input-alt">alt</a></code>;
35657: <code title="attr-input-autocomplete"><a href="common-input-element-attributes.html#attr-input-autocomplete">autocomplete</a></code>;
35658: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code>;
35659: <code title="attr-input-checked"><a href="the-input-element.html#attr-input-checked">checked</a></code>;
35660: <code title="attr-input-dirname"><a href="common-input-element-attributes.html#attr-input-dirname">dirname</a></code>;
35661: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code>;
35662: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35663: <code title="attr-fs-formaction"><a href="form-submission.html#attr-fs-formaction">formaction</a></code>;
35664: <code title="attr-fs-formenctype"><a href="form-submission.html#attr-fs-formenctype">formenctype</a></code>;
35665: <code title="attr-fs-formmethod"><a href="form-submission.html#attr-fs-formmethod">formmethod</a></code>;
35666: <code title="attr-fs-formnovalidate"><a href="form-submission.html#attr-fs-formnovalidate">formnovalidate</a></code>;
35667: <code title="attr-fs-formtarget"><a href="form-submission.html#attr-fs-formtarget">formtarget</a></code>;
35668: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code>;
35669: <code title="attr-input-list"><a href="common-input-element-attributes.html#attr-input-list">list</a></code>;
35670: <code title="attr-input-max"><a href="common-input-element-attributes.html#attr-input-max">max</a></code>;
35671: <code title="attr-input-maxlength"><a href="common-input-element-attributes.html#attr-input-maxlength">maxlength</a></code>;
35672: <code title="attr-input-min"><a href="common-input-element-attributes.html#attr-input-min">min</a></code>;
35673: <code title="attr-input-multiple"><a href="common-input-element-attributes.html#attr-input-multiple">multiple</a></code>;
35674: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code>;
35675: <code title="attr-input-pattern"><a href="common-input-element-attributes.html#attr-input-pattern">pattern</a></code>;
35676: <code title="attr-input-placeholder"><a href="common-input-element-attributes.html#attr-input-placeholder">placeholder</a></code>;
35677: <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">readonly</a></code>;
35678: <code title="attr-input-required"><a href="common-input-element-attributes.html#attr-input-required">required</a></code>;
35679: <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">size</a></code>;
35680: <code title="attr-input-src"><a href="states-of-the-type-attribute.html#attr-input-src">src</a></code>;
35681: <code title="attr-input-step"><a href="common-input-element-attributes.html#attr-input-step">step</a></code>;
35682: <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code>;
35683: <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">value</a></code>;
35684: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code></td>
35685: <td><code><a href="the-input-element.html#htmlinputelement">HTMLInputElement</a></code></td>
35686: </tr><tr><th><code><a href="the-ins-element.html#the-ins-element">ins</a></code></th>
35687: <td>An addition to the document</td>
35688: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35689: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35690: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35691: <td><a href="content-models.html#transparent">transparent</a></td>
35692: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35693: <code title="attr-mod-cite"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-cite">cite</a></code>;
35694: <code title="attr-mod-datetime"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-datetime">datetime</a></code></td>
35695: <td><code><a href="attributes-common-to-ins-and-del-elements.html#htmlmodelement">HTMLModElement</a></code></td>
35696: </tr><tr><th><code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code></th>
35697: <td>User input</td>
35698: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35699: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35700: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35701: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35702: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35703: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35704: </tr><tr><th><code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code></th>
35705: <td>Cryptographic key-pair generator form control</td>
35706: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35707: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35708: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>;
35709: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35710: <a href="forms.html#category-label" title="category-label">labelable</a>;
35711: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
35712: <a href="forms.html#category-reset" title="category-reset">resettable</a>;
35713: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35714: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35715: <td>empty</td>
35716: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35717: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code>;
35718: <code title="attr-keygen-challenge"><a href="the-keygen-element.html#attr-keygen-challenge">challenge</a></code>;
35719: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code>;
35720: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35721: <code title="attr-keygen-keytype"><a href="the-keygen-element.html#attr-keygen-keytype">keytype</a></code>;
35722: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code></td>
35723: <td><code><a href="the-keygen-element.html#htmlkeygenelement">HTMLKeygenElement</a></code></td>
35724: </tr><tr><th><code><a href="the-label-element.html#the-label-element">label</a></code></th>
35725: <td>Caption for a form control</td>
35726: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35727: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35728: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>;
35729: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35730: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35731: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35732: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35733: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35734: <code title="attr-label-for"><a href="the-label-element.html#attr-label-for">for</a></code></td>
35735: <td><code><a href="the-label-element.html#htmllabelelement">HTMLLabelElement</a></code></td>
35736: </tr><tr><th><code><a href="the-legend-element.html#the-legend-element">legend</a></code></th>
35737: <td>Caption for <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code></td>
35738: <td>none</td>
35739: <td><code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code></td>
35740: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35741: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35742: <td><code><a href="the-legend-element.html#htmllegendelement">HTMLLegendElement</a></code></td>
35743: </tr><tr><th><code><a href="the-li-element.html#the-li-element">li</a></code></th>
35744: <td>List item</td>
35745: <td>none</td>
35746: <td><code><a href="the-ol-element.html#the-ol-element">ol</a></code>; <code><a href="the-ul-element.html#the-ul-element">ul</a></code>; <code><a href="#the-menu-element">menu</a></code></td>
35747: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35748: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35749: <code title="attr-li-value"><a href="the-li-element.html#attr-li-value">value</a></code>*</td>
35750: <td><code><a href="the-li-element.html#htmllielement">HTMLLIElement</a></code></td>
35751: </tr><tr><th><code><a href="the-link-element.html#the-link-element">link</a></code></th>
35752: <td>Link metadata</td>
35753: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
35754: <a href="content-models.html#flow-content-1" title="Flow content">flow</a>*;
35755: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35756: <td><code><a href="the-head-element.html#the-head-element">head</a></code>;
35757: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>*;
35758: <a href="content-models.html#phrasing-content-1" title="phrasing content">phrasing</a>*</td>
35759: <td>empty</td>
35760: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35761: <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">href</a></code>;
35762: <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">rel</a></code>;
35763: <code title="attr-link-media"><a href="the-link-element.html#attr-link-media">media</a></code>;
35764: <code title="attr-link-hreflang"><a href="the-link-element.html#attr-link-hreflang">hreflang</a></code>;
35765: <code title="attr-link-type"><a href="the-link-element.html#attr-link-type">type</a></code>;
35766: <code title="attr-link-sizes"><a href="#attr-link-sizes">sizes</a></code></td>
35767: <td><code><a href="the-link-element.html#htmllinkelement">HTMLLinkElement</a></code></td>
35768: </tr><tr><th><code><a href="the-map-element.html#the-map-element">map</a></code></th>
35769: <td><a href="image-maps.html#image-map">Image map</a></td>
35770: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35771: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35772: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35773: <td><a href="content-models.html#transparent">transparent</a>;
35774: <code><a href="the-area-element.html#the-area-element">area</a></code>*</td>
35775: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35776: <code title="attr-map-name"><a href="the-map-element.html#attr-map-name">name</a></code></td>
35777: <td><code><a href="the-map-element.html#htmlmapelement">HTMLMapElement</a></code></td>
35778: </tr><tr><th><code><a href="the-mark-element.html#the-mark-element">mark</a></code></th>
35779: <td>Highlight</td>
35780: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35781: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35782: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35783: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35784: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35785: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35786: </tr><tr><th><code><a href="#the-menu-element">menu</a></code></th>
35787: <td>Menu of commands</td>
35788: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35789: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>*</td>
35790: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35791: <td><code><a href="the-li-element.html#the-li-element">li</a></code>*;
35792: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35793: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35794: <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code>;
35795: <code title="attr-menu-label"><a href="#attr-menu-label">label</a></code></td>
35796: <td><code><a href="#htmlmenuelement">HTMLMenuElement</a></code></td>
35797: </tr><tr><th><code><a href="the-meta-element.html#the-meta-element">meta</a></code></th>
35798: <td>Text metadata</td>
35799: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
35800: <a href="content-models.html#flow-content-1" title="Flow content">flow</a>*;
35801: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35802: <td><code><a href="the-head-element.html#the-head-element">head</a></code>;
35803: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>*;
35804: <a href="content-models.html#phrasing-content-1" title="phrasing content">phrasing</a>*</td>
35805: <td>empty</td>
35806: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35807: <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">name</a></code>;
35808: <code title="attr-meta-http-equiv"><a href="the-meta-element.html#attr-meta-http-equiv">http-equiv</a></code>;
35809: <code title="attr-meta-content"><a href="the-meta-element.html#attr-meta-content">content</a></code>;
35810: <code title="attr-meta-charset"><a href="the-meta-element.html#attr-meta-charset">charset</a></code></td>
35811: <td><code><a href="the-meta-element.html#htmlmetaelement">HTMLMetaElement</a></code></td>
35812: </tr><tr><th><code><a href="the-meter-element.html#the-meter-element">meter</a></code></th>
35813: <td>Gauge</td>
35814: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35815: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35816: <a href="forms.html#category-label" title="category-label">labelable</a></td>
35817: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35818: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35819: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35820: <code title="attr-meter-value"><a href="the-meter-element.html#attr-meter-value">value</a></code>;
35821: <code title="attr-meter-min"><a href="the-meter-element.html#attr-meter-min">min</a></code>;
35822: <code title="attr-meter-max"><a href="the-meter-element.html#attr-meter-max">max</a></code>;
35823: <code title="attr-meter-low"><a href="the-meter-element.html#attr-meter-low">low</a></code>;
35824: <code title="attr-meter-high"><a href="the-meter-element.html#attr-meter-high">high</a></code>;
35825: <code title="attr-meter-optimum"><a href="the-meter-element.html#attr-meter-optimum">optimum</a></code></td>
35826: <td><code><a href="the-meter-element.html#htmlmeterelement">HTMLMeterElement</a></code></td>
35827: </tr><tr><th><code><a href="the-nav-element.html#the-nav-element">nav</a></code></th>
35828: <td>Section with navigational links</td>
35829: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35830: <a href="content-models.html#sectioning-content-0" title="Sectioning content">sectioning</a></td>
35831: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35832: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35833: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35834: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35835: </tr><tr><th><code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code></th>
35836: <td>Fallback content for script</td>
35837: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
35838: <a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35839: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35840: <td><code><a href="the-head-element.html#the-head-element">head</a></code>*;
35841: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35842: <td>varies*</td>
35843: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35844: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35845: </tr><tr><th><code><a href="the-object-element.html#the-object-element">object</a></code></th>
35846: <td>Image, <a href="#nested-browsing-context">nested browsing context</a>, or <a href="infrastructure.html#plugin">plugin</a></td>
35847: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35848: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35849: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
35850: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>*;
35851: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35852: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
35853: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35854: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35855: <td><code><a href="the-param-element.html#the-param-element">param</a></code>*;
35856: <a href="content-models.html#transparent">transparent</a></td>
35857: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35858: <code title="attr-object-data"><a href="the-object-element.html#attr-object-data">data</a></code>;
35859: <code title="attr-object-type"><a href="the-object-element.html#attr-object-type">type</a></code>;
35860: <code title="attr-object-typemustmatch"><a href="the-object-element.html#attr-object-typemustmatch">typemustmatch</a></code>;
35861: <code title="attr-object-name"><a href="the-object-element.html#attr-object-name">name</a></code>;
35862: <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">usemap</a></code>;
35863: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35864: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>;
35865: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code></td>
35866: <td><code><a href="the-object-element.html#htmlobjectelement">HTMLObjectElement</a></code></td>
35867: </tr><tr><th><code><a href="the-ol-element.html#the-ol-element">ol</a></code></th>
35868: <td>Ordered list</td>
35869: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35870: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35871: <td><code><a href="the-li-element.html#the-li-element">li</a></code></td>
35872: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35873: <code title="attr-ol-reversed"><a href="the-ol-element.html#attr-ol-reversed">reversed</a></code>;
35874: <code title="attr-ol-start"><a href="the-ol-element.html#attr-ol-start">start</a></code></td>
35875: <td><code><a href="the-ol-element.html#htmlolistelement">HTMLOListElement</a></code></td>
35876: </tr><tr><th><code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code></th>
35877: <td>Group of options in a list box</td>
35878: <td>none</td>
35879: <td><code><a href="the-select-element.html#the-select-element">select</a></code></td>
35880: <td><code><a href="the-option-element.html#the-option-element">option</a></code></td>
35881: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35882: <code title="attr-optgroup-disabled"><a href="the-optgroup-element.html#attr-optgroup-disabled">disabled</a></code>;
35883: <code title="attr-optgroup-label"><a href="the-optgroup-element.html#attr-optgroup-label">label</a></code></td>
35884: <td><code><a href="the-optgroup-element.html#htmloptgroupelement">HTMLOptGroupElement</a></code></td>
35885: </tr><tr><th><code><a href="the-option-element.html#the-option-element">option</a></code></th>
35886: <td>Option in a list box or combo box control</td>
35887: <td>none</td>
35888: <td><code><a href="the-select-element.html#the-select-element">select</a></code>;
35889: <code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code>;
35890: <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code></td>
35891: <td><a href="content-models.html#text-content" title="text content">text</a></td>
35892: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35893: <code title="attr-option-disabled"><a href="the-option-element.html#attr-option-disabled">disabled</a></code>;
35894: <code title="attr-option-label"><a href="the-option-element.html#attr-option-label">label</a></code>;
35895: <code title="attr-option-selected"><a href="the-option-element.html#attr-option-selected">selected</a></code>;
35896: <code title="attr-option-value"><a href="the-option-element.html#attr-option-value">value</a></code></td>
35897: <td><code><a href="the-option-element.html#htmloptionelement">HTMLOptionElement</a></code></td>
35898: </tr><tr><th><code><a href="the-output-element.html#the-output-element">output</a></code></th>
35899: <td>Calculated output value</td>
35900: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35901: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35902: <a href="forms.html#category-listed" title="category-listed">listed</a>;
35903: <a href="forms.html#category-label" title="category-label">labelable</a>;
35904: <a href="forms.html#category-reset" title="category-reset">resettable</a>;
35905: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
35906: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35907: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35908: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35909: <code title="attr-output-for"><a href="the-output-element.html#attr-output-for">for</a></code>;
35910: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
35911: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code></td>
35912: <td><code><a href="the-output-element.html#htmloutputelement">HTMLOutputElement</a></code></td>
35913: </tr><tr><th><code><a href="the-p-element.html#the-p-element">p</a></code></th>
35914: <td>Paragraph</td>
35915: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35916: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35917: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35918: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35919: <td><code><a href="the-p-element.html#htmlparagraphelement">HTMLParagraphElement</a></code></td>
35920: </tr><tr><th><code><a href="the-param-element.html#the-param-element">param</a></code></th>
35921: <td>Parameter for <code><a href="the-object-element.html#the-object-element">object</a></code></td>
35922: <td>none</td>
35923: <td><code><a href="the-object-element.html#the-object-element">object</a></code></td>
35924: <td>empty</td>
35925: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35926: <code title="attr-param-name"><a href="the-param-element.html#attr-param-name">name</a></code>;
35927: <code title="attr-param-value"><a href="the-param-element.html#attr-param-value">value</a></code></td>
35928: <td><code><a href="the-param-element.html#htmlparamelement">HTMLParamElement</a></code></td>
35929: </tr><tr><th><code><a href="the-pre-element.html#the-pre-element">pre</a></code></th>
35930: <td>Block of preformatted text</td>
35931: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35932: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
35933: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35934: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35935: <td><code><a href="the-pre-element.html#htmlpreelement">HTMLPreElement</a></code></td>
35936: </tr><tr><th><code><a href="the-progress-element.html#the-progress-element">progress</a></code></th>
35937: <td>Progress bar</td>
35938: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35939: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35940: <a href="forms.html#category-label" title="category-label">labelable</a></td>
35941: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35942: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>*</td>
35943: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35944: <code title="attr-progress-value"><a href="the-progress-element.html#attr-progress-value">value</a></code>;
35945: <code title="attr-progress-max"><a href="the-progress-element.html#attr-progress-max">max</a></code></td>
35946: <td><code><a href="the-progress-element.html#htmlprogresselement">HTMLProgressElement</a></code></td>
35947: </tr><tr><th><code><a href="the-q-element.html#the-q-element">q</a></code></th>
35948: <td>Quotation</td>
35949: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35950: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35951: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35952: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35953: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
35954: <code title="attr-q-cite"><a href="the-q-element.html#attr-q-cite">cite</a></code></td>
35955: <td><code><a href="the-blockquote-element.html#htmlquoteelement">HTMLQuoteElement</a></code></td>
35956: </tr><tr><th><code><a href="the-rp-element.html#the-rp-element">rp</a></code></th>
35957: <td>Parenthesis for ruby annotation text</td>
35958: <td>none</td>
35959: <td><code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code></td>
35960: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35961: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35962: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35963: </tr><tr><th><code><a href="the-rt-element.html#the-rt-element">rt</a></code></th>
35964: <td>Ruby annotation text</td>
35965: <td>none</td>
35966: <td><code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code></td>
35967: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35968: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35969: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35970: </tr><tr><th><code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code></th>
35971: <td>Ruby annotation(s)</td>
35972: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35973: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35974: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35975: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
35976: <code><a href="the-rt-element.html#the-rt-element">rt</a></code>;
35977: <code><a href="the-rp-element.html#the-rp-element">rp</a></code>*</td>
35978: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35979: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35980: </tr><tr><th><code><a href="the-s-element.html#the-s-element">s</a></code></th>
35981: <td>Inaccurate text</td>
35982: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35983: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35984: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35985: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35986: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35987: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35988: </tr><tr><th><code><a href="the-samp-element.html#the-samp-element">samp</a></code></th>
35989: <td>Computer output</td>
35990: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
35991: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35992: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35993: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
35994: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
35995: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
35996: </tr><tr><th><code><a href="the-script-element.html#the-script-element">script</a></code></th>
35997: <td>Embedded script</td>
35998: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
35999: <a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36000: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36001: <td><code><a href="the-head-element.html#the-head-element">head</a></code>;
36002: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36003: <td>script, data, or script documentation*</td>
36004: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36005: <code title="attr-script-src"><a href="the-script-element.html#attr-script-src">src</a></code>;
36006: <code title="attr-script-async"><a href="the-script-element.html#attr-script-async">async</a></code>;
36007: <code title="attr-script-defer"><a href="the-script-element.html#attr-script-defer">defer</a></code>;
36008: <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">type</a></code>;
36009: <code title="attr-script-charset"><a href="the-script-element.html#attr-script-charset">charset</a></code></td>
36010: <td><code><a href="the-script-element.html#htmlscriptelement">HTMLScriptElement</a></code></td>
36011: </tr><tr><th><code><a href="the-section-element.html#the-section-element">section</a></code></th>
36012: <td>Generic document or application section</td>
36013: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36014: <a href="content-models.html#sectioning-content-0" title="Sectioning content">sectioning</a></td>
36015: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36016: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36017: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36018: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36019: </tr><tr><th><code><a href="the-select-element.html#the-select-element">select</a></code></th>
36020: <td>List box control</td>
36021: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36022: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
36023: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>;
36024: <a href="forms.html#category-listed" title="category-listed">listed</a>;
36025: <a href="forms.html#category-label" title="category-label">labelable</a>;
36026: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
36027: <a href="forms.html#category-reset" title="category-reset">resettable</a>;
36028: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
36029: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36030: <td><code><a href="the-option-element.html#the-option-element">option</a></code>, <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code></td>
36031: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36032: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code>;
36033: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code>;
36034: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
36035: <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">multiple</a></code>;
36036: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code>;
36037: <code title="attr-select-required"><a href="the-select-element.html#attr-select-required">required</a></code>;
36038: <code title="attr-select-size"><a href="the-select-element.html#attr-select-size">size</a></code></td>
36039: <td><code><a href="the-select-element.html#htmlselectelement">HTMLSelectElement</a></code></td>
36040: </tr><tr><th><code><a href="the-small-element.html#the-small-element">small</a></code></th>
36041: <td>Side comment</td>
36042: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36043: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36044: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36045: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36046: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36047: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36048: </tr><tr><th><code><a href="the-source-element.html#the-source-element">source</a></code></th>
36049: <td>Media source for <code><a href="the-video-element.html#the-video-element">video</a></code> or <code><a href="the-audio-element.html#the-audio-element">audio</a></code></td>
36050: <td>none</td>
36051: <td><code><a href="the-video-element.html#the-video-element">video</a></code>;
36052: <code><a href="the-audio-element.html#the-audio-element">audio</a></code></td>
36053: <td>empty</td>
36054: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36055: <code title="attr-source-src"><a href="the-source-element.html#attr-source-src">src</a></code>;
36056: <code title="attr-source-type"><a href="the-source-element.html#attr-source-type">type</a></code>;
36057: <code title="attr-source-media"><a href="the-source-element.html#attr-source-media">media</a></code></td>
36058: <td><code><a href="the-source-element.html#htmlsourceelement">HTMLSourceElement</a></code></td>
36059: </tr><tr><th><code><a href="the-span-element.html#the-span-element">span</a></code></th>
36060: <td>Generic phrasing container</td>
36061: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36062: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36063: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36064: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36065: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36066: <td><code><a href="the-span-element.html#htmlspanelement">HTMLSpanElement</a></code></td>
36067: </tr><tr><th><code><a href="the-strong-element.html#the-strong-element">strong</a></code></th>
36068: <td>Importance</td>
36069: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36070: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36071: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36072: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36073: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36074: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36075: </tr><tr><th><code><a href="the-style-element.html#the-style-element">style</a></code></th>
36076: <td>Embedded styling information</td>
36077: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a>;
36078: <a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36079: <td><code><a href="the-head-element.html#the-head-element">head</a></code>;
36080: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>*;
36081: <a href="content-models.html#flow-content-1" title="flow content">flow</a>*</td>
36082: <td>varies*</td>
36083: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36084: <code title="attr-style-media"><a href="the-style-element.html#attr-style-media">media</a></code>;
36085: <code title="attr-style-type"><a href="the-style-element.html#attr-style-type">type</a></code>;
36086: <code title="attr-style-scoped"><a href="the-style-element.html#attr-style-scoped">scoped</a></code></td>
36087: <td><code><a href="the-style-element.html#htmlstyleelement">HTMLStyleElement</a></code></td>
36088: </tr><tr><th><code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sub</a></code></th>
36089: <td>Subscript</td>
36090: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36091: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36092: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36093: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36094: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36095: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36096: </tr><tr><th><code><a href="#the-summary-element">summary</a></code></th>
36097: <td>Caption for <code><a href="#the-details-element">details</a></code></td>
36098: <td>none</td>
36099: <td><code><a href="#the-details-element">details</a></code></td>
36100: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36101: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36102: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36103: </tr><tr><th><code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sup</a></code></th>
36104: <td>Superscript</td>
36105: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36106: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36107: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36108: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36109: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36110: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36111: </tr><tr><th><code><a href="the-table-element.html#the-table-element">table</a></code></th>
36112: <td>Table</td>
36113: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36114: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36115: <td><code><a href="the-caption-element.html#the-caption-element">caption</a></code>*;
36116: <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code>*;
36117: <code><a href="the-thead-element.html#the-thead-element">thead</a></code>*;
36118: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>*;
36119: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>*;
36120: <code><a href="the-tr-element.html#the-tr-element">tr</a></code>*</td>
36121: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36122: <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">border</a></code></td>
36123: <td><code><a href="the-table-element.html#htmltableelement">HTMLTableElement</a></code></td>
36124: </tr><tr><th><code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code></th>
36125: <td>Group of rows in a table</td>
36126: <td>none</td>
36127: <td><code><a href="the-table-element.html#the-table-element">table</a></code></td>
36128: <td><code><a href="the-tr-element.html#the-tr-element">tr</a></code></td>
36129: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36130: <td><code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code></td>
36131: </tr><tr><th><code><a href="the-td-element.html#the-td-element">td</a></code></th>
36132: <td>Table cell</td>
36133: <td><a href="headings-and-sections.html#sectioning-root" title="Sectioning root">sectioning root</a></td>
36134: <td><code><a href="the-tr-element.html#the-tr-element">tr</a></code></td>
36135: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36136: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36137: <code title="attr-tdth-colspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-colspan">colspan</a></code>;
36138: <code title="attr-tdth-rowspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-rowspan">rowspan</a></code>;
36139: <code title="attr-tdth-headers"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-headers">headers</a></code></td>
36140: <td><code><a href="the-td-element.html#htmltabledatacellelement">HTMLTableDataCellElement</a></code></td>
36141: </tr><tr><th><code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code></th>
36142: <td>Multiline text field</td>
36143: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36144: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
36145: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a>;
36146: <a href="forms.html#category-listed" title="category-listed">listed</a>;
36147: <a href="forms.html#category-label" title="category-label">labelable</a>;
36148: <a href="forms.html#category-submit" title="category-submit">submittable</a>;
36149: <a href="forms.html#category-reset" title="category-reset">resettable</a>;
36150: <a href="forms.html#form-associated-element" title="Form-associated element">form-associated</a></td>
36151: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36152: <td><a href="content-models.html#text-content" title="text content">text</a></td>
36153: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36154: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">autofocus</a></code>;
36155: <code title="attr-textarea-cols"><a href="the-textarea-element.html#attr-textarea-cols">cols</a></code>;
36156: <code title="attr-textarea-dirname"><a href="the-textarea-element.html#attr-textarea-dirname">dirname</a></code>;
36157: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">disabled</a></code>;
36158: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">form</a></code>;
36159: <code title="attr-textarea-maxlength"><a href="the-textarea-element.html#attr-textarea-maxlength">maxlength</a></code>;
36160: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">name</a></code>;
36161: <code title="attr-textarea-placeholder"><a href="the-textarea-element.html#attr-textarea-placeholder">placeholder</a></code>;
36162: <code title="attr-textarea-readonly"><a href="the-textarea-element.html#attr-textarea-readonly">readonly</a></code>;
36163: <code title="attr-textarea-required"><a href="the-textarea-element.html#attr-textarea-required">required</a></code>;
36164: <code title="attr-textarea-rows"><a href="the-textarea-element.html#attr-textarea-rows">rows</a></code>;
36165: <code title="attr-textarea-wrap"><a href="the-textarea-element.html#attr-textarea-wrap">wrap</a></code></td>
36166: <td><code><a href="the-textarea-element.html#htmltextareaelement">HTMLTextAreaElement</a></code></td>
36167: </tr><tr><th><code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code></th>
36168: <td>Group of footer rows in a table</td>
36169: <td>none</td>
36170: <td><code><a href="the-table-element.html#the-table-element">table</a></code></td>
36171: <td><code><a href="the-tr-element.html#the-tr-element">tr</a></code></td>
36172: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36173: <td><code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code></td>
36174: </tr><tr><th><code><a href="the-th-element.html#the-th-element">th</a></code></th>
36175: <td>Table header cell</td>
36176: <td>none</td>
36177: <td><code><a href="the-tr-element.html#the-tr-element">tr</a></code></td>
36178: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>*</td>
36179: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36180: <code title="attr-tdth-colspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-colspan">colspan</a></code>;
36181: <code title="attr-tdth-rowspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-rowspan">rowspan</a></code>;
36182: <code title="attr-tdth-headers"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-headers">headers</a></code>;
36183: <code title="attr-th-scope"><a href="the-th-element.html#attr-th-scope">scope</a></code></td>
36184: <td><code><a href="the-th-element.html#htmltableheadercellelement">HTMLTableHeaderCellElement</a></code></td>
36185: </tr><tr><th><code><a href="the-thead-element.html#the-thead-element">thead</a></code></th>
36186: <td>Group of heading rows in a table</td>
36187: <td>none</td>
36188: <td><code><a href="the-table-element.html#the-table-element">table</a></code></td>
36189: <td><code><a href="the-tr-element.html#the-tr-element">tr</a></code></td>
36190: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36191: <td><code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code></td>
36192: </tr><tr><th><code><a href="the-time-element.html#the-time-element">time</a></code></th>
36193: <td>Machine-readable equivalent of date- or time-related data</td>
36194: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36195: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36196: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36197: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36198: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36199: <code title="attr-time-datetime"><a href="the-time-element.html#attr-time-datetime">datetime</a></code></td>
36200: <td><code><a href="the-time-element.html#htmltimeelement">HTMLTimeElement</a></code></td>
36201: </tr><tr><th><code><a href="the-title-element.html#the-title-element">title</a></code></th>
36202: <td>Document title</td>
36203: <td><a href="content-models.html#metadata-content-0" title="Metadata content">metadata</a></td>
36204: <td><code><a href="the-head-element.html#the-head-element">head</a></code></td>
36205: <td><a href="content-models.html#text-content" title="text content">text</a></td>
36206: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36207: <td><code><a href="the-title-element.html#htmltitleelement">HTMLTitleElement</a></code></td>
36208: </tr><tr><th><code><a href="the-tr-element.html#the-tr-element">tr</a></code></th>
36209: <td>Table row</td>
36210: <td>none</td>
36211: <td><code><a href="the-table-element.html#the-table-element">table</a></code>;
36212: <code><a href="the-thead-element.html#the-thead-element">thead</a></code>;
36213: <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>;
36214: <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code></td>
36215: <td><code><a href="the-th-element.html#the-th-element">th</a></code>*;
36216: <code><a href="the-td-element.html#the-td-element">td</a></code></td>
36217: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36218: <td><code><a href="the-tr-element.html#htmltablerowelement">HTMLTableRowElement</a></code></td>
36219: </tr><tr><th><code><a href="the-track-element.html#the-track-element">track</a></code></th>
36220: <td>Timed text track</td>
36221: <td>none</td>
36222: <td><code><a href="the-audio-element.html#the-audio-element">audio</a></code>;
36223: <code><a href="the-video-element.html#the-video-element">video</a></code></td>
36224: <td>empty</td>
36225: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36226: <code title="attr-track-default"><a href="the-track-element.html#attr-track-default">default</a></code>;
36227: <code title="attr-track-kind"><a href="the-track-element.html#attr-track-kind">kind</a></code>;
36228: <code title="attr-track-label"><a href="the-track-element.html#attr-track-label">label</a></code>;
36229: <code title="attr-track-src"><a href="the-track-element.html#attr-track-src">src</a></code>;
36230: <code title="attr-track-srclang"><a href="the-track-element.html#attr-track-srclang">srclang</a></code></td>
36231: <td><code><a href="the-track-element.html#htmltrackelement">HTMLTrackElement</a></code></td>
36232: </tr><tr><th><code><a href="the-u-element.html#the-u-element">u</a></code></th>
36233: <td>Keywords</td>
36234: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36235: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36236: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36237: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36238: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36239: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36240: </tr><tr><th><code><a href="the-ul-element.html#the-ul-element">ul</a></code></th>
36241: <td>List</td>
36242: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36243: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a></td>
36244: <td><code><a href="the-li-element.html#the-li-element">li</a></code></td>
36245: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36246: <td><code><a href="the-ul-element.html#htmlulistelement">HTMLUListElement</a></code></td>
36247: </tr><tr><th><code><a href="the-var-element.html#the-var-element">var</a></code></th>
36248: <td>Variable</td>
36249: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36250: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36251: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36252: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36253: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36254: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36255: </tr><tr><th><code><a href="the-video-element.html#the-video-element">video</a></code></th>
36256: <td>Video player</td>
36257: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36258: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a>;
36259: <a href="content-models.html#embedded-content-2" title="Embedded content">embedded</a>;
36260: <a href="content-models.html#interactive-content-0" title="Interactive content">interactive</a></td>
36261: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36262: <td><code><a href="the-source-element.html#the-source-element">source</a></code>*;
36263: <a href="content-models.html#transparent">transparent</a>*</td>
36264: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a>;
36265: <code title="attr-media-src"><a href="media-elements.html#attr-media-src">src</a></code>;
36266: <code title="attr-media-crossorigin"><a href="media-elements.html#attr-media-crossorigin">crossorigin</a></code>;
36267: <code title="attr-video-poster"><a href="the-video-element.html#attr-video-poster">poster</a></code>;
36268: <code title="attr-media-preload"><a href="media-elements.html#attr-media-preload">preload</a></code>;
36269: <code title="attr-media-autoplay"><a href="media-elements.html#attr-media-autoplay">autoplay</a></code>;
36270: <code title="attr-media-mediagroup"><a href="media-elements.html#attr-media-mediagroup">mediagroup</a></code>;
36271: <code title="attr-media-loop"><a href="media-elements.html#attr-media-loop">loop</a></code>;
36272: <code title="attr-media-muted"><a href="media-elements.html#attr-media-muted">muted</a></code>;
36273: <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">controls</a></code>;
36274: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">width</a></code>;
36275: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">height</a></code></td>
36276: <td><code><a href="the-video-element.html#htmlvideoelement">HTMLVideoElement</a></code></td>
36277: </tr><tr><th><code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code></th>
36278: <td>Line breaking opportunity</td>
36279: <td><a href="content-models.html#flow-content-1" title="Flow content">flow</a>;
36280: <a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36281: <td><a href="content-models.html#phrasing-content-1" title="Phrasing content">phrasing</a></td>
36282: <td>empty</td>
36283: <td><a href="global-attributes.html#global-attributes" title="global attributes">globals</a></td>
36284: <td><code><a href="elements.html#htmlelement">HTMLElement</a></code></td>
36285: </tr></tbody></table><p>An asterisk (*) in a cell indicates that the actual rules are more complicated than indicated in the table above.</p>
36286:
36287: <p>† Categories in the "Parents" column refer to parents that
36288: list the given categories in their content model, not to elements
36289: that themselves are in those categories. For example, the
36290: <code><a href="the-a-element.html#the-a-element">a</a></code> element's "Parents" column says "phrasing", so any
36291: element whose content model contains the "phrasing" category could
36292: be a parent of an <code><a href="the-a-element.html#the-a-element">a</a></code> element. Since the "flow" category
36293: includes all the "phrasing" elements, that means the
36294: <code><a href="the-address-element.html#the-address-element">address</a></code> element could be a parent to an <code><a href="the-a-element.html#the-a-element">a</a></code>
36295: element.</p>
36296:
36297:
36298:
36299: <h3 class="no-num" id="element-content-categories">Element content categories</h3>
36300:
36301: <p><i>This section is non-normative.</i></p>
36302: <!-- when updating this also check the category-list <ul>s -->
36303:
36304: <table><caption>List of element content categories</caption>
36305: <thead><tr><th> Category
36306: </th><th> Elements
36307: </th><th> Elements with exceptions
36308: </th></tr></thead><tbody><tr><td> <a href="content-models.html#metadata-content-0">Metadata content</a>
36309: </td><td>
36310: <code><a href="the-base-element.html#the-base-element">base</a></code>;
36311: <code><a href="#the-command-element">command</a></code>;
36312: <code><a href="the-link-element.html#the-link-element">link</a></code>;
36313: <code><a href="the-meta-element.html#the-meta-element">meta</a></code>;
36314: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>;
36315: <code><a href="the-script-element.html#the-script-element">script</a></code>;
36316: <code><a href="the-style-element.html#the-style-element">style</a></code>;
36317: <code><a href="the-title-element.html#the-title-element">title</a></code>
36318: </td><td>
36319: —
36320:
36321: </td></tr><tr><td> <a href="content-models.html#flow-content-1">Flow content</a>
36322: </td><td>
36323: <code><a href="the-a-element.html#the-a-element">a</a></code>;
36324: <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code>;
36325: <code><a href="the-address-element.html#the-address-element">address</a></code>;
36326: <code><a href="the-article-element.html#the-article-element">article</a></code>;
36327: <code><a href="the-aside-element.html#the-aside-element">aside</a></code>;
36328: <code><a href="the-audio-element.html#the-audio-element">audio</a></code>;
36329: <code><a href="the-b-element.html#the-b-element">b</a></code>;
36330: <code><a href="the-bdi-element.html#the-bdi-element">bdi</a></code>;
36331: <code><a href="the-bdo-element.html#the-bdo-element">bdo</a></code>;
36332: <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>;
36333: <code><a href="the-br-element.html#the-br-element">br</a></code>;
36334: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36335: <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>;
36336: <code><a href="the-cite-element.html#the-cite-element">cite</a></code>;
36337: <code><a href="the-code-element.html#the-code-element">code</a></code>;
36338: <code><a href="#the-command-element">command</a></code>;
36339: <!--DATA--><!--FORK-->
36340: <code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code>;
36341: <code><a href="the-del-element.html#the-del-element">del</a></code>;
36342: <code><a href="#the-details-element">details</a></code>;
36343: <code><a href="the-dfn-element.html#the-dfn-element">dfn</a></code>;
36344: <code><a href="#the-dialog-element">dialog</a></code>;
36345: <code><a href="the-div-element.html#the-div-element">div</a></code>;
36346: <code><a href="the-dl-element.html#the-dl-element">dl</a></code>;
36347: <code><a href="the-em-element.html#the-em-element">em</a></code>;
36348: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>;
36349: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>;
36350: <code><a href="the-figure-element.html#the-figure-element">figure</a></code>;
36351: <code><a href="the-footer-element.html#the-footer-element">footer</a></code>;
36352: <code><a href="the-form-element.html#the-form-element">form</a></code>;
36353: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>;
36354: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>;
36355: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>;
36356: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>;
36357: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>;
36358: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>;
36359: <code><a href="the-header-element.html#the-header-element">header</a></code>;
36360: <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>;
36361: <code><a href="the-hr-element.html#the-hr-element">hr</a></code>;
36362: <code><a href="the-i-element.html#the-i-element">i</a></code>;
36363: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>;
36364: <code><a href="the-img-element.html#the-img-element">img</a></code>;
36365: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36366: <code><a href="the-ins-element.html#the-ins-element">ins</a></code>;
36367: <code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code>;
36368: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36369: <code><a href="the-label-element.html#the-label-element">label</a></code>;
36370: <code><a href="the-map-element.html#the-map-element">map</a></code>;
36371: <code><a href="the-mark-element.html#the-mark-element">mark</a></code>;
36372: <code><a href="mathml.html#math">math</a></code>;
36373: <code><a href="#the-menu-element">menu</a></code>;
36374: <code><a href="the-meter-element.html#the-meter-element">meter</a></code>;
36375: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>;
36376: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>;
36377: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36378: <code><a href="the-ol-element.html#the-ol-element">ol</a></code>;
36379: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36380: <code><a href="the-p-element.html#the-p-element">p</a></code>;
36381: <code><a href="the-pre-element.html#the-pre-element">pre</a></code>;
36382: <code><a href="the-progress-element.html#the-progress-element">progress</a></code>;
36383: <code><a href="the-q-element.html#the-q-element">q</a></code>;
36384: <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code>;
36385: <code><a href="the-s-element.html#the-s-element">s</a></code>;
36386: <code><a href="the-samp-element.html#the-samp-element">samp</a></code>;
36387: <code><a href="the-script-element.html#the-script-element">script</a></code>;
36388: <code><a href="the-section-element.html#the-section-element">section</a></code>;
36389: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36390: <code><a href="the-small-element.html#the-small-element">small</a></code>;
36391: <code><a href="the-span-element.html#the-span-element">span</a></code>;
36392: <code><a href="the-strong-element.html#the-strong-element">strong</a></code>;
36393: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sub</a></code>;
36394: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sup</a></code>;
36395: <code><a href="mathml.html#svg-0">svg</a></code>;
36396: <code><a href="the-table-element.html#the-table-element">table</a></code>;
36397: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>;
36398: <code><a href="the-time-element.html#the-time-element">time</a></code>;
36399: <code><a href="the-u-element.html#the-u-element">u</a></code>;
36400: <code><a href="the-ul-element.html#the-ul-element">ul</a></code>;
36401: <code><a href="the-var-element.html#the-var-element">var</a></code>;
36402: <code><a href="the-video-element.html#the-video-element">video</a></code>;
36403: <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code>;
36404: <a href="content-models.html#text-content" title="text content">Text</a>
36405: </td><td>
36406: <code><a href="the-area-element.html#the-area-element">area</a></code> (if it is a descendant of a <code><a href="the-map-element.html#the-map-element">map</a></code> element);
36407: <!--MD-->
36408: <code><a href="the-style-element.html#the-style-element">style</a></code> (if the <code title="attr-style-scoped"><a href="the-style-element.html#attr-style-scoped">scoped</a></code> attribute is present)
36409:
36410: </td></tr><tr><td> <a href="content-models.html#sectioning-content-0">Sectioning content</a>
36411: </td><td>
36412: <code><a href="the-article-element.html#the-article-element">article</a></code>;
36413: <code><a href="the-aside-element.html#the-aside-element">aside</a></code>;
36414: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>;
36415: <code><a href="the-section-element.html#the-section-element">section</a></code>
36416: </td><td>
36417: —
36418:
36419: </td></tr><tr><td> <a href="content-models.html#heading-content-0">Heading content</a>
36420: </td><td>
36421: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>;
36422: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>;
36423: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>;
36424: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>;
36425: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>;
36426: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>;
36427: <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>
36428: </td><td>
36429: —
36430:
36431: </td></tr><tr><td> <a href="content-models.html#phrasing-content-1">Phrasing content</a>
36432: </td><td>
36433: <code><a href="the-a-element.html#the-a-element">a</a></code>;
36434: <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code>;
36435: <code><a href="the-audio-element.html#the-audio-element">audio</a></code>;
36436: <code><a href="the-b-element.html#the-b-element">b</a></code>;
36437: <code><a href="the-bdi-element.html#the-bdi-element">bdi</a></code>;
36438: <code><a href="the-bdo-element.html#the-bdo-element">bdo</a></code>;
36439: <code><a href="the-br-element.html#the-br-element">br</a></code>;
36440: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36441: <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>;
36442: <code><a href="the-cite-element.html#the-cite-element">cite</a></code>;
36443: <code><a href="the-code-element.html#the-code-element">code</a></code>;
36444: <code><a href="#the-command-element">command</a></code>;
36445: <!--DATA--><!--FORK-->
36446: <code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code>;
36447: <code><a href="the-del-element.html#the-del-element">del</a></code>;
36448: <code><a href="the-dfn-element.html#the-dfn-element">dfn</a></code>;
36449: <code><a href="the-em-element.html#the-em-element">em</a></code>;
36450: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>;
36451: <code><a href="the-i-element.html#the-i-element">i</a></code>;
36452: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>;
36453: <code><a href="the-img-element.html#the-img-element">img</a></code>;
36454: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36455: <code><a href="the-ins-element.html#the-ins-element">ins</a></code>;
36456: <code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code>;
36457: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36458: <code><a href="the-label-element.html#the-label-element">label</a></code>;
36459: <code><a href="the-map-element.html#the-map-element">map</a></code>;
36460: <code><a href="the-mark-element.html#the-mark-element">mark</a></code>;
36461: <code><a href="mathml.html#math">math</a></code>;
36462: <code><a href="the-meter-element.html#the-meter-element">meter</a></code>;
36463: <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>;
36464: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36465: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36466: <code><a href="the-progress-element.html#the-progress-element">progress</a></code>;
36467: <code><a href="the-q-element.html#the-q-element">q</a></code>;
36468: <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code>;
36469: <code><a href="the-s-element.html#the-s-element">s</a></code>;
36470: <code><a href="the-samp-element.html#the-samp-element">samp</a></code>;
36471: <code><a href="the-script-element.html#the-script-element">script</a></code>;
36472: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36473: <code><a href="the-small-element.html#the-small-element">small</a></code>;
36474: <code><a href="the-span-element.html#the-span-element">span</a></code>;
36475: <code><a href="the-strong-element.html#the-strong-element">strong</a></code>;
36476: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sub</a></code>;
36477: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sup</a></code>;
36478: <code><a href="mathml.html#svg-0">svg</a></code>;
36479: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>;
36480: <code><a href="the-time-element.html#the-time-element">time</a></code>;
36481: <code><a href="the-u-element.html#the-u-element">u</a></code>;
36482: <code><a href="the-var-element.html#the-var-element">var</a></code>;
36483: <code><a href="the-video-element.html#the-video-element">video</a></code>;
36484: <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code>;
36485: <a href="content-models.html#text-content" title="text content">Text</a>
36486: </td><td>
36487: <code><a href="the-area-element.html#the-area-element">area</a></code> (if it is a descendant of a <code><a href="the-map-element.html#the-map-element">map</a></code> element);
36488: <!--MD-->
36489:
36490: </td></tr><tr><td> <a href="content-models.html#embedded-content-2">Embedded content</a>
36491: </td><td>
36492: <code><a href="the-audio-element.html#the-audio-element">audio</a></code>
36493: <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>
36494: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>
36495: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>
36496: <code><a href="the-img-element.html#the-img-element">img</a></code>
36497: <code><a href="mathml.html#math">math</a></code>
36498: <code><a href="the-object-element.html#the-object-element">object</a></code>
36499: <code><a href="mathml.html#svg-0">svg</a></code>
36500: <code><a href="the-video-element.html#the-video-element">video</a></code>
36501: </td><td>
36502: —
36503:
36504: </td></tr><tr><td> <a href="content-models.html#interactive-content-0">Interactive content</a>
36505: </td><td>
36506: <code><a href="the-a-element.html#the-a-element">a</a></code>;
36507: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36508: <code><a href="#the-details-element">details</a></code>;
36509: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>;
36510: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>;
36511: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36512: <code><a href="the-label-element.html#the-label-element">label</a></code>;
36513: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36514: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>;
36515: </td><td>
36516: <code><a href="the-audio-element.html#the-audio-element">audio</a></code> (if the <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">controls</a></code> attribute is present);
36517: <code><a href="the-img-element.html#the-img-element">img</a></code> (if the <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">usemap</a></code> attribute is present);
36518: <code><a href="the-input-element.html#the-input-element">input</a></code> (if the <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is <em>not</em> in the <a href="states-of-the-type-attribute.html#hidden-state-(type=hidden)" title="attr-input-type-hidden">Hidden</a> state);
36519: <code><a href="#the-menu-element">menu</a></code> (if the <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state);
36520: <code><a href="the-object-element.html#the-object-element">object</a></code> (if the <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">usemap</a></code> attribute is present)<!-- see also comment in <object> section -->;
36521: <code><a href="the-video-element.html#the-video-element">video</a></code> (if the <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">controls</a></code> attribute is present)
36522:
36523: </td></tr><tr><td> <a href="headings-and-sections.html#sectioning-root" title="sectioning root">Sectioning roots</a>
36524: </td><td>
36525: <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>;
36526: <code><a href="the-body-element.html#the-body-element">body</a></code>;
36527: <code><a href="#the-details-element">details</a></code>;
36528: <code><a href="#the-dialog-element">dialog</a></code>;
36529: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>;
36530: <code><a href="the-figure-element.html#the-figure-element">figure</a></code>;
36531: <code><a href="the-td-element.html#the-td-element">td</a></code>
36532: </td><td>
36533: —
36534:
36535: </td></tr><tr><td> <a href="forms.html#form-associated-element" title="form-associated element">Form-associated elements</a>
36536: </td><td>
36537: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36538: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>;
36539: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36540: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36541: <code><a href="the-label-element.html#the-label-element">label</a></code>;
36542: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36543: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36544: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36545: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
36546: </td><td>
36547: —
36548:
36549: </td></tr><tr><td> <a href="forms.html#category-listed" title="category-listed">Listed elements</a>
36550: </td><td>
36551: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36552: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>;
36553: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36554: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36555: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36556: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36557: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36558: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
36559: </td><td>
36560: —
36561:
36562: </td></tr><tr><td> <a href="forms.html#category-submit" title="category-submit">Submittable elements</a>
36563: </td><td>
36564: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36565: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36566: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36567: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36568: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36569: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
36570: </td><td>
36571: —
36572:
36573: </td></tr><tr><td> <a href="forms.html#category-reset" title="category-reset">Resettable elements</a>
36574: </td><td>
36575: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36576: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36577: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36578: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36579: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
36580: </td><td>
36581: —
36582:
36583: </td></tr><tr><td> <a href="forms.html#category-label" title="category-label">Labelable elements</a>
36584: </td><td>
36585: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36586: <code><a href="the-input-element.html#the-input-element">input</a></code>;
36587: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36588: <code><a href="the-meter-element.html#the-meter-element">meter</a></code>;
36589: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36590: <code><a href="the-progress-element.html#the-progress-element">progress</a></code>;
36591: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36592: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
36593: </td><td>
36594: —
36595:
36596: </td></tr><tr><td> <a href="content-models.html#palpable-content-0">Palpable content</a>
36597: </td><td>
36598: <code><a href="the-a-element.html#the-a-element">a</a></code>;
36599: <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code>;
36600: <code><a href="the-address-element.html#the-address-element">address</a></code>;
36601: <code><a href="the-article-element.html#the-article-element">article</a></code>;
36602: <code><a href="the-aside-element.html#the-aside-element">aside</a></code>;
36603: <code><a href="the-b-element.html#the-b-element">b</a></code>;
36604: <code><a href="the-bdi-element.html#the-bdi-element">bdi</a></code>;
36605: <code><a href="the-bdo-element.html#the-bdo-element">bdo</a></code>;
36606: <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>;
36607: <code><a href="the-button-element.html#the-button-element">button</a></code>;
36608: <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>;
36609: <code><a href="the-cite-element.html#the-cite-element">cite</a></code>;
36610: <code><a href="the-code-element.html#the-code-element">code</a></code>;
36611: <!--DATA--><!--FORK-->
36612: <code><a href="#the-details-element">details</a></code>;
36613: <code><a href="the-dfn-element.html#the-dfn-element">dfn</a></code>;
36614: <code><a href="the-div-element.html#the-div-element">div</a></code>;
36615: <code><a href="the-em-element.html#the-em-element">em</a></code>;
36616: <code><a href="the-embed-element.html#the-embed-element">embed</a></code>;
36617: <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>;
36618: <code><a href="the-figure-element.html#the-figure-element">figure</a></code>;
36619: <code><a href="the-footer-element.html#the-footer-element">footer</a></code>;
36620: <code><a href="the-form-element.html#the-form-element">form</a></code>;
36621: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>;
36622: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>;
36623: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>;
36624: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>;
36625: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>;
36626: <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>;
36627: <code><a href="the-header-element.html#the-header-element">header</a></code>;
36628: <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>;
36629: <code><a href="the-i-element.html#the-i-element">i</a></code>;
36630: <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>;
36631: <code><a href="the-img-element.html#the-img-element">img</a></code>;
36632: <code><a href="the-ins-element.html#the-ins-element">ins</a></code>;
36633: <code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code>;
36634: <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>;
36635: <code><a href="the-label-element.html#the-label-element">label</a></code>;
36636: <code><a href="the-map-element.html#the-map-element">map</a></code>;
36637: <code><a href="the-mark-element.html#the-mark-element">mark</a></code>;
36638: <code><a href="mathml.html#math">math</a></code>;
36639: <code><a href="the-meter-element.html#the-meter-element">meter</a></code>;
36640: <code><a href="the-nav-element.html#the-nav-element">nav</a></code>;
36641: <code><a href="the-object-element.html#the-object-element">object</a></code>;
36642: <code><a href="the-output-element.html#the-output-element">output</a></code>;
36643: <code><a href="the-p-element.html#the-p-element">p</a></code>;
36644: <code><a href="the-pre-element.html#the-pre-element">pre</a></code>;
36645: <code><a href="the-progress-element.html#the-progress-element">progress</a></code>;
36646: <code><a href="the-q-element.html#the-q-element">q</a></code>;
36647: <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code>;
36648: <code><a href="the-s-element.html#the-s-element">s</a></code>;
36649: <code><a href="the-samp-element.html#the-samp-element">samp</a></code>;
36650: <code><a href="the-section-element.html#the-section-element">section</a></code>;
36651: <code><a href="the-select-element.html#the-select-element">select</a></code>;
36652: <code><a href="the-small-element.html#the-small-element">small</a></code>;
36653: <code><a href="the-span-element.html#the-span-element">span</a></code>;
36654: <code><a href="the-strong-element.html#the-strong-element">strong</a></code>;
36655: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sub</a></code>;
36656: <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sup</a></code>;
36657: <code><a href="mathml.html#svg-0">svg</a></code>;
36658: <code><a href="the-table-element.html#the-table-element">table</a></code>;
36659: <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>;
36660: <code><a href="the-time-element.html#the-time-element">time</a></code>;
36661: <code><a href="the-u-element.html#the-u-element">u</a></code>;
36662: <code><a href="the-var-element.html#the-var-element">var</a></code>;
36663: <code><a href="the-video-element.html#the-video-element">video</a></code>
36664: </td><td>
36665: <code><a href="the-audio-element.html#the-audio-element">audio</a></code> (if the <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">controls</a></code> attribute is present);
36666: <code><a href="the-dl-element.html#the-dl-element">dl</a></code> (if the element's children include at least one name-value group);
36667: <code><a href="the-input-element.html#the-input-element">input</a></code> (if the <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">type</a></code> attribute is <em>not</em> in the <a href="states-of-the-type-attribute.html#hidden-state-(type=hidden)" title="attr-input-type-hidden">Hidden</a> state);
36668: <code><a href="#the-menu-element">menu</a></code> (if the <code title="attr-menu-type"><a href="#attr-menu-type">type</a></code> attribute is in the <a href="#toolbar-state" title="toolbar state">toolbar</a> state or the <a href="#list-state" title="list state">list</a> state);
36669: <code><a href="the-ol-element.html#the-ol-element">ol</a></code> (if the element's children include at least one <code><a href="the-li-element.html#the-li-element">li</a></code> element);
36670: <code><a href="the-ul-element.html#the-ul-element">ul</a></code> (if the element's children include at least one <code><a href="the-li-element.html#the-li-element">li</a></code> element);
36671: <a href="content-models.html#text-content" title="text content">Text</a> that is not <a href="content-models.html#inter-element-whitespace">inter-element whitespace</a>
36672:
36673: </td></tr></tbody></table><h3 class="no-num" id="attributes-1">Attributes</h3>
36674:
36675: <p><i>This section is non-normative.</i></p>
36676: <table><caption>List of attributes (excluding event handler content attributes)</caption>
36677: <thead><tr><th> Attribute
36678: </th><th> Element(s)
36679: </th><th> Description
36680: </th><th> Value
36681: </th></tr></thead><tbody><tr><th> <code title="">accept</code>
36682: </th><td> <code title="attr-input-accept"><a href="states-of-the-type-attribute.html#attr-input-accept">input</a></code>
36683: </td><td> Hint for expected file type in <a href="states-of-the-type-attribute.html#file-upload-state-(type=file)" title="attr-input-type-file">file upload controls</a>
36684: </td><td> <a href="common-microsyntaxes.html#set-of-comma-separated-tokens">Set of comma-separated tokens</a>* consisting of <a href="infrastructure.html#valid-mime-type" title="valid MIME type">valid MIME types with no parameters</a> or <code title="">audio/*</code>, <code title="">video/*</code>, or <code title="">image/*</code>
36685: </td></tr><tr><th> <code title="">accept-charset</code>
36686: </th><td> <code title="attr-form-accept-charset"><a href="the-form-element.html#attr-form-accept-charset">form</a></code>
36687: </td><td> Character encodings to use for <a href="#form-submission-0">form submission</a>
36688: </td><td> <a href="common-microsyntaxes.html#ordered-set-of-unique-space-separated-tokens">Ordered set of unique space-separated tokens</a>, <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>, consisting of <a href="infrastructure.html#preferred-mime-name" title="preferred MIME name">preferred MIME names</a> of <a href="infrastructure.html#ascii-compatible-character-encoding" title="ASCII-compatible character encoding">ASCII-compatible character encodings</a>*
36689: </td></tr><tr><th> <code title="">accesskey</code>
36690: </th><td> <a href="#the-accesskey-attribute" title="attr-accesskey">HTML elements</a>
36691: </td><td> Keyboard shortcut to activate or focus element
36692: </td><td> <a href="common-microsyntaxes.html#ordered-set-of-unique-space-separated-tokens">Ordered set of unique space-separated tokens</a>, <a href="infrastructure.html#case-sensitive">case-sensitive</a>, consisting of one Unicode code point in length
36693: </td></tr><tr><th> <code title="">action</code>
36694: </th><td> <code title="attr-fs-action"><a href="form-submission.html#attr-fs-action">form</a></code>
36695: </td><td> <a href="urls.html#url">URL</a> to use for <a href="#form-submission-0">form submission</a>
36696: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
36697: </td></tr><tr><th> <code title="">alt</code>
36698: </th><td> <code title="attr-area-alt"><a href="the-area-element.html#attr-area-alt">area</a></code>;
36699: <code title="attr-img-alt"><a href="the-img-element.html#attr-img-alt">img</a></code>;
36700: <code title="attr-input-alt"><a href="states-of-the-type-attribute.html#attr-input-alt">input</a></code>
36701: </td><td> Replacement text for use when images are not available
36702: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36703: </td></tr><tr><th> <code title="">async</code>
36704: </th><td> <code title="attr-script-async"><a href="the-script-element.html#attr-script-async">script</a></code>
36705: </td><td> Execute script asynchronously
36706: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36707: </td></tr><tr><th> <code title="">autocomplete</code>
36708: </th><td> <code title="attr-form-autocomplete"><a href="the-form-element.html#attr-form-autocomplete">form</a></code>;
36709: <code title="attr-input-autocomplete"><a href="common-input-element-attributes.html#attr-input-autocomplete">input</a></code>
36710: </td><td> Prevent the user agent from providing autocompletions for the form control(s)
36711: </td><td> "<code title="">on</code>"; "<code title="">off</code>"
36712: </td></tr><tr><th> <code title="">autofocus</code>
36713: </th><td> <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">button</a></code>;
36714: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">input</a></code>;
36715: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">keygen</a></code>;
36716: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">select</a></code>;
36717: <code title="attr-fe-autofocus"><a href="attributes-common-to-form-controls.html#attr-fe-autofocus">textarea</a></code>
36718: </td><td> Automatically focus the form control when the page is loaded
36719: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36720: </td></tr><tr><th> <code title="">autoplay</code>
36721: </th><td> <code title="attr-media-autoplay"><a href="media-elements.html#attr-media-autoplay">audio</a></code>;
36722: <code title="attr-media-autoplay"><a href="media-elements.html#attr-media-autoplay">video</a></code>
36723: </td><td> Hint that the <a href="media-elements.html#media-resource">media resource</a> can be started automatically when the page is loaded
36724: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36725: </td></tr><tr><th> <code title="">border</code>
36726: </th><td> <code title="attr-table-border"><a href="the-table-element.html#attr-table-border">table</a></code>
36727: </td><td> Explicit indication that the <code><a href="the-table-element.html#the-table-element">table</a></code> element is not being used for layout purposes
36728: </td><td> The empty string, or "<code title="">1</code>"
36729: </td></tr><tr><th> <code title="">challenge</code>
36730: </th><td> <code title="attr-keygen-challenge"><a href="the-keygen-element.html#attr-keygen-challenge">keygen</a></code>
36731: </td><td> String to package with the generated and signed public key
36732: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
36733: </td></tr><tr><th> <code title="">charset</code>
36734: </th><td> <code title="attr-meta-charset"><a href="the-meta-element.html#attr-meta-charset">meta</a></code>
36735: </td><td> <a href="the-meta-element.html#character-encoding-declaration">Character encoding declaration</a>
36736: </td><td> <a href="infrastructure.html#preferred-mime-name">Preferred MIME name</a> of an encoding*
36737: </td></tr><tr><th> <code title="">charset</code>
36738: </th><td> <code title="attr-script-charset"><a href="the-script-element.html#attr-script-charset">script</a></code>
36739: </td><td> Character encoding of the external script resource
36740: </td><td> <a href="infrastructure.html#preferred-mime-name">Preferred MIME name</a> of an encoding*
36741: </td></tr><tr><th> <code title="">checked</code>
36742: </th><td> <code title="attr-command-checked"><a href="#attr-command-checked">command</a></code>;
36743: <code title="attr-input-checked"><a href="the-input-element.html#attr-input-checked">input</a></code>
36744: </td><td> Whether the command or control is checked
36745: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36746: </td></tr><tr><th> <code title="">cite</code>
36747: </th><td> <code title="attr-blockquote-cite"><a href="the-blockquote-element.html#attr-blockquote-cite">blockquote</a></code>;
36748: <code title="attr-mod-cite"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-cite">del</a></code>;
36749: <code title="attr-mod-cite"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-cite">ins</a></code>;
36750: <code title="attr-q-cite"><a href="the-q-element.html#attr-q-cite">q</a></code>
36751: </td><td> Link to the source of the quotation or more information about the edit
36752: </td><td> <a href="urls.html#valid-url-potentially-surrounded-by-spaces">Valid URL potentially surrounded by spaces</a>
36753: </td></tr><tr><th> <code title="">class</code>
36754: </th><td> <a href="global-attributes.html#classes" title="attr-class">HTML elements</a>
36755: </td><td> Classes to which the element belongs
36756: </td><td> <a href="common-microsyntaxes.html#set-of-space-separated-tokens">Set of space-separated tokens</a>
36757: </td></tr><tr><th> <code title="">cols</code>
36758: </th><td> <code title="attr-textarea-cols"><a href="the-textarea-element.html#attr-textarea-cols">textarea</a></code>
36759: </td><td> Maximum number of characters per line
36760: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a> greater than zero
36761: </td></tr><tr><th> <code title="">colspan</code>
36762: </th><td> <code title="attr-tdth-colspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-colspan">td</a></code>;
36763: <code title="attr-tdth-colspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-colspan">th</a></code>
36764: </td><td> Number of columns that the cell is to span
36765: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a> greater than zero
36766: </td></tr><tr><th> <code title="">command</code>
36767: </th><td> <code title="attr-command-command"><a href="#attr-command-command">command</a></code>
36768: </td><td> Command definition
36769: </td><td> <a href="infrastructure.html#concept-id" title="concept-id">ID</a>*
36770: </td></tr><tr><th> <code title="">content</code>
36771: </th><td> <code title="attr-meta-content"><a href="the-meta-element.html#attr-meta-content">meta</a></code>
36772: </td><td> Value of the element
36773: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36774: </td></tr><tr><th> <code title="">contenteditable</code>
36775: </th><td> <a href="#attr-contenteditable" title="attr-contenteditable">HTML elements</a>
36776: </td><td> Whether the element is editable
36777: </td><td> "<code title="">true</code>"; "<code title="">false</code>"
36778: </td></tr><tr><th> <code title="">contextmenu</code>
36779: </th><td> <a href="#attr-contextmenu" title="attr-contextmenu">HTML elements</a>
36780: </td><td> The element's context menu
36781: </td><td> <a href="infrastructure.html#concept-id" title="concept-id">ID</a>*
36782: </td></tr><tr><th> <code title="">controls</code>
36783: </th><td> <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">audio</a></code>;
36784: <code title="attr-media-controls"><a href="media-elements.html#attr-media-controls">video</a></code>
36785: </td><td> Show user agent controls
36786: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36787: </td></tr><tr><th> <code title="">coords</code>
36788: </th><td> <code title="attr-area-coords"><a href="the-area-element.html#attr-area-coords">area</a></code>
36789: </td><td> Coordinates for the shape to be created in an <a href="image-maps.html#image-map">image map</a>
36790: </td><td> <a href="common-microsyntaxes.html#valid-list-of-integers">Valid list of integers</a>*
36791: </td></tr><tr><th> <code title="">crossorigin</code>
36792: </th><td> <code title="attr-media-crossorigin"><a href="media-elements.html#attr-media-crossorigin">audio</a></code>;
36793: <code title="attr-img-crossorigin"><a href="the-img-element.html#attr-img-crossorigin">img</a></code>;
36794: <code title="attr-media-crossorigin"><a href="media-elements.html#attr-media-crossorigin">video</a></code>
36795: </td><td> How the element handles crossorigin requests.
36796: </td><td> "<code title="attr-crossorigin-anonymous-keyword"><a href="urls.html#attr-crossorigin-anonymous-keyword">anonymous</a></code>"; "<code title="attr-crossorigin-use-credentials-keyword"><a href="urls.html#attr-crossorigin-use-credentials-keyword">use-credentials</a></code>"
36797: </td></tr><tr><th> <code title="">data</code>
36798: </th><td> <code title="attr-object-data"><a href="the-object-element.html#attr-object-data">object</a></code>
36799: </td><td> Address of the resource
36800: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
36801: </td></tr><tr><th> <code title="">datetime</code>
36802: </th><td> <code title="attr-mod-datetime"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-datetime">del</a></code>;
36803: <code title="attr-mod-datetime"><a href="attributes-common-to-ins-and-del-elements.html#attr-mod-datetime">ins</a></code>
36804: </td><td> Date and (optionally) time of the change
36805: </td><td> <a href="common-microsyntaxes.html#valid-date-string-with-optional-time">Valid date string with optional time</a>
36806: </td></tr><tr><th> <code title="">datetime</code>
36807: </th><td> <code title="attr-time-datetime"><a href="the-time-element.html#attr-time-datetime">time</a></code>
36808: </td><td> Machine-readable value
36809: </td><td> <a href="common-microsyntaxes.html#valid-month-string">Valid month string</a>,
36810: <a href="common-microsyntaxes.html#valid-date-string">valid date string</a>,
36811: <a href="common-microsyntaxes.html#valid-yearless-date-string">valid yearless date string</a>,
36812: <a href="common-microsyntaxes.html#valid-time-string">valid time string</a>,
36813: <a href="common-microsyntaxes.html#valid-local-date-and-time-string">valid local date and time string</a>,
36814: <a href="common-microsyntaxes.html#valid-time-zone-offset-string">valid time-zone offset string</a>,
36815: <a href="common-microsyntaxes.html#valid-global-date-and-time-string">valid global date and time string</a>,
36816: <a href="common-microsyntaxes.html#valid-week-string">valid week string</a>,
36817: <a href="common-microsyntaxes.html#valid-non-negative-integer">valid non-negative integer</a>, or
36818: <a href="common-microsyntaxes.html#valid-duration-string">valid duration string</a>
36819: </td></tr><tr><th> <code title="">default</code>
36820: </th><td> <code title="attr-track-default"><a href="the-track-element.html#attr-track-default">track</a></code>
36821: </td><td> Enable the track if no other <a href="media-elements.html#text-track">text track</a> is more suitable.
36822: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36823: </td></tr><tr><th> <code title="">defer</code>
36824: </th><td> <code title="attr-script-defer"><a href="the-script-element.html#attr-script-defer">script</a></code>
36825: </td><td> Defer script execution
36826: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36827: </td></tr><tr><th> <code title="">dir</code>
36828: </th><td> <a href="global-attributes.html#the-dir-attribute" title="attr-dir">HTML elements</a>
36829: </td><td> <a href="global-attributes.html#the-directionality" title="the directionality">The text directionality</a> of the element
36830: </td><td> "<code title="attr-dir-ltr"><a href="global-attributes.html#attr-dir-ltr">ltr</a></code>"; "<code title="attr-dir-rtl"><a href="global-attributes.html#attr-dir-rtl">rtl</a></code>"; "<code title="attr-dir-auto"><a href="global-attributes.html#attr-dir-auto">auto</a></code>"
36831: </td></tr><tr><th> <code title="">dirname</code>
36832: </th><td> <code title="attr-input-dirname"><a href="common-input-element-attributes.html#attr-input-dirname">input</a></code>;
36833: <code title="attr-textarea-dirname"><a href="the-textarea-element.html#attr-textarea-dirname">textarea</a></code>
36834: </td><td> Name of form field to use for sending the element's <a href="global-attributes.html#the-directionality" title="the directionality">directionality</a> in <a href="#form-submission-0">form submission</a>
36835: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36836: </td></tr><tr><th> <code title="">disabled</code>
36837: </th><td> <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">button</a></code>;
36838: <code title="attr-command-disabled"><a href="#attr-command-disabled">command</a></code>;
36839: <code title="attr-fieldset-disabled"><a href="the-fieldset-element.html#attr-fieldset-disabled">fieldset</a></code>;
36840: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">input</a></code>;
36841: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">keygen</a></code>;
36842: <code title="attr-optgroup-disabled"><a href="the-optgroup-element.html#attr-optgroup-disabled">optgroup</a></code>;
36843: <code title="attr-option-disabled"><a href="the-option-element.html#attr-option-disabled">option</a></code>;
36844: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">select</a></code>;
36845: <code title="attr-fe-disabled"><a href="attributes-common-to-form-controls.html#attr-fe-disabled">textarea</a></code>
36846: </td><td> Whether the form control is disabled
36847: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36848: <!--DOWNLOAD-->
36849: </td></tr><tr><th> <code title="">draggable</code>
36850: </th><td> <a href="#the-draggable-attribute" title="attr-draggable">HTML elements</a>
36851: </td><td> Whether the element is draggable
36852: </td><td> "<code title="">true</code>"; "<code title="">false</code>"
36853: </td></tr><tr><th> <code title="">dropzone</code>
36854: </th><td> <a href="#the-dropzone-attribute" title="attr-dropzone">HTML elements</a>
36855: </td><td> Accepted item types for drag-and-drop
36856: </td><td> <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">Unordered set of unique space-separated tokens</a>, <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>, consisting of accepted types and drag feedback*
36857: </td></tr><tr><th> <code title="">enctype</code>
36858: </th><td> <code title="attr-fs-enctype"><a href="form-submission.html#attr-fs-enctype">form</a></code>
36859: </td><td> Form data set encoding type to use for <a href="#form-submission-0">form submission</a>
36860: </td><td> "<code title="attr-fs-enctype-urlencoded"><a href="form-submission.html#attr-fs-enctype-urlencoded">application/x-www-form-urlencoded</a></code>"; "<code title="attr-fs-enctype-formdata"><a href="form-submission.html#attr-fs-enctype-formdata">multipart/form-data</a></code>"; "<code title="attr-fs-enctype-text"><a href="form-submission.html#attr-fs-enctype-text">text/plain</a></code>"
36861: </td></tr><tr><th> <code title="">for</code>
36862: </th><td> <code title="attr-label-for"><a href="the-label-element.html#attr-label-for">label</a></code>
36863: </td><td> Associate the label with form control
36864: </td><td> <a href="infrastructure.html#concept-id" title="concept-id">ID</a>*
36865: </td></tr><tr><th> <code title="">for</code>
36866: </th><td> <code title="attr-output-for"><a href="the-output-element.html#attr-output-for">output</a></code>
36867: </td><td> Specifies controls from which the output was calculated
36868: </td><td> <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">Unordered set of unique space-separated tokens</a>, <a href="infrastructure.html#case-sensitive">case-sensitive</a>, consisting of IDs*
36869: </td></tr><tr><th> <code title="">form</code>
36870: </th><td> <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">button</a></code>;
36871: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">fieldset</a></code>;
36872: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">input</a></code>;
36873: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">keygen</a></code>;
36874: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">label</a></code>;
36875: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">object</a></code>;
36876: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">output</a></code>;
36877: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">select</a></code>;
36878: <code title="attr-fae-form"><a href="association-of-controls-and-forms.html#attr-fae-form">textarea</a></code>
36879: </td><td> Associates the control with a <code><a href="the-form-element.html#the-form-element">form</a></code> element
36880: </td><td> <a href="infrastructure.html#concept-id" title="concept-id">ID</a>*
36881: </td></tr><tr><th> <code title="">formaction</code>
36882: </th><td> <code title="attr-fs-formaction"><a href="form-submission.html#attr-fs-formaction">button</a></code>;
36883: <code title="attr-fs-formaction"><a href="form-submission.html#attr-fs-formaction">input</a></code>
36884: </td><td> <a href="urls.html#url">URL</a> to use for <a href="#form-submission-0">form submission</a>
36885: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
36886: </td></tr><tr><th> <code title="">formenctype</code>
36887: </th><td> <code title="attr-fs-formenctype"><a href="form-submission.html#attr-fs-formenctype">button</a></code>;
36888: <code title="attr-fs-formenctype"><a href="form-submission.html#attr-fs-formenctype">input</a></code>
36889: </td><td> Form data set encoding type to use for <a href="#form-submission-0">form submission</a>
36890: </td><td> "<code title="attr-fs-enctype-urlencoded"><a href="form-submission.html#attr-fs-enctype-urlencoded">application/x-www-form-urlencoded</a></code>"; "<code title="attr-fs-enctype-formdata"><a href="form-submission.html#attr-fs-enctype-formdata">multipart/form-data</a></code>"; "<code title="attr-fs-enctype-text"><a href="form-submission.html#attr-fs-enctype-text">text/plain</a></code>"
36891: </td></tr><tr><th> <code title="">formmethod</code>
36892: </th><td> <code title="attr-fs-formmethod"><a href="form-submission.html#attr-fs-formmethod">button</a></code>;
36893: <code title="attr-fs-formmethod"><a href="form-submission.html#attr-fs-formmethod">input</a></code>
36894: </td><td> HTTP method to use for <a href="#form-submission-0">form submission</a>
36895: </td><td> "<code title="">GET</code>"; "<code title="">POST</code>"
36896: </td></tr><tr><th> <code title="">formnovalidate</code>
36897: </th><td> <code title="attr-fs-formnovalidate"><a href="form-submission.html#attr-fs-formnovalidate">button</a></code>;
36898: <code title="attr-fs-formnovalidate"><a href="form-submission.html#attr-fs-formnovalidate">input</a></code>
36899: </td><td> Bypass form control validation for <a href="#form-submission-0">form submission</a>
36900: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36901: </td></tr><tr><th> <code title="">formtarget</code>
36902: </th><td> <code title="attr-fs-formtarget"><a href="form-submission.html#attr-fs-formtarget">button</a></code>;
36903: <code title="attr-fs-formtarget"><a href="form-submission.html#attr-fs-formtarget">input</a></code>
36904: </td><td> <a href="#browsing-context">Browsing context</a> for <a href="#form-submission-0">form submission</a>
36905: </td><td> <a href="#valid-browsing-context-name-or-keyword">Valid browsing context name or keyword</a>
36906: </td></tr><tr><th> <code title="">headers</code>
36907: </th><td> <code title="attr-tdth-headers"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-headers">td</a></code>;
36908: <code title="attr-tdth-headers"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-headers">th</a></code>
36909: </td><td> The header cells for this cell
36910: </td><td> <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">Unordered set of unique space-separated tokens</a>, <a href="infrastructure.html#case-sensitive">case-sensitive</a>, consisting of IDs*
36911: </td></tr><tr><th> <code title="">height</code>
36912: </th><td> <code title="attr-canvas-height"><a href="the-canvas-element.html#attr-canvas-height">canvas</a></code>;
36913: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">embed</a></code>;
36914: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">iframe</a></code>;
36915: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">img</a></code>;
36916: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">input</a></code>;
36917: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">object</a></code>;
36918: <code title="attr-dim-height"><a href="dimension-attributes.html#attr-dim-height">video</a></code>
36919: </td><td> Vertical dimension
36920: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a>
36921: </td></tr><tr><th> <code title="">hidden</code>
36922: </th><td> <a href="#the-hidden-attribute" title="attr-hidden">HTML elements</a>
36923: </td><td> Whether the element is relevant
36924: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36925: </td></tr><tr><th> <code title="">high</code>
36926: </th><td> <code title="attr-meter-high"><a href="the-meter-element.html#attr-meter-high">meter</a></code>
36927: </td><td> Low limit of high range
36928: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>*
36929: </td></tr><tr><th> <code title="">href</code>
36930: </th><td> <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">a</a></code>;
36931: <code title="attr-hyperlink-href"><a href="#attr-hyperlink-href">area</a></code>
36932: </td><td> Address of the <a href="#hyperlink">hyperlink</a>
36933: </td><td> <a href="urls.html#valid-url-potentially-surrounded-by-spaces">Valid URL potentially surrounded by spaces</a>
36934: </td></tr><tr><th> <code title="">href</code>
36935: </th><td> <code title="attr-link-href"><a href="the-link-element.html#attr-link-href">link</a></code>
36936: </td><td> Address of the <a href="#hyperlink">hyperlink</a>
36937: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
36938: </td></tr><tr><th> <code title="">href</code>
36939: </th><td> <code title="attr-base-href"><a href="the-base-element.html#attr-base-href">base</a></code>
36940: </td><td> <a href="urls.html#document-base-url">Document base URL</a>
36941: </td><td> <a href="urls.html#valid-url-potentially-surrounded-by-spaces">Valid URL potentially surrounded by spaces</a>
36942: </td></tr><tr><th> <code title="">hreflang</code>
36943: </th><td> <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">a</a></code>;
36944: <code title="attr-hyperlink-hreflang"><a href="#attr-hyperlink-hreflang">area</a></code>;
36945: <code title="attr-link-hreflang"><a href="the-link-element.html#attr-link-hreflang">link</a></code>
36946: </td><td> Language of the linked resource
36947: </td><td> Valid BCP 47 language tag
36948: </td></tr><tr><th> <code title="">http-equiv</code>
36949: </th><td> <code title="attr-meta-http-equiv"><a href="the-meta-element.html#attr-meta-http-equiv">meta</a></code>
36950: </td><td> Pragma directive
36951: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36952: </td></tr><tr><th> <code title="">icon</code>
36953: </th><td> <code title="attr-command-icon"><a href="#attr-command-icon">command</a></code>
36954: </td><td> Icon for the command
36955: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
36956: </td></tr><tr><th> <code title="">id</code>
36957: </th><td> <a href="global-attributes.html#the-id-attribute" title="attr-id">HTML elements</a>
36958: </td><td> The element's <a href="infrastructure.html#concept-id" title="concept-id">ID</a>
36959: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36960: <!--INERT-->
36961: </td></tr><tr><th> <code title="">ismap</code>
36962: </th><td> <code title="attr-img-ismap"><a href="the-img-element.html#attr-img-ismap">img</a></code>
36963: </td><td> Whether the image is a server-side image map
36964: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36965: <!--MD-->
36966: </td></tr><tr><th> <code title="">keytype</code>
36967: </th><td> <code title="attr-keygen-keytype"><a href="the-keygen-element.html#attr-keygen-keytype">keygen</a></code>
36968: </td><td> The type of cryptographic key to generate
36969: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
36970: </td></tr><tr><th> <code title="">kind</code>
36971: </th><td> <code title="attr-track-kind"><a href="the-track-element.html#attr-track-kind">track</a></code>
36972: </td><td> The type of text track
36973: </td><td> "<code title="attr-track-kind-subtitles"><a href="the-track-element.html#attr-track-kind-subtitles">subtitles</a></code>";
36974: "<code title="attr-track-kind-captions"><a href="the-track-element.html#attr-track-kind-captions">captions</a></code>";
36975: "<code title="attr-track-kind-descriptions"><a href="the-track-element.html#attr-track-kind-descriptions">descriptions</a></code>";
36976: "<code title="attr-track-kind-chapters"><a href="the-track-element.html#attr-track-kind-chapters">chapters</a></code>";
36977: "<code title="attr-track-kind-metadata"><a href="the-track-element.html#attr-track-kind-metadata">metadata</a></code>"
36978: </td></tr><tr><th> <code title="">label</code>
36979: </th><td> <code title="attr-command-label"><a href="#attr-command-label">command</a></code>;
36980: <code title="attr-menu-label"><a href="#attr-menu-label">menu</a></code>;
36981: <code title="attr-optgroup-label"><a href="the-optgroup-element.html#attr-optgroup-label">optgroup</a></code>;
36982: <code title="attr-option-label"><a href="the-option-element.html#attr-option-label">option</a></code>;
36983: <code title="attr-track-label"><a href="the-track-element.html#attr-track-label">track</a></code>
36984: </td><td> User-visible label
36985: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
36986: </td></tr><tr><th> <code title="">lang</code>
36987: </th><td> <a href="global-attributes.html#attr-lang" title="attr-lang">HTML elements</a>
36988: </td><td> <a href="global-attributes.html#language">Language</a> of the element
36989: </td><td> Valid BCP 47 language tag or the empty string
36990: </td></tr><tr><th> <code title="">list</code>
36991: </th><td> <code title="attr-input-list"><a href="common-input-element-attributes.html#attr-input-list">input</a></code>
36992: </td><td> List of autocomplete options
36993: </td><td> <a href="infrastructure.html#concept-id" title="concept-id">ID</a>*
36994: </td></tr><tr><th> <code title="">loop</code>
36995: </th><td> <code title="attr-media-loop"><a href="media-elements.html#attr-media-loop">audio</a></code>;
36996: <code title="attr-media-loop"><a href="media-elements.html#attr-media-loop">video</a></code>
36997: </td><td> Whether to loop the <a href="media-elements.html#media-resource">media resource</a>
36998: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
36999: </td></tr><tr><th> <code title="">low</code>
37000: </th><td> <code title="attr-meter-low"><a href="the-meter-element.html#attr-meter-low">meter</a></code>
37001: </td><td> High limit of low range
37002: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>*
37003: </td></tr><tr><th> <code title="">manifest</code>
37004: </th><td> <code title="attr-html-manifest"><a href="the-html-element.html#attr-html-manifest">html</a></code>
37005: </td><td> <a href="#concept-appcache-manifest" title="concept-appcache-manifest">Application cache manifest</a>
37006: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
37007: </td></tr><tr><th> <code title="">max</code>
37008: </th><td> <code title="attr-input-max"><a href="common-input-element-attributes.html#attr-input-max">input</a></code>
37009: </td><td> Maximum value
37010: </td><td> Varies*
37011: </td></tr><tr><th> <code title="">max</code>
37012: </th><td> <code title="attr-meter-max"><a href="the-meter-element.html#attr-meter-max">meter</a></code>;
37013: <code title="attr-progress-max"><a href="the-progress-element.html#attr-progress-max">progress</a></code>
37014: </td><td> Upper bound of range
37015: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>*
37016: </td></tr><tr><th> <code title="">maxlength</code>
37017: </th><td> <code title="attr-input-maxlength"><a href="common-input-element-attributes.html#attr-input-maxlength">input</a></code>;
37018: <code title="attr-textarea-maxlength"><a href="the-textarea-element.html#attr-textarea-maxlength">textarea</a></code>
37019: </td><td> Maximum length of value
37020: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a>
37021: </td></tr><tr><th> <code title="">media</code>
37022: </th><td> <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">a</a></code>;
37023: <code title="attr-hyperlink-media"><a href="#attr-hyperlink-media">area</a></code>;
37024: <code title="attr-link-media"><a href="the-link-element.html#attr-link-media">link</a></code>;
37025: <code title="attr-source-media"><a href="the-source-element.html#attr-source-media">source</a></code>;
37026: <code title="attr-style-media"><a href="the-style-element.html#attr-style-media">style</a></code>
37027: </td><td> Applicable media
37028: </td><td> <a href="common-microsyntaxes.html#valid-media-query">Valid media query</a>
37029: </td></tr><tr><th> <code title="">mediagroup</code>
37030: </th><td> <code title="attr-media-mediagroup"><a href="media-elements.html#attr-media-mediagroup">audio</a></code>;
37031: <code title="attr-media-mediagroup"><a href="media-elements.html#attr-media-mediagroup">video</a></code>
37032: </td><td> Groups <a href="media-elements.html#media-element" title="media element">media elements</a> together with an implicit <code><a href="media-elements.html#mediacontroller">MediaController</a></code>
37033: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37034: </td></tr><tr><th> <code title="">method</code>
37035: </th><td> <code title="attr-fs-method"><a href="form-submission.html#attr-fs-method">form</a></code>
37036: </td><td> HTTP method to use for <a href="#form-submission-0">form submission</a>
37037: </td><td> "<code title="attr-fs-method-GET-keyword"><a href="form-submission.html#attr-fs-method-get-keyword">GET</a></code>";
37038: "<code title="attr-fs-method-POST-keyword"><a href="form-submission.html#attr-fs-method-post-keyword">POST</a></code>";
37039: <!--FORM-DIALOG-->
37040: </td></tr><tr><th> <code title="">min</code>
37041: </th><td> <code title="attr-input-min"><a href="common-input-element-attributes.html#attr-input-min">input</a></code>
37042: </td><td> Minimum value
37043: </td><td> Varies*
37044: </td></tr><tr><th> <code title="">min</code>
37045: </th><td> <code title="attr-meter-min"><a href="the-meter-element.html#attr-meter-min">meter</a></code>
37046: </td><td> Lower bound of range
37047: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>*
37048: </td></tr><tr><th> <code title="">multiple</code>
37049: </th><td> <code title="attr-input-multiple"><a href="common-input-element-attributes.html#attr-input-multiple">input</a></code>;
37050: <code title="attr-select-multiple"><a href="the-select-element.html#attr-select-multiple">select</a></code>
37051: </td><td> Whether to allow multiple values
37052: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37053: </td></tr><tr><th> <code title="">muted</code>
37054: </th><td> <code title="attr-media-muted"><a href="media-elements.html#attr-media-muted">audio</a></code>;
37055: <code title="attr-media-muted"><a href="media-elements.html#attr-media-muted">video</a></code>
37056: </td><td> Whether to mute the <a href="media-elements.html#media-resource">media resource</a> by default
37057: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37058: </td></tr><tr><th> <code title="">name</code>
37059: </th><td> <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">button</a></code>;
37060: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">fieldset</a></code>;
37061: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">input</a></code>;
37062: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">keygen</a></code>;
37063: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">output</a></code>;
37064: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">select</a></code>;
37065: <code title="attr-fe-name"><a href="attributes-common-to-form-controls.html#attr-fe-name">textarea</a></code>
37066: </td><td> Name of form control to use for <a href="#form-submission-0">form submission</a> and in the <code title="dom-form-elements"><a href="the-form-element.html#dom-form-elements">form.elements</a></code> API
37067: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37068: </td></tr><tr><th> <code title="">name</code>
37069: </th><td> <code title="attr-form-name"><a href="the-form-element.html#attr-form-name">form</a></code>
37070: </td><td> Name of form to use in the <code title="dom-document-forms"><a href="dom.html#dom-document-forms">document.forms</a></code> API
37071: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37072: </td></tr><tr><th> <code title="">name</code>
37073: </th><td> <code title="attr-iframe-name"><a href="the-iframe-element.html#attr-iframe-name">iframe</a></code>;
37074: <code title="attr-object-name"><a href="the-object-element.html#attr-object-name">object</a></code>
37075: </td><td> Name of <a href="#nested-browsing-context">nested browsing context</a>
37076: </td><td> <a href="#valid-browsing-context-name-or-keyword">Valid browsing context name or keyword</a>
37077: </td></tr><tr><th> <code title="">name</code>
37078: </th><td> <code title="attr-map-name"><a href="the-map-element.html#attr-map-name">map</a></code>
37079: </td><td> Name of <a href="image-maps.html#image-map">image map</a> to reference from the <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">usemap</a></code> attribute
37080: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37081: </td></tr><tr><th> <code title="">name</code>
37082: </th><td> <code title="attr-meta-name"><a href="the-meta-element.html#attr-meta-name">meta</a></code>
37083: </td><td> Metadata name
37084: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37085: </td></tr><tr><th> <code title="">name</code>
37086: </th><td> <code title="attr-param-name"><a href="the-param-element.html#attr-param-name">param</a></code>
37087: </td><td> Name of parameter
37088: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37089: </td></tr><tr><th> <code title="">novalidate</code>
37090: </th><td> <code title="attr-fs-novalidate"><a href="form-submission.html#attr-fs-novalidate">form</a></code>
37091: </td><td> Bypass form control validation for <a href="#form-submission-0">form submission</a>
37092: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37093: </td></tr><tr><th> <code title="">open</code>
37094: </th><td> <code title="attr-details-open"><a href="#attr-details-open">details</a></code>
37095: </td><td> Whether the details are visible
37096: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37097: </td></tr><tr><th> <code title="">open</code>
37098: </th><td> <code title="attr-dialog-open"><a href="#attr-dialog-open">dialog</a></code>
37099: </td><td> Whether the dialog box is showing
37100: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37101: </td></tr><tr><th> <code title="">optimum</code>
37102: </th><td> <code title="attr-meter-optimum"><a href="the-meter-element.html#attr-meter-optimum">meter</a></code>
37103: </td><td> Optimum value in gauge
37104: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>*
37105: </td></tr><tr><th> <code title="">pattern</code>
37106: </th><td> <code title="attr-input-pattern"><a href="common-input-element-attributes.html#attr-input-pattern">input</a></code>
37107: </td><td> Pattern to be matched by the form control's value
37108: </td><td> Regular expression matching the JavaScript <i title="">Pattern</i> production
37109: <!--PING-->
37110: </td></tr><tr><th> <code title="">placeholder</code>
37111: </th><td> <code title="attr-input-placeholder"><a href="common-input-element-attributes.html#attr-input-placeholder">input</a></code>;
37112: <code title="attr-textarea-placeholder"><a href="the-textarea-element.html#attr-textarea-placeholder">textarea</a></code>
37113: </td><td> User-visible label to be placed within the form control
37114: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37115: </td></tr><tr><th> <code title="">poster</code>
37116: </th><td> <code title="attr-video-poster"><a href="the-video-element.html#attr-video-poster">video</a></code>
37117: </td><td> Poster frame to show prior to video playback
37118: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
37119: </td></tr><tr><th> <code title="">preload</code>
37120: </th><td> <code title="attr-media-preload"><a href="media-elements.html#attr-media-preload">audio</a></code>;
37121: <code title="attr-media-preload"><a href="media-elements.html#attr-media-preload">video</a></code>
37122: </td><td> Hints how much buffering the <a href="media-elements.html#media-resource">media resource</a> will likely need
37123: </td><td> "<code title="attr-media-preload-none"><a href="media-elements.html#attr-media-preload-none">none</a></code>";
37124: "<code title="attr-media-preload-metadata"><a href="media-elements.html#attr-media-preload-metadata">metadata</a></code>";
37125: "<code title="attr-media-preload-auto"><a href="media-elements.html#attr-media-preload-auto">auto</a></code>"
37126: </td></tr><tr><th> <code title="">radiogroup</code>
37127: </th><td> <code title="attr-command-radiogroup"><a href="#attr-command-radiogroup">command</a></code>
37128: </td><td> Name of group of commands to treat as a radio button group
37129: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37130: </td></tr><tr><th> <code title="">readonly</code>
37131: </th><td> <code title="attr-input-readonly"><a href="common-input-element-attributes.html#attr-input-readonly">input</a></code>;
37132: <code title="attr-textarea-readonly"><a href="the-textarea-element.html#attr-textarea-readonly">textarea</a></code>
37133: </td><td> Whether to allow the value to be edited by the user
37134: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37135: </td></tr><tr><th> <code title="">rel</code>
37136: </th><td> <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">a</a></code>;
37137: <code title="attr-hyperlink-rel"><a href="#attr-hyperlink-rel">area</a></code>;
37138: <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">link</a></code>
37139: </td><td> Relationship between the document containing the hyperlink and the destination resource
37140: </td><td> <a href="common-microsyntaxes.html#set-of-space-separated-tokens">Set of space-separated tokens</a>*
37141: </td></tr><tr><th> <code title="">required</code>
37142: </th><td> <code title="attr-input-required"><a href="common-input-element-attributes.html#attr-input-required">input</a></code>;
37143: <code title="attr-select-required"><a href="the-select-element.html#attr-select-required">select</a></code>;
37144: <code title="attr-textarea-required"><a href="the-textarea-element.html#attr-textarea-required">textarea</a></code>
37145: </td><td> Whether the control is required for <a href="#form-submission-0">form submission</a>
37146: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37147: </td></tr><tr><th> <code title="">reversed</code>
37148: </th><td> <code title="attr-ol-reversed"><a href="the-ol-element.html#attr-ol-reversed">ol</a></code>
37149: </td><td> Number the list backwards
37150: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37151: </td></tr><tr><th> <code title="">rows</code>
37152: </th><td> <code title="attr-textarea-rows"><a href="the-textarea-element.html#attr-textarea-rows">textarea</a></code>
37153: </td><td> Number of lines to show
37154: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a> greater than zero
37155: </td></tr><tr><th> <code title="">rowspan</code>
37156: </th><td> <code title="attr-tdth-rowspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-rowspan">td</a></code>;
37157: <code title="attr-tdth-rowspan"><a href="attributes-common-to-td-and-th-elements.html#attr-tdth-rowspan">th</a></code>
37158: </td><td> Number of rows that the cell is to span
37159: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a>
37160: </td></tr><tr><th> <code title="">sandbox</code>
37161: </th><td> <code title="attr-iframe-sandbox"><a href="the-iframe-element.html#attr-iframe-sandbox">iframe</a></code>
37162: </td><td> Security rules for nested content
37163: </td><td> <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">Unordered set of unique space-separated tokens</a>, <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>, consisting of
37164: "<code title="attr-iframe-sandbox-allow-forms"><a href="#attr-iframe-sandbox-allow-forms">allow-forms</a></code>",
37165: "<code title="attr-iframe-sandbox-allow-popups"><a href="#attr-iframe-sandbox-allow-popups">allow-popups</a></code>",
37166: "<code title="attr-iframe-sandbox-allow-same-origin"><a href="#attr-iframe-sandbox-allow-same-origin">allow-same-origin</a></code>",
37167: "<code title="attr-iframe-sandbox-allow-scripts"><a href="#attr-iframe-sandbox-allow-scripts">allow-scripts</a></code> and
37168: "<code title="attr-iframe-sandbox-allow-top-navigation"><a href="#attr-iframe-sandbox-allow-top-navigation">allow-top-navigation</a></code>"
37169: </td></tr><tr><th> <code title="">spellcheck</code>
37170: </th><td> <a href="#attr-spellcheck" title="attr-spellcheck">HTML elements</a>
37171: </td><td> Whether the element is to have its spelling and grammar checked
37172: </td><td> "<code title="">true</code>"; "<code title="">false</code>"
37173: </td></tr><tr><th> <code title="">scope</code>
37174: </th><td> <code title="attr-th-scope"><a href="the-th-element.html#attr-th-scope">th</a></code>
37175: </td><td> Specifies which cells the header cell applies to
37176: </td><td> "<code title="attr-th-scope-row"><a href="the-th-element.html#attr-th-scope-row">row</a></code>";
37177: "<code title="attr-th-scope-col"><a href="the-th-element.html#attr-th-scope-col">col</a></code>";
37178: "<code title="attr-th-scope-rowgroup"><a href="the-th-element.html#attr-th-scope-rowgroup">rowgroup</a></code>";
37179: "<code title="attr-th-scope-colgroup"><a href="the-th-element.html#attr-th-scope-colgroup">colgroup</a></code>"
37180: </td></tr><tr><th> <code title="">scoped</code>
37181: </th><td> <code title="attr-style-scoped"><a href="the-style-element.html#attr-style-scoped">style</a></code>
37182: </td><td> Whether the styles apply to the entire document or just the parent subtree
37183: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37184: </td></tr><tr><th> <code title="">seamless</code>
37185: </th><td> <code title="attr-iframe-seamless"><a href="the-iframe-element.html#attr-iframe-seamless">iframe</a></code>
37186: </td><td> Whether to apply the document's styles to the nested content
37187: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37188: </td></tr><tr><th> <code title="">selected</code>
37189: </th><td> <code title="attr-option-selected"><a href="the-option-element.html#attr-option-selected">option</a></code>
37190: </td><td> Whether the option is selected by default
37191: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37192: </td></tr><tr><th> <code title="">shape</code>
37193: </th><td> <code title="attr-area-shape"><a href="the-area-element.html#attr-area-shape">area</a></code>
37194: </td><td> The kind of shape to be created in an <a href="image-maps.html#image-map">image map</a>
37195: </td><td> "<code title="attr-area-shape-keyword-circle"><a href="the-area-element.html#attr-area-shape-keyword-circle">circle</a></code>";
37196: "<code title="attr-area-shape-keyword-default"><a href="the-area-element.html#attr-area-shape-keyword-default">default</a></code>";
37197: "<code title="attr-area-shape-keyword-poly"><a href="the-area-element.html#attr-area-shape-keyword-poly">poly</a></code>";
37198: "<code title="attr-area-shape-keyword-rect"><a href="the-area-element.html#attr-area-shape-keyword-rect">rect</a></code>"
37199: </td></tr><tr><th> <code title="">size</code>
37200: </th><td> <code title="attr-input-size"><a href="common-input-element-attributes.html#attr-input-size">input</a></code>;
37201: <code title="attr-select-size"><a href="the-select-element.html#attr-select-size">select</a></code>
37202: </td><td> Size of the control
37203: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a> greater than zero
37204: </td></tr><tr><th> <code title="">sizes</code>
37205: </th><td> <code title="attr-link-sizes"><a href="#attr-link-sizes">link</a></code>
37206: </td><td> Sizes of the icons (for <code title="attr-link-rel"><a href="the-link-element.html#attr-link-rel">rel</a></code>="<code title="rel-icon"><a href="#rel-icon">icon</a></code>")
37207: </td><td> <a href="common-microsyntaxes.html#unordered-set-of-unique-space-separated-tokens">Unordered set of unique space-separated tokens</a>, <a href="infrastructure.html#ascii-case-insensitive">ASCII case-insensitive</a>, consisting of sizes*
37208: </td></tr><tr><th> <code title="">span</code>
37209: </th><td> <code title="attr-col-span"><a href="the-col-element.html#attr-col-span">col</a></code>;
37210: <code title="attr-colgroup-span"><a href="the-colgroup-element.html#attr-colgroup-span">colgroup</a></code>
37211: </td><td> Number of columns spanned by the element
37212: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a> greater than zero
37213: </td></tr><tr><th> <code title="">src</code>
37214: </th><td> <code title="attr-media-src"><a href="media-elements.html#attr-media-src">audio</a></code>;
37215: <code title="attr-embed-src"><a href="the-embed-element.html#attr-embed-src">embed</a></code>;
37216: <code title="attr-iframe-src"><a href="the-iframe-element.html#attr-iframe-src">iframe</a></code>;
37217: <code title="attr-img-src"><a href="the-img-element.html#attr-img-src">img</a></code>;
37218: <code title="attr-input-src"><a href="states-of-the-type-attribute.html#attr-input-src">input</a></code>;
37219: <code title="attr-script-src"><a href="the-script-element.html#attr-script-src">script</a></code>;
37220: <code title="attr-source-src"><a href="the-source-element.html#attr-source-src">source</a></code>;
37221: <code title="attr-track-src"><a href="the-track-element.html#attr-track-src">track</a></code>;
37222: <code title="attr-media-src"><a href="media-elements.html#attr-media-src">video</a></code>
37223: </td><td> Address of the resource
37224: </td><td> <a href="urls.html#valid-non-empty-url-potentially-surrounded-by-spaces">Valid non-empty URL potentially surrounded by spaces</a>
37225: </td></tr><tr><th> <code title="">srcdoc</code>
37226: </th><td> <code title="attr-iframe-srcdoc"><a href="the-iframe-element.html#attr-iframe-srcdoc">iframe</a></code>
37227: </td><td> A document to render in the <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>
37228: </td><td> The source of <a href="the-iframe-element.html#an-iframe-srcdoc-document">an <code>iframe</code> <code title="attr-iframe-srcdoc">srcdoc</code> document</a>*
37229: </td></tr><tr><th> <code title="">srclang</code>
37230: </th><td> <code title="attr-track-srclang"><a href="the-track-element.html#attr-track-srclang">track</a></code>
37231: </td><td> Language of the text track
37232: </td><td> Valid BCP 47 language tag
37233: </td></tr><tr><th> <code title="">start</code>
37234: </th><td> <code title="attr-ol-start"><a href="the-ol-element.html#attr-ol-start">ol</a></code>
37235: </td><td> <a href="the-li-element.html#ordinal-value">Ordinal value</a> of the first item
37236: </td><td> <a href="common-microsyntaxes.html#valid-integer">Valid integer</a>
37237: </td></tr><tr><th> <code title="">step</code>
37238: </th><td> <code title="attr-input-step"><a href="common-input-element-attributes.html#attr-input-step">input</a></code>
37239: </td><td> Granularity to be matched by the form control's value
37240: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a> greater than zero, or "<code title="">any</code>"
37241: </td></tr><tr><th> <code title="">style</code>
37242: </th><td> <a href="global-attributes.html#the-style-attribute" title="attr-style">HTML elements</a>
37243: </td><td> Presentational and formatting instructions
37244: </td><td> CSS declarations*
37245: </td></tr><tr><th> <code title="">tabindex</code>
37246: </th><td> <a href="#attr-tabindex" title="attr-tabindex">HTML elements</a>
37247: </td><td> Whether the element is focusable, and the relative order of the element for the purposes of sequential focus navigation
37248: </td><td> <a href="common-microsyntaxes.html#valid-integer">Valid integer</a>
37249: </td></tr><tr><th> <code title="">target</code>
37250: </th><td> <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">a</a></code>;
37251: <code title="attr-hyperlink-target"><a href="#attr-hyperlink-target">area</a></code>
37252: </td><td> <a href="#browsing-context">Browsing context</a> for <a href="#hyperlink">hyperlink</a> <a href="#navigate" title="navigate">navigation</a>
37253: </td><td> <a href="#valid-browsing-context-name-or-keyword">Valid browsing context name or keyword</a>
37254: </td></tr><tr><th> <code title="">target</code>
37255: </th><td> <code title="attr-base-target"><a href="the-base-element.html#attr-base-target">base</a></code>
37256: </td><td> Default <a href="#browsing-context">browsing context</a> for <a href="#hyperlink">hyperlink</a> <a href="#navigate" title="navigate">navigation</a> and <a href="#form-submission-0">form submission</a>
37257: </td><td> <a href="#valid-browsing-context-name-or-keyword">Valid browsing context name or keyword</a>
37258: </td></tr><tr><th> <code title="">target</code>
37259: </th><td> <code title="attr-fs-target"><a href="form-submission.html#attr-fs-target">form</a></code>
37260: </td><td> <a href="#browsing-context">Browsing context</a> for <a href="#form-submission-0">form submission</a>
37261: </td><td> <a href="#valid-browsing-context-name-or-keyword">Valid browsing context name or keyword</a>
37262: </td></tr><tr><th> <code title="">title</code>
37263: </th><td> <a href="global-attributes.html#attr-title" title="attr-title">HTML elements</a>
37264: </td><td> Advisory information for the element
37265: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37266: </td></tr><tr><th> <code title="">title</code>
37267: </th><td> <code title="attr-abbr-title"><a href="the-abbr-element.html#attr-abbr-title">abbr</a></code>;
37268: <code title="attr-dfn-title"><a href="the-dfn-element.html#attr-dfn-title">dfn</a></code>
37269: </td><td> Full term or expansion of abbreviation
37270: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37271: </td></tr><tr><th> <code title="">title</code>
37272: </th><td> <code title="attr-command-title"><a href="#attr-command-title">command</a></code>
37273: </td><td> Hint describing the command
37274: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37275: </td></tr><tr><th> <code title="">title</code>
37276: </th><td> <code title="attr-link-title"><a href="the-link-element.html#attr-link-title">link</a></code>
37277: </td><td> Title of the link
37278: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37279: </td></tr><tr><th> <code title="">title</code>
37280: </th><td> <code title="attr-link-title"><a href="the-link-element.html#attr-link-title">link</a></code>;
37281: <code title="attr-style-title"><a href="the-style-element.html#attr-style-title">style</a></code>
37282: </td><td> Alternative style sheet set name
37283: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37284: </td></tr><tr><th> <code title="">translate</code>
37285: </th><td> <a href="global-attributes.html#attr-translate" title="attr-translate">HTML elements</a>
37286: </td><td> Whether the element is to be translated when the page is localized
37287: </td><td> "<code title="">yes</code>"; "<code title="">no</code>"
37288: </td></tr><tr><th> <code title="">type</code>
37289: </th><td> <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">a</a></code>;
37290: <code title="attr-hyperlink-type"><a href="#attr-hyperlink-type">area</a></code>;
37291: <code title="attr-link-type"><a href="the-link-element.html#attr-link-type">link</a></code>
37292: </td><td> Hint for the type of the referenced resource
37293: </td><td> <a href="infrastructure.html#valid-mime-type">Valid MIME type</a>
37294: </td></tr><tr><th> <code title="">type</code>
37295: </th><td> <code title="attr-button-type"><a href="the-button-element.html#attr-button-type">button</a></code>
37296: </td><td> Type of button
37297: </td><td> "<code title="attr-button-type-submit"><a href="the-button-element.html#attr-button-type-submit">submit</a></code>";
37298: "<code title="attr-button-type-reset"><a href="the-button-element.html#attr-button-type-reset">reset</a></code>";
37299: "<code title="attr-button-type-button"><a href="the-button-element.html#attr-button-type-button">button</a></code>"
37300: </td></tr><tr><th> <code title="">type</code>
37301: </th><td> <code title="attr-command-type"><a href="#attr-command-type">command</a></code>
37302: </td><td> Type of command
37303: </td><td> "<code title="attr-command-type-keyword-command"><a href="#attr-command-type-keyword-command">command</a></code>";
37304: "<code title="attr-command-type-keyword-checkbox"><a href="#attr-command-type-keyword-checkbox">checkbox</a></code>";
37305: "<code title="attr-command-type-keyword-radio"><a href="#attr-command-type-keyword-radio">radio</a></code>"
37306: </td></tr><tr><th> <code title="">type</code>
37307: </th><td> <code title="attr-embed-type"><a href="the-embed-element.html#attr-embed-type">embed</a></code>;
37308: <code title="attr-object-type"><a href="the-object-element.html#attr-object-type">object</a></code>;
37309: <code title="attr-script-type"><a href="the-script-element.html#attr-script-type">script</a></code>;
37310: <code title="attr-source-type"><a href="the-source-element.html#attr-source-type">source</a></code>;
37311: <code title="attr-style-type"><a href="the-style-element.html#attr-style-type">style</a></code>
37312: </td><td> Type of embedded resource
37313: </td><td> <a href="infrastructure.html#valid-mime-type">Valid MIME type</a>
37314: </td></tr><tr><th> <code title="">type</code>
37315: </th><td> <code title="attr-input-type"><a href="the-input-element.html#attr-input-type">input</a></code>
37316: </td><td> Type of form control
37317: </td><td> <a href="the-input-element.html#attr-input-type" title="attr-input-type"><code>input</code> type keyword</a>
37318: </td></tr><tr><th> <code title="">type</code>
37319: </th><td> <code title="attr-menu-type"><a href="#attr-menu-type">menu</a></code>
37320: </td><td> Type of menu
37321: </td><td> "<code title="context menu state"><a href="#context-menu-state">context</a></code>"; "<code title="toolbar state"><a href="#toolbar-state">toolbar</a></code>"
37322: </td></tr><tr><th> <code title="">typemustmatch</code>
37323: </th><td> <code title="attr-object-typemustmatch"><a href="the-object-element.html#attr-object-typemustmatch">object</a></code>
37324: </td><td> Whether the <code title="attr-object-type"><a href="the-object-element.html#attr-object-type">type</a></code> attribute and the <a href="urls.html#content-type">Content-Type</a> value need to match for the resource to be used
37325: </td><td> <a href="common-microsyntaxes.html#boolean-attribute">Boolean attribute</a>
37326: </td></tr><tr><th> <code title="">usemap</code>
37327: </th><td> <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">img</a></code>;
37328: <code title="attr-hyperlink-usemap"><a href="image-maps.html#attr-hyperlink-usemap">object</a></code>
37329: </td><td> Name of <a href="image-maps.html#image-map">image map</a> to use
37330: </td><td> <a href="common-microsyntaxes.html#valid-hash-name-reference">Valid hash-name reference</a>*
37331: </td></tr><tr><th> <code title="">value</code>
37332: </th><td> <code title="attr-button-value"><a href="the-button-element.html#attr-button-value">button</a></code>;
37333: <code title="attr-option-value"><a href="the-option-element.html#attr-option-value">option</a></code>
37334: </td><td> Value to be used for <a href="#form-submission-0">form submission</a>
37335: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37336: </td></tr><tr><th> <code title="">value</code>
37337: </th><td> <code title="attr-data-value">data</code>
37338: </td><td> Machine-readable value
37339: </td><td> <a href="element-definitions.html#attribute-text">Text</a>*
37340: </td></tr><tr><th> <code title="">value</code>
37341: </th><td> <code title="attr-input-value"><a href="the-input-element.html#attr-input-value">input</a></code>
37342: </td><td> Value of the form control
37343: </td><td> Varies*
37344: </td></tr><tr><th> <code title="">value</code>
37345: </th><td> <code title="attr-li-value"><a href="the-li-element.html#attr-li-value">li</a></code>
37346: </td><td> <a href="the-li-element.html#ordinal-value">Ordinal value</a> of the list item
37347: </td><td> <a href="common-microsyntaxes.html#valid-integer">Valid integer</a>
37348: </td></tr><tr><th> <code title="">value</code>
37349: </th><td> <code title="attr-meter-value"><a href="the-meter-element.html#attr-meter-value">meter</a></code>;
37350: <code title="attr-progress-value"><a href="the-progress-element.html#attr-progress-value">progress</a></code>
37351: </td><td> Current value of the element
37352: </td><td> <a href="common-microsyntaxes.html#valid-floating-point-number">Valid floating-point number</a>
37353: </td></tr><tr><th> <code title="">value</code>
37354: </th><td> <code title="attr-param-value"><a href="the-param-element.html#attr-param-value">param</a></code>
37355: </td><td> Value of parameter
37356: </td><td> <a href="element-definitions.html#attribute-text">Text</a>
37357: </td></tr><tr><th> <code title="">width</code>
37358: </th><td> <code title="attr-canvas-width"><a href="the-canvas-element.html#attr-canvas-width">canvas</a></code>;
37359: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">embed</a></code>;
37360: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">iframe</a></code>;
37361: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">img</a></code>;
37362: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">input</a></code>;
37363: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">object</a></code>;
37364: <code title="attr-dim-width"><a href="dimension-attributes.html#attr-dim-width">video</a></code>
37365: </td><td> Horizontal dimension
37366: </td><td> <a href="common-microsyntaxes.html#valid-non-negative-integer">Valid non-negative integer</a>
37367: </td></tr><tr><th> <code title="">wrap</code>
37368: </th><td> <code title="attr-textarea-wrap"><a href="the-textarea-element.html#attr-textarea-wrap">textarea</a></code>
37369: </td><td> How the value of the form control is to be wrapped for <a href="#form-submission-0">form submission</a>
37370: </td><td> "<code title="attr-textarea-wrap-soft"><a href="the-textarea-element.html#attr-textarea-wrap-soft">soft</a></code>";
37371: "<code title="attr-textarea-wrap-hard"><a href="the-textarea-element.html#attr-textarea-wrap-hard">hard</a></code>"
37372: </td></tr></tbody></table><p>An asterisk (*) in a cell indicates that the actual rules are more complicated than indicated in the table above.</p>
37373:
37374: <hr><table id="ix-event-handlers"><caption>List of event handler content attributes</caption>
37375: <thead><tr><th> Attribute
37376: </th><th> Element(s)
37377: </th><th> Description
37378: </th><th> Value
37379: </th></tr></thead><tbody><tr><th id="ix-handler-onabort"> <code title="">onabort</code>
37380: </th><td> <a href="#handler-onabort" title="handler-onabort">HTML elements</a>
37381: </td><td> <code title="event-abort">abort</code> event handler
37382: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37383:
37384: </td></tr><tr><th id="ix-handler-window-onafterprint"> <code title="">onafterprint</code>
37385: </th><td> <code title="handler-window-onafterprint"><a href="#handler-window-onafterprint">body</a></code>
37386: </td><td> <code title="event-afterprint">afterprint</code> event handler for <code><a href="#window">Window</a></code> object
37387: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37388:
37389: </td></tr><tr><th id="ix-handler-window-onbeforeprint"> <code title="">onbeforeprint</code>
37390: </th><td> <code title="handler-window-onbeforeprint"><a href="#handler-window-onbeforeprint">body</a></code>
37391: </td><td> <code title="event-beforeprint">beforeprint</code> event handler for <code><a href="#window">Window</a></code> object
37392: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37393:
37394: </td></tr><tr><th id="ix-handler-window-onbeforeunload"> <code title="">onbeforeunload</code>
37395: </th><td> <code title="handler-window-onbeforeunload"><a href="#handler-window-onbeforeunload">body</a></code>
37396: </td><td> <code title="event-beforeunload">beforeunload</code> event handler for <code><a href="#window">Window</a></code> object
37397: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37398:
37399: </td></tr><tr><th id="ix-handler-window-onblur"> <code title="">onblur</code>
37400: </th><td> <code title="handler-window-onblur"><a href="#handler-window-onblur">body</a></code>
37401: </td><td> <code title="event-blur">blur</code> event handler for <code><a href="#window">Window</a></code> object
37402: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37403:
37404: </td></tr><tr><th id="ix-handler-onblur"> <code title="">onblur</code>
37405: </th><td> <a href="#handler-onblur" title="handler-onblur">HTML elements</a>
37406: </td><td> <code title="event-blur">blur</code> event handler
37407: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37408:
37409: </td></tr><tr><th id="ix-handler-oncancel"> <code title="">oncancel</code>
37410: </th><td> <a href="#handler-oncancel" title="handler-oncancel">HTML elements</a>
37411: </td><td> <code title="event-media-cancel">cancel</code> event handler
37412: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37413:
37414: </td></tr><tr><th id="ix-handler-oncanplay"> <code title="">oncanplay</code>
37415: </th><td> <a href="#handler-oncanplay" title="handler-oncanplay">HTML elements</a>
37416: </td><td> <code title="event-media-canplay"><a href="media-elements.html#event-media-canplay">canplay</a></code> event handler
37417: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37418:
37419: </td></tr><tr><th id="ix-handler-oncanplaythrough"> <code title="">oncanplaythrough</code>
37420: </th><td> <a href="#handler-oncanplaythrough" title="handler-oncanplaythrough">HTML elements</a>
37421: </td><td> <code title="event-media-canplaythrough"><a href="media-elements.html#event-media-canplaythrough">canplaythrough</a></code> event handler
37422: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37423:
37424: </td></tr><tr><th id="ix-handler-onchange"> <code title="">onchange</code>
37425: </th><td> <a href="#handler-onchange" title="handler-onchange">HTML elements</a>
37426: </td><td> <code title="event-change">change</code> event handler
37427: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37428:
37429: </td></tr><tr><th id="ix-handler-onclick"> <code title="">onclick</code>
37430: </th><td> <a href="#handler-onclick" title="handler-onclick">HTML elements</a>
37431: </td><td> <code title="event-click"><a href="infrastructure.html#event-click">click</a></code> event handler
37432: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37433:
37434: </td></tr><tr><th id="ix-handler-onclose"> <code title="">onclose</code>
37435: </th><td> <a href="#handler-onclose" title="handler-onclose">HTML elements</a>
37436: </td><td> <code title="event-close">close</code> event handler
37437: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37438:
37439: </td></tr><tr><th id="ix-handler-oncontextmenu"> <code title="">oncontextmenu</code>
37440: </th><td> <a href="#handler-oncontextmenu" title="handler-oncontextmenu">HTML elements</a>
37441: </td><td> <code title="event-contextmenu">contextmenu</code> event handler
37442: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37443:
37444: </td></tr><tr><th id="ix-handler-oncuechange"> <code title="">oncuechange</code>
37445: </th><td> <a href="#handler-oncuechange" title="handler-oncuechange">HTML elements</a>
37446: </td><td> <code title="event-cuechange">cuechange</code> event handler
37447: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37448:
37449: </td></tr><tr><th id="ix-handler-ondblclick"> <code title="">ondblclick</code>
37450: </th><td> <a href="#handler-ondblclick" title="handler-ondblclick">HTML elements</a>
37451: </td><td> <code title="event-dblclick">dblclick</code> event handler
37452: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37453:
37454: </td></tr><tr><th id="ix-handler-ondrag"> <code title="">ondrag</code>
37455: </th><td> <a href="#handler-ondrag" title="handler-ondrag">HTML elements</a>
37456: </td><td> <code title="event-drag"><a href="#event-drag">drag</a></code> event handler
37457: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37458:
37459: </td></tr><tr><th id="ix-handler-ondragend"> <code title="">ondragend</code>
37460: </th><td> <a href="#handler-ondragend" title="handler-ondragend">HTML elements</a>
37461: </td><td> <code title="event-dragend"><a href="#event-dragend">dragend</a></code> event handler
37462: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37463:
37464: </td></tr><tr><th id="ix-handler-ondragenter"> <code title="">ondragenter</code>
37465: </th><td> <a href="#handler-ondragenter" title="handler-ondragenter">HTML elements</a>
37466: </td><td> <code title="event-dragenter"><a href="#event-dragenter">dragenter</a></code> event handler
37467: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37468:
37469: </td></tr><tr><th id="ix-handler-ondragleave"> <code title="">ondragleave</code>
37470: </th><td> <a href="#handler-ondragleave" title="handler-ondragleave">HTML elements</a>
37471: </td><td> <code title="event-dragleave"><a href="#event-dragleave">dragleave</a></code> event handler
37472: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37473:
37474: </td></tr><tr><th id="ix-handler-ondragover"> <code title="">ondragover</code>
37475: </th><td> <a href="#handler-ondragover" title="handler-ondragover">HTML elements</a>
37476: </td><td> <code title="event-dragover"><a href="#event-dragover">dragover</a></code> event handler
37477: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37478:
37479: </td></tr><tr><th id="ix-handler-ondragstart"> <code title="">ondragstart</code>
37480: </th><td> <a href="#handler-ondragstart" title="handler-ondragstart">HTML elements</a>
37481: </td><td> <code title="event-dragstart"><a href="#event-dragstart">dragstart</a></code> event handler
37482: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37483:
37484: </td></tr><tr><th id="ix-handler-ondrop"> <code title="">ondrop</code>
37485: </th><td> <a href="#handler-ondrop" title="handler-ondrop">HTML elements</a>
37486: </td><td> <code title="event-drop"><a href="#event-drop">drop</a></code> event handler
37487: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37488:
37489: </td></tr><tr><th id="ix-handler-ondurationchange"> <code title="">ondurationchange</code>
37490: </th><td> <a href="#handler-ondurationchange" title="handler-ondurationchange">HTML elements</a>
37491: </td><td> <code title="event-media-durationchange"><a href="media-elements.html#event-media-durationchange">durationchange</a></code> event handler
37492: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37493:
37494: </td></tr><tr><th id="ix-handler-onemptied"> <code title="">onemptied</code>
37495: </th><td> <a href="#handler-onemptied" title="handler-onemptied">HTML elements</a>
37496: </td><td> <code title="event-media-emptied"><a href="media-elements.html#event-media-emptied">emptied</a></code> event handler
37497: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37498:
37499: </td></tr><tr><th id="ix-handler-onended"> <code title="">onended</code>
37500: </th><td> <a href="#handler-onended" title="handler-onended">HTML elements</a>
37501: </td><td> <code title="event-media-ended"><a href="media-elements.html#event-media-ended">ended</a></code> event handler
37502: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37503:
37504: </td></tr><tr><th id="ix-handler-window-onerror"> <code title="">onerror</code>
37505: </th><td> <code title="handler-window-onerror"><a href="#handler-window-onerror">body</a></code>
37506: </td><td> <code title="event-error">error</code> event handler for <code><a href="#window">Window</a></code> object, and handler for <a href="#runtime-script-errors">script error notifications</a>
37507: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37508:
37509: </td></tr><tr><th id="ix-handler-onerror"> <code title="">onerror</code>
37510: </th><td> <a href="#handler-onerror" title="handler-onerror">HTML elements</a>
37511: </td><td> <code title="event-error">error</code> event handler
37512: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37513:
37514: </td></tr><tr><th id="ix-handler-window-onfocus"> <code title="">onfocus</code>
37515: </th><td> <code title="handler-window-onfocus"><a href="#handler-window-onfocus">body</a></code>
37516: </td><td> <code title="event-focus">focus</code> event handler for <code><a href="#window">Window</a></code> object
37517: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37518:
37519: </td></tr><tr><th id="ix-handler-onfocus"> <code title="">onfocus</code>
37520: </th><td> <a href="#handler-onfocus" title="handler-onfocus">HTML elements</a>
37521: </td><td> <code title="event-focus">focus</code> event handler
37522: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37523:
37524: </td></tr><tr><th id="ix-handler-window-onhashchange"> <code title="">onhashchange</code>
37525: </th><td> <code title="handler-window-onhashchange"><a href="#handler-window-onhashchange">body</a></code>
37526: </td><td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event handler for <code><a href="#window">Window</a></code> object
37527: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37528:
37529: </td></tr><tr><th id="ix-handler-oninput"> <code title="">oninput</code>
37530: </th><td> <a href="#handler-oninput" title="handler-oninput">HTML elements</a>
37531: </td><td> <code title="event-input">input</code> event handler
37532: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37533:
37534: </td></tr><tr><th id="ix-handler-oninvalid"> <code title="">oninvalid</code>
37535: </th><td> <a href="#handler-oninvalid" title="handler-oninvalid">HTML elements</a>
37536: </td><td> <code title="event-invalid">invalid</code> event handler
37537: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37538:
37539: </td></tr><tr><th id="ix-handler-onkeydown"> <code title="">onkeydown</code>
37540: </th><td> <a href="#handler-onkeydown" title="handler-onkeydown">HTML elements</a>
37541: </td><td> <code title="event-keydown">keydown</code> event handler
37542: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37543:
37544: </td></tr><tr><th id="ix-handler-onkeypress"> <code title="">onkeypress</code>
37545: </th><td> <a href="#handler-onkeypress" title="handler-onkeypress">HTML elements</a>
37546: </td><td> <code title="event-keypress">keypress</code> event handler
37547: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37548:
37549: </td></tr><tr><th id="ix-handler-onkeyup"> <code title="">onkeyup</code>
37550: </th><td> <a href="#handler-onkeyup" title="handler-onkeyup">HTML elements</a>
37551: </td><td> <code title="event-keyup">keyup</code> event handler
37552: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37553:
37554: </td></tr><tr><th id="ix-handler-window-onload"> <code title="">onload</code>
37555: </th><td> <code title="handler-window-onload"><a href="#handler-window-onload">body</a></code>
37556: </td><td> <code title="event-load">load</code> event handler for <code><a href="#window">Window</a></code> object
37557: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37558:
37559: </td></tr><tr><th id="ix-handler-onload"> <code title="">onload</code>
37560: </th><td> <a href="#handler-onload" title="handler-onload">HTML elements</a>
37561: </td><td> <code title="event-load">load</code> event handler
37562: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37563:
37564: </td></tr><tr><th id="ix-handler-onloadeddata"> <code title="">onloadeddata</code>
37565: </th><td> <a href="#handler-onloadeddata" title="handler-onloadeddata">HTML elements</a>
37566: </td><td> <code title="event-media-loadeddata"><a href="media-elements.html#event-media-loadeddata">loadeddata</a></code> event handler
37567: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37568:
37569: </td></tr><tr><th id="ix-handler-onloadedmetadata"> <code title="">onloadedmetadata</code>
37570: </th><td> <a href="#handler-onloadedmetadata" title="handler-onloadedmetadata">HTML elements</a>
37571: </td><td> <code title="event-media-loadedmetadata"><a href="media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code> event handler
37572: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37573:
37574: </td></tr><tr><th id="ix-handler-onloadstart"> <code title="">onloadstart</code>
37575: </th><td> <a href="#handler-onloadstart" title="handler-onloadstart">HTML elements</a>
37576: </td><td> <code title="event-media-loadstart"><a href="media-elements.html#event-media-loadstart">loadstart</a></code> event handler
37577: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37578:
37579: </td></tr><tr><th id="ix-handler-window-onmessage"> <code title="">onmessage</code>
37580: </th><td> <code title="handler-window-onmessage"><a href="#handler-window-onmessage">body</a></code>
37581: </td><td> <code title="event-message">message</code> event handler for <code><a href="#window">Window</a></code> object
37582: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37583:
37584: </td></tr><tr><th id="ix-handler-onmousedown"> <code title="">onmousedown</code>
37585: </th><td> <a href="#handler-onmousedown" title="handler-onmousedown">HTML elements</a>
37586: </td><td> <code title="event-mousedown">mousedown</code> event handler
37587: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37588:
37589: </td></tr><tr><th id="ix-handler-onmousemove"> <code title="">onmousemove</code>
37590: </th><td> <a href="#handler-onmousemove" title="handler-onmousemove">HTML elements</a>
37591: </td><td> <code title="event-mousemove">mousemove</code> event handler
37592: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37593:
37594: </td></tr><tr><th id="ix-handler-onmouseout"> <code title="">onmouseout</code>
37595: </th><td> <a href="#handler-onmouseout" title="handler-onmouseout">HTML elements</a>
37596: </td><td> <code title="event-mouseout">mouseout</code> event handler
37597: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37598:
37599: </td></tr><tr><th id="ix-handler-onmouseover"> <code title="">onmouseover</code>
37600: </th><td> <a href="#handler-onmouseover" title="handler-onmouseover">HTML elements</a>
37601: </td><td> <code title="event-mouseover">mouseover</code> event handler
37602: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37603:
37604: </td></tr><tr><th id="ix-handler-onmouseup"> <code title="">onmouseup</code>
37605: </th><td> <a href="#handler-onmouseup" title="handler-onmouseup">HTML elements</a>
37606: </td><td> <code title="event-mouseup">mouseup</code> event handler
37607: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37608:
37609: </td></tr><tr><th id="ix-handler-onmousewheel"> <code title="">onmousewheel</code>
37610: </th><td> <a href="#handler-onmousewheel" title="handler-onmousewheel">HTML elements</a>
37611: </td><td> <code title="event-mousewheel">mousewheel</code> event handler
37612: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37613:
37614: </td></tr><tr><th id="ix-handler-window-onoffline"> <code title="">onoffline</code>
37615: </th><td> <code title="handler-window-onoffline"><a href="#handler-window-onoffline">body</a></code>
37616: </td><td> <code title="event-offline"><a href="#event-offline">offline</a></code> event handler for <code><a href="#window">Window</a></code> object
37617: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37618:
37619: </td></tr><tr><th id="ix-handler-window-ononline"> <code title="">ononline</code>
37620: </th><td> <code title="handler-window-ononline"><a href="#handler-window-ononline">body</a></code>
37621: </td><td> <code title="event-online"><a href="#event-online">online</a></code> event handler for <code><a href="#window">Window</a></code> object
37622: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37623:
37624: </td></tr><tr><th id="ix-handler-window-onpagehide"> <code title="">onpagehide</code>
37625: </th><td> <code title="handler-window-onpagehide"><a href="#handler-window-onpagehide">body</a></code>
37626: </td><td> <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code> event handler for <code><a href="#window">Window</a></code> object
37627: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37628:
37629: </td></tr><tr><th id="ix-handler-window-onpageshow"> <code title="">onpageshow</code>
37630: </th><td> <code title="handler-window-onpageshow"><a href="#handler-window-onpageshow">body</a></code>
37631: </td><td> <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code> event handler for <code><a href="#window">Window</a></code> object
37632: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37633:
37634: </td></tr><tr><th id="ix-handler-onpause"> <code title="">onpause</code>
37635: </th><td> <a href="#handler-onpause" title="handler-onpause">HTML elements</a>
37636: </td><td> <code title="event-media-pause"><a href="media-elements.html#event-media-pause">pause</a></code> event handler
37637: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37638:
37639: </td></tr><tr><th id="ix-handler-onplay"> <code title="">onplay</code>
37640: </th><td> <a href="#handler-onplay" title="handler-onplay">HTML elements</a>
37641: </td><td> <code title="event-media-play"><a href="media-elements.html#event-media-play">play</a></code> event handler
37642: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37643:
37644: </td></tr><tr><th id="ix-handler-onplaying"> <code title="">onplaying</code>
37645: </th><td> <a href="#handler-onplaying" title="handler-onplaying">HTML elements</a>
37646: </td><td> <code title="event-media-playing"><a href="media-elements.html#event-media-playing">playing</a></code> event handler
37647: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37648:
37649: </td></tr><tr><th id="ix-handler-window-onpopstate"> <code title="">onpopstate</code>
37650: </th><td> <code title="handler-window-onpopstate"><a href="#handler-window-onpopstate">body</a></code>
37651: </td><td> <code title="event-popstate"><a href="#event-popstate">popstate</a></code> event handler for <code><a href="#window">Window</a></code> object
37652: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37653:
37654: </td></tr><tr><th id="ix-handler-onprogress"> <code title="">onprogress</code>
37655: </th><td> <a href="#handler-onprogress" title="handler-onprogress">HTML elements</a>
37656: </td><td> <code title="event-media-progress"><a href="media-elements.html#event-media-progress">progress</a></code> event handler
37657: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37658:
37659: </td></tr><tr><th id="ix-handler-onratechange"> <code title="">onratechange</code>
37660: </th><td> <a href="#handler-onratechange" title="handler-onratechange">HTML elements</a>
37661: </td><td> <code title="event-media-ratechange"><a href="media-elements.html#event-media-ratechange">ratechange</a></code> event handler
37662: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37663:
37664: </td></tr><tr><th id="ix-handler-onreset"> <code title="">onreset</code>
37665: </th><td> <a href="#handler-onreset" title="handler-onreset">HTML elements</a>
37666: </td><td> <code title="event-reset">reset</code> event handler
37667: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37668:
37669: </td></tr><tr><th id="ix-handler-window-onresize"> <code title="">onresize</code>
37670: </th><td> <code title="handler-window-onresize"><a href="#handler-window-onresize">body</a></code>
37671: </td><td> <code title="event-resize">resize</code> event handler for <code><a href="#window">Window</a></code> object
37672: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37673:
37674: </td></tr><tr><th id="ix-handler-window-onscroll"> <code title="">onscroll</code>
37675: </th><td> <code title="handler-window-onscroll"><a href="#handler-window-onscroll">body</a></code>
37676: </td><td> <code title="event-scroll">scroll</code> event handler for <code><a href="#window">Window</a></code> object
37677: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37678:
37679: </td></tr><tr><th id="ix-handler-onscroll"> <code title="">onscroll</code>
37680: </th><td> <a href="#handler-onscroll" title="handler-onscroll">HTML elements</a>
37681: </td><td> <code title="event-scroll">scroll</code> event handler
37682: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37683:
37684: </td></tr><tr><th id="ix-handler-onseeked"> <code title="">onseeked</code>
37685: </th><td> <a href="#handler-onseeked" title="handler-onseeked">HTML elements</a>
37686: </td><td> <code title="event-media-seeked"><a href="media-elements.html#event-media-seeked">seeked</a></code> event handler
37687: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37688:
37689: </td></tr><tr><th id="ix-handler-onseeking"> <code title="">onseeking</code>
37690: </th><td> <a href="#handler-onseeking" title="handler-onseeking">HTML elements</a>
37691: </td><td> <code title="event-media-seeking"><a href="media-elements.html#event-media-seeking">seeking</a></code> event handler
37692: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37693:
37694: </td></tr><tr><th id="ix-handler-onselect"> <code title="">onselect</code>
37695: </th><td> <a href="#handler-onselect" title="handler-onselect">HTML elements</a>
37696: </td><td> <code title="event-select">select</code> event handler
37697: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37698:
37699: </td></tr><tr><th id="ix-handler-onshow"> <code title="">onshow</code>
37700: </th><td> <a href="#handler-onshow" title="handler-onshow">HTML elements</a>
37701: </td><td> <code title="event-show">show</code> event handler
37702: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37703:
37704: </td></tr><tr><th id="ix-handler-onstalled"> <code title="">onstalled</code>
37705: </th><td> <a href="#handler-onstalled" title="handler-onstalled">HTML elements</a>
37706: </td><td> <code title="event-media-stalled"><a href="media-elements.html#event-media-stalled">stalled</a></code> event handler
37707: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37708:
37709: </td></tr><tr><th id="ix-handler-window-onstorage"> <code title="">onstorage</code>
37710: </th><td> <code title="handler-window-onstorage"><a href="#handler-window-onstorage">body</a></code>
37711: </td><td> <code title="event-storage">storage</code> event handler for <code><a href="#window">Window</a></code> object
37712: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37713:
37714: </td></tr><tr><th id="ix-handler-onsubmit"> <code title="">onsubmit</code>
37715: </th><td> <a href="#handler-onsubmit" title="handler-onsubmit">HTML elements</a>
37716: </td><td> <code title="event-submit">submit</code> event handler
37717: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37718:
37719: </td></tr><tr><th id="ix-handler-onsuspend"> <code title="">onsuspend</code>
37720: </th><td> <a href="#handler-onsuspend" title="handler-onsuspend">HTML elements</a>
37721: </td><td> <code title="event-media-suspend"><a href="media-elements.html#event-media-suspend">suspend</a></code> event handler
37722: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37723:
37724: </td></tr><tr><th id="ix-handler-ontimeupdate"> <code title="">ontimeupdate</code>
37725: </th><td> <a href="#handler-ontimeupdate" title="handler-ontimeupdate">HTML elements</a>
37726: </td><td> <code title="event-media-timeupdate"><a href="media-elements.html#event-media-timeupdate">timeupdate</a></code> event handler
37727: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37728:
37729: </td></tr><tr><th id="ix-handler-window-onunload"> <code title="">onunload</code>
37730: </th><td> <code title="handler-window-onunload"><a href="#handler-window-onunload">body</a></code>
37731: </td><td> <code title="event-unload">unload</code> event handler for <code><a href="#window">Window</a></code> object
37732: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37733:
37734: </td></tr><tr><th id="ix-handler-onvolumechange"> <code title="">onvolumechange</code>
37735: </th><td> <a href="#handler-onvolumechange" title="handler-onvolumechange">HTML elements</a>
37736: </td><td> <code title="event-media-volumechange"><a href="media-elements.html#event-media-volumechange">volumechange</a></code> event handler
37737: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37738:
37739: </td></tr><tr><th id="ix-handler-onwaiting"> <code title="">onwaiting</code>
37740: </th><td> <a href="#handler-onwaiting" title="handler-onwaiting">HTML elements</a>
37741: </td><td> <code title="event-media-waiting"><a href="media-elements.html#event-media-waiting">waiting</a></code> event handler
37742: </td><td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a>
37743:
37744: </td></tr></tbody></table><!-- v2 for completeness: (also search for REFLECTIDL)
37745: <h3 class="no-num">Reflecting IDL attributes</h3>
37746:
37747: <p><i>This section is non-normative.</i></p>
37748: <table>
37749: <caption>List of <dfn>reflecting IDL attributes</dfn></caption>
37750: <thead>
37751: <tr>
37752: <th> Interface
37753: <th> Element(s)
37754: <th> IDL attribute
37755: <th> Reflects...
37756: <tbody>
37757: ...
37758: <tr>
37759: <td> <code>HTMLElement</code>
37760: <td> <span>HTML elements</span>
37761: <td> <code title="dom-contextMenu">contextMenu</code>
37762: <td> <code title="attr-contextmenu">contextmenu</code>
37763: <tr>
37764: <td> <code>HTMLOptionElement</code>
37765: <td> <code>option</code>
37766: <td> <code title="dom-option-text">text</code>
37767: <td> <code>textContent</code>
37768: </table>
37769: ( include option.text; textarea.defaultValue, and other attributes that "reflect" the element's textContent )
37770: --><h3 class="no-num" id="element-interfaces">Element Interfaces</h3>
37771:
37772: <p><i>This section is non-normative.</i></p>
37773: <table><caption>List of interfaces for elements</caption>
37774: <thead><tr><th> Element(s)
37775: </th><th> Interface(s)
37776: </th></tr></thead><tbody><tr><td> <code><a href="the-a-element.html#the-a-element">a</a></code>
37777: </td><td> <code><a href="the-a-element.html#htmlanchorelement">HTMLAnchorElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37778:
37779: </td></tr><tr><td> <code><a href="the-abbr-element.html#the-abbr-element">abbr</a></code>
37780: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37781:
37782: </td></tr><tr><td> <code><a href="the-address-element.html#the-address-element">address</a></code>
37783: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37784:
37785: </td></tr><tr><td> <code><a href="the-area-element.html#the-area-element">area</a></code>
37786: </td><td> <code><a href="the-area-element.html#htmlareaelement">HTMLAreaElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37787:
37788: </td></tr><tr><td> <code><a href="the-article-element.html#the-article-element">article</a></code>
37789: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37790:
37791: </td></tr><tr><td> <code><a href="the-aside-element.html#the-aside-element">aside</a></code>
37792: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37793:
37794: </td></tr><tr><td> <code><a href="the-audio-element.html#the-audio-element">audio</a></code>
37795: </td><td> <code><a href="the-audio-element.html#htmlaudioelement">HTMLAudioElement</a></code> : <code><a href="media-elements.html#htmlmediaelement">HTMLMediaElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37796:
37797: </td></tr><tr><td> <code><a href="the-b-element.html#the-b-element">b</a></code>
37798: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37799:
37800: </td></tr><tr><td> <code><a href="the-base-element.html#the-base-element">base</a></code>
37801: </td><td> <code><a href="the-base-element.html#htmlbaseelement">HTMLBaseElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37802:
37803: </td></tr><tr><td> <code><a href="the-bdi-element.html#the-bdi-element">bdi</a></code>
37804: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37805:
37806: </td></tr><tr><td> <code><a href="the-bdo-element.html#the-bdo-element">bdo</a></code>
37807: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37808:
37809: </td></tr><tr><td> <code><a href="the-blockquote-element.html#the-blockquote-element">blockquote</a></code>
37810: </td><td> <code><a href="the-blockquote-element.html#htmlquoteelement">HTMLQuoteElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37811:
37812: </td></tr><tr><td> <code><a href="the-body-element.html#the-body-element">body</a></code>
37813: </td><td> <code><a href="the-body-element.html#htmlbodyelement">HTMLBodyElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37814:
37815: </td></tr><tr><td> <code><a href="the-br-element.html#the-br-element">br</a></code>
37816: </td><td> <code><a href="the-br-element.html#htmlbrelement">HTMLBRElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37817:
37818: </td></tr><tr><td> <code><a href="the-button-element.html#the-button-element">button</a></code>
37819: </td><td> <code><a href="the-button-element.html#htmlbuttonelement">HTMLButtonElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37820:
37821: </td></tr><tr><td> <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code>
37822: </td><td> <code><a href="the-canvas-element.html#htmlcanvaselement">HTMLCanvasElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37823:
37824: </td></tr><tr><td> <code><a href="the-caption-element.html#the-caption-element">caption</a></code>
37825: </td><td> <code><a href="the-caption-element.html#htmltablecaptionelement">HTMLTableCaptionElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37826:
37827: </td></tr><tr><td> <code><a href="the-cite-element.html#the-cite-element">cite</a></code>
37828: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37829:
37830: </td></tr><tr><td> <code><a href="the-code-element.html#the-code-element">code</a></code>
37831: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37832:
37833: </td></tr><tr><td> <code><a href="the-col-element.html#the-col-element">col</a></code>
37834: </td><td> <code><a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37835:
37836: </td></tr><tr><td> <code><a href="the-colgroup-element.html#the-colgroup-element">colgroup</a></code>
37837: </td><td> <code><a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37838:
37839: </td></tr><tr><td> <code><a href="#the-command-element">command</a></code>
37840: </td><td> <code><a href="#htmlcommandelement">HTMLCommandElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37841:
1.192 sruby 37842: </td></tr><tr><td> <code>data</code>
37843: </td><td> <code>HTMLDataElement</code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
1.190 sruby 37844:
37845: </td></tr><tr><td> <code><a href="the-datalist-element.html#the-datalist-element">datalist</a></code>
37846: </td><td> <code><a href="the-datalist-element.html#htmldatalistelement">HTMLDataListElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37847:
37848: </td></tr><tr><td> <code><a href="the-dd-element.html#the-dd-element">dd</a></code>
37849: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37850:
37851: </td></tr><tr><td> <code><a href="the-del-element.html#the-del-element">del</a></code>
37852: </td><td> <code><a href="attributes-common-to-ins-and-del-elements.html#htmlmodelement">HTMLModElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37853:
37854: </td></tr><tr><td> <code><a href="#the-details-element">details</a></code>
37855: </td><td> <code><a href="#htmldetailselement">HTMLDetailsElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37856:
37857: </td></tr><tr><td> <code><a href="the-dfn-element.html#the-dfn-element">dfn</a></code>
37858: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37859:
37860: </td></tr><tr><td> <code><a href="#the-dialog-element">dialog</a></code>
37861: </td><td> <code><a href="#htmldialogelement">HTMLDialogElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37862:
37863: </td></tr><tr><td> <code><a href="the-div-element.html#the-div-element">div</a></code>
37864: </td><td> <code><a href="the-div-element.html#htmldivelement">HTMLDivElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37865:
37866: </td></tr><tr><td> <code><a href="the-dl-element.html#the-dl-element">dl</a></code>
37867: </td><td> <code><a href="the-dl-element.html#htmldlistelement">HTMLDListElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37868:
37869: </td></tr><tr><td> <code><a href="the-dt-element.html#the-dt-element">dt</a></code>
37870: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37871:
37872: </td></tr><tr><td> <code><a href="the-em-element.html#the-em-element">em</a></code>
37873: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37874:
37875: </td></tr><tr><td> <code><a href="the-embed-element.html#the-embed-element">embed</a></code>
37876: </td><td> <code><a href="the-embed-element.html#htmlembedelement">HTMLEmbedElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37877:
37878: </td></tr><tr><td> <code><a href="the-fieldset-element.html#the-fieldset-element">fieldset</a></code>
37879: </td><td> <code><a href="the-fieldset-element.html#htmlfieldsetelement">HTMLFieldSetElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37880:
37881: </td></tr><tr><td> <code><a href="the-figcaption-element.html#the-figcaption-element">figcaption</a></code>
37882: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37883:
37884: </td></tr><tr><td> <code><a href="the-figure-element.html#the-figure-element">figure</a></code>
37885: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37886:
37887: </td></tr><tr><td> <code><a href="the-footer-element.html#the-footer-element">footer</a></code>
37888: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37889:
37890: </td></tr><tr><td> <code><a href="the-form-element.html#the-form-element">form</a></code>
37891: </td><td> <code><a href="the-form-element.html#htmlformelement">HTMLFormElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37892:
37893: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h1</a></code>
37894: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37895:
37896: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h2</a></code>
37897: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37898:
37899: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h3</a></code>
37900: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37901:
37902: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h4</a></code>
37903: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37904:
37905: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h5</a></code>
37906: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37907:
37908: </td></tr><tr><td> <code><a href="the-aside-element.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements">h6</a></code>
37909: </td><td> <code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37910:
37911: </td></tr><tr><td> <code><a href="the-head-element.html#the-head-element">head</a></code>
37912: </td><td> <code><a href="the-head-element.html#htmlheadelement">HTMLHeadElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37913:
37914: </td></tr><tr><td> <code><a href="the-header-element.html#the-header-element">header</a></code>
37915: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37916:
37917: </td></tr><tr><td> <code><a href="the-hgroup-element.html#the-hgroup-element">hgroup</a></code>
37918: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37919:
37920: </td></tr><tr><td> <code><a href="the-hr-element.html#the-hr-element">hr</a></code>
37921: </td><td> <code><a href="the-hr-element.html#htmlhrelement">HTMLHRElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37922:
37923: </td></tr><tr><td> <code><a href="the-html-element.html#the-html-element">html</a></code>
37924: </td><td> <code><a href="the-html-element.html#htmlhtmlelement">HTMLHtmlElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37925:
37926: </td></tr><tr><td> <code><a href="the-i-element.html#the-i-element">i</a></code>
37927: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37928:
37929: </td></tr><tr><td> <code><a href="the-iframe-element.html#the-iframe-element">iframe</a></code>
37930: </td><td> <code><a href="the-iframe-element.html#htmliframeelement">HTMLIFrameElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37931:
37932: </td></tr><tr><td> <code><a href="the-img-element.html#the-img-element">img</a></code>
37933: </td><td> <code><a href="the-img-element.html#htmlimageelement">HTMLImageElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37934:
37935: </td></tr><tr><td> <code><a href="the-input-element.html#the-input-element">input</a></code>
37936: </td><td> <code><a href="the-input-element.html#htmlinputelement">HTMLInputElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37937:
37938: </td></tr><tr><td> <code><a href="the-ins-element.html#the-ins-element">ins</a></code>
37939: </td><td> <code><a href="attributes-common-to-ins-and-del-elements.html#htmlmodelement">HTMLModElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37940:
37941: </td></tr><tr><td> <code><a href="the-kbd-element.html#the-kbd-element">kbd</a></code>
37942: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37943:
37944: </td></tr><tr><td> <code><a href="the-keygen-element.html#the-keygen-element">keygen</a></code>
37945: </td><td> <code><a href="the-keygen-element.html#htmlkeygenelement">HTMLKeygenElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37946:
37947: </td></tr><tr><td> <code><a href="the-label-element.html#the-label-element">label</a></code>
37948: </td><td> <code><a href="the-label-element.html#htmllabelelement">HTMLLabelElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37949:
37950: </td></tr><tr><td> <code><a href="the-legend-element.html#the-legend-element">legend</a></code>
37951: </td><td> <code><a href="the-legend-element.html#htmllegendelement">HTMLLegendElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37952:
37953: </td></tr><tr><td> <code><a href="the-li-element.html#the-li-element">li</a></code>
37954: </td><td> <code><a href="the-li-element.html#htmllielement">HTMLLIElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37955:
37956: </td></tr><tr><td> <code><a href="the-link-element.html#the-link-element">link</a></code>
37957: </td><td> <code><a href="the-link-element.html#htmllinkelement">HTMLLinkElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37958:
37959: </td></tr><tr><td> <code><a href="the-map-element.html#the-map-element">map</a></code>
37960: </td><td> <code><a href="the-map-element.html#htmlmapelement">HTMLMapElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37961:
37962: </td></tr><tr><td> <code><a href="the-mark-element.html#the-mark-element">mark</a></code>
37963: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37964:
37965: </td></tr><tr><td> <code><a href="#the-menu-element">menu</a></code>
37966: </td><td> <code><a href="#htmlmenuelement">HTMLMenuElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37967:
37968: </td></tr><tr><td> <code><a href="the-meta-element.html#the-meta-element">meta</a></code>
37969: </td><td> <code><a href="the-meta-element.html#htmlmetaelement">HTMLMetaElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37970:
37971: </td></tr><tr><td> <code><a href="the-meter-element.html#the-meter-element">meter</a></code>
37972: </td><td> <code><a href="the-meter-element.html#htmlmeterelement">HTMLMeterElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37973:
37974: </td></tr><tr><td> <code><a href="the-nav-element.html#the-nav-element">nav</a></code>
37975: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37976:
37977: </td></tr><tr><td> <code><a href="the-noscript-element.html#the-noscript-element">noscript</a></code>
37978: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37979:
37980: </td></tr><tr><td> <code><a href="the-object-element.html#the-object-element">object</a></code>
37981: </td><td> <code><a href="the-object-element.html#htmlobjectelement">HTMLObjectElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37982:
37983: </td></tr><tr><td> <code><a href="the-ol-element.html#the-ol-element">ol</a></code>
37984: </td><td> <code><a href="the-ol-element.html#htmlolistelement">HTMLOListElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37985:
37986: </td></tr><tr><td> <code><a href="the-optgroup-element.html#the-optgroup-element">optgroup</a></code>
37987: </td><td> <code><a href="the-optgroup-element.html#htmloptgroupelement">HTMLOptGroupElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37988:
37989: </td></tr><tr><td> <code><a href="the-option-element.html#the-option-element">option</a></code>
37990: </td><td> <code><a href="the-option-element.html#htmloptionelement">HTMLOptionElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37991:
37992: </td></tr><tr><td> <code><a href="the-output-element.html#the-output-element">output</a></code>
37993: </td><td> <code><a href="the-output-element.html#htmloutputelement">HTMLOutputElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37994:
37995: </td></tr><tr><td> <code><a href="the-p-element.html#the-p-element">p</a></code>
37996: </td><td> <code><a href="the-p-element.html#htmlparagraphelement">HTMLParagraphElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
37997:
37998: </td></tr><tr><td> <code><a href="the-param-element.html#the-param-element">param</a></code>
37999: </td><td> <code><a href="the-param-element.html#htmlparamelement">HTMLParamElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38000:
38001: </td></tr><tr><td> <code><a href="the-pre-element.html#the-pre-element">pre</a></code>
38002: </td><td> <code><a href="the-pre-element.html#htmlpreelement">HTMLPreElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38003:
38004: </td></tr><tr><td> <code><a href="the-progress-element.html#the-progress-element">progress</a></code>
38005: </td><td> <code><a href="the-progress-element.html#htmlprogresselement">HTMLProgressElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38006:
38007: </td></tr><tr><td> <code><a href="the-q-element.html#the-q-element">q</a></code>
38008: </td><td> <code><a href="the-blockquote-element.html#htmlquoteelement">HTMLQuoteElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38009:
38010: </td></tr><tr><td> <code><a href="the-rp-element.html#the-rp-element">rp</a></code>
38011: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38012:
38013: </td></tr><tr><td> <code><a href="the-rt-element.html#the-rt-element">rt</a></code>
38014: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38015:
38016: </td></tr><tr><td> <code><a href="the-ruby-element.html#the-ruby-element">ruby</a></code>
38017: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38018:
38019: </td></tr><tr><td> <code><a href="the-s-element.html#the-s-element">s</a></code>
38020: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38021:
38022: </td></tr><tr><td> <code><a href="the-samp-element.html#the-samp-element">samp</a></code>
38023: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38024:
38025: </td></tr><tr><td> <code><a href="the-script-element.html#the-script-element">script</a></code>
38026: </td><td> <code><a href="the-script-element.html#htmlscriptelement">HTMLScriptElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38027:
38028: </td></tr><tr><td> <code><a href="the-section-element.html#the-section-element">section</a></code>
38029: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38030:
38031: </td></tr><tr><td> <code><a href="the-select-element.html#the-select-element">select</a></code>
38032: </td><td> <code><a href="the-select-element.html#htmlselectelement">HTMLSelectElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38033:
38034: </td></tr><tr><td> <code><a href="the-small-element.html#the-small-element">small</a></code>
38035: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38036:
38037: </td></tr><tr><td> <code><a href="the-source-element.html#the-source-element">source</a></code>
38038: </td><td> <code><a href="the-source-element.html#htmlsourceelement">HTMLSourceElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38039:
38040: </td></tr><tr><td> <code><a href="the-span-element.html#the-span-element">span</a></code>
38041: </td><td> <code><a href="the-span-element.html#htmlspanelement">HTMLSpanElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38042:
38043: </td></tr><tr><td> <code><a href="the-strong-element.html#the-strong-element">strong</a></code>
38044: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38045:
38046: </td></tr><tr><td> <code><a href="the-style-element.html#the-style-element">style</a></code>
38047: </td><td> <code><a href="the-style-element.html#htmlstyleelement">HTMLStyleElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38048:
38049: </td></tr><tr><td> <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sub</a></code>
38050: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38051:
38052: </td></tr><tr><td> <code><a href="#the-summary-element">summary</a></code>
38053: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38054:
38055: </td></tr><tr><td> <code><a href="the-sub-and-sup-elements.html#the-sub-and-sup-elements">sup</a></code>
38056: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38057:
38058: </td></tr><tr><td> <code><a href="the-table-element.html#the-table-element">table</a></code>
38059: </td><td> <code><a href="the-table-element.html#htmltableelement">HTMLTableElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38060:
38061: </td></tr><tr><td> <code><a href="the-tbody-element.html#the-tbody-element">tbody</a></code>
38062: </td><td> <code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38063:
38064: </td></tr><tr><td> <code><a href="the-td-element.html#the-td-element">td</a></code>
38065: </td><td> <code><a href="the-td-element.html#htmltabledatacellelement">HTMLTableDataCellElement</a></code> : <code><a href="attributes-common-to-td-and-th-elements.html#htmltablecellelement">HTMLTableCellElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38066:
38067: </td></tr><tr><td> <code><a href="the-textarea-element.html#the-textarea-element">textarea</a></code>
38068: </td><td> <code><a href="the-textarea-element.html#htmltextareaelement">HTMLTextAreaElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38069:
38070: </td></tr><tr><td> <code><a href="the-tfoot-element.html#the-tfoot-element">tfoot</a></code>
38071: </td><td> <code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38072:
38073: </td></tr><tr><td> <code><a href="the-th-element.html#the-th-element">th</a></code>
38074: </td><td> <code><a href="the-th-element.html#htmltableheadercellelement">HTMLTableHeaderCellElement</a></code> : <code><a href="attributes-common-to-td-and-th-elements.html#htmltablecellelement">HTMLTableCellElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38075:
38076: </td></tr><tr><td> <code><a href="the-thead-element.html#the-thead-element">thead</a></code>
38077: </td><td> <code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38078:
38079: </td></tr><tr><td> <code><a href="the-time-element.html#the-time-element">time</a></code>
38080: </td><td> <code><a href="the-time-element.html#htmltimeelement">HTMLTimeElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38081:
38082: </td></tr><tr><td> <code><a href="the-title-element.html#the-title-element">title</a></code>
38083: </td><td> <code><a href="the-title-element.html#htmltitleelement">HTMLTitleElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38084:
38085: </td></tr><tr><td> <code><a href="the-tr-element.html#the-tr-element">tr</a></code>
38086: </td><td> <code><a href="the-tr-element.html#htmltablerowelement">HTMLTableRowElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38087:
38088: </td></tr><tr><td> <code><a href="the-track-element.html#the-track-element">track</a></code>
38089: </td><td> <code><a href="the-track-element.html#htmltrackelement">HTMLTrackElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38090:
38091: </td></tr><tr><td> <code><a href="the-u-element.html#the-u-element">u</a></code>
38092: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38093:
38094: </td></tr><tr><td> <code><a href="the-ul-element.html#the-ul-element">ul</a></code>
38095: </td><td> <code><a href="the-ul-element.html#htmlulistelement">HTMLUListElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38096:
38097: </td></tr><tr><td> <code><a href="the-var-element.html#the-var-element">var</a></code>
38098: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38099:
38100: </td></tr><tr><td> <code><a href="the-video-element.html#the-video-element">video</a></code>
38101: </td><td> <code><a href="the-video-element.html#htmlvideoelement">HTMLVideoElement</a></code> : <code><a href="media-elements.html#htmlmediaelement">HTMLMediaElement</a></code> : <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38102:
38103: </td></tr><tr><td> <code><a href="the-wbr-element.html#the-wbr-element">wbr</a></code>
38104: </td><td> <code><a href="elements.html#htmlelement">HTMLElement</a></code>
38105:
38106: </td></tr></tbody></table><h3 class="no-num" id="all-interfaces">All Interfaces</h3>
38107:
38108: <p><i>This section is non-normative.</i></p>
1.192 sruby 38109: <ul><li><code><a href="#applicationcache">ApplicationCache</a></code>
38110: </li><li><code><a href="media-elements.html#audiotrack">AudioTrack</a></code>
38111: </li><li><code><a href="media-elements.html#audiotracklist">AudioTrackList</a></code>
38112: </li><li><code><a href="#barprop">BarProp</a></code>
38113: </li><li><code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code>
38114: </li><li><code><a href="common-dom-interfaces.html#domstringmap-0">DOMStringMap</a></code>
38115: </li><li><code><a href="#datatransfer">DataTransfer</a></code>
38116: </li><li><code><a href="#datatransferitem">DataTransferItem</a></code>
38117: </li><li><code><a href="#datatransferitemlist">DataTransferItemList</a></code>
38118: </li><li><code>Document</code>, <a href="dom.html#document">partial</a>
38119: </li><li><code><a href="#dragevent">DragEvent</a></code>
38120: </li><li><code><a href="#external">External</a></code>
38121: </li><li><code><a href="#functionstringcallback">FunctionStringCallback</a></code>
38122: </li><li><code><a href="common-dom-interfaces.html#htmlallcollection-0">HTMLAllCollection</a></code>
38123: </li><li><code><a href="the-a-element.html#htmlanchorelement">HTMLAnchorElement</a></code>
38124: </li><li><code><a href="#htmlappletelement">HTMLAppletElement</a></code>
38125: </li><li><code><a href="the-area-element.html#htmlareaelement">HTMLAreaElement</a></code>
38126: </li><li><code><a href="the-audio-element.html#htmlaudioelement">HTMLAudioElement</a></code>
38127: </li><li><code><a href="the-br-element.html#htmlbrelement">HTMLBRElement</a></code>
38128: </li><li><code><a href="the-base-element.html#htmlbaseelement">HTMLBaseElement</a></code>
38129: </li><li><code><a href="#htmlbasefontelement">HTMLBaseFontElement</a></code>
38130: </li><li><code><a href="the-body-element.html#htmlbodyelement">HTMLBodyElement</a></code>
38131: </li><li><code><a href="the-button-element.html#htmlbuttonelement">HTMLButtonElement</a></code>
38132: </li><li><code><a href="the-canvas-element.html#htmlcanvaselement">HTMLCanvasElement</a></code>
38133: </li><li><code><a href="#htmlcommandelement">HTMLCommandElement</a></code>
38134: </li><li><code><a href="the-dl-element.html#htmldlistelement">HTMLDListElement</a></code>
38135: </li><li><code><a href="the-datalist-element.html#htmldatalistelement">HTMLDataListElement</a></code>
38136: </li><li><code><a href="#htmldetailselement">HTMLDetailsElement</a></code>
38137: </li><li><code><a href="#htmldialogelement">HTMLDialogElement</a></code>
38138: </li><li><code><a href="#htmldirectoryelement">HTMLDirectoryElement</a></code>
38139: </li><li><code><a href="the-div-element.html#htmldivelement">HTMLDivElement</a></code>
38140: </li><li><code><a href="elements.html#htmlelement">HTMLElement</a></code>
38141: </li><li><code><a href="the-embed-element.html#htmlembedelement">HTMLEmbedElement</a></code>
38142: </li><li><code><a href="the-fieldset-element.html#htmlfieldsetelement">HTMLFieldSetElement</a></code>
38143: </li><li><code><a href="#htmlfontelement">HTMLFontElement</a></code>
38144: </li><li><code><a href="common-dom-interfaces.html#htmlformcontrolscollection-0">HTMLFormControlsCollection</a></code>
38145: </li><li><code><a href="the-form-element.html#htmlformelement">HTMLFormElement</a></code>
38146: </li><li><code><a href="#htmlframeelement">HTMLFrameElement</a></code>
38147: </li><li><code><a href="#htmlframesetelement">HTMLFrameSetElement</a></code>
38148: </li><li><code><a href="the-hr-element.html#htmlhrelement">HTMLHRElement</a></code>
38149: </li><li><code><a href="the-head-element.html#htmlheadelement">HTMLHeadElement</a></code>
38150: </li><li><code><a href="the-aside-element.html#htmlheadingelement">HTMLHeadingElement</a></code>
38151: </li><li><code><a href="the-html-element.html#htmlhtmlelement">HTMLHtmlElement</a></code>
38152: </li><li><code><a href="the-iframe-element.html#htmliframeelement">HTMLIFrameElement</a></code>
38153: </li><li><code><a href="the-img-element.html#htmlimageelement">HTMLImageElement</a></code>
38154: </li><li><code><a href="the-input-element.html#htmlinputelement">HTMLInputElement</a></code>
38155: </li><li><code><a href="the-keygen-element.html#htmlkeygenelement">HTMLKeygenElement</a></code>
38156: </li><li><code><a href="the-li-element.html#htmllielement">HTMLLIElement</a></code>
38157: </li><li><code><a href="the-label-element.html#htmllabelelement">HTMLLabelElement</a></code>
38158: </li><li><code><a href="the-legend-element.html#htmllegendelement">HTMLLegendElement</a></code>
38159: </li><li><code><a href="the-link-element.html#htmllinkelement">HTMLLinkElement</a></code>
38160: </li><li><code><a href="the-map-element.html#htmlmapelement">HTMLMapElement</a></code>
38161: </li><li><code><a href="#htmlmarqueeelement">HTMLMarqueeElement</a></code>
38162: </li><li><code><a href="media-elements.html#htmlmediaelement">HTMLMediaElement</a></code>
38163: </li><li><code><a href="#htmlmenuelement">HTMLMenuElement</a></code>
38164: </li><li><code><a href="the-meta-element.html#htmlmetaelement">HTMLMetaElement</a></code>
38165: </li><li><code><a href="the-meter-element.html#htmlmeterelement">HTMLMeterElement</a></code>
38166: </li><li><code><a href="attributes-common-to-ins-and-del-elements.html#htmlmodelement">HTMLModElement</a></code>
38167: </li><li><code><a href="the-ol-element.html#htmlolistelement">HTMLOListElement</a></code>
38168: </li><li><code><a href="the-object-element.html#htmlobjectelement">HTMLObjectElement</a></code>
38169: </li><li><code><a href="the-optgroup-element.html#htmloptgroupelement">HTMLOptGroupElement</a></code>
38170: </li><li><code><a href="the-option-element.html#htmloptionelement">HTMLOptionElement</a></code>
38171: </li><li><code><a href="common-dom-interfaces.html#htmloptionscollection-0">HTMLOptionsCollection</a></code>
38172: </li><li><code><a href="the-output-element.html#htmloutputelement">HTMLOutputElement</a></code>
38173: </li><li><code><a href="the-p-element.html#htmlparagraphelement">HTMLParagraphElement</a></code>
38174: </li><li><code><a href="the-param-element.html#htmlparamelement">HTMLParamElement</a></code>
38175: </li><li><code><a href="the-pre-element.html#htmlpreelement">HTMLPreElement</a></code>
38176: </li><li><code><a href="the-progress-element.html#htmlprogresselement">HTMLProgressElement</a></code>
38177: </li><li><code><a href="the-blockquote-element.html#htmlquoteelement">HTMLQuoteElement</a></code>
38178: </li><li><code><a href="the-script-element.html#htmlscriptelement">HTMLScriptElement</a></code>
38179: </li><li><code><a href="the-select-element.html#htmlselectelement">HTMLSelectElement</a></code>
38180: </li><li><code><a href="the-source-element.html#htmlsourceelement">HTMLSourceElement</a></code>
38181: </li><li><code><a href="the-span-element.html#htmlspanelement">HTMLSpanElement</a></code>
38182: </li><li><code><a href="the-style-element.html#htmlstyleelement">HTMLStyleElement</a></code>
38183: </li><li><code><a href="the-caption-element.html#htmltablecaptionelement">HTMLTableCaptionElement</a></code>
38184: </li><li><code><a href="attributes-common-to-td-and-th-elements.html#htmltablecellelement">HTMLTableCellElement</a></code>
38185: </li><li><code><a href="the-colgroup-element.html#htmltablecolelement">HTMLTableColElement</a></code>
38186: </li><li><code><a href="the-td-element.html#htmltabledatacellelement">HTMLTableDataCellElement</a></code>
38187: </li><li><code><a href="the-table-element.html#htmltableelement">HTMLTableElement</a></code>
38188: </li><li><code><a href="the-th-element.html#htmltableheadercellelement">HTMLTableHeaderCellElement</a></code>
38189: </li><li><code><a href="the-tr-element.html#htmltablerowelement">HTMLTableRowElement</a></code>
38190: </li><li><code><a href="the-tbody-element.html#htmltablesectionelement">HTMLTableSectionElement</a></code>
38191: </li><li><code><a href="the-textarea-element.html#htmltextareaelement">HTMLTextAreaElement</a></code>
38192: </li><li><code><a href="the-time-element.html#htmltimeelement">HTMLTimeElement</a></code>
38193: </li><li><code><a href="the-title-element.html#htmltitleelement">HTMLTitleElement</a></code>
38194: </li><li><code><a href="the-track-element.html#htmltrackelement">HTMLTrackElement</a></code>
38195: </li><li><code><a href="the-ul-element.html#htmlulistelement">HTMLUListElement</a></code>
38196: </li><li><code><a href="elements.html#htmlunknownelement">HTMLUnknownElement</a></code>
38197: </li><li><code><a href="the-video-element.html#htmlvideoelement">HTMLVideoElement</a></code>
38198: </li><li><code><a href="#hashchangeevent">HashChangeEvent</a></code>
38199: </li><li><code><a href="#history-1">History</a></code>
38200: </li><li><code><a href="#location">Location</a></code>
38201: </li><li><code><a href="media-elements.html#mediacontroller">MediaController</a></code>
38202: </li><li><code><a href="media-elements.html#mediaerror">MediaError</a></code>
38203: </li><li><code><a href="#navigator">Navigator</a></code>
38204: </li><li><code><a href="#navigatorcontentutils">NavigatorContentUtils</a></code>
38205: </li><li><code><a href="#navigatorid">NavigatorID</a></code>
38206: </li><li><code><a href="#navigatoronline">NavigatorOnLine</a></code>
38207: </li><li><code><a href="#navigatorstorageutils">NavigatorStorageUtils</a></code>
38208: </li><li><code><a href="#pagetransitionevent">PageTransitionEvent</a></code>
38209: </li><li><code><a href="#popstateevent">PopStateEvent</a></code>
38210: </li><li><code><a href="common-dom-interfaces.html#radionodelist">RadioNodeList</a></code>
38211: </li><li><code><a href="media-elements.html#texttrack">TextTrack</a></code>
38212: </li><li><code><a href="media-elements.html#texttrackcue">TextTrackCue</a></code>
38213: </li><li><code><a href="media-elements.html#texttrackcuelist">TextTrackCueList</a></code>
38214: </li><li><code><a href="media-elements.html#texttracklist">TextTrackList</a></code>
38215: </li><li><code><a href="media-elements.html#timeranges">TimeRanges</a></code>
38216: </li><li><code><a href="media-elements.html#trackevent">TrackEvent</a></code>
38217: </li><li><code><a href="common-dom-interfaces.html#transferable">Transferable</a></code>
38218: </li><li><code><a href="#validitystate">ValidityState</a></code>
38219: </li><li><code><a href="media-elements.html#videotrack">VideoTrack</a></code>
38220: </li><li><code><a href="media-elements.html#videotracklist">VideoTrackList</a></code>
38221: </li><li><code><a href="#window">Window</a></code>
38222: </li><li><code><a href="#windowbase64">WindowBase64</a></code>
38223: </li><li><code><a href="#windowmodal">WindowModal</a></code>
38224: </li><li><code><a href="#windowtimers">WindowTimers</a></code>
38225: </li><li><code>XMLDocument</code>, <a href="dom.html#xmldocument">partial</a>
38226: </li></ul><!-- (only has events from HTML5) --><h3 class="no-num" id="events-0">Events</h3>
1.190 sruby 38227:
38228: <p><i>This section is non-normative.</i></p>
38229: <table><caption>List of events</caption>
38230: <thead><tr><th> Event
38231: </th><th> Interface
38232: </th><th> Description
38233: </th></tr></thead><tbody><tr><td> <code title="event-abort">abort</code>
38234: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38235: </td><td> Fired at the <code><a href="#window">Window</a></code> when the download was aborted by the user
38236:
38237: </td></tr><tr><td> <code title="event-afterprint">afterprint</code>
38238: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38239: </td><td> Fired at the <code><a href="#window">Window</a></code> after printing
38240:
38241: </td></tr><tr><td> <code title="event-beforeprint">beforeprint</code>
38242: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38243: </td><td> Fired at the <code><a href="#window">Window</a></code> before printing
38244:
38245: </td></tr><tr><td> <code title="event-beforeunload">beforeunload</code>
38246: </td><td> <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code>
38247: </td><td> Fired at the <code><a href="#window">Window</a></code> when the page is about to be unloaded, in case the page would like to show a warning prompt
38248:
38249: </td></tr><tr><td> <code title="event-blur">blur</code>
38250: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38251: </td><td> Fired at nodes losing focus
38252:
38253: </td></tr><tr><td> <code title="event-change">change</code>
38254: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38255: </td><td> Fired at controls when the user commits a value change
38256:
38257: </td></tr><tr><td> <code title="event-click"><a href="infrastructure.html#event-click">click</a></code>
38258: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38259: </td><td> Fired at an element before its <a href="content-models.html#activation-behavior">activation behavior</a> is run
38260:
38261: </td></tr><tr><td> <code title="event-contextmenu">contextmenu</code>
38262: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38263: </td><td> Fired at elements when the user requests their context menu
38264:
38265: </td></tr><tr><td> <code title="event-DOMContentLoaded">DOMContentLoaded</code>
38266: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38267: </td><td> Fired at the <code><a href="dom.html#document">Document</a></code> once the parser has finished
38268:
38269: </td></tr><tr><td> <code title="event-error">error</code>
38270: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38271: </td><td> Fired at elements when network and script errors occur
38272:
38273: </td></tr><tr><td> <code title="event-focus">focus</code>
38274: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38275: </td><td> Fired at nodes gaining focus
38276:
38277: </td></tr><tr><td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code>
38278: </td><td> <code><a href="#hashchangeevent">HashChangeEvent</a></code>
38279: </td><td> Fired at the <code><a href="#window">Window</a></code> when the fragment identifier part of <a href="dom.html#the-document's-address">the document's address</a> changes
38280:
38281: </td></tr><tr><td> <code title="event-input">input</code>
38282: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38283: </td><td> Fired at controls when the user changes the value
38284:
38285: </td></tr><tr><td> <code title="event-invalid">invalid</code>
38286: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38287: </td><td> Fired at controls during form validation if they do not satisfy their constraints
38288:
38289: </td></tr><tr><td> <code title="event-load">load</code>
38290: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38291: </td><td> Fired at the <code><a href="#window">Window</a></code> when the document has finished loading; fired at an element containing a resource (e.g. <code><a href="the-img-element.html#the-img-element">img</a></code>, <code><a href="the-embed-element.html#the-embed-element">embed</a></code>) when its resource has finished loading
38292:
38293: </td></tr><tr><td> <code title="event-message">message</code>
38294: </td><td> <code>MessageEvent</code>
38295: </td><td> Fired at an object when the object receives a message
38296:
38297: </td></tr><tr><td> <code title="event-offline"><a href="#event-offline">offline</a></code>
38298: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38299: </td><td> Fired at the <code><a href="#window">Window</a></code> when the network connections fails
38300:
38301: </td></tr><tr><td> <code title="event-online"><a href="#event-online">online</a></code>
38302: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38303: </td><td> Fired at the <code><a href="#window">Window</a></code> when the network connections returns
38304:
38305: </td></tr><tr><td> <code title="event-pagehide"><a href="#event-pagehide">pagehide</a></code>
38306: </td><td> <code><a href="#pagetransitionevent">PageTransitionEvent</a></code>
38307: </td><td> Fired at the <code><a href="#window">Window</a></code> when the page's entry in the <a href="#session-history">session history</a> stops being the <a href="#current-entry">current entry</a>
38308:
38309: </td></tr><tr><td> <code title="event-pageshow"><a href="#event-pageshow">pageshow</a></code>
38310: </td><td> <code><a href="#pagetransitionevent">PageTransitionEvent</a></code>
38311: </td><td> Fired at the <code><a href="#window">Window</a></code> when the page's entry in the <a href="#session-history">session history</a> becomes the <a href="#current-entry">current entry</a>
38312:
38313: </td></tr><tr><td> <code title="event-popstate"><a href="#event-popstate">popstate</a></code>
38314: </td><td> <code><a href="#popstateevent">PopStateEvent</a></code>
38315: </td><td> Fired at the <code><a href="#window">Window</a></code> when the user navigates the <a href="#session-history">session history</a>
38316:
38317: </td></tr><tr><td> <code title="event-readystatechange"><a href="dom.html#event-readystatechange">readystatechange</a></code>
38318: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38319: </td><td> Fired at the <code><a href="dom.html#document">Document</a></code> when it finishes parsing and again when all its subresources have finished loading
38320:
38321: </td></tr><tr><td> <code title="event-reset">reset</code>
38322: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38323: </td><td> Fired at a <code><a href="the-form-element.html#the-form-element">form</a></code> element when it is <a href="#concept-form-reset" title="concept-form-reset">reset</a>
38324:
38325: </td></tr><tr><td> <code title="event-show">show</code>
38326: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38327: </td><td> Fired at a <code><a href="#the-menu-element">menu</a></code> element when it is shown as a context menu
38328:
38329: </td></tr><tr><td> <code title="event-submit">submit</code>
38330: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38331: </td><td> Fired at a <code><a href="the-form-element.html#the-form-element">form</a></code> element when it is <a href="#concept-form-submit" title="concept-form-submit">submitted</a>
38332:
38333: </td></tr><tr><td> <code title="event-unload">unload</code>
38334: </td><td> <code><a href="infrastructure.html#event">Event</a></code>
38335: </td><td> Fired at the <code><a href="#window">Window</a></code> object when the page is going away
38336:
38337: </td></tr></tbody></table><p class="note">See also <a href="media-elements.html#mediaevents">media element
38338: events</a>, <a href="#appcacheevents">application cache events</a>,
38339: and <a href="#dndevents">drag-and-drop events</a>.</p>
38340:
38341:
38342:
38343: <h2 class="no-num" id="references">References</h2><!--REFS-->
38344:
38345: <p>All references are normative unless marked "Non-normative".</p>
38346:
38347: <!-- Dates are only included for standards older than the Web, because the newer ones keep changing. -->
38348:
38349: <dl><!--REFERENCES ON--><dt id="refs2DCONTEXT">[2DCONTEXT]</dt>
38350: <dd><cite><a href="http://dev.w3.org/html5/2dcontext/">HTML Canvas
38351: 2D Context</a></cite>, I. Hickson. W3C.</dd>
38352:
38353: <dt id="refsABNF">[ABNF]</dt>
38354: <dd><cite><a href="http://www.ietf.org/rfc/std/std68.txt">Augmented
38355: BNF for Syntax Specifications: ABNF</a></cite>, D. Crocker,
38356: P. Overell. IETF.</dd>
38357:
38358: <dt id="refsABOUT">[ABOUT]</dt>
38359: <dd><cite><a href="http://tools.ietf.org/html/draft-ietf-appsawg-about-uri-scheme">The 'about' URI scheme</a></cite>, L. Hunt, M. Yevstifeyev. IETF.
38360: Work in progress. <!--!-->
38361: </dd>
38362:
38363: <dt id="refsAES128CTR">[AES128CTR]</dt>
38364: <dd><cite><a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf">Advanced Encryption Standard (AES)</a></cite>. NIST.</dd>
38365:
38366: <dt id="refsARIA">[ARIA]</dt>
38367: <dd><cite><a href="http://www.w3.org/WAI/PF/aria/">Accessible Rich
38368: Internet Applications (WAI-ARIA)</a></cite>, J. Craig, M. Cooper, L. Pappas,
38369: R. Schwerdtfeger, L. Seeman. W3C.</dd>
38370:
38371: <dt id="refsARIAIMPL">[ARIAIMPL]</dt>
38372: <dd><cite><a href="http://www.w3.org/WAI/PF/aria-implementation/">WAI-ARIA 1.0
38373: User Agent Implementation Guide</a></cite>, A. Snow-Weaver,
38374: M. Cooper. W3C.</dd>
38375:
38376: <dt id="refsATAG">[ATAG]</dt>
38377: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/ATAG20/">Authoring Tool Accessibility
38378: Guidelines (ATAG) 2.0</a></cite>, J. Richards, J. Spellman,
38379: J. Treviranus. W3C.</dd>
38380:
38381: <dt id="refsATOM">[ATOM]</dt>
38382: <dd>(Non-normative) <cite><a href="http://tools.ietf.org/html/rfc4287">The Atom Syndication
38383: Format</a></cite>, M. Nottingham, R. Sayre. IETF.</dd>
38384:
38385: <dt id="refsBCP47">[BCP47]</dt>
38386: <dd><cite><a href="http://www.ietf.org/rfc/bcp/bcp47.txt">Tags for
38387: Identifying Languages; Matching of Language Tags</a></cite>,
38388: A. Phillips, M. Davis. IETF.</dd>
38389:
38390: <dt id="refsBECSS">[BECSS]</dt>
38391: <dd><cite><a href="http://www.w3.org/TR/becss/">Behavioral
38392: Extensions to CSS</a></cite>, I. Hickson. W3C.</dd>
38393:
38394: <dt id="refsBEZIER">[BEZIER]</dt>
38395: <dd><cite>Courbes à poles</cite>, P. de Casteljau. INPI, 1959.</dd>
38396:
38397: <dt id="refsBIDI">[BIDI]</dt>
38398: <dd><cite><a href="http://www.unicode.org/reports/tr9/">UAX #9: Unicode
38399: Bidirectional Algorithm</a></cite>, M. Davis. Unicode Consortium.</dd>
38400:
38401: <dt id="refsBIG5">[BIG5]</dt>
38402: <dd>(Non-normative) <cite>Chinese Coded Character Set in Computer</cite>. Institute
38403: for Information Industry, March 1984.</dd>
38404:
38405: <dt id="refsBOCU1">[BOCU1]</dt>
38406: <dd>(Non-normative) <cite><a href="http://www.unicode.org/notes/tn6/">UTN #6: BOCU-1:
38407: MIME-Compatible Unicode Compression</a></cite>, M. Scherer,
38408: M. Davis. Unicode Consortium.</dd>
38409:
38410: <dt id="refsCESU8">[CESU8]</dt>
38411: <dd>(Non-normative) <cite><a href="http://www.unicode.org/reports/tr26/">UTR #26: Compatibility
38412: Encoding Scheme For UTF-16: 8-BIT (CESU-8)</a></cite>,
38413: T. Phipps. Unicode Consortium.</dd>
38414:
38415: <dt id="refsCHARMOD">[CHARMOD]</dt>
38416: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/charmod/">Character Model for the World
38417: Wide Web 1.0: Fundamentals</a></cite>, M. Dürst, F. Yergeau,
38418: R. Ishida, M. Wolf, T. Texin. W3C.</dd>
38419:
38420: <dt id="refsCLDR">[CLDR]</dt>
38421: <dd><cite><a href="http://cldr.unicode.org/">Unicode Common Locale Data Repository</a></cite>. Unicode.</dd>
38422:
38423: <dt id="refsCOMPUTABLE">[COMPUTABLE]</dt>
38424: <dd>(Non-normative) <cite><a href="http://www.turingarchive.org/browse.php/B/12">On computable
38425: numbers, with an application to the
38426: Entscheidungsproblem</a></cite>, A. Turing. In <cite>Proceedings of
38427: the London Mathematical Society</cite>, series 2, volume 42, pages
38428: 230-265. London Mathematical Society, 1937.</dd>
38429:
38430: <dt id="refsCOOKIES">[COOKIES]</dt>
38431: <!--
38432: <dd><cite><a href="http://tools.ietf.org/html/rfc2109">HTTP State Management Mechanism</a></cite>, D. Kristol, L. Montulli. IETF.</dd>
38433: <dd><cite><a href="http://tools.ietf.org/html/rfc2965">HTTP State Management Mechanism</a></cite>, D. Kristol, L. Montulli. IETF.</dd>
38434: -->
38435: <dd><cite><a href="http://tools.ietf.org/html/rfc6265">HTTP State Management Mechanism</a></cite>, A. Barth. IETF.</dd>
38436:
38437: <dt id="refsCORS">[CORS]</dt>
38438: <!--
38439: <dd><cite><a href="http://www.w3.org/TR/cors/">Cross-Origin
38440: Resource Sharing</a></cite>, A. van Kesteren. W3C.</dd>
38441: -->
38442: <dd><cite><a href="http://dev.w3.org/2006/waf/access-control/">Cross-Origin
38443: Resource Sharing</a></cite>, A. van Kesteren. W3C.</dd>
38444:
38445: <dt id="refsCP50220">[CP50220]</dt>
38446: <dd><cite><a href="http://www.iana.org/assignments/charset-reg/CP50220">CP50220</a></cite>,
38447: Y. Naruse. IANA.</dd> <!-- really should be "NARUSE, Y." or some
38448: such, but there's a western bias to these references for
38449: consistency. sorry. -->
38450:
38451: <dt id="refsCP51932">[CP51932]</dt>
38452: <dd><cite><a href="http://www.iana.org/assignments/charset-reg/CP51932">CP51932</a></cite>,
38453: Y. Naruse. IANA.</dd> <!-- really should be "NARUSE, Y." or some
38454: such, but there's a western bias to these references for
38455: consistency. sorry. -->
38456:
38457: <dt id="refsCSP">[CSP]</dt>
38458: <dd>(Non-normative) <cite><a href="http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html">Content Security Policy</a></cite>, B. Sterne, A. Barth. W3C.</dd>
38459:
38460: <dt id="refsCSS">[CSS]</dt>
38461: <dd><cite><a href="http://www.w3.org/TR/CSS2/">Cascading Style Sheets Level 2 Revision 1</a></cite>, B. Bos, T. Çelik, I. Hickson, H. Lie. W3C.</dd>
38462:
38463: <dt id="refsCSSATTR">[CSSATTR]</dt>
38464: <dd><cite><a href="http://dev.w3.org/csswg/css-style-attr/">CSS Styling Attribute Syntax</a></cite>, T. Çelik, E. Etemad. W3C.</dd>
38465:
38466: <dt id="refsCSSCOLOR">[CSSCOLOR]</dt>
38467: <!--
38468: <dd><cite><a href="http://www.w3.org/TR/css3-color/">CSS Color
38469: Module Level 3</a></cite>, T. Çelik, C. Lilley, L.
38470: Baron. W3C.</dd>
38471: -->
38472: <dd><cite><a href="http://dev.w3.org/csswg/css3-color/">CSS Color
38473: Module Level 3</a></cite>, T. Çelik, C. Lilley, L.
38474: Baron. W3C.</dd>
38475:
38476: <dt id="refsCSSFONTS">[CSSFONTS]</dt>
38477: <dd><cite><a href="http://www.w3.org/TR/css3-fonts/">CSS Fonts
38478: Module Level 3</a></cite>, J. Daggett. W3C.</dd>
38479:
38480: <dt id="refsCSSIMAGES">[CSSIMAGES]</dt>
38481: <dd><cite><a href="http://dev.w3.org/csswg/css3-images/">CSS Image
38482: Values and Replaced Content Module Level 3</a></cite>, E. Etemad,
38483: T. Atkins. W3C.</dd>
38484:
38485: <dt id="refsCSSOM">[CSSOM]</dt>
38486: <dd><cite><a href="http://dev.w3.org/csswg/cssom/">Cascading Style Sheets
38487: Object Model (CSSOM)</a></cite>, A. van Kesteren. W3C.</dd>
38488:
38489: <dt id="refsCSSOMVIEW">[CSSOMVIEW]</dt>
38490: <dd><cite><a href="http://dev.w3.org/csswg/cssom-view/">CSSOM View
38491: Module</a></cite>, A. van Kesteren. W3C.</dd>
38492:
38493: <dt id="refsCSSRUBY">[CSSRUBY]</dt>
38494: <dd><cite><a href="http://dev.w3.org/csswg/css3-ruby/">CSS3 Ruby Module</a></cite>, R. Ishida. W3C.</dd>
38495:
38496: <dt id="refsCSSUI">[CSSUI]</dt>
38497: <dd><cite><a href="http://dev.w3.org/csswg/css3-ui/">CSS3 Basic User Interface Module</a></cite>, T. Çelik. W3C.</dd>
38498:
38499: <dt id="refsCSSVALUES">[CSSVALUES]</dt>
38500: <dd><cite><a href="http://dev.w3.org/csswg/css3-values/">CSS3 Values and Units</a></cite>, H. Lie, T. Atkins, E. Etemad. W3C.</dd>
38501:
38502: <dt id="refsDASH">[DASH]</dt>
38503: <dd><cite><a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57623">Dynamic adaptive streaming over HTTP (DASH)</a></cite>. ISO.</dd>
38504:
38505: <dt id="refsDOM2HTML">[DOM2HTML]</dt>
38506: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/DOM-Level-2-HTML/">Document Object Model (DOM) Level 2 HTML Specification</a></cite>, J. Stenback, P. Le Hégaret, A. Le Hors. W3C.</dd>
38507:
38508: <dt id="refsDOMCORE">[DOMCORE]</dt>
38509: <dd><cite><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html">Web DOM Core</a></cite>, A. van Kesteren. W3C.</dd>
38510:
38511: <dt id="refsDOMEVENTS">[DOMEVENTS]</dt>
38512: <dd><cite><a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html">Document Object Model (DOM) Level 3 Events Specification</a></cite>, T. Leithead, J. Rossi, D. Schepers, B. Höhrmann, P. Le Hégaret, T. Pixley. W3C.</dd>
38513:
38514: <dt id="refsDOMPARSING">[DOMPARSING]</dt>
38515: <dd><cite><a href="http://dvcs.w3.org/hg/innerhtml/raw-file/tip/index.html">DOM Parsing and Serialization</a></cite>, T. Leithead. Work in Progress. W3C.</dd>
38516:
38517: <dt id="refsDOT">[DOT]</dt>
38518: <dd>(Non-normative) <cite><a href="http://www.graphviz.org/content/dot-language">The DOT Language</a></cite>. Graphviz.</dd>
38519:
38520: <dt id="refsE163">[E163]</dt>
38521: <dd><cite>Recommendation E.163 — Numbering Plan for The International Telephone Service</cite>, CCITT Blue Book, Fascicle II.2, pp. 128-134, November 1988.</dd>
38522:
38523: <dt id="refsECMA262">[ECMA262]</dt>
38524: <dd><cite><a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript Language Specification</a></cite>. ECMA.</dd>
38525:
38526: <dt id="refsECMA357">[ECMA357]</dt>
38527: <dd>(Non-normative) <cite><a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMAScript for XML (E4X) Specification</a></cite>. ECMA.</dd>
38528:
38529: <dt id="refsEDITING">[EDITING]</dt>
38530: <dd><cite><a href="http://aryeh.name/spec/editing/editing.html">HTML Editing APIs</a></cite>, A. Gregor.</dd>
38531:
38532: <dt id="refsEUCKR">[EUCKR]</dt>
38533: <dd><cite>Hangul Unix Environment</cite>. Korea Industrial Standards Association. Ref. No. KS C 5861-1992.</dd>
38534:
38535: <dt id="refsEUCJP">[EUCJP]</dt>
38536: <dd><cite>Definition and Notes of Japanese EUC</cite>. UI-OSF-USLP. In English in the abridged translation of the <a href="http://home.m05.itscom.net/numa/uocjleE.pdf">UI-OSF Application Platform Profile for Japanese Environment</a>, Appendix C.</dd>
38537:
38538: <dt id="refsEVENTSOURCE">[EVENTSOURCE]</dt>
38539: <!--
38540: <dd><cite><a href="http://www.w3.org/TR/eventsource/">Server-Sent
38541: Events</a></cite>, I. Hickson. W3C.</dd>
38542: -->
38543: <dd><cite><a href="http://dev.w3.org/html5/eventsource/">Server-Sent
38544: Events</a></cite>, I. Hickson. W3C.</dd>
38545:
38546: <dt id="refsFILEAPI">[FILEAPI]</dt>
38547: <dd><cite><a href="http://dev.w3.org/2006/webapi/FileUpload/publish/FileAPI.html">File
38548: API</a></cite>, A. Ranganathan. W3C.</dd>
38549:
38550: <dt id="refsFILESYSTEMAPI">[FILESYSTEMAPI]</dt>
38551: <dd><cite><a href="http://dev.w3.org/2009/dap/file-system/file-dir-sys.html">File
38552: API: Directories and System</a></cite>, E. Uhrhane. W3C.</dd>
38553:
38554: <dt id="refsFULLSCREEN">[FULLSCREEN]</dt>
38555: <dd><cite><a href="http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html">Fullscreen</a></cite>, A. van Kesteren, T. Çelik.</dd>
38556:
38557: <dt id="refsGBK">[GBK]</dt>
38558: <dd><cite>Chinese Internal Code Specification</cite>. Chinese IT
38559: Standardization Technical Committee.</dd>
38560: <!-- http://www.iana.org/assignments/charset-reg/GBK -->
38561:
38562: <dt id="refsGRAPHICS">[GRAPHICS]</dt>
38563: <dd>(Non-normative) <cite>Computer Graphics: Principles and
38564: Practice in C</cite>, Second Edition, J. Foley, A. van Dam,
38565: S. Feiner, J. Hughes. Addison-Wesley. ISBN
38566: 0-201-84840-6.</dd>
38567: <!--
38568: This book ("Computer Graphics: Principles and Practice in C")
38569: apparently does not make any references to literature in the
38570: bibliographic section to define the "even-odd" rule for polygon
38571: filling and hit testing. In the absence of such a reference, I
38572: guess that this book is the most authoritative reference.
38573: -->
38574:
38575: <dt id="refsGREGORIAN">[GREGORIAN]</dt>
38576: <dd>(Non-normative) <cite>Inter Gravissimas</cite>, A. Lilius,
38577: C. Clavius. Gregory XIII Papal Bull, February 1582.</dd>
38578:
38579: <dt id="refsHATOM">[HATOM]</dt>
38580: <dd>(Non-normative) <cite><a href="http://microformats.org/wiki/hatom">hAtom</a></cite>, D
38581: Janes. Microformats.</dd>
38582:
38583: <dt id="refsHMAC">[HMAC]</dt>
38584: <dd><cite><a href="http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf">The Keyed-Hash Message Authentication Code (HMAC)</a></cite>. NIST.</dd>
38585:
38586: <dt id="refsHPAAIG">[HPAAIG]</dt>
38587: <dd><cite><a href="http://dev.w3.org/html5/html-api-map/overview.html">HTML to Platform Accessibility APIs Implementation Guide</a></cite>. W3C.</dd>
38588:
38589: <dt id="refsHTML4">[HTML4]</dt>
38590: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/html4/">HTML 4.01
38591: Specification</a></cite>, D. Raggett, A. Le Hors, I. Jacobs. W3C.</dd>
38592:
38593: <dt id="refsHTML">[HTML]</dt>
38594: <dd><cite><a href="http://www.whatwg.org/specs/web-apps/current-work/">HTML</a></cite>,
38595: I. Hickson. WHATWG.</dd>
38596:
38597: <dt id="refsHTML5">[HTML5]</dt>
38598: <dd>
38599: <cite><a href="http://dev.w3.org/html5/spec/">HTML5</a></cite>,
38600: I. Hickson. W3C.</dd>
38601:
38602: <dt id="refsHTMLALTTECHS">[HTMLALTTECHS]</dt>
38603: <dd>(Non-normative) <cite><a href="http://dev.w3.org/html5/alt-techniques/">HTML5: Techniques for providing useful text alternatives</a></cite>, S. Faulkner. W3C.</dd>
38604:
38605: <dt id="refsHTMLDIFF">[HTMLDIFF]</dt>
38606: <!--
38607: <dd>(Non-normative) <cite><a
38608: href="http://www.w3.org/TR/html5-diff/">HTML5 differences from
38609: HTML4</a></cite>, A. van Kesteren. W3C.</dd>
38610: -->
38611: <dd>(Non-normative) <cite><a href="http://dev.w3.org/html5/html4-differences/">HTML5
38612: differences from HTML4</a></cite>, A. van Kesteren. W3C.</dd>
38613:
38614: <dt id="refsHTTP">[HTTP]</dt>
38615: <dd><cite><a href="http://tools.ietf.org/html/rfc2616">Hypertext
38616: Transfer Protocol — HTTP/1.1</a></cite>, R. Fielding, J. Gettys,
38617: J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee. IETF.</dd>
38618:
38619: <dt id="refsIANACHARSET">[IANACHARSET]</dt>
38620: <dd><cite><a href="http://www.iana.org/assignments/character-sets">Character
38621: Sets</a></cite>. IANA.</dd>
38622:
38623: <dt id="refsIANALINKTYPE">[IANALINKTYPE]</dt>
38624: <dd><cite><a href="http://www.iana.org/assignments/link-relations">Link
38625: Relations</a></cite>. IANA.</dd>
38626:
38627: <dt id="refsIANAPERMHEADERS">[IANAPERMHEADERS]</dt>
38628: <dd><cite><a href="http://www.iana.org/assignments/message-headers/perm-headers.html">Permanent
38629: Message Header Field Names</a></cite>. IANA.</dd>
38630:
38631: <dt id="refsICE">[ICE]</dt>
38632: <dd><cite><a href="http://tools.ietf.org/html/rfc5245">Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols</a></cite>, J. Rosenberg. IETF.</dd>
38633:
38634: <dt id="refsIEEE754">[IEEE754]</dt>
38635: <dd><cite><a href="http://ieeexplore.ieee.org/servlet/opac?punumber=4610933">IEEE
38636: Standard for Floating-Point Arithmetic (IEEE 754)</a></cite>. IEEE. ISBN 978-0-7381-5753-5.</dd>
38637:
38638: <dt id="refsISO8601">[ISO8601]</dt>
38639: <dd>(Non-normative) <cite><a href="http://isotc.iso.org/livelink/livelink/4021199/ISO_8601_2004_E.zip?func=doc.Fetch&nodeid=4021199">ISO8601: Data elements and interchange formats — Information interchange — Representation of dates and times</a></cite>. ISO.</dd>
38640:
38641: <dt id="refsISO885911">[ISO885911]</dt>
38642: <dd><cite><a href="http://std.dkuug.dk/jtc1/sc2/open/02n3333.pdf">ISO-8859-11:
38643: Information technology — 8-bit single-byte coded graphic
38644: character sets — Part 11: Latin/Thai
38645: alphabet</a></cite>. ISO.</dd>
38646:
38647: <dt id="refsJLREQ">[JLREQ]</dt>
38648: <dd><cite><a href="http://www.w3.org/TR/jlreq/">Requirements for Japanese Text Layout</a></cite>. W3C.</dd> <!-- too many editors to list -->
38649:
38650: <dt id="refsJPEG">[JPEG]</dt>
38651: <dd><cite><a href="http://www.w3.org/Graphics/JPEG/jfif3.pdf">JPEG File Interchange Format</a></cite>, E. Hamilton.</dd>
38652:
38653: <dt id="refsJSON">[JSON]</dt>
38654: <dd><cite><a href="http://tools.ietf.org/html/rfc4627">The
38655: application/json Media Type for JavaScript Object Notation
38656: (JSON)</a></cite>, D. Crockford. IETF.</dd>
38657:
38658: <dt id="refsJSURL">[JSURL]</dt>
38659: <dd><cite><a href="http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme">The 'javascript' resource identifier scheme</a></cite>, B. Höhrmann. IETF.
38660: Work in progress. <!--!--> <!-- It's not really in progress; this reference has been dead for a while. Unfortunately it's the closest thing we current have to a spec. -->
38661: </dd>
38662:
38663: <dt id="refsMAILTO">[MAILTO]</dt>
38664: <dd>(Non-normative) <cite><a href="http://tools.ietf.org/html/rfc6068">The 'mailto' URI scheme</a></cite>, M. Duerst, L. Masinter, J. Zawinski. IETF.</dd>
38665:
38666: <dt id="refsMATHML">[MATHML]</dt>
38667: <dd><cite><a href="http://www.w3.org/TR/MathML/">Mathematical
38668: Markup Language (MathML)</a></cite>, D. Carlisle, P. Ion, R. Miner,
38669: N. Poppelier. W3C.</dd>
38670:
38671: <dt id="refsMEDIAFRAG">[MEDIAFRAG]</dt>
38672: <dd><cite><a href="http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/">Media
38673: Fragments URI</a></cite>, R. Troncy, E. Mannens, S. Pfeiffer, D.
38674: Van Deursen. W3C.</dd>
38675:
38676: <dt id="refsMFREL">[MFREL]</dt>
38677: <dd><cite><a href="http://microformats.org/wiki/existing-rel-values#HTML5_link_type_extensions">Microformats Wiki: existing rel values</a></cite>. Microformats.</dd>
38678:
38679: <dt id="refsMIMESNIFF">[MIMESNIFF]</dt>
38680: <dd><cite><a href="http://mimesniff.spec.whatwg.org/">MIME Sniffing</a></cite>, A. Barth, I. Hickson. WHATWG.</dd>
38681:
38682: <dt id="refsMPEG2">[MPEG2]</dt>
38683: <dd><cite>ISO/IEC 13818-1: Information technology — Generic coding of moving pictures and associated audio information: Systems</cite>. ISO/IEC.</dd>
38684: <!-- search for ["bytes are removed from this buffer at a rate defined by sb_leak_rate"] to find it -->
38685:
38686: <dt id="refsMPEG4">[MPEG4]</dt>
38687: <dd><cite>ISO/IEC 14496-12: ISO base media file format</cite>. ISO/IEC.</dd>
38688: <!-- search for ["Box Structure was and subsequent clauses were re-organized"] to find it -->
38689:
38690: <dt id="refsMQ">[MQ]</dt>
38691: <!--
38692: <dd><cite><a href="http://www.w3.org/TR/css3-mediaqueries/">Media
38693: Queries</a></cite>, H. Lie, T. Çelik, D. Glazman, A. van
38694: Kesteren. W3C.</dd>
38695: -->
38696: <dd><cite><a href="http://dev.w3.org/csswg/css3-mediaqueries/">Media
38697: Queries</a></cite>, H. Lie, T. Çelik, D. Glazman, A. van
38698: Kesteren. W3C.</dd>
38699:
38700: <dt id="refsNPAPI">[NPAPI]</dt>
38701: <dd>(Non-normative) <cite><a href="https://developer.mozilla.org/en/Gecko_Plugin_API_Reference">Gecko
38702: Plugin API Reference</a></cite>. Mozilla.</dd>
38703:
38704: <dt id="refsNPN">[NPN]</dt>
38705: <dd><cite><a href="http://tools.ietf.org/html/draft-agl-tls-nextprotoneg">Transport Layer Security (TLS) Next Protocol Negotiation Extension</a></cite>, A. Langley. IETF.
38706: Work in progress. <!--!-->
38707: </dd>
38708:
38709: <dt id="refsOGGSKELETONHEADERS">[OGGSKELETONHEADERS]</dt>
38710: <dd><cite><a href="http://wiki.xiph.org/SkeletonHeaders">SkeletonHeaders</a></cite>. Xiph.Org.</dd>
38711:
38712: <dt id="refsOPENSEARCH">[OPENSEARCH]</dt>
38713: <dd><cite><a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery_in_HTML.2FXHTML">Autodiscovery
38714: in HTML/XHTML</a></cite>. In <cite>OpenSearch 1.1 Draft 4</cite>,
38715: Section 4.6.2. OpenSearch.org.</dd>
38716:
38717: <dt id="refsORIGIN">[ORIGIN]</dt>
38718: <dd><cite><a href="http://tools.ietf.org/html/rfc6454">The Web Origin Concept</a></cite>, A. Barth. IETF.</dd>
38719:
38720: <dt id="refsPAGEVIS">[PAGEVIS]</dt>
38721: <dd>(Non-normative) <cite><a href="http://www.w3c-test.org/webperf/specs/PageVisibility/">Page Visibility</a></cite>, J. Mann, A. Jain. W3C.</dd>
38722:
38723: <dt id="refsPDF">[PDF]</dt>
38724: <dd>(Non-normative) <cite><a href="http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf">Document management — Portable document format — Part 1: PDF</a></cite>. ISO.</dd>
38725:
38726: <dt id="refsPINGBACK">[PINGBACK]</dt>
38727: <dd><cite><a href="http://www.hixie.ch/specs/pingback/pingback">Pingback
38728: 1.0</a></cite>, S. Langridge, I. Hickson.</dd>
38729:
38730: <dt id="refsPNG">[PNG]</dt>
38731: <dd><cite><a href="http://www.w3.org/TR/PNG/">Portable Network
38732: Graphics (PNG) Specification</a></cite>, D. Duce. W3C.</dd>
38733:
38734: <dt id="refsPOLYGLOT">[POLYGLOT]</dt>
38735: <dd>(Non-normative) <cite><a href="http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html">Polyglot
38736: Markup: HTML-Compatible XHTML Documents</a></cite>, E. Graff.
38737: W3C.</dd>
38738:
38739: <dt id="refsPORTERDUFF">[PORTERDUFF]</dt>
38740: <dd><cite><a href="http://keithp.com/~keithp/porterduff/p253-porter.pdf">Compositing
38741: Digital Images</a></cite>, T. Porter, T. Duff. In <cite>Computer
38742: graphics</cite>, volume 18, number 3, pp. 253-259. ACM Press, July
38743: 1984.</dd>
38744:
38745: <dt id="refsPPUTF8">[PPUTF8]</dt>
38746: <dd>(Non-normative) <cite><a href="http://www.sw.it.aoyama.ac.jp/2012/pub/IUC11-UTF-8.pdf">The Properties and Promises <!-- Promizes (sic) --> of UTF-8</a></cite>, M. Dürst. University of Zürich. In <cite>Proceedings of the 11th International Unicode Conference</cite>.</dd>
38747:
38748: <dt id="refsPROGRESS">[PROGRESS]</dt>
38749: <dd><cite><a href="http://dev.w3.org/2006/webapi/progress/">Progress
38750: Events</a></cite>, A. van Kesteren. W3C.</dd>
38751:
38752: <dt id="refsPSL">[PSL]</dt>
38753: <dd><cite><a href="http://publicsuffix.org/">Public Suffix List</a></cite>.
38754: Mozilla Foundation.</dd>
38755:
38756: <dt id="refsRFC1034">[RFC1034]</dt>
38757: <dd><cite><a href="http://tools.ietf.org/html/rfc1034">Domain
38758: Names - Concepts and Facilities</a></cite>, P. Mockapetris. IETF,
38759: November 1987.</dd>
38760:
38761: <dt id="refsRFC1321">[RFC1321]</dt>
38762: <dd><cite><a href="http://tools.ietf.org/html/rfc1321">The MD5
38763: Message-Digest Algorithm</a></cite>, R. Rivest. IETF.</dd>
38764:
38765: <dt id="refsRFC1345">[RFC1345]</dt>
38766: <dd><cite><a href="http://tools.ietf.org/html/rfc1345">Character Mnemonics
38767: and Character Sets</a></cite>, K. Simonsen. IETF.</dd>
38768:
38769: <dt id="refsRFC1468">[RFC1468]</dt>
38770: <dd><cite><a href="http://tools.ietf.org/html/rfc1468">Japanese Character
38771: Encoding for Internet Messages</a></cite>, J. Murai, M. Crispin, E. van der
38772: Poel. IETF.</dd>
38773:
38774: <dt id="refsRFC1494">[RFC1494]</dt>
38775: <dd>(Non-normative) <cite><a href="http://tools.ietf.org/html/rfc1494">Equivalences between
38776: 1988 X.400 and RFC-822 Message Bodies</a></cite>, H. Alvestrand,
38777: S. Thompson. IETF.</dd>
38778:
38779: <dt id="refsRFC1554">[RFC1554]</dt>
38780: <dd><cite><a href="http://tools.ietf.org/html/rfc1554">ISO-2022-JP-2:
38781: Multilingual Extension of ISO-2022-JP</a></cite>, M. Ohta, K. Handa. IETF.</dd>
38782:
38783: <dt id="refsRFC1557">[RFC1557]</dt>
38784: <dd><cite><a href="http://tools.ietf.org/html/rfc1557">Korean Character
38785: Encoding for Internet Messages</a></cite>, U. Choi, K. Chon, H. Park. IETF.</dd>
38786:
38787: <dt id="refsRFC1842">[RFC1842]</dt>
38788:
38789: <dd><cite><a href="http://tools.ietf.org/html/rfc1842">ASCII
38790: Printable Characters-Based Chinese Character Encoding for Internet
38791: Messages</a></cite>, Y. Wei, Y. Zhang, J. Li, J. Ding, Y. Jiang.
38792: IETF.</dd>
38793:
38794: <dt id="refsRFC1922">[RFC1922]</dt>
38795: <dd><cite><a href="http://tools.ietf.org/html/rfc1922">Chinese Character
38796: Encoding for Internet Messages</a></cite>, HF. Zhu, DY. Hu, ZG. Wang, TC. Kao,
38797: WCH. Chang, M. Crispin. IETF.</dd>
38798:
38799: <dt id="refsRFC2045">[RFC2045]</dt>
38800: <dd><cite><a href="http://tools.ietf.org/html/rfc2045">Multipurpose Internet
38801: Mail Extensions (MIME) Part One: Format of Internet Message Bodies</a></cite>,
38802: N. Freed, N. Borenstein. IETF.</dd>
38803:
38804: <dt id="refsRFC2046">[RFC2046]</dt>
38805: <dd><cite><a href="http://tools.ietf.org/html/rfc2046">Multipurpose Internet
38806: Mail Extensions (MIME) Part Two: Media Types</a></cite>, N. Freed,
38807: N. Borenstein. IETF.</dd> <!-- for text/plain and
38808: "Internet Media type"; not for definition of "valid MIME type". -->
38809:
38810: <dt id="refsRFC2119">[RFC2119]</dt>
38811: <dd><cite><a href="http://tools.ietf.org/html/rfc2119">Key words for use in
38812: RFCs to Indicate Requirement Levels</a></cite>, S. Bradner. IETF.</dd>
38813:
38814: <dt id="refsRFC2237">[RFC2237]</dt>
38815: <dd><cite><a href="http://tools.ietf.org/html/rfc2237">Japanese Character
38816: Encoding for Internet Messages</a></cite>, K. Tamaru. IETF.</dd>
38817:
38818: <dt id="refsRFC2246">[RFC2246]</dt>
38819: <dd><cite><a href="http://tools.ietf.org/html/rfc2246">The TLS Protocol
38820: Version 1.0</a></cite>, T. Dierks, C. Allen. IETF.</dd>
38821:
38822: <dt id="refsRFC2313">[RFC2313]</dt>
38823: <dd><cite><a href="http://tools.ietf.org/html/rfc2313">PKCS #1:
38824: RSA Encryption</a></cite>, B. Kaliski. IETF.</dd>
38825:
38826: <dt id="refsRFC2318">[RFC2318]</dt>
38827: <dd><cite><a href="http://tools.ietf.org/html/rfc2318">The
38828: text/css Media Type</a></cite>, H. Lie, B. Bos, C. Lilley. IETF.</dd>
38829:
38830: <dt id="refsRFC2388">[RFC2388]</dt>
38831: <dd><cite><a href="http://tools.ietf.org/html/rfc2388">Returning Values from
38832: Forms: multipart/form-data</a></cite>, L. Masinter. IETF.</dd>
38833:
38834: <dt id="refsRFC2397">[RFC2397]</dt>
38835: <dd><cite><a href="http://tools.ietf.org/html/rfc2397">The "data"
38836: URL scheme</a></cite>, L. Masinter. IETF.</dd>
38837:
38838: <dt id="refsRFC2445">[RFC2445]</dt>
38839: <dd><cite><a href="http://tools.ietf.org/html/rfc2445">Internet Calendaring
38840: and Scheduling Core Object Specification (iCalendar)</a></cite>, F. Dawson, D.
38841: Stenerson. IETF.</dd>
38842:
38843: <dt id="refsRFC2483">[RFC2483]</dt>
38844: <dd><cite><a href="http://tools.ietf.org/html/rfc2483">URI Resolution
38845: Services Necessary for URN Resolution</a></cite>, M. Mealling, R. Daniel.
38846: IETF.</dd>
38847:
38848: <dt id="refsRFC2781">[RFC2781]</dt>
38849: <dd><cite><a href="http://tools.ietf.org/html/rfc2781">UTF-16, an
38850: encoding of ISO 10646</a></cite>, P. Hoffman, F. Yergeau. IETF.</dd>
38851:
38852: <dt id="refsRFC3676">[RFC3676]</dt>
38853: <dd><cite><a href="http://tools.ietf.org/html/rfc3676">The Text/Plain Format
38854: and DelSp Parameters</a></cite>, R. Gellens. IETF.</dd>
38855:
38856: <dt id="refsRFC2806">[RFC2806]</dt>
38857: <dd>(Non-normative) <cite><a href="http://tools.ietf.org/html/rfc2806">URLs for Telephone
38858: Calls</a></cite>, A. Vaha-Sipila. IETF.</dd>
38859:
38860: <dt id="refsRFC3023">[RFC3023]</dt>
38861: <dd><cite><a href="http://tools.ietf.org/html/rfc3023">XML Media
38862: Types</a></cite>, M. Murata, S. St. Laurent, D. Kohn. IETF.</dd>
38863:
38864: <dt id="refsRFC3279">[RFC3279]</dt>
38865: <dd><cite><a href="http://tools.ietf.org/html/rfc3279">Algorithms
38866: and Identifiers for the Internet X.509 Public Key Infrastructure
38867: Certificate and Certificate Revocation List (CRL)
38868: Profile</a></cite>, W. Polk, R. Housley, L. Bassham. IETF.</dd>
38869:
38870: <dt id="refsRFC3490">[RFC3490]</dt>
38871: <dd><cite><a href="http://tools.ietf.org/html/rfc3490">Internationalizing
38872: Domain Names in Applications (IDNA)</a></cite>, P. Faltstrom, P. Hoffman, A.
38873: Costello. IETF.</dd>
38874:
38875: <dt id="refsRFC3629">[RFC3629]</dt>
38876: <dd><cite><a href="http://tools.ietf.org/html/rfc3629">UTF-8, a
38877: transformation format of ISO 10646</a></cite>, F. Yergeau. IETF.</dd>
38878:
38879: <dt id="refsRFC3864">[RFC3864]</dt>
38880: <dd><cite><a href="http://tools.ietf.org/html/rfc3864">Registration Procedures
38881: for Message Header Fields</a></cite>, G. Klyne, M. Nottingham,
38882: J. Mogul. IETF.</dd>
38883:
38884: <dt id="refsRFC3986">[RFC3986]</dt>
38885: <dd><cite><a href="http://tools.ietf.org/html/rfc3986">Uniform Resource
38886: Identifier (URI): Generic Syntax</a></cite>, T. Berners-Lee, R. Fielding, L.
38887: Masinter. IETF.</dd>
38888:
38889: <dt id="refsRFC3987">[RFC3987]</dt>
38890: <dd><cite><a href="http://tools.ietf.org/html/rfc3987">Internationalized
38891: Resource Identifiers (IRIs)</a></cite>, M. Dürst, M. Suignard. IETF.</dd>
38892:
38893: <dt id="refsRFC4281">[RFC4281]</dt>
38894: <dd><cite><a href="http://tools.ietf.org/html/rfc4281">The Codecs Parameter
38895: for "Bucket" Media Types</a></cite>, R. Gellens, D. Singer, P. Frojdh. IETF.</dd>
38896:
38897: <dt id="refsRFC4329">[RFC4329]</dt>
38898: <dd>(Non-normative) <cite><a href="http://tools.ietf.org/html/rfc4329">Scripting Media
38899: Types</a></cite>, B. Höhrmann. IETF.</dd>
38900:
38901: <dt id="refsRFC4366">[RFC4366]</dt>
38902: <dd><cite><a href="http://tools.ietf.org/html/rfc4366">Transport
38903: Layer Security (TLS) Extensions</a></cite>, S. Blake-Wilson,
38904: M. Nystrom, D. Hopwood, J. Mikkelsen, T. Wright. IETF.</dd>
38905:
38906: <dt id="refsRFC4395">[RFC4395]</dt>
38907: <dd><cite><a href="http://tools.ietf.org/html/rfc4395">Guidelines and Registration Procedures for New URI Schemes</a></cite>, T. Hansen, T. Hardie, L. Masinter. IETF.</dd>
38908:
38909: <dt id="refsRFC4648">[RFC4648]</dt>
38910: <dd><cite><a href="http://tools.ietf.org/html/rfc4648">The Base16,
38911: Base32, and Base64 Data Encodings</a></cite>, S. Josefsson.
38912: IETF.</dd>
38913:
38914: <dt id="refsRFC4770">[RFC4770]</dt>
38915: <dd><cite><a href="http://tools.ietf.org/html/rfc4770">vCard Extensions for
38916: Instant Messaging (IM)</a></cite>, C. Jennings, J. Reschke. IETF.</dd>
38917:
38918: <dt id="refsRFC5280">[RFC5280]</dt>
38919: <dd><cite><a href="http://tools.ietf.org/html/rfc5280">Internet
38920: X.509 Public Key Infrastructure Certificate and Certificate
38921: Revocation List (CRL) Profile</a></cite>, D. Cooper, S. Santesson,
38922: S. Farrell, S. Boeyen, R. Housley, W. Polk. IETF.</dd>
38923:
38924: <dt id="refsRFC5322">[RFC5322]</dt>
38925: <dd><cite><a href="http://tools.ietf.org/html/rfc5322">Internet Message
38926: Format</a></cite>, P. Resnick. IETF.</dd>
38927:
38928: <dt id="refsRFC5724">[RFC5724]</dt>
38929: <dd><cite><a href="http://tools.ietf.org/html/rfc5724">URI Scheme
38930: for Global System for Mobile Communications (GSM) Short Message
38931: Service (SMS)</a></cite>, E. Wilde, A. Vaha-Sipila. IETF.</dd>
38932:
38933: <dt id="refsRFC6266">[RFC6266]</dt>
38934: <dd><cite><a href="http://tools.ietf.org/html/rfc6266">Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)</a></cite>, J. Reschke. IETF.</dd>
38935:
38936: <dt id="refsRFC6350">[RFC6350]</dt>
38937: <dd><cite><a href="http://tools.ietf.org/html/rfc6350">vCard Format Specification</a></cite>, S. Perreault. IETF.</dd>
38938:
38939: <dt id="refsSCSU">[SCSU]</dt>
38940: <dd>(Non-normative) <cite><a href="http://www.unicode.org/reports/tr6/">UTR #6: A Standard
38941: Compression Scheme For Unicode</a></cite>, M. Wolf, K. Whistler,
38942: C. Wicksteed, M. Davis, A. Freytag, M. Scherer. Unicode Consortium.</dd>
38943:
38944: <dt id="refsSDP">[SDP]</dt>
38945: <dd><cite><a href="http://tools.ietf.org/html/rfc4566">SDP: Session Description Protocol</a></cite>, M. Handley, V. Jacobson, C. Perkins. IETF.</dd>
38946:
38947: <dt id="refsSDPLABEL">[SDPLABEL]</dt>
38948: <dd><cite><a href="http://tools.ietf.org/html/rfc4574">The Session Description Protocol (SDP) Label Attribute</a></cite>, O. Levin, G. Camarillo. IETF.</dd>
38949:
38950: <dt id="refsSDPOFFERANSWER">[SDPOFFERANSWER]</dt>
38951: <dd><cite><a href="http://tools.ietf.org/html/rfc3264">An Offer/Answer Model with the Session Description Protocol (SDP)</a></cite>, J. Rosenberg, H. Schulzrinne. IETF.</dd>
38952:
38953: <dt id="refsSELECTORS">[SELECTORS]</dt>
38954: <dd><cite><a href="http://dev.w3.org/csswg/selectors4/">Selectors</a></cite>, E. Etemad, T. Çelik, D. Glazman, I. Hickson, P. Linss, J. Williams. W3C.</dd>
38955:
38956: <dt id="refsSHA1">[SHA1]</dt>
38957: <dd><cite><a href="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf">Secure Hash Standard</a></cite>. NIST.</dd>
38958:
38959: <dt id="refsSHIFTJIS">[SHIFTJIS]</dt>
38960: <dd><cite>JIS X0208: 7-bit and 8-bit double byte coded KANJI sets
38961: for information interchange</cite>. Japanese Industrial Standards Committee.</dd>
38962:
38963: <dt id="refsSRGB">[SRGB]</dt>
38964: <dd><cite lang="en-GB"><a href="http://webstore.iec.ch/webstore/webstore.nsf/artnum/025408!OpenDocument&Click=">IEC
38965: 61966-2-1: Multimedia systems and equipment — Colour measurement
38966: and management — Part 2-1: Colour management — Default RGB colour
38967: space — sRGB</a></cite>. IEC.</dd>
38968:
38969: <dt id="refsSTUN">[STUN]</dt>
38970: <dd><cite><a href="http://tools.ietf.org/html/rfc5389">Session Traversal Utilities for NAT (STUN)</a></cite>, J. Rosenberg, R. Mahy, P. Matthews, D. Wing. IETF.</dd>
38971:
38972: <dt id="refsSVG">[SVG]</dt>
38973: <dd><cite><a href="http://www.w3.org/TR/SVGTiny12/">Scalable Vector
38974: Graphics (SVG) Tiny 1.2 Specification</a></cite>, O. Andersson,
38975: R. Berjon, E. Dahlström, A. Emmons, J. Ferraiolo, A. Grasso,
38976: V. Hardy, S. Hayman, D. Jackson, C. Lilley, C. McCormack,
38977: A. Neumann, C. Northway, A. Quint, N. Ramani, D. Schepers,
38978: A. Shellshear. W3C.</dd>
38979:
38980: <dt id="refsTIS620">[TIS620]</dt>
38981: <dd><cite><a href="http://www.nectec.or.th/it-standards/std620/std620.htm">UDC
38982: 681.3.04:003.62</a></cite>. Thai Industrial Standards Institute,
38983: Ministry of Industry, Royal Thai Government. ISBN
38984: 974-606-153-4.</dd>
38985:
38986: <dt id="refsTURN">[TURN]</dt>
38987: <dd><cite><a href="http://tools.ietf.org/html/rfc5766">Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</a></cite>, R. Mahy, P. Matthews, J. Rosenberg. IETF.</dd>
38988:
38989: <dt id="refsTIMEZONES">[TIMEZONES]</dt>
38990: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/timezone/">Working with Time Zones</a></cite>, A. Phillips, N. Lindenberg, M. Davis, M.J. Dürst, F. Sasaki, R. Ishida. W3C.</dd>
38991:
38992:
38993: <dt id="refsTYPEDARRAY">[TYPEDARRAY]</dt>
38994: <dd><cite><a href="http://www.khronos.org/registry/typedarray/specs/latest/">Typed Array Specification</a></cite>, D. Herman, K. Russell. Khronos.</dd>
38995:
38996: <dt id="refsUAAG">[UAAG]</dt>
38997: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/UAAG20/">User Agent Accessibility Guidelines (UAAG) 2.0</a></cite>, J. Allan, K. Ford, J. Richards, J. Spellman. W3C.</dd>
38998:
38999: <dt id="refsUNDO">[UNDO]</dt>
39000: <dd><cite><a href="http://rniwa.com/editing/undomanager.html">UndoManager and DOM Transaction</a></cite>, R. Niwa.</dd>
39001:
39002: <dt id="refsUNICODE">[UNICODE]</dt>
39003: <dd><cite><a href="http://www.unicode.org/versions/">The Unicode Standard</a></cite>. Unicode Consortium.</dd>
39004:
39005: <dt id="refsUNIVCHARDET">[UNIVCHARDET]</dt>
39006: <dd>(Non-normative) <cite><a href="http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html">A
39007: composite approach to language/encoding
39008: detection</a></cite>, S. Li, K. Momoi. Netscape. In
39009: <cite>Proceedings of the 19th International Unicode
39010: Conference</cite>.</dd>
39011:
39012: <dt id="refsUTF7">[UTF7]</dt>
39013: <dd><cite><a href="http://tools.ietf.org/html/rfc2152">UTF-7: A
39014: Mail-Safe Transformation Format of Unicode</a></cite>,
39015: D. Goldsmith, M. Davis. IETF.</dd>
39016:
39017: <dt id="refsUTF8DET">[UTF8DET]</dt>
39018: <dd>(Non-normative) <cite><a href="http://www.w3.org/International/questions/qa-forms-utf-8">Multilingual
39019: form encoding</a></cite>, M. Dürst. W3C.</dd>
39020:
39021: <dt id="refsUTR36">[UTR36]</dt>
39022: <dd>(Non-normative) <cite><a href="http://www.unicode.org/reports/tr36/">UTR #36: Unicode
39023: Security Considerations</a></cite>, M. Davis, M. Suignard. Unicode
39024: Consortium.</dd>
39025:
39026: <dt id="refsWCAG">[WCAG]</dt>
39027: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/WCAG20/">Web Content Accessibility
39028: Guidelines (WCAG) 2.0</a></cite>, B. Caldwell, M. Cooper, L. Reid,
39029: G. Vanderheiden. W3C.</dd>
39030:
39031: <dt id="refsWEBADDRESSES">[WEBADDRESSES]</dt>
39032: <dd><cite><a href="http://www.w3.org/html/wg/href/draft">Web
39033: addresses in HTML5</a></cite>, D. Connolly,
39034: C. Sperberg-McQueen.</dd>
39035:
39036: <dt id="refsWEBGL">[WEBGL]</dt>
39037: <dd><cite><a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL
39038: Specification</a></cite>, C. Marrin. Khronos Group.</dd>
39039:
39040: <dt id="refsWEBIDL">[WEBIDL]</dt>
39041: <!--
39042: <dd><cite><a href="http://www.w3.org/TR/WebIDL/">Web
39043: IDL</a></cite>, C. McCormack. W3C.</dd>
39044: -->
39045: <dd><cite><a href="http://dev.w3.org/2006/webapi/WebIDL/">Web
39046: IDL</a></cite>, C. McCormack. W3C.</dd>
39047:
39048: <dt id="refsWEBLINK">[WEBLINK]</dt>
39049: <dd><cite><a href="http://tools.ietf.org/html/rfc5988">Web
39050: Linking</a></cite>, M. Nottingham. IETF.</dd>
39051:
39052: <dt id="refsWEBMCG">[WEBMCG]</dt>
39053: <dd><cite><a href="http://www.webmproject.org/code/specs/container/">WebM Container Guidelines</a></cite>. The WebM Project.</dd>
39054:
39055: <dt id="refsWEBSOCKET">[WEBSOCKET]</dt>
39056: <dd><cite><a href="http://dev.w3.org/html5/websockets/">The WebSocket API</a></cite>, I. Hickson. W3C.</dd>
39057:
39058: <dt id="refsWEBSTORAGE">[WEBSTORAGE]</dt>
39059: <dd><cite><a href="http://dev.w3.org/html5/webstorage/">Web Storage</a></cite>, I. Hickson. W3C.</dd>
39060:
39061: <dt id="refsWEBVTT">[WEBVTT]</dt>
39062: <dd><cite><a href="http://dev.w3.org/html5/webvtt/">WebVTT</a></cite>, I. Hickson. W3C.</dd>
39063:
39064: <dt id="refsWEBWORKERS">[WEBWORKERS]</dt>
39065: <dd><cite><a href="http://dev.w3.org/html5/workers/">Web Workers</a></cite>, I. Hickson. W3C.</dd>
39066:
39067: <dt id="refsWHATWGBLOG">[WHATWGBLOG]</dt>
39068: <dd><cite><a href="http://blog.whatwg.org/">The WHATWG Blog</a></cite>. WHATWG.</dd>
39069:
39070: <dt id="refsWHATWGWIKI">[WHATWGWIKI]</dt>
39071: <dd><cite><a href="http://wiki.whatwg.org/">The WHATWG Wiki</a></cite>. WHATWG.</dd>
39072:
39073: <dt id="refsWIN1252">[WIN1252]</dt>
39074: <dd><cite><a href="http://www.microsoft.com/globaldev/reference/sbcs/1252.htm">Windows 1252</a></cite>. Microsoft.</dd>
39075:
39076: <dt id="refsWIN1254">[WIN1254]</dt>
39077: <dd><cite><a href="http://www.microsoft.com/globaldev/reference/sbcs/1254.htm">Windows 1254</a></cite>. Microsoft.</dd>
39078:
39079: <dt id="refsWIN31J">[WIN31J]</dt>
39080: <dd><cite><a href="http://www.microsoft.com/globaldev/reference/dbcs/932.mspx">Windows Codepage 932</a></cite>. Microsoft.</dd>
39081:
39082: <dt id="refsWIN874">[WIN874]</dt>
39083: <dd><cite><a href="http://www.microsoft.com/globaldev/reference/sbcs/874.mspx">Windows 874</a></cite>. Microsoft.</dd>
39084:
39085: <dt id="refsWIN949">[WIN949]</dt>
39086: <dd><cite><a href="http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT">Windows Codepage 949</a></cite>. Microsoft.</dd>
39087:
39088: <dt id="refsWSP">[WSP]</dt>
39089: <dd><cite><a href="http://tools.ietf.org/html/rfc6455">The WebSocket protocol</a></cite>, I. Fette, A. Melnikov. IETF.</dd>
39090:
39091: <dt id="refsX121">[X121]</dt>
39092: <dd><cite>Recommendation X.121 — International Numbering Plan for
39093: Public Data Networks</cite>, CCITT Blue Book, Fascicle VIII.3,
39094: pp. 317-332.</dd>
39095:
39096: <dt id="refsX690">[X690]</dt>
39097: <dd><cite><a href="http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf">Recommendation
39098: X.690 — Information Technology — ASN.1 Encoding Rules —
39099: Specification of Basic Encoding Rules (BER), Canonical Encoding
39100: Rules (CER), and Distinguished Encoding Rules
39101: (DER)</a></cite>. International Telecommunication Union.</dd>
39102:
39103: <dt id="refsXFN">[XFN]</dt>
39104: <dd><cite><a href="http://gmpg.org/xfn/11">XFN 1.1 profile</a></cite>, T. Çelik, M. Mullenweg, E. Meyer. GMPG.</dd>
39105:
39106: <dt id="refsXHR">[XHR]</dt>
39107: <!--
39108: <dd><cite><a href="http://www.w3.org/TR/XMLHttpRequest/">The XMLHttpRequest
39109: Object</a></cite>, A. van Kesteren. W3C.</dd>
39110: -->
39111: <dd><cite><a href="http://dev.w3.org/2006/webapi/XMLHttpRequest-2/"><code>XMLHttpRequest</code></a></cite>,
39112: A. van Kesteren. W3C.</dd>
39113:
39114: <dt id="refsXHTML1">[XHTML1]</dt>
39115: <dd><cite><a href="http://www.w3.org/TR/xhtml1/">XHTML(TM) 1.0 The
39116: Extensible HyperText Markup Language (Second Edition)</a></cite>. W3C.</dd>
39117:
39118: <dt id="refsXHTMLMOD">[XHTMLMOD]</dt>
39119: <dd><cite><a href="http://www.w3.org/TR/xhtml-modularization">Modularization of
39120: XHTML(TM)</a></cite>, M. Altheim, F. Boumphrey, S. Dooley, S.
39121: McCarron, S. Schnitzenbaumer, T. Wugofski. W3C.</dd>
39122:
39123: <dt id="refsXML">[XML]</dt>
39124: <dd><cite><a href="http://www.w3.org/TR/xml/">Extensible Markup
39125: Language</a></cite>, T. Bray, J. Paoli, C. Sperberg-McQueen,
39126: E. Maler, F. Yergeau. W3C.</dd>
39127:
39128: <dt id="refsXMLBASE">[XMLBASE]</dt>
39129: <dd><cite><a href="http://www.w3.org/TR/xmlbase/">XML
39130: Base</a></cite>, J. Marsh, R. Tobin. W3C.</dd>
39131:
39132: <dt id="refsXMLNS">[XMLNS]</dt>
39133: <dd><cite><a href="http://www.w3.org/TR/xml-names/">Namespaces in
39134: XML</a></cite>, T. Bray, D. Hollander, A. Layman, R. Tobin. W3C.</dd>
39135:
39136: <dt id="refsXPATH10">[XPATH10]</dt>
39137: <dd><cite><a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XML Path
39138: Language (XPath) Version 1.0</a></cite>, J. Clark, S. DeRose. W3C.</dd>
39139:
39140: <dt id="refsXSLT10">[XSLT10]</dt>
39141: <dd>(Non-normative) <cite><a href="http://www.w3.org/TR/1999/REC-xslt-19991116">XSL
39142: Transformations (XSLT) Version 1.0</a></cite>, J. Clark. W3C.</dd>
39143:
39144: <!--(once XSLTProcessor is defined somewhere, update this and the place that references this)
39145: <dt id="refsXSLTP">[XSLTP]</dt>
39146: <dd>(Non-normative) <cite><a href=""></a></cite>, . .</dd>
39147: -->
39148:
39149:
39150: <dt id="refsRFC2109">[RFC2109]</dt>
39151: <dd><cite><a href="http://tools.ietf.org/html/rfc2109">HTTP State
39152: Management Mechanism</a></cite>, D. Kristol,
39153: L. Montulli. IETF.</dd>
39154:
39155: <dt id="refsRFC2616">[RFC2616]</dt>
39156: <dd><cite><a href="http://tools.ietf.org/html/rfc2616">Hypertext
39157: Transfer Protocol — HTTP/1.1</a></cite>, R. Fielding, J. Gettys,
39158: J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee. IETF.</dd>
39159:
39160: <dt id="refsRFC2965">[RFC2965]</dt>
39161: <dd><cite><a href="http://tools.ietf.org/html/rfc2965">HTTP State
39162: Management Mechanism</a></cite>, D. Kristol,
39163: L. Montulli. IETF.</dd>
39164:
39165: <dt id="refsRFC5234">[RFC5234]</dt>
39166: <dd><cite><a href="http://www.ietf.org/rfc/std/std68.txt">Augmented
39167: BNF for Syntax Specifications: ABNF</a></cite>, D. Crocker,
39168: P. Overell. IETF.</dd>
39169:
39170:
39171: <!--REFERENCES OFF-->
39172: </dl><h2 class="no-num" id="acknowledgements">Acknowledgements</h2> <!-- ACKS -->
39173:
39174: <p>Thanks to Tim Berners-Lee for inventing HTML, without which none
39175: of this would exist.</p>
39176:
39177: <p>Thanks to
39178:
39179: Aankhen,
39180: Aaron Boodman,
39181: Aaron Leventhal,
39182: Adam Barth,
39183: Adam de Boor,
39184: Adam Hepton,
39185: Adam Roben,
39186: Addison Phillips,
39187: Adele Peterson,
39188: Adrian Bateman,
39189: Adrian Sutton,
39190: Agustín Fernández,
39191: Aharon (Vladimir) Lanin,
39192: Ajai Tirumali,
39193: Akatsuki Kitamura,
39194: Alan Plum,
39195: Alastair Campbell,
39196: Alejandro G. Castro,
39197: Alex Bishop,
39198: Alex Nicolaou,
39199: Alex Rousskov,
39200: Alexander J. Vincent,
39201: Alexandre Morgaut,
39202: Alexey Feldgendler,
39203: Алексей Проскуряков (Alexey Proskuryakov),
39204: Alexis Deveria,
39205: Allan Clements,
39206: Amos Jeffries,
39207: Anders Carlsson,
39208: Andreas<!-- mqmq87 -->,
39209: Andreas Kling,
39210: Andrei Popescu,
39211: André E. Veltstra,
39212: Andrew Barfield,
39213: Andrew Clover,
39214: Andrew Gove,
39215: Andrew Grieve,
39216: Andrew Oakley,
39217: Andrew Sidwell,
39218: Andrew Simons,
39219: Andrew Smith,
39220: Andrew W. Hagen,
39221: Andrey V. Lukyanov,
39222: Andy Heydon,
39223: Andy Palay,
39224: Anne van Kesteren,
39225: Anthony Boyd,
39226: Anthony Bryan,
39227: Anthony Hickson,
39228: Anthony Ricaud,
39229: Antti Koivisto,
39230: Arne Thomassen,
39231: Aron Spohr,
39232: Arphen Lin,
39233: Arun Patole,
39234: Aryeh Gregor,
39235: Asbjørn Ulsberg,
39236: Ashley Gullen,
39237: Ashley Sheridan,
39238: Atsushi Takayama,
39239: Aurelien Levy,
39240: Ave Wrigley,
39241: Ben Boyle,
39242: Ben Godfrey,
39243: Ben Lerner,
39244: Ben Leslie,
39245: Ben Meadowcroft,
39246: Ben Millard,
39247: Benjamin Carl Wiley Sittler,
39248: Benjamin Hawkes-Lewis,
39249: Bert Bos,
39250: Bijan Parsia,
39251: Bil Corry,
39252: Bill Mason,
39253: Bill McCoy,
39254: Billy Wong,
39255: Bjartur Thorlacius,
39256: Björn Höhrmann,
39257: Blake Frantz,
39258: Boris Zbarsky,
39259: Brad Fults,
39260: Brad Neuberg,
39261: Brad Spencer,
39262: Brady Eidson,
39263: Brendan Eich,
39264: Brenton Simpson,
39265: Brett Wilson,
39266: Brett Zamir,
39267: Brian Campbell,
39268: Brian Korver,
39269: Brian Kuhn,
39270: Brian Ryner,
39271: Brian Smith,
39272: Brian Wilson,
39273: Bryan Sullivan,
39274: Bruce D'Arcus,
39275: Bruce Lawson,
39276: Bruce Miller,
39277: C. Williams,
39278: Cameron McCormack,
39279: Cao Yipeng,
39280: Carlos Gabriel Cardona,
39281: Carlos Perelló Marín,
39282: Chao Cai,
39283: 윤석찬 (Channy Yun),
39284: Charl van Niekerk,
39285: Charles Iliya Krempeaux,
39286: Charles McCathieNevile,
39287: Chris Apers,
39288: Chris Cressman,
39289: Chris Evans,
39290: Chris Morris,
39291: Chris Pearce,
39292: Christian Biesinger,
39293: Christian Johansen,
39294: Christian Schmidt,
39295: Christopher Aillon,
39296: Christopher Ferris,
39297: Chriswa,
39298: Clark Buehler,
39299: Cole Robison,
39300: Colin Fine,
39301: Collin Jackson,
39302: Corprew Reed,
39303: Craig Cockburn,
39304: Csaba Gabor,
39305: Csaba Marton,
39306: Cynthia Shelly,
39307: Dan Yoder,
39308: Daniel Barclay,
39309: Daniel Bratell,
39310: Daniel Brooks,
39311: Daniel Brumbaugh Keeney,
39312: Daniel Cheng,
39313: Daniel Davis,
39314: Daniel Glazman,
39315: Daniel Peng,
39316: Daniel Schattenkirchner,
39317: Daniel Spång,
39318: Daniel Steinberg,
39319: Danny Sullivan,
39320: Darin Adler,
39321: Darin Fisher,
39322: Darxus,
39323: Dave Camp,
39324: Dave Hodder,
39325: Dave Lampton,
39326: Dave Singer,
39327: Dave Townsend<!-- Mossop on moz irc -->,
39328: David Baron,
39329: David Bloom,
39330: David Bruant,
39331: David Carlisle,
39332: David E. Cleary,
39333: David Egan Evans,
39334: David Flanagan,
39335: David Gerard,
39336: David Håsäther,
39337: David Hyatt,
39338: David I. Lehn,
39339: David John Burrowes,
39340: David Matja,
39341: David Remahl,
39342: David Smith,
39343: David Woolley,
39344: DeWitt Clinton,
39345: Dean Edridge,
39346: Dean Edwards,
39347: Debi Orton,
39348: Derek Featherstone,
39349: Devdatta,
39350: Dimitri Glazkov,
39351: Dimitry Golubovsky,
39352: Dirk Pranke,
39353: Divya Manian,
39354: Dmitry Titov,
39355: dolphinling,
39356: Dominique Hazaël-Massieux,
39357: Don Brutzman,
39358: Doron Rosenberg,
39359: Doug Kramer,
39360: Doug Simpkinson,
39361: Drew Wilson,
39362: Edmund Lai,
39363: Eduard Pascual,
39364: Eduardo Vela,
39365: Edward O'Connor,
39366: Edward Welbourne,
39367: Edward Z. Yang,
39368: Ehsan Akhgari,
39369: Eira Monstad,
39370: Eitan Adler,
39371: Eliot Graff,
39372: Elisabeth Robson,
39373: Elizabeth Castro,
39374: Elliott Sprehn,
39375: Elliotte Harold,
39376: Eric Carlson,
39377: Eric Lawrence,
39378: Eric Rescorla,
39379: Eric Semling,
39380: Erik Arvidsson,
39381: Erik Rose,
39382: Evan Martin,
39383: Evan Prodromou,
39384: Evert,
39385: fantasai,
39386: Felix Sasaki,
39387: Francesco Schwarz,
39388: Francis Brosnan Blazquez,
39389: Franck 'Shift' Quélain,
39390: Frank Barchard,
39391: 鵜飼文敏 (Fumitoshi Ukai),
39392: Futomi Hatano,
39393: Gavin Carothers,
39394: Gavin Kistner,
39395: Gareth Rees,
39396: Garrett Smith,
39397: Geoffrey Garen,
39398: Geoffrey Sneddon,
39399: George Lund,
39400: Gianmarco Armellin,
39401: Giovanni Campagna,
39402: Giuseppe Pascale,
39403: Glenn Adams,
39404: Glenn Maynard,
39405: Graham Klyne,
39406: Greg Botten,
39407: Greg Houston,
39408: Greg Wilkins,
39409: Gregg Tavares,
39410: Gregory J. Rosmaita,
39411: Grey,
39412: Guilherme Johansson Tramontina,
39413: Gytis Jakutonis,
39414: Håkon Wium Lie,
39415: Hallvord Reiar Michaelsen Steen,
39416: Hans S. Tømmerhalt,
39417: Hans Stimer,
39418: Harald Alvestrand,
39419: Henri Sivonen,
39420: Henrik Lied,
39421: Henry Mason,
39422: Hugh Guiney,
39423: Hugh Winkler,
39424: Ian Bicking,
39425: Ian Clelland,
39426: Ian Davis,
39427: Ian Fette,
39428: Ido Green,
39429: Ignacio Javier,
39430: Ivan Enderlin,
39431: Ivo Emanuel Gonçalves,
39432: J. King,
39433: Jacob Davies,
39434: Jacques Distler,
39435: Jake Verbaten,
39436: James Craig,
39437: James Graham,
39438: James Justin Harrell,
39439: James Kozianski,
39440: James M Snell,
39441: James Perrett,
39442: James Robinson,
39443: Jamie Lokier,
39444: Jan-Klaas Kollhof,
39445: Jason Duell,
39446: Jason Kersey,
39447: Jason Lustig,
39448: Jason White,
39449: Jasper Bryant-Greene,
39450: Jatinder Mann,
39451: Jed Hartman,
39452: Jeff Balogh,
39453: Jeff Cutsinger,
39454: Jeff Schiller,
39455: Jeff Walden,
39456: Jeffrey Zeldman,
39457: 胡慧鋒 (Jennifer Braithwaite),
39458: Jens Bannmann,
39459: Jens Fendler,
39460: Jens Lindström,
39461: Jens Meiert,
39462: Jeremey Hustman,
39463: Jeremy Keith,
39464: Jeremy Orlow,
39465: Jeroen van der Meer,
39466: Jian Li,
39467: Jim Jewett,
39468: Jim Ley,
39469: Jim Meehan,
39470: Jirka Kosek,
39471: Jjgod Jiang,
39472: João Eiras,
39473: Joe Clark,
39474: Joe Gregorio,
39475: Joel Spolsky,
39476: Johan Herland,
39477: John Boyer,
39478: John Bussjaeger,
39479: John Carpenter,
39480: John Fallows,
39481: John Foliot,
39482: John Harding,
39483: John Keiser,
39484: John Snyders,
39485: John Stockton,
39486: John-Mark Bell,
39487: Johnny Stenback,
39488: Jon Ferraiolo,
39489: Jon Gibbins,
39490: Jon Perlow,
39491: Jonas Sicking,
39492: Jonathan Cook,
39493: Jonathan Rees,
39494: Jonathan Worent,
39495: Jonny Axelsson,
39496: Jorgen Horstink,
39497: Jorunn Danielsen Newth,
39498: Joseph Kesselman,
39499: Joseph Mansfield,
39500: Joseph Pecoraro,
39501: Josh Aas,
39502: Josh Hart,
39503: Josh Levenberg,
39504: Joshua Bell,
39505: Joshua Randall,
39506: Jukka K. Korpela,
39507: Jules Clément-Ripoche,
39508: Julian Reschke,
39509: Jürgen Jeka,
39510: Justin Lebar,
39511: Justin Novosad,
39512: Justin Schuh,
39513: Justin Sinclair,
39514: Kai Hendry,
39515: 呂康豪 (KangHao Lu)<!-- Kenny, kennyluck-->,
39516: Kartikaya Gupta,
39517: Kathy Walton,
39518: Kelly Ford,
39519: Kelly Norton,
39520: Kevin Benson,
39521: Kevin Cole,
39522: Kornél Pál,
39523: Kornel Lesinski,
39524: Kris Northfield,
39525: Kristof Zelechovski,
39526: Krzysztof Maczyński,
39527: 黒澤剛志 (Kurosawa Takeshi),
39528: Kyle Hofmann<!-- Ozob -->,
39529: Kyle Huey,
39530: Léonard Bouchet,
39531: Léonie Watson,
39532: Lachlan Hunt,
39533: Larry Masinter,
39534: Larry Page,
39535: Lars Gunther<!-- Keryx Web -->,
39536: Lars Solberg,
39537: Laura Carlson,
39538: Laura Granka,
39539: Laura L. Carlson,
39540: Laura Wisewell,
39541: Laurens Holst,
39542: Lee Kowalkowski,
39543: Leif Halvard Silli,
39544: Lenny Domnitser,
39545: Leonard Rosenthol,
39546: Leons Petrazickis,
39547: Lobotom Dysmon,
39548: Logan<!-- on moz irc -->,
39549: Loune,
39550: Luke Kenneth Casson Leighton,
39551: Maciej Stachowiak,
39552: Magnus Kristiansen<!-- Dashiva -->,
39553: Maik Merten,
39554: Malcolm Rowe,
39555: Mark Birbeck,
39556: Mark Davis,
39557: Mark Miller,
39558: Mark Nottingham,
39559: Mark Pilgrim,
39560: Mark Rowe<!--bdash-->,
39561: Mark Schenk,
39562: Mark Wilton-Jones,
39563: Martijn Wargers,
39564: Martin Atkins,
39565: Martin Dürst,
39566: Martin Honnen,
39567: Martin Janecke,
39568: Martin Kutschker,
39569: Martin Nilsson,
39570: Martin Thomson,
39571: Masataka Yakura,
39572: Mathias Bynens,
39573: Mathieu Henri,
39574: Matias Larsson,
39575: Matt Schmidt,
39576: Matt Wright,
39577: Matthew Gregan,
39578: Matthew Mastracci,
39579: Matthew Raymond,
39580: Matthew Thomas,
39581: Mattias Waldau,
39582: Max Romantschuk,
39583: Menno van Slooten,
39584: Micah Dubinko,
39585: Michael 'Ratt' Iannarelli,
39586: Michael A. Nachbaur,
39587: Michael A. Puls II<!--Shadow2531-->,
39588: Michael Carter,
39589: Michael Daskalov,
39590: Michael Enright,
39591: Michael Gratton,
39592: Michael Nordman,
39593: Michael Powers,
39594: Michael Rakowski,
39595: Michael(tm) Smith,
39596: Michal Zalewski,
39597: Michel Fortin,
39598: Michelangelo De Simone,
39599: Michiel van der Blonk,
39600: Mihai Şucan<!-- from ROBO Design -->,
39601: Mihai Parparita,
39602: Mike Brown,
39603: Mike Dierken<!-- S. Mike Dierken -->,
39604: Mike Dixon,
39605: Mike Schinkel,
39606: Mike Shaver,
39607: Mikko Rantalainen,
39608: Mohamed Zergaoui<!-- Innovimax SARL -->,
39609: Mounir Lamouri,
39610: Ms2ger,
39611: NARUSE Yui,
39612: Neil Deakin,
39613: Neil Rashbrook,
39614: Neil Soiffer,
39615: Nicholas Shanks,
39616: Nicholas Stimpson,
39617: Nicholas Zakas,
39618: Nickolay Ponomarev,
39619: Nicolas Gallagher,
39620: Noah Mendelsohn,
39621: Noah Slater,
39622: Noel Gordon,
39623: NoozNooz42,
39624: Norbert Lindenberg,
39625: Ojan Vafai,
39626: Olaf Hoffmann,
39627: Olav Junker Kjær,
39628: Oldřich Vetešník,
39629: Oli Studholme,
39630: Oliver Hunt,
39631: Oliver Rigby,
39632: Olivier Gendrin,
39633: Olli Pettay,
39634: oSand, <!-- from reddit -->
39635: Patrick H. Lauke,
39636: Patrik Persson,
39637: Paul Adenot,
39638: Paul Norman,
39639: Per-Erik Brodin,
39640: Perry Smith,
39641: Peter Beverloo,
39642: Peter Karlsson,
39643: Peter Kasting,
39644: Peter Moulder,
39645: Peter Stark,
39646: Peter-Paul Koch,
39647: Phil Pickering,
39648: Philip Jägenstedt,
39649: Philip Taylor,
39650: Philip TAYLOR<!-- a different one -->,
39651: Philippe De Ryck,
39652: Prateek Rungta,
39653: Pravir Gupta,
39654: 李普君 (Pujun Li)<!-- masa jack -->,
39655: Rachid Finge,
39656: Rafał Miłecki,
39657: Rajas Moonka,
39658: Ralf Stoltze,
39659: Ralph Giles,
39660: Raphael Champeimont,
39661: Remci Mizkur,
39662: Remco,
39663: Remy Sharp,
39664: Rene Saarsoo,
39665: Rene Stach,
39666: Ric Hardacre,
39667: Rich Doughty,
39668: Richard Ishida,
39669: Rigo Wenning,
39670: Rikkert Koppes,
39671: Rimantas Liubertas,
39672: Riona Macnamara,
39673: Rob Ennals,
39674: Rob Jellinghaus,
39675: Rob S,
39676: Robert Blaut,
39677: Robert Collins,
39678: Robert Millan,
39679: Robert O'Callahan,
39680: Robert Sayre,
39681: Robin Berjon,
39682: Rodger Combs,
39683: Roland Steiner,
39684: Roman Ivanov,
39685: Roy Fielding,
39686: Ruud Steltenpool,
39687: Ryan King,
39688: Ryosuke Niwa,
39689: S. Mike Dierken,
39690: Salvatore Loreto,
39691: Sam Dutton,
39692: Sam Kuper,
39693: Sam Ruby,
39694: Sam Weinig,
39695: Sander van Lambalgen,
39696: Sarven Capadisli,
39697: Scott González,
39698: Scott Hess,
39699: Sean Fraser,
39700: Sean Hayes,
39701: Sean Hogan,
39702: Sean Knapp,
39703: Sebastian Markbåge,
39704: Sebastian Schnitzenbaumer,
39705: Seth Call,
39706: Shanti Rao,
39707: Shaun Inman,
39708: Shiki Okasaka,
39709: Sierk Bornemann,
39710: Sigbjørn Vik,
39711: Silvia Pfeiffer,
39712: Simon Montagu,
39713: Simon Pieters,
39714: Simon Spiegel,
39715: skeww, <!-- on reddit -->
39716: Smylers,
39717: Stanton McCandlish,
39718: Stefan Håkansson,
39719: Stefan Haustein,
39720: Stefan Santesson,
39721: Stefan Weiss,
39722: Steffen Meschkat,
39723: Stephen Ma,
39724: Stephen White,
39725: Steve Comstock,
39726: Steve Faulkner,
39727: Steve Runyon,
39728: Steven Bennett,
39729: Steven Garrity,
39730: Steven Tate,
39731: Stewart Brodie,
39732: Stuart Ballard,
39733: Stuart Parmenter,
39734: Subramanian Peruvemba,
39735: Sunava Dutta,
39736: Susan Borgrink,
39737: Susan <!--G.--> Lesch,
39738: Sylvain Pasche,
39739: T. J. Crowder,
39740: Tab Atkins,
39741: <span lang="tr" title="">Tantek Çelik</span>,
39742: 田村健人 (TAMURA Kent),
39743: Ted Mielczarek,
39744: Terrence Wood,
39745: Thomas Broyer,
39746: Thomas Koetter,
39747: Thomas O'Connor,
39748: Tim Altman,
39749: Tim Johansson,
39750: Toby Inkster,
39751: Todd Moody,
39752: Tom Baker,
39753: Tom Pike,
39754: Tommy Thorsen,
39755: Travis Leithead,
39756: Tyler Close,
39757: Victor Carbune,
39758: Vladimir Katardjiev,
39759: Vladimir Vukićević,
39760: voracity,
39761: Wakaba,
39762: Wayne Carr,
39763: Wayne Pollock,
39764: Wellington Fernando de Macedo,
39765: Weston Ruter,
39766: Wilhelm Joys Andersen,
39767: Will Levine,
39768: William Swanson,
39769: Wladimir Palant,
39770: Wojciech Mach,
39771: Wolfram Kriesing,
39772: Xan Gregg,
39773: Yang Chen,
39774: Ye-Kui Wang,
39775: Yehuda Katz,
39776: Yi-An Huang,
39777: Yngve Nysaeter Pettersen,
39778: Yuzo Fujishima,
39779: Zhenbin Xu,
39780: Zoltan Herczeg,
39781: and
39782: Øistein E. Andersen,
39783:
39784: for their useful comments, both large and small, that have led to
39785: changes to this specification over the years.</p>
39786:
39787: <p>Thanks also to everyone who has ever posted about HTML to their
39788: blogs, public mailing lists, or forums, including all the
39789: contributors to the <a href="http://www.w3.org/html/wg/lists/">various W3C HTML WG
39790: lists</a> and the <a href="http://www.whatwg.org/mailing-list">various WHATWG lists</a>.
39791:
39792: </p><p>Special thanks to Richard Williamson for creating the first
39793: implementation of <code><a href="the-canvas-element.html#the-canvas-element">canvas</a></code> in Safari, from which the
39794: canvas feature was designed.</p>
39795:
39796: <p>Special thanks also to the Microsoft employees who first
39797: implemented the event-based drag-and-drop mechanism, <code title="attr-contenteditable"><a href="#attr-contenteditable">contenteditable</a></code>, and other
39798: features first widely deployed by the Windows Internet Explorer
39799: browser.</p>
39800:
39801: <!--MD-->
39802:
39803: <div class="impl">
39804:
39805: <p>Special thanks and $10,000 to David Hyatt who came up with a
39806: broken implementation of the <a href="#adoptionAgency">adoption
39807: agency algorithm</a> that the editor had to reverse engineer and fix
39808: before using it in the parsing section.</p>
39809:
39810: </div>
39811:
39812: <p>Thanks to the many sources that provided inspiration for the
39813: examples used in the specification.</p>
39814:
39815:
39816: <p>Thanks also to the Microsoft blogging community for some ideas,
39817: to the attendees of the W3C Workshop on Web Applications and
39818: Compound Documents for inspiration, to the #mrt crew, the #mrt.no
39819: crew, and the #whatwg crew, and to Pillar and Hedral for their ideas
39820: and support.</p>
39821:
39822: <!-- Hopefully Kam won't notice he's covered by these
39823: acknowledgements three times! -->
39824:
39825: <!--
39826: v2 * library of resources:
39827: var library = new ZipFile("data.zip");
39828: library.onload = function() {
39829: var sound1 = library.getAudio("sound1.wav"); // returns an Audio object
39830: var image1 = library.getImage("image1.png"); // returns an HTMLImageElement
39831: var doc1 = library.getXMLDocument("doc1.xml"); // returns a Document (XML Document mode)
39832: var doc2 = library.getHTMLDocument("doc1.html"); // returns a Document (HTML Document mode)
39833: }
39834: or:
39835: var library = new ResourceLoader("data.zip");
39836: library.add("moredata.zip");
39837: library.onload = function() { ... }
39838: library.onloading = function() {
39839: reportLoadProgress(library.progress); // 0.0 .. 1.0
39840: }
39841: or:
39842: var library = new AudioZip("sounds.zip");
39843: library.onload = function() {
39844: var sound1 = library["sound1.wav"];
39845: sound.play();
39846: }
39847: v2 * a fairly common situation for web authors is to have two lists, where
39848: the contents of the second depends on the value of the first. Is there
39849: any way we could extend the current model to include this functionality?
39850: (e.g. bugzilla product/component ui)
39851: v2 * quick-searchable select
39852: v2 * include/exclude selectors (two multi-select columns with arrows to
39853: move selected items) and that sort of thing.
39854: http://slashdot.org/comments.pl?sid=110240&cid=9357022
39855: v2 * Oh, and forms need a standardized Help widget/icon. I know I can
39856: turn my cursor into a question mark, but I'm looking for something
39857: simple and pervasive. Maybe you can wrap fields in a help tag, just
39858: as you do for fieldsets. And in that help tag, attributes are
39859: available that allow for a nice, formatted, clean, full help text
39860: popup/area/thing.
39861: http://slashdot.org/comments.pl?sid=110240&cid=9359006
39862: v2 * Validating only part of a form. - Anja Lehmann
39863: v2 * Reminder to add a way to expose access keys in buttons, i.e.
39864: Sub&mit where & signifies the m is the access key to use. Possibly
39865: automatic? <input accesskey="m" value="Submit"> browser would be
39866: smart enough to underline the first instance of the access key if
39867: it exists (case insensitive)? - kerz
39868: [or deprecate the lot (->web apps)]
39869: v2 * need an attribute that says "the children of this element are in
39870: their own tabbing universe, tabindex should be relative to each
39871: other, not to the document"
39872: -> web apps?
39873: v2 * make select widgets have multiple columns
39874: or ->web apps with list view
39875: v2 * required as a group (one of the following must be available):
39876: + i propose something like the following:
39877: <input type="text" group="contact" name="voicephone"> Voice phone
39878: <input type="text" group="contact" name="fax"> Fax
39879: <input type="text" group="contact" name="mobile"> Mobile phone
39880: <input type="text" group="contact" name="email"> E-mail
39881: if the user fills out none of the form fields in the "contact"
39882: group, an error message is shown and the form is not submitted.
39883: - Peter-Paul Koch
39884: v2 * formatting of number fields, text fields, etc, so that when the
39885: field is not focused, the value is displayed differently. Seems
39886: like this would also be useful e.g. for <output> or something so
39887: you can display localised dates, etc.
39888: v2 * being able to select date range (from day x to day y)
39889: v2 * ways of visualizing a linefeed in a <textarea> so it looks different
39890: from wrapping text
39891: v2 * all login systems have
39892: 1. enter username and password
39893: 2. create new account
39894: 3. lost password
39895: some way of integrating this into one system, since it's so common
39896: v2 * way of identifying different sorts of mailadresses
39897: a) mailing-list
39898: b) person
39899: c) department in a company ("support", "marketing" and such)
39900: d) general mail (like "info", "mail", "contact" and such)
39901: e) other sorts of groupings
39902: (or ->web apps; this is talking about in mailto: links, I think)
39903: v2 * hotswapping login identities like in windows xp
39904: you are logged in on operamail.com, and you want to check the mail
39905: of another user. somehow, combined with the wand or whatever,
39906: the browser will remember the login page, and it can re-submit it
39907: without having to load the initial page (saving time)
39908: v2 * provide different measuring systems, like having the html indicate
39909: fluid in both fluid ounces and liters, and the browser can display
39910: one or the other based on regional settings in the browser or ui,
39911: display conversions in a tooltip, or let the user decide which
39912: format to display.
39913: v2 * indicate "x days ago" or "y days into the future" rather than date
39914: v2 * input control for anniversaries
39915: v2 * only submit fields that have changed, or a way to include in the
39916: submission a list of which form controls were changed from their
39917: default value
39918: v2 * type="time" value="now"
39919: v2 * add something to type="number" to support basic currency and unit
39920: formatting of input
39921: v2 * <fieldset enabled-if-checked="myCheckboxOrRadioButton">
39922: ...to allow sections to only be enabled if a radio button makes it
39923: relevant, for instance.
39924: v2 * Yan Morin proposed a multi-column dropdown <select> or <datalist>:
39925: _________________
39926: |_New_York______|V|_________________ <- input with a table link and a down arrow
39927: |_City__________|_State_|_Country_|_| <- header of the table
39928: | Montreal | QC | Canada |A| <- top arrow of the scroll
39929: |>New York <| NY | US | | <- selected row
39930: | Washington | DC | US |X| <- cursor scroll
39931: | San Francisco | CA | US | |
39932: |_Toronto_______|__ON___|_Canada__|V| <- bottom arrow of the scroll
39933:
39934: v2 * add for="" attribute to <input type="password"> so that you can
39935: link usernames and passwords. (Jonas Sicking)
39936: v2 * value for unchecked checkbox?
39937: v2 * A way to specify the default button - Michael Gratton
39938: v2 * <fieldset readonly>?
39939: v2 * dolphinling suggests having a way to mark certain parts of a
39940: form as being dependent on another (mutually exclusive parts of
39941: a form)
39942: v2 * expose the form data set, either as an object (on which one can
39943: invoke the JSON serialiser), or in the form of a method on
39944: HTMLFormElement that returns the form data set serialised
39945: according to a particular encoding (defaulting to the form's
39946: enctype="" one, probably). This would allow forms to be used
39947: with XHR-like systems without having to manually construct the
39948: form data set the way that is done today.
39949: v2 * expose the file upload progress when uploading files in a form
39950: (ideally using the same mechanism as XHR2?); ack Rob Evans
39951:
39952: Consistency in editorial style:
39953: v2 * need to become consistent about whether or not to quote keyword
39954: ("<code title="">foo</code>" vs <code>foo</code>)
39955: v2 * make the spec consistent about whether the word "algorithm" is part of
39956: an algorithm's name or not ("</dfn> algorithm", "</span> algorithm")
39957: v2 * make the spec more consistent about its use of "hexadecimal"
39958: and "base-sixteen", the order that 0-9 A-Z a-z is mentioned,
39959: and the detail to which the spec explains how to interpret a
39960: string as a hexadecimal number.
39961: v2 * become more consistent about what markup we use to mark up
39962: productions (nothing? <i>? <code>?)
39963: v2 * use <code>Document</code> consistently instead of 'document'.
39964: v2 * be clearer about arrays/lists/collections being zero-based
39965: despite using the term "/index/th".
39966: v2 * use the sample widgets:
39967: <li><img alt="A text field with editable sections for each
39968: value, with a button to pop up a dialog showing a calendar or
39969: clock." src="sample-datetime-ui-2"></li>
39970: <li><img alt="A calendar grid with a clock in the upper right
39971: hand corner." src="sample-datetime-ui-3"></li>
39972: -->
39973: </dl></body></html>
Webmaster