This test covers the various ways of accessing DOM elements through the window object by name, id or index, directly as properties of the window object. This lookup is supposed to include applet, embed, form, image and object by name, and all elements by id. It should give the element itself in the case of a single match, or an HTMLCollection in the case of multiple matches; except that when iframes are involved, it will give the window object for the first iframe match.

Our results match WinIE in all respects but one. We allow child frame names to take precedence over built-in and custom properties of the window object. This is the Mozilla behavior and is required to make some sites work because they use frame names that collide with built-in properties in Mozilla but not IE - specifically "toobar". See Radar 3870317.

Results:

Nonexistent image name: undefined
Image by name (unique): single IMG(name)
Image by name (multiple): collection(2) IMG(name) IMG(name)
Image by id (unique): single IMG(id)
Image by id (multiple): collection(2) IMG(id) IMG(id)
Image by id/name mixed: collection(4) IMG(id) IMG(name) IMG(name) IMG(id)

Nonexistent form name: undefined
Form by name (unique): single FORM(name)
Form by name (multiple): collection(2) FORM(name) FORM(name)
Form by id (unique): single FORM(id)
Form by id (multiple): collection(2) FORM(id) FORM(id)
Form by id/name mixed: collection(4) FORM(id) FORM(name) FORM(name) FORM(id)

Nonexistent applet name: undefined
Applet by name (unique): single APPLET(name)
Applet by name (multiple): collection(2) APPLET(name) APPLET(name)
Applet by id (unique): single APPLET(id)
Applet by id (multiple): collection(2) APPLET(id) APPLET(id)
Applet by id/name mixed: collection(4) APPLET(id) APPLET(name) APPLET(name) APPLET(id)

Nonexistent object name: undefined
Object by name (unique): single OBJECT(name)
Object by name (multiple): collection(2) OBJECT(name) OBJECT(name)
Object by id (unique): single OBJECT(id)
Object by id (multiple): collection(2) OBJECT(id) OBJECT(id)
Object by id/name mixed: collection(4) OBJECT(id) OBJECT(name) OBJECT(name) OBJECT(id)

Nonexistent embed name: undefined
Embed by name (unique): single EMBED(name)
Embed by name (multiple): collection(2) EMBED(name) EMBED(name)
Embed by id (unique): single EMBED(id)
Embed by id (multiple): collection(2) EMBED(id) EMBED(id)
Embed by id/name mixed: collection(4) EMBED(id) EMBED(name) EMBED(name) EMBED(id)

Nonexistent iframe name: undefined
Iframe by name (unique): single WINDOW
Iframe by name (multiple): single WINDOW
Iframe by id (unique): single WINDOW
Iframe by id (multiple): single WINDOW
Iframe by id/name mixed: single WINDOW

Nonexistent span name: undefined
Span by name (unique): undefined
Span by name (multiple): undefined
Span by id (unique): single SPAN(id)
Span by id (multiple): collection(2) SPAN(id) SPAN(id)
Span by id/name mixed: collection(2) SPAN(id) SPAN(id)

Mixed by id: single WINDOW
Mixed by name: single WINDOW
Mixed by id (no iframe): collection(6) IMG(id) FORM(id) APPLET(id) EMBED(id) OBJECT(id) SPAN(id)
Mixed by name (no iframe): collection(5) IMG(name) FORM(name) APPLET(name) EMBED(name) OBJECT(name)

Numeric 0: single WINDOW
Numeric 12: single WINDOW
Numeric 13: undefined

Conflicting image: single OTHER
Conflicting image (custom property): single OTHER
Conflicting iframe: single OTHER

