[whatwg] What exactly is contentEditable for?

Matthew Raymond mattraymond at earthlink.net
Wed Aug 24 20:28:05 PDT 2005

Ian Hickson wrote:
> On Wed, 24 Aug 2005, Matthew Raymond wrote:
>>Yeah, I think you may have a point. It may make more sense to enable 
>>editing of DOM Ranges through scripting rather than putting it in 
> Uh, that would be unbelievably hard to implement.

   Yeah, that was already my conclusion, as I hinted to later in the

>>After all, if we're going to be dynamically inserting and removing 
>>|contenteditable| all over the place, we're already using scripting. On 
>>the other hand, if you have a static block that you're going to edit and 
>>submit, an actual control makes more sense, be it <htmlarea> or 
>><textarea accept="text/html">.
> Well, we already have <textarea accept>. It's up to you guys to convince 
> UA makers to implement it. :-)

   I think there are still issues to address with regards to <textarea
accept>. For example, are the HTML contents loaded into the DOM? Are
they treated like a separate document in an <iframe>, or are they more
like the contents of <div contenteditable>? Do they inherit their styles
from the current web page? I think all of this needs to be properly
defined, or |contenteditable| will win simply by virtue of inconsistent
implementation of <textarea accept>.

> It's worth bearing in mind that Microsoft originally had <htmlarea> and 
> dropped it competely in favour of contentEditable before shipping.

   I'm on the fence as to whether we need an outright <htmlarea>
element, or if we can just style <textarea>. This seems to tie into the
current discussion about styling controls on www-style. If people can be
reasonably certain that they can style <textarea accept> like a <div> or
a <span>, we won't need <htmlarea>.

>>Hmm. IE supports the .contentEditable property, so why not just drop
>>the HTML attribute |contenteditable| and leave the DOM property?
> Having content attributes is good for serialising DOM states. For example, 
> the fact that the "value" DOM attribute on controls is not the same as the 
> content attribute has caused many problems and makes it impossible to 
> store the state of a modified form in a serialised format.

   I don't really see a use case, but then at this point I'm willing to
let it slide if <textarea accept> is better defined for "text/html".

   Here's an example of how poorly <textarea accept="text/html"> is
defined. When you press a reset button, the form controls return to
their defaults. So, if you press reset on a page with <textarea
accept="text/html">, it should restore the default contents of the
<textarea>. This means the child text of <textarea> must be maintained
or you can't do a reset for that control. So, where are the modified
HTML contents of the control when it's being edited? In the DOM? They
can't be children of <textarea> because it already contains the contents
it needs for the reset.

   This would suggest that <textarea> HTML contents need to be in a
separate document object. If that's the case, how is styling handled?
Does it inherit from the parent document? What would a selector like
"textarea > p" do?

   I suppose we could just make it to where <textarea> only parses the
first child node for resets, and only if it's a text node. Every other
child would be the current contents of the control. However, I think
that content would have to be dumped if you save the page to disk. Is
that any different from what we do with the contents of <input>, though?

More information about the whatwg mailing list