tachys/html/attribute/
key.rs

1use super::{Attr, AttributeValue};
2use std::fmt::Debug;
3
4/// An HTML attribute key.
5pub trait AttributeKey: Clone + Send + 'static {
6    /// The name of the attribute.
7    const KEY: &'static str;
8}
9
10macro_rules! attributes {
11	($(#[$meta:meta] $key:ident $html:literal),* $(,)?) => {
12        paste::paste! {
13            $(
14                #[$meta]
15                #[track_caller]
16                pub fn $key<V>(value: V) -> Attr<[<$key:camel>], V>
17				where V: AttributeValue,
18
19                {
20                    Attr([<$key:camel>], value)
21                }
22
23                #[$meta]
24				#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
25				pub struct [<$key:camel>];
26
27				impl AttributeKey for [<$key:camel>] {
28					const KEY: &'static str = $html;
29				}
30            )*
31		}
32    }
33}
34
35attributes! {
36    // HTML
37    /// The `abbr` attribute specifies an abbreviated form of the element's content.
38    abbr "abbr",
39    /// The `accept-charset` attribute specifies the character encodings that are to be used for the form submission.
40    accept_charset "accept-charset",
41    /// The `accept` attribute specifies a list of types the server accepts, typically a file type.
42    accept "accept",
43    /// The `accesskey` attribute specifies a shortcut key to activate or focus an element.
44    accesskey "accesskey",
45    /// The `action` attribute defines the URL to which the form data will be sent.
46    action "action",
47    /// The `align` attribute specifies the alignment of an element.
48    align "align",
49    /// The `allow` attribute defines a feature policy for the content in an iframe.
50    allow "allow",
51    /// The `allowfullscreen` attribute allows the iframe to be displayed in fullscreen mode.
52    allowfullscreen "allowfullscreen",
53    /// The `allowpaymentrequest` attribute allows a cross-origin iframe to invoke the Payment Request API.
54    allowpaymentrequest "allowpaymentrequest",
55    /// The `alt` attribute provides alternative text for an image, if the image cannot be displayed.
56    alt "alt",
57    // ARIA
58    /// The `aria-activedescendant` attribute identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
59    aria_activedescendant "aria-activedescendant",
60    /// The `aria-atomic` attribute indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
61    aria_atomic "aria-atomic",
62    /// The `aria-autocomplete` attribute indicates whether user input completion suggestions are provided.
63    aria_autocomplete "aria-autocomplete",
64    /// The `aria-busy` attribute indicates whether an element, and its subtree, are currently being updated.
65    aria_busy "aria-busy",
66    /// The `aria-checked` attribute indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
67    aria_checked "aria-checked",
68    /// The `aria-colcount` attribute defines the total number of columns in a table, grid, or treegrid.
69    aria_colcount "aria-colcount",
70    /// The `aria-colindex` attribute defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
71    aria_colindex "aria-colindex",
72    /// The `aria-colspan` attribute defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
73    aria_colspan "aria-colspan",
74    /// The `aria-controls` attribute identifies the element (or elements) whose contents or presence are controlled by the current element.
75    aria_controls "aria-controls",
76    /// The `aria-current` attribute indicates the element representing the current item within a container or set of related elements.
77    aria_current "aria-current",
78    /// The `aria-describedby` attribute identifies the element (or elements) that describes the object.
79    aria_describedby "aria-describedby",
80    /// The `aria-description` attribute provides a string value that describes or annotates the current element.
81    aria_description "aria-description",
82    /// The `aria-details` attribute identifies the element that provides a detailed, extended description for the object.
83    aria_details "aria-details",
84    /// The `aria-disabled` attribute indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
85    aria_disabled "aria-disabled",
86    /// The `aria-dropeffect` attribute indicates what functions can be performed when a dragged object is released on the drop target.
87    aria_dropeffect "aria-dropeffect",
88    /// The `aria-errormessage` attribute identifies the element that provides an error message for the object.
89    aria_errormessage "aria-errormessage",
90    /// The `aria-expanded` attribute indicates whether an element, or another grouping element it controls, is currently expanded or collapsed.
91    aria_expanded "aria-expanded",
92    /// The `aria-flowto` attribute identifies the next element (or elements) in an alternate reading order of content.
93    aria_flowto "aria-flowto",
94    /// The `aria-grabbed` attribute indicates an element's "grabbed" state in a drag-and-drop operation.
95    aria_grabbed "aria-grabbed",
96    /// The `aria-haspopup` attribute indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
97    aria_haspopup "aria-haspopup",
98    /// The `aria-hidden` attribute indicates whether the element is exposed to an accessibility API.
99    aria_hidden "aria-hidden",
100    /// The `aria-invalid` attribute indicates the entered value does not conform to the format expected by the application.
101    aria_invalid "aria-invalid",
102    /// The `aria-keyshortcuts` attribute indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
103    aria_keyshortcuts "aria-keyshortcuts",
104    /// The `aria-label` attribute defines a string value that labels the current element.
105    aria_label "aria-label",
106    /// The `aria-labelledby` attribute identifies the element (or elements) that labels the current element.
107    aria_labelledby "aria-labelledby",
108    /// The `aria-live` attribute indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
109    aria_live "aria-live",
110    /// The `aria-modal` attribute indicates whether an element is modal when displayed.
111    aria_modal "aria-modal",
112    /// The `aria-multiline` attribute indicates whether a text box accepts multiple lines of input or only a single line.
113    aria_multiline "aria-multiline",
114    /// The `aria-multiselectable` attribute indicates that the user may select more than one item from the current selectable descendants.
115    aria_multiselectable "aria-multiselectable",
116    /// The `aria-orientation` attribute indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
117    aria_orientation "aria-orientation",
118    /// The `aria-owns` attribute identifies an element (or elements) in order to define a relationship between the element with `aria-owns` and the target element.
119    aria_owns "aria-owns",
120    /// The `aria-placeholder` attribute defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
121    aria_placeholder "aria-placeholder",
122    /// The `aria-posinset` attribute defines an element's position within a set or treegrid.
123    aria_posinset "aria-posinset",
124    /// The `aria-pressed` attribute indicates the current "pressed" state of toggle buttons.
125    aria_pressed "aria-pressed",
126    /// The `aria-readonly` attribute indicates that the element is not editable, but is otherwise operable.
127    aria_readonly "aria-readonly",
128    /// The `aria-relevant` attribute indicates what user agent changes to the accessibility tree should be monitored.
129    aria_relevant "aria-relevant",
130    /// The `aria-required` attribute indicates that user input is required on the element before a form may be submitted.
131    aria_required "aria-required",
132    /// The `aria-roledescription` attribute defines a human-readable, author-localized description for the role of an element.
133    aria_roledescription "aria-roledescription",
134    /// The `aria-rowcount` attribute defines the total number of rows in a table, grid, or treegrid.
135    aria_rowcount "aria-rowcount",
136    /// The `aria-rowindex` attribute defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
137    aria_rowindex "aria-rowindex",
138    /// The `aria-rowspan` attribute defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
139    aria_rowspan "aria-rowspan",
140    /// The `aria-selected` attribute indicates the current "selected" state of various widgets.
141    aria_selected "aria-selected",
142    /// The `aria-setsize` attribute defines the number of items in the current set of listitems or treeitems.
143    aria_setsize "aria-setsize",
144    /// The `aria-sort` attribute indicates if items in a table or grid are sorted in ascending or descending order.
145    aria_sort "aria-sort",
146    /// The `aria-valuemax` attribute defines the maximum allowed value for a range widget.
147    aria_valuemax "aria-valuemax",
148    /// The `aria-valuemin` attribute defines the minimum allowed value for a range widget.
149    aria_valuemin "aria-valuemin",
150    /// The `aria-valuenow` attribute defines the current value for a range widget.
151    aria_valuenow "aria-valuenow",
152    /// The `aria-valuetext` attribute defines the human-readable text alternative of aria-valuenow for a range widget.
153    aria_valuetext "aria-valuetext",
154    /// The `as` attribute specifies the type of destination for the content of the link.
155    r#as "as",
156    /// The `async` attribute indicates that the script should be executed asynchronously.
157    r#async "async",
158    /// The `attributionsrc` attribute indicates that you want the browser to send an `Attribution-Reporting-Eligible` header along with a request.
159    attributionsrc "attributionsrc",
160    /// The `autocapitalize` attribute controls whether and how text input is automatically capitalized as it is entered/edited by the user.
161    autocapitalize "autocapitalize",
162    /// The `autocomplete` attribute indicates whether an input field can have its value automatically completed by the browser.
163    autocomplete "autocomplete",
164    /// The `autofocus` attribute indicates that an element should be focused on page load.
165    autofocus "autofocus",
166    /// The `autoplay` attribute indicates that the media should start playing as soon as it is loaded.
167    autoplay "autoplay",
168    /// The `background` attribute sets the URL of the background image for the document.
169    background "background",
170    /// The `bgcolor` attribute sets the background color of an element.
171    bgcolor "bgcolor",
172    /// The `blocking` attribute indicates that the script will block the page loading until it is executed.
173    blocking "blocking",
174    /// The `border` attribute sets the width of an element's border.
175    border "border",
176    /// The `buffered` attribute contains the time ranges that the media has been buffered.
177    buffered "buffered",
178    /// The `capture` attribute indicates that the user must capture media using a camera or microphone instead of selecting a file from the file picker.
179    capture "capture",
180    /// The `challenge` attribute specifies the challenge string that is paired with the keygen element.
181    challenge "challenge",
182    /// The `charset` attribute specifies the character encoding of the HTML document.
183    charset "charset",
184    /// The `checked` attribute indicates whether an input element is checked or not.
185    checked "checked",
186    /// The `cite` attribute contains a URL that points to the source of the quotation or change.
187    cite "cite",
188    // class is handled in ../class.rs instead
189    //class "class",
190    /// The `code` attribute specifies the URL of the applet's class file to be loaded and executed.
191    code "code",
192    /// The `color` attribute specifies the color of an element's text.
193    color "color",
194    /// The `cols` attribute specifies the visible width of a text area.
195    cols "cols",
196    /// The `colspan` attribute defines the number of columns a cell should span.
197    colspan "colspan",
198    /// The `command` attribute defines the command to be invoked when user clicks the `<button>` element which has `commandfor` attribute specified.
199    command "command",
200    /// The `commandfor` attribute defines the id of the element which button is controlling. It is generic version of `popovertarget`.
201    commandfor "commandfor",
202    /// The `content` attribute gives the value associated with the http-equiv or name attribute.
203    content "content",
204    /// The `contenteditable` attribute indicates whether the element's content is editable.
205    contenteditable "contenteditable",
206    /// The `contextmenu` attribute specifies the ID of a `<menu>` element to open as a context menu.
207    contextmenu "contextmenu",
208    /// The `controls` attribute indicates whether the browser should display playback controls for the media.
209    controls "controls",
210    /// The `controlslist` attribute allows the control of which controls to show on the media element whenever the browser shows its native controls.
211    controlslist "controlslist",
212    /// The `coords` attribute specifies the coordinates of an area in an image map.
213    coords "coords",
214    /// The `crossorigin` attribute indicates whether the resource should be fetched with a CORS request.
215    crossorigin "crossorigin",
216    /// The `csp` attribute allows the embedding document to define the Content Security Policy that an embedded document must agree to enforce upon itself.
217    csp "csp",
218    /// The `data` attribute specifies the URL of the resource that is being embedded.
219    data "data",
220    /// The `datetime` attribute specifies the date and time.
221    datetime "datetime",
222    /// The `decoding` attribute indicates the preferred method for decoding images.
223    decoding "decoding",
224    /// The `default` attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate.
225    default "default",
226    /// The `defer` attribute indicates that the script should be executed after the document has been parsed.
227    defer "defer",
228    /// The `dir` attribute specifies the text direction for the content in an element.
229    dir "dir",
230    /// The `dirname` attribute identifies the text directionality of an input element.
231    dirname "dirname",
232    /// The `disabled` attribute indicates whether the element is disabled.
233    disabled "disabled",
234    /// The `disablepictureinpicture` attribute indicates that the element is not allowed to be displayed in Picture-in-Picture mode.
235    disablepictureinpicture "disablepictureinpicture",
236    /// The `disableremoteplayback` attribute indicates that the element is not allowed to be displayed using remote playback.
237    disableremoteplayback "disableremoteplayback",
238    /// The `download` attribute indicates that the linked resource is intended to be downloaded rather than displayed in the browser.
239    download "download",
240    /// The `draggable` attribute indicates whether the element is draggable.
241    draggable "draggable",
242    /// The `elementtiming` attributes marks the element for observation by the `PerformanceElementTiming` API.
243    elementtiming "elementtiming",
244    /// The `enctype` attribute specifies the MIME type of the form submission.
245    enctype "enctype",
246    /// The `enterkeyhint` attribute allows authors to specify what kind of action label or icon will be presented to users in a virtual keyboard's enter key.
247    enterkeyhint "enterkeyhint",
248    /// The `exportparts` attribute enables the sharing of parts of an element's shadow DOM with a containing document.
249    exportparts "exportparts",
250    /// The `fetchpriority` attribute allows developers to specify the priority of a resource fetch request.
251    fetchpriority "fetchpriority",
252    /// The `for` attribute specifies which form element a label is bound to.
253    r#for "for",
254    /// The `form` attribute associates the element with a form element.
255    form "form",
256    /// The `formaction` attribute specifies the URL that processes the form submission.
257    formaction "formaction",
258    /// The `formenctype` attribute specifies how the form data should be encoded when submitted.
259    formenctype "formenctype",
260    /// The `formmethod` attribute specifies the HTTP method to use when submitting the form.
261    formmethod "formmethod",
262    /// The `formnovalidate` attribute indicates that the form should not be validated when submitted.
263    formnovalidate "formnovalidate",
264    /// The `formtarget` attribute specifies where to display the response after submitting the form.
265    formtarget "formtarget",
266    /// The `headers` attribute specifies the headers associated with the element.
267    headers "headers",
268    /// The `height` attribute specifies the height of an element.
269    height "height",
270    /// The `hidden` attribute indicates that the element is not yet, or is no longer, relevant.
271    hidden "hidden",
272    /// The `high` attribute specifies the range that is considered to be a high value.
273    high "high",
274    /// The `href` attribute specifies the URL of a linked resource.
275    href "href",
276    /// The `hreflang` attribute specifies the language of the linked resource.
277    hreflang "hreflang",
278    /// The `http-equiv` attribute provides an HTTP header for the information/value of the content attribute.
279    http_equiv "http-equiv",
280    /// The `icon` attribute specifies the URL of an image to be used as a graphical icon for the element.
281    icon "icon",
282    /// The `id` attribute specifies a unique id for an element.
283    id "id",
284    /// The `imagesizes` attribute specifies image sizes for different page layouts.
285    imagesizes "imagesizes",
286    /// The `imagesrcset` attribute specifies the URLs of multiple images to be used in different situations.
287    imagesrcset "imagesrcset",
288    /// The `importance` attribute specifies the relative importance of the element.
289    importance "importance",
290    /// The `inert` attribute indicates that the element is non-interactive and won't be accessible to user interactions or assistive technologies.
291    inert "inert",
292    /// The `inputmode` attribute specifies the type of data that the user will enter.
293    inputmode "inputmode",
294    /// The `integrity` attribute contains a hash value that the browser can use to verify that the resource hasn't been altered.
295    integrity "integrity",
296    /// The `intrinsicsize` attribute specifies the intrinsic size of an image or video.
297    intrinsicsize "intrinsicsize",
298    /// The `is` attribute allows you to specify the name of a custom element.
299    is "is",
300    /// The `ismap` attribute indicates that the image is part of a server-side image map.
301    ismap "ismap",
302    /// The `itemid` attribute assigns a unique identifier to an item.
303    itemid "itemid",
304    /// The `itemprop` attribute adds a property to an item.
305    itemprop "itemprop",
306    /// The `itemref` attribute provides a list of element IDs that have additional properties for the item.
307    itemref "itemref",
308    /// The `itemscope` attribute creates a new item and adds it to the page's items.
309    itemscope "itemscope",
310    /// The `itemtype` attribute specifies the type of an item.
311    itemtype "itemtype",
312    /// The `keytype` attribute specifies the type of key used by the `<keygen>` element.
313    keytype "keytype",
314    /// The `kind` attribute specifies the kind of text track.
315    kind "kind",
316    /// The `label` attribute provides a user-readable title for an element.
317    label "label",
318    /// The `lang` attribute specifies the language of the element's content.
319    lang "lang",
320    /// The `language` attribute specifies the scripting language used for the script.
321    language "language",
322    /// The `list` attribute identifies a `<datalist>` element that contains pre-defined options for an `<input>` element.
323    list "list",
324    /// The `loading` attribute indicates how the browser should load the image.
325    loading "loading",
326    /// The `loop` attribute indicates whether the media should start over again when it reaches the end.
327    r#loop "loop",
328    /// The `low` attribute specifies the range that is considered to be a low value.
329    low "low",
330    /// The `manifest` attribute specifies the URL of a document's cache manifest.
331    manifest "manifest",
332    /// The `max` attribute specifies the maximum value for an input element.
333    max "max",
334    /// The `maxlength` attribute specifies the maximum number of characters that an input element can accept.
335    maxlength "maxlength",
336    /// The `media` attribute specifies what media/device the linked resource is optimized for.
337    media "media",
338    /// The `method` attribute specifies the HTTP method to use when submitting the form.
339    method "method",
340    /// The `min` attribute specifies the minimum value for an input element.
341    min "min",
342    /// The `minlength` attribute specifies the minimum number of characters that an input element can accept.
343    minlength "minlength",
344    /// The `multiple` attribute indicates whether the user can enter more than one value.
345    multiple "multiple",
346    /// The `muted` attribute indicates whether the audio will be initially silenced on page load.
347    muted "muted",
348    /// The `name` attribute specifies the name of the element.
349    name "name",
350    /// The `nomodule` attribute indicates that the script should not be executed in browsers that support ES modules.
351    nomodule "nomodule",
352    /// The `nonce` attribute provides a cryptographic nonce to ensure that a script or style is approved for execution.
353    nonce "nonce",
354    /// The `novalidate` attribute indicates that the form should not be validated when submitted.
355    novalidate "novalidate",
356    /// The `open` attribute indicates whether the details element is open or closed.
357    open "open",
358    /// The `optimum` attribute specifies the range that is considered to be an optimum value.
359    optimum "optimum",
360    /// The `part` attribute identifies the element as a shadow DOM part.
361    part "part",
362    /// The `pattern` attribute specifies a regular expression that the input element's value is checked against.
363    pattern "pattern",
364    /// The `ping` attribute contains a space-separated list of URLs to be notified if the user follows the hyperlink.
365    ping "ping",
366    /// The `placeholder` attribute provides a short hint that describes the expected value of the input element.
367    placeholder "placeholder",
368    /// The `playsinline` attribute indicates that the video should play inline in the element's playback area.
369    playsinline "playsinline",
370    /// The `popover` attribute indicates that an element is a popover and specifies the event that causes the popover to be shown.
371    popover "popover",
372    /// The `popovertarget` attribute specifies the ID of an element to toggle a popover.
373    popovertarget "popovertarget",
374    /// The `popovertargetaction` attribute specifies the action that shows the popover.
375    popovertargetaction "popovertargetaction",
376    /// The `poster` attribute specifies an image to be shown while the video is downloading or until the user hits the play button.
377    poster "poster",
378    /// The `preload` attribute specifies if and how the author thinks that the media file should be loaded when the page loads.
379    preload "preload",
380    /// The `radiogroup` attribute specifies the name of the group to which the element belongs.
381    radiogroup "radiogroup",
382    /// The `readonly` attribute indicates that the user cannot modify the value of the input element.
383    readonly "readonly",
384    /// The `referrerpolicy` attribute specifies which referrer information to include with requests.
385    referrerpolicy "referrerpolicy",
386    /// The `rel` attribute specifies the relationship between the current document and the linked document.
387    rel "rel",
388    /// The `required` attribute indicates that the user must fill in the input element before submitting the form.
389    required "required",
390    /// The `reversed` attribute indicates that the list should be displayed in a descending order.
391    reversed "reversed",
392    /// The `role` attribute defines the role of an element in the context of a web application.
393    role "role",
394    /// The `rows` attribute specifies the number of visible text lines for a text area.
395    rows "rows",
396    /// The `rowspan` attribute defines the number of rows a cell should span.
397    rowspan "rowspan",
398    /// The `sandbox` attribute applies extra restrictions to the content in the `<iframe>`.
399    sandbox "sandbox",
400    /// The `scope` attribute specifies whether a header cell is a header for a column, row, or group of columns or rows.
401    scope "scope",
402    /// The `scoped` attribute indicates that the styles in a `<style>` element are scoped to the parent element.
403    scoped "scoped",
404    /// The `selected` attribute indicates that the option is selected.
405    selected "selected",
406    /// The `shape` attribute specifies the shape of the area.
407    shape "shape",
408    /// The `size` attribute specifies the width of the input element.
409    size "size",
410    /// The `sizes` attribute specifies the sizes of icons for visual media.
411    sizes "sizes",
412    /// The `slot` attribute assigns a slot to an element.
413    slot "slot",
414    /// The `span` attribute defines the number of columns in a `<colgroup>` or the number of rows in a `<rowgroup>`.
415    span "span",
416    /// The `spellcheck` attribute indicates whether spell checking is allowed for the element.
417    spellcheck "spellcheck",
418    /// The `src` attribute specifies the URL of the media resource.
419    src "src",
420    /// The `srcdoc` attribute specifies the HTML content of the page to show in the `<iframe>`.
421    srcdoc "srcdoc",
422    /// The `srclang` attribute specifies the language of the text track.
423    srclang "srclang",
424    /// The `srcset` attribute specifies the URLs of multiple images to be used in different situations.
425    srcset "srcset",
426    /// The `start` attribute specifies the start value of the list.
427    start "start",
428    /// The `step` attribute specifies the legal number intervals for an input element.
429    step "step",
430    // style is handled in ../style.rs instead
431    // style "style",
432    /// The `summary` attribute provides a summary of the content of the table.
433    summary "summary",
434    /// The `tabindex` attribute specifies the tab order of an element.
435    tabindex "tabindex",
436    /// The `target` attribute specifies where to open the linked document.
437    target "target",
438    /// The `title` attribute provides additional information about an element.
439    title "title",
440    /// The `translate` attribute specifies whether the content of an element should be translated or not.
441    translate "translate",
442    /// The `type` attribute specifies the type of the element.
443    r#type "type",
444    /// The `usemap` attribute specifies the image map to be used by an `<img>` element.
445    usemap "usemap",
446    /// The `value` attribute specifies the value of the element.
447    value "value",
448    /// The `virtualkeyboardpolicy` attribute controls the policy for virtual keyboards.
449    virtualkeyboardpolicy "virtualkeyboardpolicy",
450    /// The `width` attribute specifies the width of an element.
451    width "width",
452    /// The `wrap` attribute specifies how the text in a text area is to be wrapped when submitted in a form.
453    wrap "wrap",
454    // Event Handler Attributes
455    /// The `onabort` attribute specifies the event handler for the abort event.
456    onabort "onabort",
457    /// The `onautocomplete` attribute specifies the event handler for the autocomplete event.
458    onautocomplete "onautocomplete",
459    /// The `onautocompleteerror` attribute specifies the event handler for the autocompleteerror event.
460    onautocompleteerror "onautocompleteerror",
461    /// The `onblur` attribute specifies the event handler for the blur event.
462    onblur "onblur",
463    /// The `oncancel` attribute specifies the event handler for the cancel event.
464    oncancel "oncancel",
465    /// The `oncanplay` attribute specifies the event handler for the canplay event.
466    oncanplay "oncanplay",
467    /// The `oncanplaythrough` attribute specifies the event handler for the canplaythrough event.
468    oncanplaythrough "oncanplaythrough",
469    /// The `onchange` attribute specifies the event handler for the change event.
470    onchange "onchange",
471    /// The `onclick` attribute specifies the event handler for the click event.
472    onclick "onclick",
473    /// The `onclose` attribute specifies the event handler for the close event.
474    onclose "onclose",
475    /// The `oncontextmenu` attribute specifies the event handler for the contextmenu event.
476    oncontextmenu "oncontextmenu",
477    /// The `oncuechange` attribute specifies the event handler for the cuechange event.
478    oncuechange "oncuechange",
479    /// The `ondblclick` attribute specifies the event handler for the double click event.
480    ondblclick "ondblclick",
481    /// The `ondrag` attribute specifies the event handler for the drag event.
482    ondrag "ondrag",
483    /// The `ondragend` attribute specifies the event handler for the dragend event.
484    ondragend "ondragend",
485    /// The `ondragenter` attribute specifies the event handler for the dragenter event.
486    ondragenter "ondragenter",
487    /// The `ondragleave` attribute specifies the event handler for the dragleave event.
488    ondragleave "ondragleave",
489    /// The `ondragover` attribute specifies the event handler for the dragover event.
490    ondragover "ondragover",
491    /// The `ondragstart` attribute specifies the event handler for the dragstart event.
492    ondragstart "ondragstart",
493    /// The `ondrop` attribute specifies the event handler for the drop event.
494    ondrop "ondrop",
495    /// The `ondurationchange` attribute specifies the event handler for the durationchange event.
496    ondurationchange "ondurationchange",
497    /// The `onemptied` attribute specifies the event handler for the emptied event.
498    onemptied "onemptied",
499    /// The `onended` attribute specifies the event handler for the ended event.
500    onended "onended",
501    /// The `onerror` attribute specifies the event handler for the error event.
502    onerror "onerror",
503    /// The `onfocus` attribute specifies the event handler for the focus event.
504    onfocus "onfocus",
505    /// The `onformdata` attribute specifies the event handler for the formdata event.
506    onformdata "onformdata",
507    /// The `oninput` attribute specifies the event handler for the input event.
508    oninput "oninput",
509    /// The `oninvalid` attribute specifies the event handler for the invalid event.
510    oninvalid "oninvalid",
511    /// The `onkeydown` attribute specifies the event handler for the keydown event.
512    onkeydown "onkeydown",
513    /// The `onkeypress` attribute specifies the event handler for the keypress event.
514    onkeypress "onkeypress",
515    /// The `onkeyup` attribute specifies the event handler for the keyup event.
516    onkeyup "onkeyup",
517    /// The `onlanguagechange` attribute specifies the event handler for the languagechange event.
518    onlanguagechange "onlanguagechange",
519    /// The `onload` attribute specifies the event handler for the load event.
520    onload "onload",
521    /// The `onloadeddata` attribute specifies the event handler for the loadeddata event.
522    onloadeddata "onloadeddata",
523    /// The `onloadedmetadata` attribute specifies the event handler for the loadedmetadata event.
524    onloadedmetadata "onloadedmetadata",
525    /// The `onloadstart` attribute specifies the event handler for the loadstart event.
526    onloadstart "onloadstart",
527    /// The `onmousedown` attribute specifies the event handler for the mousedown event.
528    onmousedown "onmousedown",
529    /// The `onmouseenter` attribute specifies the event handler for the mouseenter event.
530    onmouseenter "onmouseenter",
531    /// The `onmouseleave` attribute specifies the event handler for the mouseleave event.
532    onmouseleave "onmouseleave",
533    /// The `onmousemove` attribute specifies the event handler for the mousemove event.
534    onmousemove "onmousemove",
535    /// The `onmouseout` attribute specifies the event handler for the mouseout event.
536    onmouseout "onmouseout",
537    /// The `onmouseover` attribute specifies the event handler for the mouseover event.
538    onmouseover "onmouseover",
539    /// The `onmouseup` attribute specifies the event handler for the mouseup event.
540    onmouseup "onmouseup",
541    /// The `onpause` attribute specifies the event handler for the pause event.
542    onpause "onpause",
543    /// The `onplay` attribute specifies the event handler for the play event.
544    onplay "onplay",
545    /// The `onplaying` attribute specifies the event handler for the playing event.
546    onplaying "onplaying",
547    /// The `onprogress` attribute specifies the event handler for the progress event.
548    onprogress "onprogress",
549    /// The `onratechange` attribute specifies the event handler for the ratechange event.
550    onratechange "onratechange",
551    /// The `onreset` attribute specifies the event handler for the reset event.
552    onreset "onreset",
553    /// The `onresize` attribute specifies the event handler for the resize event.
554    onresize "onresize",
555    /// The `onscroll` attribute specifies the event handler for the scroll event.
556    onscroll "onscroll",
557    /// The `onsecuritypolicyviolation` attribute specifies the event handler for the securitypolicyviolation event.
558    onsecuritypolicyviolation "onsecuritypolicyviolation",
559    /// The `onseeked` attribute specifies the event handler for the seeked event.
560    onseeked "onseeked",
561    /// The `onseeking` attribute specifies the event handler for the seeking event.
562    onseeking "onseeking",
563    /// The `onselect` attribute specifies the event handler for the select event.
564    onselect "onselect",
565    /// The `onslotchange` attribute specifies the event handler for the slotchange event.
566    onslotchange "onslotchange",
567    /// The `onstalled` attribute specifies the event handler for the stalled event.
568    onstalled "onstalled",
569    /// The `onsubmit` attribute specifies the event handler for the submit event.
570    onsubmit "onsubmit",
571    /// The `onsuspend` attribute specifies the event handler for the suspend event.
572    onsuspend "onsuspend",
573    /// The `ontimeupdate` attribute specifies the event handler for the timeupdate event.
574    ontimeupdate "ontimeupdate",
575    /// The `ontoggle` attribute specifies the event handler for the toggle event.
576    ontoggle "ontoggle",
577    /// The `onvolumechange` attribute specifies the event handler for the volumechange event.
578    onvolumechange "onvolumechange",
579    /// The `onwaiting` attribute specifies the event handler for the waiting event.
580    onwaiting "onwaiting",
581    /// The `onwebkitanimationend` attribute specifies the event handler for the webkitanimationend event.
582    onwebkitanimationend "onwebkitanimationend",
583    /// The `onwebkitanimationiteration` attribute specifies the event handler for the webkitanimationiteration event.
584    onwebkitanimationiteration "onwebkitanimationiteration",
585    /// The `onwebkitanimationstart` attribute specifies the event handler for the webkitanimationstart event.
586    onwebkitanimationstart "onwebkitanimationstart",
587    /// The `onwebkittransitionend` attribute specifies the event handler for the webkittransitionend event.
588    onwebkittransitionend "onwebkittransitionend",
589    /// The `onwheel` attribute specifies the event handler for the wheel event.
590    onwheel "onwheel",
591
592    // MathML attributes
593    /// The `accent` attribute specifies whether the element should be treated as an accent.
594    accent "accent",
595    /// The `accentunder` attribute specifies whether the element should be treated as an accent under the base element.
596    accentunder "accentunder",
597    /// The `columnalign` attribute specifies the alignment of columns.
598    columnalign "columnalign",
599    /// The `columnlines` attribute specifies the presence of lines between columns.
600    columnlines "columnlines",
601    /// The `columnspacing` attribute specifies the spacing between columns.
602    columnspacing "columnspacing",
603    /// The `columnspan` attribute specifies the number of columns the element should span.
604    columnspan "columnspan",
605    /// The `depth` attribute specifies the depth of the element.
606    depth "depth",
607    /// The `display` attribute specifies the display style of the element.
608    display "display",
609    /// The `displaystyle` attribute specifies whether the element is displayed in display style.
610    displaystyle "displaystyle",
611    /// The `fence` attribute specifies whether the element should act as a fence.
612    fence "fence",
613    /// The `frame` attribute specifies the type of frame for the element.
614    frame "frame",
615    /// The `framespacing` attribute specifies the spacing around frames.
616    framespacing "framespacing",
617    /// The `linethickness` attribute specifies the thickness of lines.
618    linethickness "linethickness",
619    /// The `lspace` attribute specifies the space on the left side of the element.
620    lspace "lspace",
621    /// The `mathbackground` attribute specifies the background color of the element.
622    mathbackground "mathbackground",
623    /// The `mathcolor` attribute specifies the color of the element.
624    mathcolor "mathcolor",
625    /// The `mathsize` attribute specifies the size of the element.
626    mathsize "mathsize",
627    /// The `mathvariant` attribute specifies the mathematical variant of the element.
628    mathvariant "mathvariant",
629    /// The `maxsize` attribute specifies the maximum size of the element.
630    maxsize "maxsize",
631    /// The `minsize` attribute specifies the minimum size of the element.
632    minsize "minsize",
633    /// The `movablelimits` attribute specifies whether the limits of the element are movable.
634    movablelimits "movablelimits",
635    /// The `notation` attribute specifies the type of notation for the element.
636    notation "notation",
637    /// The `rowalign` attribute specifies the alignment of rows.
638    rowalign "rowalign",
639    /// The `rowlines` attribute specifies the presence of lines between rows.
640    rowlines "rowlines",
641    /// The `rowspacing` attribute specifies the spacing between rows.
642    rowspacing "rowspacing",
643    /// The `rspace` attribute specifies the space on the right side of the element.
644    rspace "rspace",
645    /// The `scriptlevel` attribute specifies the script level of the element.
646    scriptlevel "scriptlevel",
647    /// The `separator` attribute specifies whether the element is a separator.
648    separator "separator",
649    /// The `stretchy` attribute specifies whether the element is stretchy.
650    stretchy "stretchy",
651    /// The `symmetric` attribute specifies whether the element is symmetric.
652    symmetric "symmetric",
653    /// The `voffset` attribute specifies the vertical offset of the element.
654    voffset "voffset",
655    /// The `xmlns` attribute specifies the XML namespace of the element.
656    xmlns "xmlns",
657}