Whoa, whoa! The old Netscape 4.x document.layers DOM is not supported by Mozilla or Netscape 6, never has and never will be. You must use the W3C DOM (http://www.w3.org/DOM/) instead. See http://developer.netscape.com/evangelism/docs/articles/updating-dhtml-web-pages/ for a good introduction.
Sean wrote: > Ok, > > Now let's try it with a layer and see if it still works! > > I get no errors from the concole and no output to the screen > in Mozilla, but again this is ok in Netscape 4.7x. > > If I'm doing something stupid please point it out! > > Sean > > <html> > <head> > <title>Layer Test</title> > <script language="JavaScript1.2"> > > docText = ''; > var CR = String.fromCharCode( 13 ); > var depth = 0; > var docText = '<h1>Menu</h1>' + CR; > > function Node( name, data, url, pRef ) { > > this.name = name; > this.data = data; > this.url = url; > this.pRef = pRef; > this.kids = new Array(); > this.add = addKid; > this.paint = paintNode; > this.toggle = toggleNode; > this.dump = dumpNode; > > }; > > function addKid( p, k ) { > > var subscripts = new Array(); > subscripts = p.split( ',' ); > pRef = 'menu'; > for ( var i in subscripts ) { > if ( subscripts[ i ] !='' ) { > pRef = pRef + '.kids[' + eval( subscripts[ i ] ) + ']'; > }; > }; > pRef = pRef + '.kids'; > kids = eval( pRef ); > var temp = new Array( ( kids.length + 1 ) ); > if ( kids.length > 0 ) { > for ( var i in kids ) { > temp[ i ] = kids[ i ]; > }; > }; > temp[ kids.length ] = new Node( k, 1, k + '.html', pRef + '[' + > kids.length + ']' ); > eval( pRef + ' = temp' ); > eval( k + ' = kids.length' ); > > }; > > function paintNode() { > docText = docText + '<br>'; > if ( depth > 0 ) { > for ( i = 0; i < depth; i++ ) { > docText = docText + ' '; > }; > }; > > if ( this.kids.length != 0 ) { > docText = docText + '<a href="JavaScript:' + this.pRef + > '.toggle();rePaint();"><b>' + this.name + '</b></a>' + CR; > } else { > docText = docText + '<a href="' + this.url + '">' + this.name + > '</a>' + CR; > }; > > if ( this.data > 0 ) { > depth = depth + 1; > for ( i in this.kids ) { > this.kids[ i ].paint(); > }; > depth = depth - 1; > }; > }; > > function toggleNode() { > this.data = ( ( this.data + 1 ) % 2 ); > }; > > function dumpNode() { > alert( 'name: ' + this.name + ' data: ' + this.data + ' url: ' + > this.url + ' kids: ' + this.kids.length ); > for ( i in this.kids ) { > this.kids[ i ].dump(); > }; > }; > > // build the menu > menu = new Node( 'root', 1 , 'root' ); > menu.add( '', 'Evaluation' ); > menu.add( 'Evaluation', 'History' ); > menu.add( 'Evaluation', 'Physical' ); > menu.add( 'Evaluation', 'Laboratory' ); > menu.add( 'Evaluation', 'Imaging' ); > menu.add( 'Evaluation,Imaging', 'Radiology' ); > menu.add( 'Evaluation,Imaging', 'Ultrasound' ); > menu.add( 'Evaluation,Imaging', 'CT' ); > menu.add( 'Evaluation,Imaging', 'MRI' ); > menu.add( 'Evaluation,Imaging', 'Angiography' ); > menu.add( '', "Therapy" ); > > function rePaint() { > > docText = ''; > // paint the menu > for ( i in menu.kids ) { > menu.kids[ i ].paint(); > }; > > if ( navigator.appName == "Netscape" ) { > > // write the page to the frame > with ( document.xmenu.document ) { > close(); > open( "text/html", "replace" ); > writeln( docText ); > close(); > }; > }; > if ( navigator.appName == "Microsoft Internet Explorer" ) { > xmenu.innerHTML = docText; > }; > }; > > </script> > </head> > <body bgcolor=white onLoad="rePaint();"> > <script language="JavaScript1.2"> > > if ( navigator.appName == "Netscape" ) { > document.write( '<LAYER NAME="xmenu" LEFT=8 width=256 > BGCOLOR=white></LAYER>' ); > }; > > if ( navigator.appName == "Microsoft Internet Explorer" ) { > document.write( '<DIV ID="xmenu"></DIV>'); > }; > > </script> > > </body> > </html> >