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.

Reply via email to