On 11/01/10 8:55 PM, Lachlan Hunt wrote:
In the following forms :scope is misleading:
element.queryScopedSelector(":scope + *")
element.queryScopedSelector(":scope ~ *")
What's misleading about that? :scope would match the context node
(what the element variable points to), and would return its sibling
elements.
The definition of scope is (something like) " an area in which something
acts or operates or has power or control". The examples above can return
nodes that are not within :scope. Therefore :scope is misleading.
and especially:
element.querySelector("* :scope *", refNode)
Again, how is that misleading? :scope matches whichever element
refNode points to, and then follows the normal rules for evaluating
querySelector. Given that selector, any descendents of refNode that
are also descendents of element (the context node) will be matched,
the first of which will be returned.
In this example, the node represented by :scope isn't the boundary for
the selection at all.
In one sense, element is the scope because any matched node must be
descended from element.
In another sense (the sense being used in this discussion), document is
the scope, because document.documentElement is the upper bounds for
matching the first "*" in the selector.
In summary, the proposed :scope pseudo-class only acts as a scope for
the query in special cases, not in the general case.