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/

Reply via email to