Hi, > I see, thanks for the explanation. Boy, I sure do hate IE. I presume > that IE8 does do prototypes, which is why it worked there?
I don't think I knew that. But apparently so: http://pastie.org/913799 > Speaking of IE8, you seem to be the/a resident guru... Far from it. :-) > ...so I don't > suppose you have any advice about my other post regarding Sound.play > and IE8? No, I'd've posted there if I did. I've never used scripty's sound stuff. -- T.J. On Apr 11, 6:40 am, Junkshops <junksh...@gmail.com> wrote: > I see, thanks for the explanation. Boy, I sure do hate IE. I presume > that IE8 does do prototypes, which is why it worked there? > > Speaking of IE8, you seem to be the/a resident guru, so I don't > suppose you have any advice about my other post regarding Sound.play > and IE8? I'm flabbergasted that it works (mostly) in crappy old IE6 > but not in 8. I'd *really* like to ditch flash, and it'd kill me if I > have to keep it just for one browser. > > Thanks again for the advice, much appreciated. > > Cheers, Junk > > On Apr 10, 10:25 pm, "T.J. Crowder" <t...@crowdersoftware.com> wrote: > > > > > Hi, > > > > That was definitely one of the problems, thanks very much. > > > Cool! > > > > Sigh, it's due to the native getElementsByTagName call rather than > > > using element.select in the constructor. That'll teach me to copy code > > > without really understanding it... although it's a bit weird it worked > > > at all. > > > It worked on Firefox and such, and not on IE, because on Firefox and > > such the DOM objects participate in JavaScript's prototypical > > inheritance, and so Prototype is able to extend the prototypes with > > its syntax sugar, which means all instances automatically get the > > sugar.[1] IE's DOM objects aren't really JavaScript objects at all and > > don't have prototypes, so each individual object has to be extended > > directly whenever you get it from the DOM. > > > -- T.J. :-) > > > On Apr 11, 3:02 am, Junkshops <junksh...@gmail.com> wrote: > > > > Sigh, it's due to the native getElementsByTagName call rather than > > > using element.select in the constructor. That'll teach me to copy code > > > without really understanding it... although it's a bit weird it worked > > > at all. > > > > Thanks again for the help. > > > > Cheers, Junk > > > > On Apr 10, 5:56 pm, Junkshops <junksh...@gmail.com> wrote: > > > > > Hi again, > > > > > That was definitely one of the problems, thanks very much. > > > > Unfortunately IE still wants to make my life miserable as much as > > > > possible, the dirty bastard. Here's the new error that makes no sense > > > > to me: > > > > > Webpage error details > > > > > User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; > > > > Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR > > > > 3.5.30729; .NET CLR 3.0.30729) > > > > Timestamp: Sun, 11 Apr 2010 00:46:41 UTC > > > > > Message: Object doesn't support this property or method > > > > Line: 18 > > > > Char: 3 > > > > Code: 0 > > > > URI:http://[redacted]/newsite/js/tabber.js > > > > > Here's tabber.js: > > > > /* > > > > * Borrows heavily (mostly? [entirely?]) from Fabtabulous: > > > > *http://tetlaw.id.au/view/blog/fabtabulous-simple-tabs-using-prototype/ > > > > */ > > > > > var AjaxTabber = Class.create({ > > > > initialize: function(ele) { > > > > var ele = $(ele); > > > > this.menu = $A(ele.getElementsByTagName('li')); > > > > this.menu.each(this.setupTab.bind(this)); > > > > var selected = this.menu.detect(function(elm) { > > > > return (elm.hasClassName('selected')); > > > > }); > > > > this.show(selected); > > > > }, > > > > > setupTab: function(element) { > > > > element.observe('click', > > > > this.activate.bindAsEventListener(this)); > > > > }, > > > > > activate: function(ev) { > > > > var elm = Event.findElement(ev, 'li'); > > > > Event.stop(ev); > > > > this.show(elm); > > > > this.menu.without(elm).each(this.hide.bind(this)); > > > > }, > > > > > hide: function(elm) { > > > > $(elm).removeClassName('selected'); > > > > }, > > > > > show: function(elm) { > > > > $(elm).addClassName('selected'); > > > > var link = elm.down('a').readAttribute('href'); > > > > link = 'ajax/' + link; > > > > $('centercontent').update('<div > > > > style="text-align:center"><img > > > > src="images/ajax-loader.gif"></div>'); > > > > new Ajax.Updater('centercontent', link, {evalScripts: > > > > 'true', > > > > method: 'post'}); > > > > } > > > > > }); > > > > > So the error is on the element.observe call in setupTab. But that > > > > looks fine to me... anyone kind enough to clue me in? > > > > > Cheers, > > > > > Junk > > > > > On Apr 9, 11:39 pm, "T.J. Crowder" <t...@crowdersoftware.com> wrote: > > > > > > Hi, > > > > > > > Basically my js works fine in FF, IE8, and safari, but completely > > > > > > fails in IE6. The relevant source is below: > > > > > > Nothing jumped out in the source (but then, there was virtually no > > > > > source to look at! :-) ), but usually this means you have a dangling > > > > > comma somewhere, like this: > > > > > > var AjaxTabber = Class.create({ > > > > > > initialize: function() { > > > > > // ... > > > > > }, > > > > > > nifty: function() { > > > > > // ... > > > > > }, > > > > > > spiffy: function() { > > > > > // ... > > > > > }, // <==== The problem is here > > > > > > }); > > > > > > Most JavaScript implementations are fine with that, but IE6 and 7 > > > > > choke on it (IE8 is fine). (The same is true of array literals.) I > > > > > *think* I read something from someone saying the new standard (5th > > > > > edition) says it should be supported (but don't quote me, I haven't > > > > > found that part of the spec yet) which may account for it being > > > > > supported in the new JScript engine in IE8, as Microsoft are much more > > > > > engaged than they've been in a decade. > > > > > > Anyway, that's usually what causes this sort of thing, although the > > > > > error is usually "Expected identifier, string, or number". If you > > > > > don't find any of those, you'll probably have to post more code. > > > > > > HTH, > > > > > -- > > > > > T.J. Crowder > > > > > Independent Software Consultant > > > > > tj / crowder software / comwww.crowdersoftware.com > > > > > > On Apr 10, 1:38 am, Junkshops <junksh...@gmail.com> wrote: > > > > > > > Hi all, > > > > > > > I'm very much a prototype/js newb and I'm working on my first site. > > > > > > I've searched around for an answer to this question but apparently > > > > > > my > > > > > > google-fu is weak. Hopefully someone here might be able to point me > > > > > > in > > > > > > the right direction. > > > > > > > Basically my js works fine in FF, IE8, and safari, but completely > > > > > > fails in IE6. The relevant source is below: > > > > > > > main html file header: > > > > > > <script type="text/javascript" src="js/prototype.js"></script> > > > > > > <script type="text/javascript" src="js/tabber.js"></script> > > > > > > <script type="text/javascript" src="swfobject.js"></script> > > > > > > <script type="text/javascript" src="js/scriptaculous.js? > > > > > > load=effects,builder"></script> > > > > > > <script type="text/javascript" src="js/lightbox.js"></script> > > > > > > <script type="text/javascript" src="js/initSite.js"></script> > > > > > > > tabber.js: > > > > > > /* > > > > > > * Borrows heavily (mostly? [entirely?]) from Fabtabulous: > > > > > > *http://tetlaw.id.au/view/blog/fabtabulous-simple-tabs-using-prototype/ > > > > > > */ > > > > > > > var AjaxTabber = Class.create({ > > > > > > //class code here > > > > > > > }); > > > > > > > initSite.js: > > > > > > document.observe('dom:loaded', function() { > > > > > > new AjaxTabber('tablist'); > > > > > > //more irrelevant code here > > > > > > > }); > > > > > > > When I enable debugging in IE6 and load the site I get the following > > > > > > error in a popup dialog: "Line 3, Char 2. Error: 'AjaxTabber' is > > > > > > undefined. Code: 0". Curiously the line number given for the error > > > > > > doesn't match the location of the AjaxTabber text in either of the > > > > > > files above, but those two places are the only places in the > > > > > > codebase > > > > > > where that text appears. > > > > > > > AjaxTabber clearly is defined earlier in the js load sequence, so I > > > > > > don't understand what's wrong. If anyone can offer me any advice I'd > > > > > > appreciate it. > > > > > > > One final comment: This project has taught me how to hate. IE, > > > > > > specifically. > > > > > > > Cheers, > > > > > > Junk -- 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-scriptacul...@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.