Hi,
The matchesSelector() method has been implemented by both Mozilla [1]
and WebKit [2], and we are implementing the same level of support for it
as they did (without support for :scope or refNodes parameter).
However, both Mozilla and WebKit opted to implement it using prefixed
methods, and I'm wondering if people from Mozilla and WebKit could
explain their justification for using a prefix?
We are thinking that implementing with a prefix as
Element.oMatchesSelector() is unnecessary because:
1. Using refNodes without using the :scope selector has no effect and
additional parameters are just ignored.
e.g. el.matchesSelector("a", [el1, el2]); works now as defined.
2. Using the :scope selector in existing implementations will throw a
syntax error.
This means that if a script in the future wants to use a selector with
:scope, they will still be able to detect whether or not a given browser
supports it using a try/catch block.
e.g.
try {
var x = el.matchesSelector(":scope>a", [el1]);
} catch (e) {
// Use alternative technique here to check.
}
3. The existing querySelector methods also don't have a prefix, but
selectors api 2 also extends those in the same way with refNodes. This
should not be a problem for those methods.
Therefore, I would like to get feedback from others, particularly the
Mozilla and WebKit developers about this approach, and find out whether
Mozilla and WebKit will also consider dropping the prefix?
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=518003
[2] https://bugs.webkit.org/show_bug.cgi?id=29703
--
Lachlan Hunt - Opera Software
http://lachy.id.au/
http://www.opera.com/