Okay I found some interesting failures. If you want to have a look see again (http://nathansweet.me/queryselectorall-rundown). The general sibling selector, ie tilde, ie "~", fails to return. The matches selector fails on the first call for me, I'm going to try some others. This is the last you'll hear from me for a while on the subject until I have a whole test suite going and I'm sure my selectors are failing for the right reasons.
On Sun, May 29, 2011 at 10:33 AM, Diego Perini <[email protected]>wrote: > On Sun, May 29, 2011 at 4:29 PM, Nathan Sweet <[email protected]> > wrote: > >>>The only selector string failing in your tests is the ".1st-p" which > >>>correctly fails since the class name does not correspond to a valid > >>>identifier. > > Fixed. Thanks for the heads up. > > TOALL: > > Doesn't anybody know of any interesting failures with qSA? I'm not saying > it > > to be smug, I can't find any. I'm sure that it fails on some pseudos. > > > Nathan, > I am sure I don't cover everything in my feature testing but the block > of code handling that in NWMatcher could be a start, it is commented > and includes external links to related readings: > > https://github.com/dperini/nwmatcher/blob/master/src/nwmatcher.js#L328 > > that block is specific for bugs related to the "querySelectorAll" > method. You should probably expect the same bugs be present in the > "querySelector" method. > > One very annoying bug is in the Webkit/Chrome implementation of the > "matchesSelector" method (WebkitMatchesSelector), the problem seems to > be that first call return correct results while second and further > calls will return incorrect results. This bug happens with indexed > structural pseudo-classes like ":nth-child()", see this bug for more > informations and a small test: > > http://code.google.com/p/chromium/issues/detail?id=78266 > > Hope this gives you enough material to start with ;-) > > > -- > Diego > > > > On Sun, May 29, 2011 at 1:42 AM, Diego Perini <[email protected]> > > wrote: > >> > >> Nathan, > >> the "querySelectorAll" method exists also on IE 8 in Standard Mode. > >> > >> In all IE versions < 9 there are problem with the "Universal selector" > >> since their API methods returns text nodes included in the result set. > >> This is not only a problem with "querySelectorAll", in fact on IE < 9 > >> also "getElementsByTagName" has the same problems with text nodes. > >> > >> There are several other bugs in IE < 9 related to elements selection > >> API. The baseline for IE is that after retrieving the NodeList one > >> need to go through it members discarding text nodes, comments and > >> invalid elements. > >> > >> The conditional I prefer to use to filter appropriate nodes from the > list > >> is: > >> > >> if (element.nodeName > '@') { > >> .... // it is an Element node > >> } > >> > >> also the standard one is: > >> > >> if (element.nodeType == 1) { > >> .... // it is an Element node > >> } > >> > >> I prefer the first since it also helps discard fake "closed tags" > >> elements for non recognized HTML5 elements, for example: > >> > >> <abbr>NYC</abbr> > >> > >> could be recognized as two elements in some IE version <= 8, the first > >> is the open tag "abbr", the second is the close tag "/abbr" which > >> tagName/nodeName starts with a slash. > >> > >> The only selector string failing in your tests is the ".1st-p" which > >> correctly fails since the class name does not correspond to a valid > >> identifier. > >> > >> > >> -- > >> Diego > >> > >> > >> > >> On Sun, May 29, 2011 at 7:34 AM, Nathan Sweet <[email protected]> > >> wrote: > >> >>>Whats the difference in Chrome, FF? nodelist is non-live in all of > >> >>> them. > >> > When I said unlike the others I meant the other IE versions, not the > >> > other > >> > browsers, my bad : > >> > It's kind of a moot point anyways, if it was implemented in <IE9 then > it > >> > might have been implemented correctly. What I was referring to is that > >> > in > >> > <IE9 a lot of the selectors return nodelists that include intermittent > >> > text > >> > nodes for the empty spaces, whereas other browsers don't do that. I > was > >> > referring to this particular quirk in <IE9, which prevents > >> > Array.prototype.slice.call from being cross-browser friendly for node > >> > lists > >> > for certain selector methods. Someone once told me that some libraries > >> > remove all the white space between elements, but I don't actually see > >> > how > >> > that could help as a spaced out innerHTML assignment could easily foul > >> > it > >> > up. > >> > > >> > On Sat, May 28, 2011 at 10:14 PM, Andrew Dodson > >> > <[email protected]> > >> > wrote: > >> >> > >> >> Isn't that what its supposed > >> >> to http://www.w3.org/TR/selectors-api/#nodeselector > >> >> Whats the difference in Chrome, FF? nodelist is non-live in all of > >> >> them. > >> >> > >> >> > >> >> > >> >> On Sat, May 28, 2011 at 7:58 PM, Nathan Sweet < > [email protected]> > >> >> wrote: > >> >>> > >> >>> I meant <IE9, IE9 also only returns elements in its nodelists, > unlike > >> >>> the > >> >>> others. > >> >>> > >> >>> On Sat, May 28, 2011 at 7:54 PM, Andrew Dodson > >> >>> <[email protected]> wrote: > >> >>>> > >> >>>> querySelectorAll is enabled in IE9, checkout "ie9 testdrive". > >> >>>> > >> >>>> On 28 May 2011 19:50, "nathanJsweet" <[email protected]> > wrote: > >> >>>> > >> >>>> So I've been messing around with querySelectorAll. I've published > >> >>>> a blog post about it which can be found at "nathansweet.me/ > >> >>>> queryselectorall", > >> >>>> though I'm not really plugging the post, which actually doesn't > have > >> >>>> so > >> >>>> much information concerning the method as it does a link to a page > >> >>>> I've created that tests the method. > >> >>>> > >> >>>> I'm asking anybody in this group who is interested take a look > >> >>>> at this page (it can be found at "nathansweet.me/queryselectorall- > >> >>>> rundown") > >> >>>> and email me, respond to this post, or comment on the blog post any > >> >>>> other selector ideas they can come up with. My goal would be to > come > >> >>>> up with an exhaustive list of selectors that I could then run > through > >> >>>> a multitude of browsers (I would, of course, share the results). > I've > >> >>>> already come up with some interesting failures that shouldn't be > >> >>>> occurring, > >> >>>> and I'm also interested to hear from people who've worked with the > >> >>>> method extensively. > >> >>>> > >> >>>> Also am I wrong in thinking that since querySelectorAll isn't > >> >>>> implemented in IE > >> >>>> that it will always return only elements? Thus, is it safe to do > >> >>>> Array.prototype.slice.call > >> >>>> on any nodelist returned by querySelectorAll? I haven't thought of > a > >> >>>> case yet where > >> >>>> this wouldn't be a bad idea, let me know. > >> >>>> > >> >>>> Also, if nobody helps it's no big deal, as I will be adding > selectors > >> >>>> to it over the coming weeks, > >> >>>> so if you're into bookmarking it might be worth coming back for a > >> >>>> second or third look. > >> >>>> > >> >>>> -- > >> >>>> To view archived discussions from the original JSMentors Mailman > >> >>>> list: > >> >>>> http://www.mail-archive.com/[email protected]/ > >> >>>> > >> >>>> To search via a non-Google archive, visit here: > >> >>>> http://www.mail-archive.com/[email protected]/ > >> >>>> > >> >>>> To unsubscribe from this group, send email to > >> >>>> [email protected] > >> >>>> > >> >>>> -- > >> >>>> To view archived discussions from the original JSMentors Mailman > >> >>>> list: > >> >>>> http://www.mail-archive.com/[email protected]/ > >> >>>> > >> >>>> To search via a non-Google archive, visit here: > >> >>>> http://www.mail-archive.com/[email protected]/ > >> >>>> > >> >>>> To unsubscribe from this group, send email to > >> >>>> [email protected] > >> >>> > >> >>> -- > >> >>> To view archived discussions from the original JSMentors Mailman > list: > >> >>> http://www.mail-archive.com/[email protected]/ > >> >>> > >> >>> To search via a non-Google archive, visit here: > >> >>> http://www.mail-archive.com/[email protected]/ > >> >>> > >> >>> To unsubscribe from this group, send email to > >> >>> [email protected] > >> >> > >> >> -- > >> >> To view archived discussions from the original JSMentors Mailman > list: > >> >> http://www.mail-archive.com/[email protected]/ > >> >> > >> >> To search via a non-Google archive, visit here: > >> >> http://www.mail-archive.com/[email protected]/ > >> >> > >> >> To unsubscribe from this group, send email to > >> >> [email protected] > >> > > >> > -- > >> > To view archived discussions from the original JSMentors Mailman list: > >> > http://www.mail-archive.com/[email protected]/ > >> > > >> > To search via a non-Google archive, visit here: > >> > http://www.mail-archive.com/[email protected]/ > >> > > >> > To unsubscribe from this group, send email to > >> > [email protected] > >> > > >> > >> -- > >> To view archived discussions from the original JSMentors Mailman list: > >> http://www.mail-archive.com/[email protected]/ > >> > >> To search via a non-Google archive, visit here: > >> http://www.mail-archive.com/[email protected]/ > >> > >> To unsubscribe from this group, send email to > >> [email protected] > > > > -- > > To view archived discussions from the original JSMentors Mailman list: > > http://www.mail-archive.com/[email protected]/ > > > > To search via a non-Google archive, visit here: > > http://www.mail-archive.com/[email protected]/ > > > > To unsubscribe from this group, send email to > > [email protected] > > > > -- > To view archived discussions from the original JSMentors Mailman list: > http://www.mail-archive.com/[email protected]/ > > To search via a non-Google archive, visit here: > http://www.mail-archive.com/[email protected]/ > > To unsubscribe from this group, send email to > [email protected] > -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/[email protected]/ To search via a non-Google archive, visit here: http://www.mail-archive.com/[email protected]/ To unsubscribe from this group, send email to [email protected]
