Re: QSA, the problem with ":scope", and naming

On Tue, Oct 18, 2011 at 6:00 PM, Erik Arvidsson <arv@chromium.org> wrote:
> On Tue, Oct 18, 2011 at 09:42, Alex Russell <slightlyoff@google.com> wrote:
>> Ah, but we don't need to care what CSS thinks of our DOM-only API. We
>> can live and let live by building on ":scope" and specifying find* as
>> syntactic sugar, defined as:
>>
>>  HTMLDocument.prototype.find =
>>  HTMLElement.prototype.find = function(rootedSelector) {
>>     return this.querySelector(":scope " + rootedSelector);
>>   }
>>
>>   HTMLDocument.prototype.findAll =
>>   HTMLElement.prototype.findAll = function(rootedSelector) {
>>     return this.querySelectorAll(":scope " + rootedSelector);
>>   }
>
> I like the way you think. Can I subscribe to your mailing list?

Heh. Yes ;-)

> One thing to point out with the desugar is that it has a bug and most
> JS libs have the same but. querySelectorAll allows multiple selectors,
> separated by a comma and to do this correctly you need to parse the
> selector which of course requires tons of code so no one does this.
> Lets fix that by building this into the platform.

I agree. I left should have mentioned it. The resolution I think is
most natural is to split on "," and assume that all selectors in the
list are ":scope" prefixed and that. A minor point is how to order the
items in the returned flattened list are ordered (document order? the
natural result of concat()?).

Received on Tuesday, 18 October 2011 23:39:34 UTC