[whatwg] [WHATWG] HTMLElement ids as global object properties

Alexandre Morgaut Alexandre.Morgaut at 4d.com
Fri Apr 1 00:26:52 PDT 2011


My biggest nightmare today is that recent browsers like Chrome, IE9, FF4 generate a global variable from the id of each HTMLElement of the document...

(even for Meta in the Head of the document)

It is know possible in these browser to write

domNode = myPanel;

or

domNode = window.myPanel;

instead of

domNode = document.getElementById('myPanel');

or with jQuery:

domNode = $('#myPanel');

Note that this behavior is not part of HTML4
http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#adef-id
http://www.w3.org/TR/1999/REC-html401-19991224/types.html#type-name

It is neither part of HTML5
http://www.w3.org/TR/html5/elements.html#the-id-attribute


Let's imagine the effects of existing HTMLElements with id like "location", "document", "event", "toolbar", or even "window"...

What should be the list of reserved keywords for valid id value ?
All the BOM API ?
+ APIs like Web Storages, Web Sockets... ?
+ Global namespaces of common Ajax frameworks ?

And what about future HTML5/W3C APIs ?
And what about future or private frameworks ???


One of the main best practices in JavaScript development is "Don't pollute the global namespace"
It is even one of the key part of the strict mode of ECMAScript 5

The values given to ids of an HTML document is part of the business logic of the web interface
Developers are encouraged to use a single global variable as their application specific namespace

if  "document.getElementById()" is too long, why not coming back to the IE4 form "document.all()"

I would be more comfortable with at least a standard namespace global property like "elements" on window than the current situation


Thoughts ?

Alexandre




Alexandre Morgaut
Product Manager

4D SAS
60, rue d'Alsace
92110 Clichy
France

Standard : +33 1 40 87 92 00
Email :    Alexandre.Morgaut at 4d.com
Web :      www.4D.com




More information about the whatwg mailing list