W3C home > Mailing lists > Public > public-webapps@w3.org > October to December 2011

Re: innerHTML in DocumentFragment

From: Daniel Cheng <dcheng@chromium.org>
Date: Fri, 4 Nov 2011 09:33:11 -0700
Message-ID: <CAF3XrKq+jqNLzf=1CuhpEV98bP3aN6S0N4UxrjecEV1UFEb7wA@mail.gmail.com>
To: João Eiras <joaoe@opera.com>
Cc: public-webapps WG <public-webapps@w3.org>
Instead of simply switching the insertion mode when you see an element that
doesn't belong in in-body mode for context-less parsing, would it make
sense to synthesize the appropriate context elements instead?

Daniel

On Fri, Nov 4, 2011 at 05:54, João Eiras <joaoe@opera.com> wrote:

> On Fri, 04 Nov 2011 00:48:29 +0100, Anne van Kesteren <annevk@opera.com>
> wrote:
>
>  On Thu, 03 Nov 2011 16:44:49 -0700, Tim Down <timdown@gmail.com> wrote:
>>
>>> Have you looked at the createContextualFragment() method of Range?
>>>
>>> http://html5.org/specs/dom-**parsing.html#dom-range-**
>>> createcontextualfragment<http://html5.org/specs/dom-parsing.html#dom-range-createcontextualfragment>
>>>
>>
>> That requires a context. Yehuda wants a way of parsing where you do not
>> know the context in advance.
>>
>>
> This is something I've always wanted, so I always wrote my piece of code
> to make the task easier. But I do suggest a different solution:
>
> Instead of
>
> # var f = document.**createDocumentFragment()
> # f.innerHTML = '...';
>
> which is quite verbose, I would suggest a simpler API, like
>
> # var document_fragment_node = parseFragment(markup_fragment, Node
> contextNode, boolean safe);
> # var element_node           = parseNode    (markup_fragment, Node
> contextNode, boolean safe);
> # var document_node          = parseDocument(markup_fragment, boolean
> safe);
>
> * markup_fragment is the html string, or xml depending on the type of
> document of the ownerDocument of contextNode.
> * contextNode is an Element for parsing context and to know the
> ownerDocument, or if context is not important, the Document which will be
> the ownerDocument of the resulting fragment
> * stripScripts is a boolean that tells the parser to strip unsafe content
> like scripts, event listeners and embeds/objects which would be handled by
> a 3rd party plugin according to user agent policy.
>
> - parseFragment parses a markup fragment which may not have a single root
> element, hence having siblings, with context.
> - parseFragment parses a markup fragment which must have a single root
> element, so the DocumentFragment can be spared. This is usually the most
> wanted use case.
> - parseDocument similar to DOMParser but for html.
>
> At least for me, an API with these features are everything that I've ever
> needed.
>
> Thanks.
>
>
Received on Friday, 4 November 2011 16:42:00 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:48 GMT