Components/constructable DOM elements: mandatory tag registration?

2011-08-26 Thread Roland Steiner
From the discussion about x- prefixed names another question crossed my
mind: Suppose an author defines a component, but doesn't register a tag
name. AFAICT, at this point nothing prevents him from inserting such a new
element into the DOM. E.g.:

div id=div/div

script
function MyNewElement() {
HTMLElement.call(this);
// ...
}

var div = document.getElementById(div);
div.appendChild(new MyNewElement());

// ... Look Ma, no Element.register() call!

var text = div.innerHTML;  // - what does this return?
/script


Cheers,

- Roland


Re: Components/constructable DOM elements: mandatory tag registration?

2011-08-26 Thread Dominic Cooney
I think HTMLElement.call should throw if there’s not an associated tag name.

However exactly how that association happens, I am not sure.
JavaScript can’t rely on the 'constructor' property. Shadowing the
tagName attribute on the prototype is not ideal, because it may be
mutable and it would be confusing if it was mutated.

Alternatively we could require subtypes of some specific tag, like
HTMLDivElement, and use that tag name if there's no registered tag
name. That means the UA can't limit special casing to x- elements,
although I think that is OK.

Dominic

On Fri, Aug 26, 2011 at 1:16 AM, Roland Steiner
rolandstei...@google.com wrote:
 From the discussion about x- prefixed names another question crossed my
 mind: Suppose an author defines a component, but doesn't register a tag
 name. AFAICT, at this point nothing prevents him from inserting such a new
 element into the DOM. E.g.:
 div id=div/div
 script
     function MyNewElement() {
         HTMLElement.call(this);
         // ...
     }
     var div = document.getElementById(div);
     div.appendChild(new MyNewElement());

     // ... Look Ma, no Element.register() call!

     var text = div.innerHTML;  // - what does this return?
 /script

 Cheers,
 - Roland