Thanks very much for pointing me in the right direction on this. I wonder if there should be somewhere a caveat to the effect that $$ will only work correctly with a proper doctype. Are there other features of prototype or scriptaculous with a similar dependency?. I'll look after getting the ticket open, as well as finding out more about the doctype directive. This is a very responsive list, and I really appreciate the help.
--Jay On Nov 20, 3:57 am, "T.J. Crowder" <[EMAIL PROTECTED]> wrote: > @Jay: > > > Not sure why you think we can ignore the scenario where the case of > > the ID is different > > You're absolutely right, we can't. I don't know why I thought that, > either. :-) > > @kangax: > > > Does this also happen with a valid doctype? > > Gah! Good catch, kangax. No, it doesn't! All of the browsers work > with the mixed case with a proper doctype, and FF, Safari, and Opera > correctly return empty lists with we give the wrong case in our > selector. > > IE6 still incorrectly finds the elements with the ID selector (though > not with class selectors) when we give the wrong case. So there's an > issue on IE, these two selectors work find element 'aBc1' when they > shouldn't: > > $$('table#abc1') > $$('#abc1') > > ...although these don't find the td.De class things when then > shouldn't: > > $$('#abc1 td.de') > $$('td.de') > > Jay, could you open a ticket on lighthouse for that? I don't know > that it'll get any kind of priority given how bad IE is about IDs in > general (its document.getElementById also ignores case, and for that > matter will happily return an element with the given value as a name > rather than as an ID). But since Prototype does try to smooth out > browser diffs. $('abc1'), since it uses the underlying > document.getElementById, also has this case-insensitivity issue on IE. > > http://prototypejs.org/contribute > > Thanks again for raising this, Jay. > -- > T.J. Crowder > tj / crowder software / com > > On Nov 20, 4:11 am, kangax <[EMAIL PROTECTED]> wrote: > > > On Nov 19, 5:46 pm, Jay <[EMAIL PROTECTED]> wrote: > > > > I was trying to scale down the example to the essence of the issue. Of > > > course, $('Contents') should be interchangeable with $$('#Contents'), > > > except that is the bug - it doesn't work on Safari or IE. In the real > > > world, I might want the selector to be more like $$('table#tblTMRoster > > > tbody tr td.countChecked'+i) - while there may be many tables with > > > such cells, I only want one table's worth. Another bug for another day > > > is this: even if there is only one table in the page, $$('tbody tr > > > td.countChecked'+i) returns not only the td's in the tbody, but also > > > the ones in the tfoot, and the only workaround I could come up with > > > was to prepend the table id on the selector to make it work. > > > > Finally, while one assumes id's ought to be unique, $$('#contents') > > > returns an array of all elements with any case-variations like > > > contents, Contents, conTents, whatever. At least that bug is on > > > Safari, however not in Firefox nor IE. So again, if there is any way > > > to make Prototype.js wrap up these browser inconsistencies, it would > > > be a boon for the programmer. > > > Does this also happen with a valid doctype? > > > > Cheers, > > > --Jay > > > [...] > > > -- > > kangax --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to firstname.lastname@example.org To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---