- From: Sean Hogan <shogun70@westnet.com.au>
- Date: Mon, 11 Jan 2010 15:58:09 +1100
- To: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- CC: public-webapps <public-webapps@w3.org>
On 11/01/10 8:29 AM, Lachlan Hunt wrote:
> Sean Hogan wrote:
>> On 8/01/10 1:19 AM, Lachlan Hunt wrote:
>>> can we publish Selectors API Level 2 as an FPWD?
>>>
>>> http://dev.w3.org/2006/webapi/selectors-api2/
>>
>
>> I can't see the value of queryScopedSelector*() methods. The original
>> rationale was that JS libs could potentially drop their selector
>> engines, but this isn't facilitated by the proposed methods. Given that
>> JS libs will still have to parse the selectors it is a trivial step
>> to call
>> querySelector*(rewrittenSelector, refNode)
>> rather than
>> queryScopedSelector*(rewrittenSelector)
>
> Personally, I agree and was initially hesitant about adding it, but
> there were some reasonable arguments put forth suggesting that lifting
> the burden of pre-processing the selector to prepend :scope from JS
> libs would be useful [1]. Evidence to the contrary would be helpful.
> John Resig also once told me he had an alternative proposal, but he
> hasn't yet shared it with me.
>
That's my point - in its current form queryScopedSelector*() doesn't
lift that burden of pre-processing.
I don't know about all selector engines, but jQuery, for example, has
several non-standard selectors that will continue to require
pre-processing.
:first, :last, :even, :odd, :eq(), :gt(), :lt(), :header, :animated,
:contains(), :has(), :parent,
:input, :text, :password, :radio, :checkbox, :submit, :image, :reset,
:button, :file
Even if jQuery deprecates non-standard selectors, the current spec for
queryScopedSelector*() doesn't support the jQuery implicitly "scoped"
selector "> *".
>> The queryScopedSelector*() methods have misleading names - they don't
>> match the definition of scope.
>> It would be ridiculous to stick with those names if there are no
>> implementations already out there.
>
> Do you have a better alternative suggestion?
>
>> Similarly, the :scope pseudo-class has a misleading name.
>
> I've tried various alternative names, like :context, :reference, etc.,
> but so far scope seems to be the least objectionable. But all things
> considered, I don't think :scope is a particularly bad name, since
> it's name somewhat describes it's purpose and relates it to its
> utility in scoped stylesheets.
>
:reference matches the text of the spec. :context would be second choice
I guess.
I seem to recall :ref-node and :context-node also being suggested.
:scope only describes its purpose in specific cases - queries with one
of the following forms:
element.queryScopedSelector(":scope *")
element.queryScopedSelector(":scope > *")
In the following forms :scope is misleading:
element.queryScopedSelector(":scope + *")
element.queryScopedSelector(":scope ~ *")
and especially:
element.querySelector("* :scope *", refNode)
Received on Monday, 11 January 2010 04:58:54 UTC