Re: Allow to return same NodeList object for queries like getElementsByTagName, getElementsByClassName and getElementsByName

I definitely am in favor of this, unsurprisingly given that we've
chosen to do this in Firefox.

/ Jonas

On Tue, Feb 2, 2010 at 5:02 PM, Maciej Stachowiak <mjs@apple.com> wrote:
> Hey folks,
>
> Any thoughts on this? I think it would be wise to issue an errata against DOM 3 Core to allow caching of NodeLists, and make sure to fix this in DOM4. IE and Firefox seem to do it, and it can be a big performance benefit, so I think the DOM spec should allow it.
>
> The three errata needed would be:
>
> http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-A6C9094
> Change return value of getElementsByTagName on Document from:
>  "NodeList A new NodeList object containing all the matched Elements."
> To:
> "NodeList A NodeList object containing all the matched Elements."
>
> http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-getElBTNNS
> Change return value of getElementsByTagNameNS on Document from:
>  "NodeList A new NodeList object containing all the matched Elements."
> To:
> "NodeList A NodeList object containing all the matched Elements."
>
> http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-A6C90942
> Change return value of getElementsByTagNameNS on Element from:
>  "NodeList A new NodeList object containing all the matched Elements."
> To:
> "NodeList A NodeList object containing all the matched Elements."
>
> If we agree to these errata, I would also suggest that related methods in HTML5 (getElementsByName, getElementsByClassName) should be consistent and should also not require a new NodeList every time.
>
> Does anyone disagree?
>
> Regards,
> Maciej
>
> On Jan 22, 2010, at 5:11 AM, Anton Muhin wrote:
>
>> Good day.
>>
>> Currently DOM core 3 spec is somewhat inconsistent regarding if
>> invocations of getElementsByTagName and alike must return a new
>> NodeList or could cache this list.  For Document it's mandated for
>> both getElementsByTagName and getElementsByTagNameNS, but for Element,
>> it's only worded for getElementsByTagNameNS, but not for
>> getElementsByTagName.  Maciej noticed as well difference between
>> getElementsByTagName and other getElementsBy queries (see
>> http://www.w3.org/Bugs/Public/show_bug.cgi?id=8792).  And word "new"
>> is missing from ECMAScript bindings spec:
>> http://www.w3.org/TR/DOM-Level-3-Core/ecma-script-binding.html
>>
>> Is it possible to allow caching for those cases?  Firefox caches those
>> node lists for a long time (Maciej found the related bug
>> https://bugzilla.mozilla.org/show_bug.cgi?id=140758).  IE8 caches as
>> well.   Opera, Safari and Chrome do not.
>>
>> Performance-wise it's a notable win (the less js objects one needs to
>> create, the more efficient and less memory consuming browser one
>> gets).  Given that node lists are live, what are the reasons for
>> mandating creation of new object per query?
>>
>> yours,
>> anton.
>>
>>
>
>
>

Received on Wednesday, 3 February 2010 01:33:57 UTC