Why would you want to use "." in an id.... In most web programming a "." or a "::" means its a node or part of a class or something.
This makes no sense to me why anyone would want to confuse js libraries and possible server side backends. ----- Original Message ----- From: "Mona Remlawi" <mona.reml...@gmail.com> To: <prototype-scriptaculous@googlegroups.com> Sent: Tuesday, July 21, 2009 10:28 AM Subject: [Proto-Scripty] Re: selectors failing in IE8&FF3 " .... ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). ... " [1] So if HTML permits a '.' in the ID value of elements, so should prototype core. Another point is that even if I rewrote my selectors, there would still be a problem in doing the following $('my\.long\.id').down('.myclass'); as prototype would translate this into : element.querySelectorAll('#my.long.id .myclass') I still insist that escaping 'special' chars in Element#identify method is the way to go ... [1] http://www.w3.org/TR/html4/types.html#type-name cheers -- mona On Tue, Jul 21, 2009 at 4:16 AM, Rick Waldron<waldron.r...@gmail.com> wrote: > I feel like i should provide more insight. That was rather vague. An ID > could be labelled "a.b:c" and referenced in your style sheet as #a.b:c but > as well as being the id of an element, it could mean: > > id "a", class "b", pseudo-selector "c". > > Best to avoid the confusion and stay away from using . and : altogether. > > > > > On Mon, Jul 20, 2009 at 10:10 PM, Rick Waldron <waldron.r...@gmail.com> > wrote: >> >> Instead of changing the way the core works... and potentially causing >> breakage to existing code - perhaps you might try rewriting your selector >> statement with escaped periods. >> >> This question caused me to read a bunch regarding valid id's from one >> html >> spec to another, and then double back to css selector specs. Apparently, >> they didn't compare notes... >> >> Rick >> >> >> >> >> On Mon, Jul 20, 2009 at 11:28 AM, Mona Remlawi <mona.reml...@gmail.com> >> wrote: >>> >>> You've guessed it, it's unfeasible, the amount of effort that takes >>> makes my head hurt :) >>> Anyway, i found the little bug in prototype (hooray!). >>> >>> IE8 and FF3 have their selectors go into 'selectorsAPI' mode, now into >>> some debugging (version: 1.6.0.3) >>> << >>> 2723: this.mode = 'selectorsAPI'; >>> ... >>> 2823: findElements: function(root) { >>> ... >>> 2837: case 'selectorsAPI': >>> ... >>> 2842: var oldId = root.id, id = $(root).identify(); >>> 2843: e = "#" + id + " " + e; >>> alert(e) // you'll see how the dots are confusing >>> the selector for classnames ... >>> >> >>> >>> Now for a fix, i changed the following line in Element#identify >>> << >>> 1782: if (id) return id.replace(/\./g, '\\.'); >>> >> >>> to escape the dots. >>> >>> with that, the unit test will succeed. >>> >>> I'm not sure if this is the best way to go around it, or if there is >>> another chars for escaping, so it's in your hands now. >>> >>> Waiting for the feedback and hopefully a patch :) >>> >>> cheers >>> >>> -- >>> mona >>> >>> On Mon, Jul 20, 2009 at 5:06 PM, Richard >>> Quadling<rquadl...@googlemail.com> wrote: >>> > >>> > 2009/7/20 Mona Remlawi <mona.reml...@gmail.com>: >>> >> >>> >> Hello prototypers, >>> >> >>> >> I'm getting a basic error (in selectors) in *IE8/FF3* and don't think >>> >> anyone has reported it yet -- or maybe did, i searched but not >>> >> extensively. >>> >> The problem is that the Element#selector fails when invoked on an >>> >> Element that has a '.' in its id. >>> >> I've put a small unit test on pastie, you just need to get a copy of >>> >> unittest.js from scriptaculous (and test.css if you like colors :) ) >>> >> http://pastie.org/552134 >>> >> >>> >> Tested with both version#1.6.0.3 and version#1.6.1RC#3 with the same >>> >> results. >>> >> >>> >> Any help is greatly appreciated, I'm trying to debug on my own but >>> >> doubt i'll reach somewhere. >>> >> >>> >> cheers >>> >> >>> >> -- >>> >> mona >>> >> >>> >> > >>> >> >>> > >>> > I don't know how feasible it it, but maybe globally changing your IDs >>> > to use "_" rather than "." would be a quick and easy fix. >>> > >>> > >>> > >>> > -- >>> > ----- >>> > Richard Quadling >>> > Zend Certified Engineer : >>> > http://zend.com/zce.php?c=ZEND002498&r=213474731 >>> > "Standing on the shoulders of some very clever giants!" >>> > ZOPA : http://uk.zopa.com/member/RQuadling >>> > >>> > > >>> > >>> >>> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---