- From: Maciej Stachowiak <mjs@apple.com>
- Date: Fri, 22 Jun 2007 12:54:27 -0700
- To: Maciej Stachowiak <mjs@apple.com>
- Cc: Travis Leithead <travil@windows.microsoft.com>, ian@hixie.ch, public-html@w3.org, Chris Wilson <chris.wilson@microsoft.com>
- Message-Id: <2F111937-B888-4E5B-ABAE-8EE795119690@apple.com>
I used some unclear language here, so clarifying a bit. On Jun 22, 2007, at 11:43 AM, Maciej Stachowiak wrote: > > On Jun 22, 2007, at 10:12 AM, Travis Leithead wrote: > >> Using HTML5 terminology: Current browsers today put all unknown >> content attributes (namespace, name and value) into the DOM and >> can be [case insensitively] retrieved via getAttribute[NS] and >> getAttributeNode[NS], set via setAttribute[NS] and setAttributeNode >> [NS], and removed via removeAttribute[NS] and removeAttributeNode. >> >> IE, has the concept of “expandos”, meaning it also creates >> reflecting DOM attributes on the corresponding element for unknown >> content attributes (case-sensitive). Obviously HTML5 does not >> define DOM attributes for unknown content attributes, however is >> there any general guidelines for reflecting (or not) unknown >> content attributes in the DOM, or is that left to the UA’s >> discretion? > > HTML5 doesn't have a requirement forbidding any kind of additional > attributes. However, some aspects of IE's DOM reflection are > problematic, and it would be better to treat the DOM element JS > attribute namespace as separate from the attribute namespace. This would be better stated as "... treat the DOM element JS *property* namespace as separate from the markup attribute namespace as exposed by getAttribute and related." > I think the following two aspects are non-conforming, although > mainly to DOM Core rather than to HTML5: > > 1) getAttribute sometimes returns a non-string, for standard > attributes that have corresponding non-string DOM attributes. For > example getAttribute("onclick"). > 2) Setting a custom property on an element results in an attribute > on the element that is visible to getAttribute and serialized via > innerHTML. > > I don't think adding a custom property for a nonstandard attribute > is nonconforming to anything, but is likely to cause compatibility > problems with scripts as the language evolves and is probably more > confusing than helpful if you fix issues 1 and 2. > > Other browsers generally don't have this IE-specific quirk. > > Regards, > Maciej > >> >> --- >> <body onload="check()"> >> <a href="foo.html" myExpando="bar"> >> <script type=text/javascript> >> function check() >> { >> var anchor = document.getElementsByTagName >> ('a').item(0); >> >> alert("Is a reflecting DOM attribute dynamically >> created? (case-insensitive) anchor.myexpando {" + anchor.myexpando >> + "}\n" + >> "Is a reflecting DOM attribute dynamically >> created? (case-sensitive) anchor.myExpando {" + anchor.myExpando + >> "}\n" + >> "Is a content attribute created? (case- >> insensitive) anchor.getAttribute('myexpando') {" + >> anchor.getAttribute('myexpando') + "}\n" + >> "Is a content attribute created? (case- >> sensitive) anchor.getAttribute('myExpando') {" + >> anchor.getAttribute('myExpando') + "}"); >> >> // Setting the anchor.myExpando reflects in the >> // content attribute, and removing the content >> // attribute removes the DOM attribute. >> } >> </script> >
Received on Friday, 22 June 2007 19:55:56 UTC