11. Obsolete features
11.1. Obsolete but conforming features
Features listed in this section will trigger warnings in conformance checkers.
Authors should not specify a border
attribute on an img
element. If the
attribute is present, its value must be the string "0
". CSS should be used instead.
Authors should not specify a charset
attribute on a script
element. If the
attribute is present, its value must be an ASCII case-insensitive match for the string
"utf-8
". [ENCODING]
Authors should not specify a language
attribute on a script
element. If
the attribute is present, its value must be an ASCII case-insensitive match for the string
"JavaScript
" and either the type
attribute must be omitted or its value
must be an ASCII case-insensitive match for the string "text/javascript
".
The attribute should be entirely omitted instead (with the value "JavaScript
", it has
no effect), or replaced with use of the type
attribute.
Authors should not specify the name
attribute on a
elements. If the
attribute is present, its value must not be the empty string and must neither be equal to the
value of any of the IDs in the element’s tree other than the element’s own ID if any, nor be equal to the value of any of the other name
attributes on a
elements in the element’s tree. If this attribute is present and the
element has an ID, then the attribute’s value must be equal to the element’s ID. In
earlier versions of the language, this attribute was intended as a way to specify possible targets
for fragments in URLs. The id
attribute should be used instead.
Authors should not, but may despite requirements to the contrary elsewhere in this specification,
specify the maxlength
and size
attributes on input
elements
whose type
attributes are in the Number
state. One
valid reason for using these attributes regardless is to help legacy user agents that do not
support input
elements with type="number"
to still render the text control with a
useful width.
11.1.1. Warnings for obsolete but conforming features
To ease the transition from HTML Transitional documents to the language defined in this specification, and to discourage certain features that are only allowed in very few circumstances, conformance checkers must warn the user when the following features are used in a document. These are generally old obsolete features that have no effect, and are allowed only to distinguish between likely mistakes (regular conformance errors) and mere vestigial markup or unusual and discouraged practices (these warnings).
The following features must be categorized as described above:
-
The presence of a
border
attribute on animg
element if its value is the string "0
". -
The presence of a
charset
attribute on ascript
element if its value is an ASCII case-insensitive match for "utf-8
". -
The presence of a
language
attribute on ascript
element if its value is an ASCII case-insensitive match for the string "JavaScript
" and if there is notype
attribute or there is and its value is an ASCII case-insensitive match for the string "text/javascript
". -
The presence of a
name
attribute on ana
element, if its value is not the empty string. -
The presence of a
maxlength
attribute on aninput
element whosetype
attribute is in theNumber
state. -
The presence of a
size
attribute on aninput
element whosetype
attribute is in theNumber
state.
Conformance checkers must distinguish between pages that have no conformance errors and have none of these obsolete features, and pages that have no conformance errors but do have some of these obsolete features.
For example, a validator could report some pages as "Valid HTML" and others as "Valid HTML with warnings".
11.2. Non-conforming features
Elements in the following list are entirely obsolete, and must not be used by authors:
applet
acronym
-
Use
abbr
instead. bgsound
-
Use
audio
instead. dir
-
Use
ul
instead. frame
frameset
noframes
-
Either use
iframe
and CSS instead, or use server-side includes to generate complete pages with the various invariant parts merged in. isindex
-
Use an explicit
form
andtext control
combination instead. listing
nextid
-
Use GUIDs instead.
noembed
plaintext
-
Use the "
text/plain
" MIME type instead. rb
rtc
-
Providing the ruby base directly inside the
ruby
element or using nestedruby
elements is sufficient. strike
-
Use
del
instead if the element is marking an edit, otherwise uses
instead. xmp
-
Use
pre
andcode
instead, and escape "<
" and "&
" characters as "<
" and "&
" respectively. basefont
big
blink
center
font
marquee
menu
menuitem
multicol
nobr
spacer
tt
-
Use appropriate elements or CSS instead.
Where the
tt
element would have been used for marking up keyboard input, consider thekbd
element; for variables, consider thevar
element; for computer code, consider thecode
element; and for computer output, consider thesamp
element.Similarly, if the
big
element is being used to denote a heading, consider using theh1
element; if it is being used for marking up important passages, consider thestrong
element; and if it is being used for highlighting text for reference purposes, consider themark
element.See also the text-level semantics usage summary for more suggestions with examples.
The following attributes are obsolete (though the elements are still part of the language), and must not be used by authors:
charset
ona
elementscharset
onlink
elements-
Use an HTTP
Content-Type
header on the linked resource instead. charset
onscript
elements (except as noted in the previous section)-
Omit the attribute. Both documents and scripts are required to use UTF-8. It is redundant to specify it on the
script
element since it inherits from the document. coords
ona
elementsshape
ona
elementsmethods
ona
elementsmethods
onlink
elements-
Use the HTTP OPTIONS feature instead.
name
ona
elements (except as noted in the previous section)name
onembed
elementsname
onimg
elementsname
onoption
elements-
Use the
id
attribute instead. urn
ona
elementsurn
onlink
elements-
Specify the preferred persistent identifier using the
href
attribute instead. accept
onform
elements-
Use the
accept
attribute directly on theinput
elements instead. hreflang
onarea
elementstype
onarea
elements-
These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on
area
elements. Omit them altogether. nohref
onarea
elements-
Omitting the
href
attribute is sufficient; thenohref
attribute is unnecessary. Omit it altogether. profile
onhead
elements-
When used for declaring which
meta
terms are used in the document, unnecessary; omit it altogether, and register the names. -
When used for triggering specific user agent behaviors: use a
link
element instead. version
onhtml
elements-
Unnecessary. Omit it altogether.
ismap
oninput
elements-
Unnecessary. Omit it altogether. All
input
elements with atype
attribute in theImage Button
state are processed as server-side image maps. usemap
oninput
elementslongdesc
oniframe
elements-
Use a regular
a
element to link to the description. lowsrc
onimg
elements-
Use a progressive JPEG image (given in the
src
attribute), instead of using two separate images. target
onlink
elements-
Unnecessary. Omit it altogether.
scheme
onmeta
elements-
If more than one scheme needs to be declared for a
meta
element make the scheme declaration part of the value. archive
onobject
elementsclassid
onobject
elementscode
onobject
elementscodebase
onobject
elementscodetype
onobject
elements-
Use the
data
andtype
attributes to invoke plugins. To set parameters with these names in particular, theparam
element can be used. declare
onobject
elements-
Repeat the
object
element completely each time the resource is to be reused. standby
onobject
elements-
Optimize the linked resource so that it loads quickly or, at least, incrementally.
type
onparam
elementsvaluetype
onparam
elements-
Use the
name
andvalue
attributes without declaring value types. language
onscript
elements (except as noted in the previous section)-
Use the
type
attribute instead. event
onscript
elementsfor
onscript
elements-
Use DOM events mechanisms to register event listeners. [DOM]
datapagesize
ontable
elements-
Unnecessary. Omit it altogether.
summary
ontable
elements-
Use one of the techniques given in the
table
section instead. abbr
ontd
elements-
Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The
title
attribute can also be useful in including more detailed text, so that the cell’s contents can be made terse. If it’s a heading, useth
(which has anabbr
attribute). axis
ontd
andth
elementsscope
ontd
elements-
Use
th
elements for heading cells. datasrc
ona
,applet
,button
,div
,frame
,iframe
,img
,input
,label
,legend
,marquee
,object
,option
,select
,a
,table
, andtextarea
elementsdatafld
ona
,applet
,button
,div
,fieldset
,frame
,iframe
,img
,input
,label
,legend
,marquee
,object
,param
,select
,a
, andtextarea
elementsdataformatas
onbutton
,div
,input
,label
,legend
,marquee
,object
,option
,select
,a
, andtable
elements-
Use script and a mechanism such as
XMLHttpRequest
to populate the page dynamically. [XHR] alink
onbody
elementsbgcolor
onbody
elementsbottommargin
onbody
elementsleftmargin
onbody
elementslink
onbody
elementsmarginheight
onbody
elementsmarginwidth
onbody
elementsrightmargin
onbody
elementstext
onbody
elementstopmargin
onbody
elementsvlink
onbody
elementsclear
onbr
elementsalign
oncaption
elementsalign
oncol
elementschar
oncol
elementscharoff
oncol
elementsvalign
oncol
elementswidth
oncol
elementsalign
ondiv
elementscompact
ondl
elementsalign
onembed
elementshspace
onembed
elementsvspace
onembed
elementsbordercolor
onframe
elementsalign
onhr
elementscolor
onhr
elementsnoshade
onhr
elementssize
onhr
elementswidth
onhr
elementsalign
onh1
—h6
elementsalign
oniframe
elementsallowtransparency
oniframe
elementsframeborder
oniframe
elementsframespacing
oniframe
elementshspace
oniframe
elementsmarginheight
oniframe
elementsmarginwidth
oniframe
elementsscrolling
oniframe
elementsvspace
oniframe
elementsalign
oninput
elementsborder
oninput
elementshspace
oninput
elementsvspace
oninput
elementsalign
onimg
elementsborder
onimg
elements (except as noted in the previous section)hspace
onimg
elementsvspace
onimg
elementsalign
onlegend
elementstype
onli
elementscompact
onmenu
elementsbgcolor
onmarquee
elementsheight
onmarquee
elementshspace
onmarquee
elementsvspace
onmarquee
elementswidth
onmarquee
elementsalign
onobject
elementsborder
onobject
elementshspace
onobject
elementsvspace
onobject
elementscompact
onol
elementsalign
onp
elementswidth
onpre
elementsalign
ontable
elementsbgcolor
ontable
elementsborder
ontable
elementsbordercolor
ontable
elementscellpadding
ontable
elementscellspacing
ontable
elementsframe
ontable
elementsheight
ontable
elementsrules
ontable
elementswidth
ontable
elementsalign
ontbody
,thead
, andtfoot
elementschar
ontbody
,thead
, andtfoot
elementscharoff
ontbody
,thead
, andtfoot
elementsvalign
ontbody
,thead
, andtfoot
elementsalign
ontd
andth
elementsbgcolor
ontd
andth
elementschar
ontd
andth
elementscharoff
ontd
andth
elementsheight
ontd
andth
elementsnowrap
ontd
andth
elementsvalign
ontd
andth
elementswidth
ontd
andth
elementsalign
ontr
elementsbgcolor
ontr
elementschar
ontr
elementscharoff
ontr
elementsheight
ontr
elementsvalign
ontr
elementscompact
onul
elementstype
onul
elementsbackground
onbody
,table
,thead
,tbody
,tfoot
,tr
,td
, andth
elements-
Use CSS instead.
11.3. Requirements for implementations
11.3.1. The applet
element
This feature is in the process of being removed from the Web platform. (This is a long process
that takes many years.) Using the applet
element at this time is highly discouraged.
The applet
element is a Java-specific variant of the embed
element.
The applet
element is now obsoleted so that all extension frameworks (Java, .NET,
Flash, etc) are handled in a consistent manner.
When the element matches any of the following conditions, it represents its contents:
-
The element is still in the stack of open elements of an HTML parser or XML parser.
-
The element is not in a
document
. -
The element’s node document is not fully active.
-
The element’s node document's active sandboxing flag set has its sandboxed plugins browsing context flag set.
-
The element has an ancestor media element.
-
The element has an ancestor
object
element that is not showing its fallback content. -
No Java Language runtime plugin is available.
-
A Java runtime plugin is available but it is disabled.
-
The Should element be blocked a priori by Content Security Policy? algorithm returns "Blocked" when executed on the element. [CSP3]
Otherwise, the user agent should instantiate a Java Language runtime plugin, and should
pass the names and values of all the attributes on the element, in the order they were added to
the element, with the attributes added by the parser being ordered in source order, and then a
parameter named "PARAM" whose value is null, and then all the names and values of parameters given by param
elements that are children of the applet
element, in tree order, to the plugin used. If the plugin supports a scriptable interface, the HTMLAppletElement
object representing the
element should expose that interface. The applet
element represents the plugin.
The applet
element is unaffected by the CSS display property. The
Java Language runtime is instantiated even if the element is hidden with a 'display:none' CSS
style.
The applet
element must implement the HTMLAppletElement
interface.
// Note: intentionally not [HTMLConstructor]
interface HTMLAppletElement
: HTMLElement {
attribute DOMString align;
attribute DOMString alt;
attribute DOMString archive;
attribute DOMString code;
attribute USVString codeBase;
attribute DOMString height;
attribute unsigned long hspace;
attribute DOMString name;
attribute USVString _object; // the underscore is not part of the identifier
attribute unsigned long vspace;
attribute DOMString width;
};
The align
, alt
, archive
, code
, height
, hspace
, name
, object
, vspace
, and width
IDL attributes must reflect the respective content attributes of the same name. For the purposes of reflection, the applet
element’s object
content attribute is defined as containing a URL.
The codeBase
IDL attribute must reflect the codebase
content attribute, which for the purposes of reflection
is defined as containing a URL.
11.3.2. The marquee
element
The marquee
element is a presentational element that animates content. CSS transitions and
animations are a more appropriate mechanism. [CSS3-ANIMATIONS] [CSS3-TRANSITIONS]
The task source for tasks mentioned in this section is the DOM manipulation task source.
The marquee
element must implement the HTMLMarqueeElement
interface.
[HTMLConstructor]
interface HTMLMarqueeElement
: HTMLElement {
[CEReactions] attribute DOMString behavior;
[CEReactions] attribute DOMString bgColor;
[CEReactions] attribute DOMString direction;
[CEReactions] attribute DOMString height;
[CEReactions] attribute unsigned long hspace;
[CEReactions] attribute long loop;
[CEReactions] attribute unsigned long scrollAmount;
[CEReactions] attribute unsigned long scrollDelay;
[CEReactions] attribute boolean trueSpeed;
[CEReactions] attribute unsigned long vspace;
[CEReactions] attribute DOMString width;
attribute EventHandler onbounce;
attribute EventHandler onfinish;
attribute EventHandler onstart;
void start();
void stop();
};
A marquee
element can be turned on or turned off. When it is created, it
is turned on.
When the start()
method is called, the marquee
element must be turned on.
When the stop()
method is called, the marquee
element must be turned off.
When a marquee
element is created, the user agent must queue a task to fire an event named start
at the element.
The behavior
content attribute on marquee
elements is an enumerated attribute with the following keywords (all non-conforming):
Keyword | State |
---|---|
scroll
| scroll |
slide
| slide |
alternate
| alternate |
The missing value default is the scroll state.
The direction
content attribute on marquee
elements is an enumerated attribute with the following keywords (all non-conforming):
Keyword | State |
---|---|
left
| left |
right
| right |
up
| up |
down
| down |
The missing value default is the left state.
The truespeed
content attribute on marquee
elements is a boolean attribute.
A marquee
element has a marquee scroll interval, which is obtained as follows:
-
If the element has a
scrolldelay
attribute, and parsing its value using the rules for parsing non-negative integers does not return an error, then let delay be the parsed value. Otherwise, let delay be -
If the element does not have a
truespeed
attribute, and the delay value is less than 60, then let delay be 60 instead. -
The marquee scroll interval is delay, interpreted in milliseconds.
A marquee
element has a marquee scroll distance, which, if the
element has a scrollamount
attribute, and
parsing its value using the rules for parsing non-negative integers does not return an
error, is the parsed value interpreted in CSS pixels, and otherwise is 6 CSS pixels.
A marquee
element has a marquee loop count, which, if the element has a loop
content attribute, and parsing its value
using the rules for parsing integers does not return an error or a number less than 1, is
the parsed value, and otherwise is -1.
The loop
IDL attribute, on getting,
must return the element’s marquee loop count; and on setting, if the new value is different
than the element’s marquee loop count and either greater than zero or equal to -1, must set
the element’s loop
content attribute (adding it if necessary) to the valid integer that represents the new value. (Other values are ignored.)
A marquee
element also has a marquee current loop index, which is zero when the
element is created.
The rendering layer will occasionally increment the marquee current loop index, which must cause the following steps to be run:
-
If the marquee loop count is -1, then abort these steps.
-
Increment the marquee current loop index by one.
-
If the marquee current loop index is now equal to or greater than the element’s marquee loop count, turn off the
marquee
element and queue a task to fire an event namedfinish
at themarquee
element.Otherwise, if the
behavior
attribute is in the alternate state, then queue a task to fire an event namedbounce
at themarquee
element.Otherwise, queue a task to fire an event named
start
at themarquee
element.
The following are the event handlers (and their corresponding event handler event types) that must be supported, as event handler content attributes and event handler IDL attributes, by marquee
elements:
Event handler | Event handler event type |
---|---|
onbounce
| bounce
|
onfinish
| finish
|
onstart
| start
|
The behavior
, direction
, height
, hspace
, vspace
,
and width
IDL attributes must reflect the respective content attributes of the same name.
The bgColor
IDL attribute must reflect the bgcolor
content attribute.
The scrollAmount
IDL attribute must reflect the scrollamount
content attribute. The default value is 6.
The scrollDelay
IDL attribute must reflect the scrolldelay
content attribute. The default value is 85.
The trueSpeed
IDL attribute must reflect the truespeed
content attribute.
11.3.3. Frames
The frameset
element acts as the body
element in documents
that use frames.
The frameset
element must implement the HTMLFrameSetElement
interface.
[HTMLConstructor]
interface HTMLFrameSetElement
: HTMLElement {
[CEReactions] attribute DOMString cols;
[CEReactions] attribute DOMString rows;
};
HTMLFrameSetElement implements WindowEventHandlers;
The cols
and rows
content attributes for the frameset
element.
The cols
and rows
IDL attributes of the frameset
element must reflect the respective content attributes of the same name.
The frameset
element exposes as event handler content attributes a number of the event handlers of the Window
object. It also mirrors their event handler IDL attributes.
The onblur
, onerror
, onfocus
, onload
, onresize
, and onscroll
event handlers of the Window
object, exposed on the frameset
element, replace the generic event handlers with the same names normally supported by HTML elements.
The frame
element defines a nested browsing context similar
to the iframe
element, but rendered within a frameset
element.
A frame
element is said to be an active frame
element when it is in a document
.
When a frame
element is created as an active frame
element, or becomes an active frame
element after not having been one, the user agent must create a new browsing context, set the element’s nested browsing context to the
newly-created browsing context, and then process the frame
attributes for the first time. If the element has a name
attribute, the browsing context name must be set to the value of this attribute; otherwise, the browsing context name must be set to the empty string.
When a frame
element stops being an active frame
element, the
user agent must discard the element’s nested browsing context, and then set the
element’s nested browsing context to null..
Whenever a frame
element with a non-null nested browsing context has its src
attribute set, changed, or removed, the user agent must process the frame
attributes.
When the user agent is to process the frame
attributes, it must run the first
appropriate steps from the following list:
- If the element has no
src
attribute specified, and the user agent is processing theframe
's attributes for the first time - Queue a task to fire an event named
load
at theframe
element. - Otherwise
- Run the otherwise steps for iframe or frame elements.
Any navigation required of the user agent in the process the frame
attributes algorithm must use the frame
element’s node document's browsing context as the source browsing context.
Furthermore, if the active document of the element’s nested browsing context before such a navigation was not completely loaded at the time of the new navigation, then the navigation must be completed with replacement enabled.
Similarly, if the nested browsing context's session history contained
only one Document
when the process the frame
attributes algorithm was invoked, and that was the about:blank
Document
created
when the nested browsing context was created, then any navigation required of the
user agent in that algorithm must be completed with replacement enabled.
When a Document
in a frame
is marked as completely loaded, the user agent must queue a task to fire an event named load
at
the frame
element.
The task source for the tasks above is the DOM manipulation task source.
When a frame
element’s has a non-null nested browsing context, and its nested browsing context's active document is not ready for post-load tasks, and when anything is delaying the load event of the frame
element’s browsing context's active document, and when the frame
element’s browsing context is in the delaying load
events mode, the frame
must delay the load event of its document.
Whenever the <name
attribute is set and the frame
element’s nested browsing context is non-null, the nested browsing context's name must be changed to the
new value. If the attribute is removed, the browsing context name must be set to the
empty string.
The frame
element must implement the HTMLFrameElement
interface.
[HTMLConstructor]
interface HTMLFrameElement
: HTMLElement {
[CEReactions] attribute DOMString name;
[CEReactions] attribute DOMString scrolling;
[CEReactions] attribute USVString src;
[CEReactions] attribute DOMString frameBorder;
[CEReactions] attribute USVString longDesc;
[CEReactions] attribute boolean noResize;
readonly attribute Document? contentDocument;
readonly attribute WindowProxy? contentWindow;
[CEReactions, TreatNullAs=EmptyString] attribute DOMString marginHeight;
[CEReactions, TreatNullAs=EmptyString] attribute DOMString marginWidth;
};
The name
, scrolling
, and src
IDL attributes of the frame
element must reflect the respective content attributes of the same name. For the purposes
of reflection, the frame
element’s src
content attribute is defined as containing a URL.
The frameBorder
IDL attribute of the frame
element must reflect the element’s frameborder
content attribute.
The longDesc
IDL attribute of the frame
element must reflect the element’s longdesc
content attribute, which
for the purposes of reflection is defined as containing a URL.
The noResize
IDL attribute of the frame
element must reflect the element’s noresize
content attribute.
The contentDocument
IDL attribute, on
getting, must return the content document.
The contentWindow
IDL attribute must
return the WindowProxy
object of the frame
element’s nested browsing context, if the element’s nested browsing context is non-null, or
return null otherwise.
The marginHeight
IDL attribute of the frame
element must reflect the element’s marginheight
content attribute.
The marginWidth
IDL attribute of the frame
element must reflect the element’s marginwidth
content attribute.
11.3.4. Other elements, attributes and APIs
User agents must treat acronym
elements in a manner equivalent to abbr
elements in terms
of semantics and for purposes of rendering.
partial interface HTMLAnchorElement { [CEReactions] attribute DOMString coords; [CEReactions] attribute DOMString charset; [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString shape; };
The coords
, charset
, name
, and shape
IDL attributes of the th
element must reflect the respective content attributes of the same name.
partial interface HTMLAreaElement { [CEReactions] attribute boolean noHref; };
The noHref
IDL attribute of the area
element must reflect the element’s nohref
content attribute.
partial interface HTMLBodyElement { [CEReactions, TreatNullAs=EmptyString] attribute DOMString text; [CEReactions, TreatNullAs=EmptyString] attribute DOMString link; [CEReactions, TreatNullAs=EmptyString] attribute DOMString vLink; [CEReactions, TreatNullAs=EmptyString] attribute DOMString aLink; [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; attribute DOMString background; };
The text
IDL attribute of the body
element must reflect the element’s text
content attribute.
The link
IDL attribute of the body
element must reflect the element’s link
content attribute.
The aLink
IDL attribute of the body
element must reflect the element’s alink
content attribute.
The vLink
IDL attribute of the body
element must reflect the element’s vlink
content attribute.
The bgColor
IDL attribute of the body
element must reflect the element’s bgcolor
content attribute.
The background
IDL attribute of the body
element must reflect the element’s background
content attribute. (The background
content is not defined to contain a URL, despite
rules regarding its handling in the Rendering section above.)
partial interface HTMLBRElement { [CEReactions] attribute DOMString clear; };
The clear
IDL attribute of the br
element must reflect the content attribute of the same name.
partial interface HTMLTableCaptionElement { [CEReactions] attribute DOMString align; };
The align
IDL attribute of the caption
element must reflect the content attribute of the same name.
partial interface HTMLTableColElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString ch; [CEReactions] attribute DOMString chOff; [CEReactions] attribute DOMString vAlign; [CEReactions] attribute DOMString width; };
The align
and width
IDL attributes of the col
element must reflect the respective content attributes of the same name.
The ch
IDL attribute of the col
element must reflect the element’s char
content attribute.
The chOff
IDL attribute of the col
element must reflect the element’s charoff
content attribute.
The vAlign
IDL attribute of the col
element must reflect the element’s valign
content attribute.
User agents must treat dir
elements in a manner equivalent to ul
elements in terms of semantics and for purposes of rendering.
The dir
element must implement the HTMLDirectoryElement
interface.
[HTMLConstructor]
interface HTMLDirectoryElement
: HTMLElement {
[CEReactions] attribute boolean compact;
};
The compact
IDL attribute of the dir
element must reflect the content attribute of the same name.
partial interface HTMLDivElement { [CEReactions] attribute DOMString align; };
The align
IDL attribute of the div
element must reflect the content attribute of the same name.
partial interface HTMLDListElement { [CEReactions] attribute boolean compact; };
The compact
IDL attribute of the dl
element must reflect the content attribute of the same name.
partial interface HTMLEmbedElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString name; };
The name
and align
IDL attributes of the embed
element must reflect the respective content attributes of the same name.
The font
element must implement the HTMLFontElement
interface.
[HTMLConstructor]
interface HTMLFontElement
: HTMLElement {
[CEReactions, TreatNullAs=EmptyString] attribute DOMString color;
[CEReactions] attribute DOMString face;
[CEReactions] attribute DOMString size;
};
The color
, face
, and size
IDL attributes of the font
element must reflect the respective content
attributes of the same name.
partial interface HTMLHeadingElement { [CEReactions] attribute DOMString align; };
The align
IDL attribute of the h1
—h6
elements must reflect the content attribute of the same name.
The profile
IDL attribute on head
elements (with the HTMLHeadElement
interface) is intentionally omitted. Unless so required
by another applicable specification, implementations would
therefore not support this attribute. (It is mentioned here as it was defined in a previous
version of the DOM specifications.)
partial interface HTMLHRElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString color; [CEReactions] attribute boolean noShade; [CEReactions] attribute DOMString size; [CEReactions] attribute DOMString width; };
The align
, color
, size
,
and width
IDL attributes of the hr
element must reflect the respective content attributes of the same name.
The noShade
IDL attribute of the hr
element must reflect the element’s noshade
content attribute.
partial interface HTMLHtmlElement { [CEReactions] attribute DOMString version; };
The version
IDL attribute of the html
element must reflect the content attribute of the same name.
partial interface HTMLIFrameElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString scrolling; [CEReactions] attribute DOMString frameBorder; [CEReactions] attribute USVString longDesc; [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginHeight; [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginWidth; };
The align
and scrolling
IDL attributes of the iframe
element must reflect the respective content attributes of the same name.
The frameBorder
IDL attribute of the iframe
element must reflect the element’s frameborder
content attribute.
The longDesc
IDL attribute of the iframe
element must reflect the element’s longdesc
content attribute,
which for the purposes of reflection is defined as containing a URL.
The marginHeight
IDL attribute of the iframe
element must reflect the element’s marginheight
content attribute.
The marginWidth
IDL attribute of the iframe
element must reflect the element’s marginwidth
content attribute.
partial interface HTMLImageElement { [CEReactions] attribute DOMString name; [CEReactions] attribute USVString lowsrc; [CEReactions] attribute DOMString align; [CEReactions] attribute unsigned long hspace; [CEReactions] attribute unsigned long vspace; [CEReactions, TreatNullAs=EmptyString] attribute DOMString border; };
The name
, align
, border
, hspace
, and vspace
IDL attributes of the img
element must reflect the respective content attributes of the same name.
The lowsrc
IDL attribute of the img
element must reflect the element’s lowsrc
content attribute, which for the
purposes of reflection is defined as containing a URL.
partial interface HTMLInputElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString useMap; };
The align
IDL attribute of the input
element must reflect the content attribute of the same name.
The useMap
IDL attribute of the input
element must reflect the element’s usemap
content attribute.
partial interface HTMLLegendElement { [CEReactions] attribute DOMString align; };
The align
IDL attribute of the legend
element must reflect the content attribute of the same name.
partial interface HTMLLIElement { [CEReactions] attribute DOMString type; };
The type
IDL attribute of the li
element
must reflect the content attribute of the same name.
partial interface HTMLLinkElement { [CEReactions] attribute DOMString charset; [CEReactions] attribute DOMString target; };
The charset
and target
IDL attributes of the link
element must reflect the respective content attributes of the same name.
User agents must treat listing
elements in a manner equivalent to pre
elements in
terms of semantics and for purposes of rendering.
partial interface HTMLMenuElement { [CEReactions] attribute boolean compact; };
The compact
IDL attribute of the menu
element must reflect the content attribute of the same name.
partial interface HTMLMetaElement { [CEReactions] attribute DOMString scheme; };
User agents may treat the scheme
content attribute
on the meta
element as an extension of the element’s name
content attribute when
processing a meta
element with a name
attribute whose value is one that the user
agent recognizes as supporting the scheme
attribute.
User agents are encouraged to ignore the scheme
attribute and instead process the
value given to the metadata name as if it had been specified for each expected value of the scheme
attribute.
meta
elements with name
attributes having the value "eGMS.subject.keyword", and knows that the scheme
attribute is used with this metadata name, then it could take the scheme
attribute
into account, acting as if it was an extension of the name
attribute. Thus the
following two meta
elements could be treated as two elements giving values for two
different metadata names, one consisting of a combination of "eGMS.subject.keyword" and "LGCL",
and the other consisting of a combination of "eGMS.subject.keyword" and "ORLY":
<!-- this markup is invalid --> <meta name="eGMS.subject.keyword" scheme="LGCL" content="Abandoned vehicles"> <meta name="eGMS.subject.keyword" scheme="ORLY" content="Mah car: kthxbye">
The suggested processing of this markup, however, would be equivalent to the following:
<meta name="eGMS.subject.keyword" content="Abandoned vehicles"> <meta name="eGMS.subject.keyword" content="Mah car: kthxbye">
The scheme
IDL attribute of the meta
element must reflect the content attribute of the same name.
partial interface HTMLObjectElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString archive; [CEReactions] attribute DOMString code; [CEReactions] attribute boolean declare; [CEReactions] attribute unsigned long hspace; [CEReactions] attribute DOMString standby; [CEReactions] attribute unsigned long vspace; [CEReactions] attribute DOMString codeBase; [CEReactions] attribute DOMString codeType; [CEReactions, TreatNullAs=EmptyString] attribute DOMString border; };
The align
, archive
, border
, code
, declare
, hspace
, standby
, and vspace
IDL attributes of the object
element must reflect the respective content attributes of the same name.
The codeBase
IDL attribute of the object
element must reflect the element’s codebase
content attribute,
which for the purposes of reflection is defined as containing a URL.
The codeType
IDL attribute of the object
element must reflect the element’s codetype
content attribute.
partial interface HTMLOListElement { [CEReactions] attribute boolean compact; };
The compact
IDL attribute of the ol
element must reflect the content attribute of the same name.
partial interface HTMLParagraphElement { [CEReactions] attribute DOMString align; };
The align
IDL attribute of the p
element must reflect the content attribute of the same name.
partial interface HTMLParamElement { [CEReactions] attribute DOMString type; [CEReactions] attribute DOMString valueType; };
The type
IDL attribute of the param
element must reflect the content attribute of the same name.
The valueType
IDL attribute of the param
element must reflect the element’s valuetype
content attribute.
User agents must treat plaintext
elements in a manner equivalent to pre
elements
in terms of semantics and for purposes of rendering. (The parser has special behavior for this
element, though.)
partial interface HTMLPreElement { [CEReactions] attribute long width; };
The width
IDL attribute of the pre
element must reflect the content attribute of the same name.
partial interface HTMLScriptElement { [CEReactions] attribute DOMString charset; [CEReactions] attribute DOMString event; [CEReactions] attribute DOMString htmlFor; };
The charset
IDL attribute of the script
element must reflect the element’s charset
content attribute.
The event
IDL attribute of the script
element must reflect the element’s event
content attribute.
The htmlFor
IDL attribute of the script
element must reflect the element’s for
content attribute.
partial interface HTMLTableElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString border; [CEReactions] attribute DOMString frame; [CEReactions] attribute DOMString rules; [CEReactions] attribute DOMString summary; [CEReactions] attribute DOMString width; [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; [CEReactions, TreatNullAs=EmptyString] attribute DOMString cellPadding; [CEReactions, TreatNullAs=EmptyString] attribute DOMString cellSpacing; };
The align
, border
, frame
, summary
, rules
, and width
,
IDL attributes of the table
element must reflect the respective content
attributes of the same name.
The bgColor
IDL attribute of the table
element must reflect the element’s bgcolor
content attribute.
The cellPadding
IDL attribute of the table
element must reflect the element’s cellpadding
content attribute.
The cellSpacing
IDL attribute of the table
element must reflect the element’s cellspacing
content attribute.
partial interface HTMLTableSectionElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString ch; [CEReactions] attribute DOMString chOff; [CEReactions] attribute DOMString vAlign; };
The align
IDL attribute of the tbody
, thead
, and tfoot
elements must reflect the content attribute of the same
name.
The ch
IDL attribute of the tbody
, thead
, and tfoot
elements must reflect the elements' char
content attributes.
The chOff
IDL attribute of the tbody
, thead
, and tfoot
elements must reflect the elements' charoff
content attributes.
The vAlign
IDL attribute of the tbody
, thead
, and tfoot
element must reflect the elements' valign
content attributes.
partial interface HTMLTableCellElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString axis; [CEReactions] attribute DOMString height; [CEReactions] attribute DOMString width; [CEReactions] attribute DOMString ch; [CEReactions] attribute DOMString chOff; [CEReactions] attribute boolean noWrap; [CEReactions] attribute DOMString vAlign; [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; };
The align
, axis
, height
,
and width
IDL attributes of the td
and th
elements must reflect the respective content attributes of the same name.
The ch
IDL attribute of the td
and th
elements must reflect the elements' char
content attributes.
The chOff
IDL attribute of the td
and th
elements must reflect the elements' charoff
content attributes.
The noWrap
IDL attribute of the td
and th
elements must reflect the elements' nowrap
content
attributes.
The vAlign
IDL attribute of the td
and th
elements must reflect the elements' valign
content
attributes.
The bgColor
IDL attribute of the td
and th
elements must reflect the elements' bgcolor
content
attributes.
partial interface HTMLTableRowElement { [CEReactions] attribute DOMString align; [CEReactions] attribute DOMString ch; [CEReactions] attribute DOMString chOff; [CEReactions] attribute DOMString vAlign; [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; };
The align
IDL attribute of the tr
element must reflect the content attribute of the same name.
The ch
IDL attribute of the tr
element must reflect the element’s char
content attribute.
The chOff
IDL attribute of the tr
element must reflect the element’s charoff
content attribute.
The vAlign
IDL attribute of the tr
element must reflect the element’s valign
content attribute.
The bgColor
IDL attribute of the tr
element must reflect the element’s bgcolor
content attribute.
partial interface HTMLUListElement { [CEReactions] attribute boolean compact; [CEReactions] attribute DOMString type; };
The compact
and type
IDL attributes of the ul
element must reflect the respective content attributes of the
same name.
User agents must treat xmp
elements in a manner equivalent to pre
elements in terms of
semantics and for purposes of rendering. (The parser has special behavior for this element though.)
partial interface Document { [CEReactions, TreatNullAs=EmptyString] attribute DOMString fgColor; [CEReactions, TreatNullAs=EmptyString] attribute DOMString linkColor; [CEReactions, TreatNullAs=EmptyString] attribute DOMString vlinkColor; [CEReactions, TreatNullAs=EmptyString] attribute DOMString alinkColor; [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; [SameObject] readonly attribute HTMLCollection anchors; [SameObject] readonly attribute HTMLCollection applets; void clear(); void captureEvents(); void releaseEvents(); [SameObject] readonly attribute HTMLAllCollection all; };
The attributes of the Document
object listed in the first column of the following table must reflect the content attribute on the body
element with the name given in the
corresponding cell in the second column on the same row, if the body
element is a body
element (as opposed to a frameset
element). When there is no body
element or if it is a frameset
element, the attributes must instead return the empty string on getting and do
nothing on setting.
IDL attribute | Content attribute |
---|---|
fgColor
| text
|
linkColor
| link
|
vlinkColor
| vlink
|
alinkColor
| alink
|
bgColor
| bgcolor
|
The anchors
attribute must return an HTMLCollection
rooted at the Document
node, whose filter matches only a
elements with name
attributes.
The applets
attribute must return an HTMLCollection
rooted at the Document
node, whose filter matches only applet
elements.
The clear()
, captureEvents()
, and releaseEvents()
methods must do nothing.
The all
attribute must return an HTMLAllCollection
rooted at the Document
node, whose filter matches all elements.
The object returned for all
has several unusual behaviors:
-
The user agent must act as if the ToBoolean abstract operator in JavaScript converts the object returned for
all
to the false value. -
The user agent must act as if the Abstract Equality Comparison algorithm, when given the object returned for
all
, returns true when compared to theundefined
andnull
values. (Comparisons using the Strict Equality Comparison algorithm, and Abstract Equality comparisons to other values such as strings or objects, are unaffected.) -
The user agent must act such that the
typeof
operator in JavaScript returns the stringundefined
when applied to the object returned forall
.
These requirements are a willful violation of the JavaScript specification current at the
time of writing. The JavaScript specification requires that ToBoolean return true for all
objects to the true value, and does not have provisions for objects acting as if they were undefined
for the purposes of certain operators. This violation is motivated by a
desire for compatibility with two classes of legacy content: one that uses the presence of document.all
as a way to detect legacy user agents, and one that only supports
those legacy user agents and uses the document.all
object without testing for
its presence first. [ECMA-262]
partial interface Window { void captureEvents(); void releaseEvents(); [Replaceable, SameObject] readonly attribute External external; };
The captureEvents()
and releaseEvents()
methods must do nothing.
The external
attribute of the Window
interface
must return an instance of the External
interface:
[NoInterfaceObject]
interface External
{
void AddSearchProvider();
void IsSearchProviderInstalled();
};
The AddSearchProvider()
and IsSearchProviderInstalled()
methods must do nothing.
11.3.4.1. Plugins
This feature is in the process of being removed from the Web platform. (This is a long process that takes many years.) Using the plugins API at this time is highly discouraged.
Navigator implements NavigatorPlugins;
[NoInterfaceObject]
interface NavigatorPlugins
{
[SameObject] readonly attribute PluginArray plugins;
[SameObject] readonly attribute MimeTypeArray mimeTypes;
boolean javaEnabled();
};
interfacePluginArray
{ void refresh(optional booleanreload
= false); readonly attribute unsigned long length; getter Plugin? item(unsigned longindex
); getter Plugin? namedItem(DOMStringname
); };
interfaceMimeTypeArray
{ readonly attribute unsigned long length; getter MimeType? item(unsigned longindex
); getter MimeType? namedItem(DOMStringname
); };
interfacePlugin
{ readonly attribute DOMString name; readonly attribute DOMString description; readonly attribute DOMString filename; readonly attribute unsigned long length; getter MimeType? item(unsigned longindex
); getter MimeType? namedItem(DOMStringname
); };
interface MimeType
{
readonly attribute DOMString type;
readonly attribute DOMString description;
readonly attribute DOMString suffixes; // comma-separated
readonly attribute Plugin enabledPlugin;
};
The plugins
attribute must
return a PluginArray
object.
The mimeTypes
attribute must
return a MimeTypeArray
object.
A PluginArray
object represents none, some, or all of the plugins supported by the user agent, each of which is represented by a Plugin
object. Each of these Plugin
objects may be hidden plugins. A can’t
be enumerated, but can still be inspected by using its name.
The fewer plugins are represented by the PluginArray
object, and of those, the more that are , the more the user’s privacy will be protected. Each exposed plugin
increases the number of bits that can be derived for fingerprinting. Hiding a plugin helps, but
unless it is an extremely rare plugin, it is likely that a site attempting to derive the list of
plugins can still determine whether the plugin is supported or not by probing for it by name (the
names of popular plugins are widely known). Therefore not exposing a plugin at all is preferred.
Unfortunately, many legacy sites use this feature to determine, for example, which plugin to use
to play video. Not exposing any plugins at all might therefore not be entirely plausible.
The PluginArray
objects created by a user agent must not be live. The
set of plugins represented by the objects must not change once an object is created, except when
it is updated by the refresh()
method.
Each plugin represented by a PluginArray
can support a number of MIME types. For each such plugin, the user agent must
pick one or more of these MIME types to be those that are explicitly supported.
The explicitly supported MIME types of
a plugin are those that are exposed through the Plugin
and MimeTypeArray
interfaces. As with plugins themselves, any variation between users regarding what is exposed
allows sites to fingerprint users. User agents are therefore encouraged to expose the same MIME types for all users of a plugin, regardless of the
actual types supported... at least, within the constraints imposed by compatibility with legacy
content.
The supported property indices of a PluginArray
object are the
numbers from zero to the number of non- plugins represented by the object, if any.
The length
attribute must return the
number of non- plugins represented by the object.
The item(unsigned long index)
method of a PluginArray
object must return null if the argument is not one of the object’s supported property indices, and otherwise must return the result of running the
following steps, using the method’s argument as index:
- Let list be the
Plugin
objects representing the non- plugins represented by thePluginArray
object. - Sort list alphabetically by the
name
of eachPlugin
. - Return the indexth entry in list.
It is important for privacy that the order of plugins not leak additional information, e.g., the order in which plugins were installed.
The supported property names of a PluginArray
object are the values
of the name
attributes of all the Plugin
objects represented by the PluginArray
object. The
properties exposed in this way must be unenumerable.
The namedItem(DOMString name)
method of a PluginArray
object must return null if the argument is not one of the object’s supported property names, and otherwise must return the Plugin
object, of those represented by the PluginArray
object, that has a name
equal to the method’s argument.
The refresh()
method of the PluginArray
object of a Navigator
object, when invoked, must check to
see if any plugins have been installed or reconfigured since the user
agent created the PluginArray
object. If so, and the method’s argument is true, then
the user agent must act as if the location.reload()
method was called instead. Otherwise, the user agent must update the PluginArray
object and MimeTypeArray
object created for attributes of that Navigator
object, and the Plugin
and MimeType
objects created
for those PluginArray
and MimeTypeArray
objects, using the same Plugin
objects for cases where the name
is the same, and the same MimeType
objects for
cases where the type
is the same, and creating new objects
for cases where there were no matching objects immediately prior to the refresh()
call. Old Plugin
and MimeType
objects must continue to return the same values that they had prior to
the update, though naturally now the data is stale and may appear inconsistent (for example, an
old MimeType
entry might list as its enabledPlugin
a Plugin
object that no longer lists that MimeType
as a supported MimeType
).
A MimeTypeArray
object represents the MIME types explicitly supported by plugins supported by the user
agent, each of which is represented by a MimeType
object.
The MimeTypeArray
objects created by a user agent must not be live.
The set of MIME types represented by the objects must not change once an object is created, except
when it is updated by the PluginArray
object’s refresh()
method.
The supported property indices of a MimeTypeArray
object are the
numbers from zero to the number of MIME types explicitly
supported by non- plugins represented by the corresponding PluginArray
object, if
any.
The length
attribute must return the
number of MIME types explicitly supported by non- plugins represented by the
corresponding PluginArray
object, if any.
The item(unsigned long index)
method of a MimeTypeArray
object must return null if the argument is not one of the object’s supported property indices, and otherwise must return the result of running the
following steps, using the method’s argument as index:
- Let list be the
MimeType
objects representing the MIME types explicitly supported by non- plugins represented by the correspondingPluginArray
object, if any. - Sort list alphabetically by the
type
of eachMimeType
. - Return the indexth entry in list.
It is important for privacy that the order of MIME types not leak additional information, e.g., the order in which plugins were installed.
The supported property names of a MimeTypeArray
object are the values
of the type
attributes of all the MimeType
objects represented by the MimeTypeArray
object. The properties exposed in this way
must be unenumerable.
The namedItem(DOMString name)
method of a MimeTypeArray
object must return null if the argument is not one of the object’s supported property names, and otherwise must return the MimeType
object
that has a type
equal to the method’s argument.
A Plugin
object represents a plugin. It has
several attributes to provide details about the plugin, and can be enumerated to obtain the list
of MIME types that it explicitly
supports.
The Plugin
objects created by a user agent must not be live. The set of MIME types represented by the objects, and the values of the
objects' attributes, must not change once an object is created, except when updated by the PluginArray
object’s refresh()
method.
The reported MIME types for a Plugin
object are the MIME types explicitly supported by the corresponding plugin when this object was last created or updated by PluginArray.refresh()
, whichever happened most
recently.
The supported property indices of a Plugin
object
are the numbers from zero to the number of reported MIME types.
The length
attribute must return the number
of reported MIME types.
The item(unsigned long index)
method of a Plugin
object must return null if the argument is not one of the
object’s supported property indices, and otherwise must return the result of running
the following steps, using the method’s argument as index:
- Let list be the
MimeType
objects representing the reported MIME types. - Sort list alphabetically by the
type
of eachMimeType
. - Return the indexth entry in list.
It is important for privacy that the order of MIME types not leak additional information, e.g., the order in which plugins were installed.
The supported property names of a Plugin
object
are the values of the type
attributes of the MimeType
objects representing the reported MIME types. The properties
exposed in this way must be unenumerable.
The namedItem(DOMString name)
method of a Plugin
object must return null if the argument is not one of the
object’s supported property names, and otherwise must return the MimeType
object that has a type
equal to the
method’s argument.
The name
attribute must return the plugin’s name.
The description
and filename
attributes must return user-agent-defined
(or, in all likelihood, plugin-defined) strings. In each case, the same string must
be returned each time, except that the strings returned may change when the PluginArray.refresh()
method updates the object.
If the values returned by the description
or filename
attributes vary between versions of a plugin, they can be used both as a fingerprinting vector and, even more importantly,
as a trivial way to determine what security vulnerabilities a plugin (and thus a
browser) may have. It is thus highly recommended that the description
attribute just return the same value as the name
attribute, and that the filename
attribute return the empty string.
A MimeType
object represents a MIME type that is, or was, explicitly supported by a plugin.
The MimeType
objects created by a user agent must not be live. The
values of the objects' attributes must not change once an object is created, except when updated
by the PluginArray
object’s refresh()
method.
The type
attribute must return the valid MIME type with no parameters describing the MIME type.
The description
and suffixes
attributes must return
user-agent-defined (or, in all likelihood, plugin-defined) strings. In each case, the
same string must be returned each time, except that the strings returned may change when the PluginArray.refresh()
method updates the object.
If the values returned by the description
or suffixes
attributes vary between versions of a plugin, they can be used both as a fingerprinting vector and, even more importantly,
as a trivial way to determine what security vulnerabilities a plugin (and thus a
browser) may have. It is thus highly recommended that the description
attribute just return the same value as the type
attribute, and that the suffixes
attribute return the empty string.
Commas in the suffixes
attribute are
interpreted as separating subsequent filename extensions, as in "htm,html
".
The enabledPlugin
attribute must
return the Plugin
object that represents the plugin that explicitly supported the MIME type that this MimeType
object represents when this object was last created or updated by PluginArray.refresh()
, whichever happened most
recently.
The javaEnabled()
attribute
must return true if the user agent supports a plugin that supports the MIME
type "application/x-java-vm
"; otherwise it must return false.