Forum Moderators: open

Message Too Old, No Replies

Script only works without doc type declaration, please help

something strange in Netscape 7+

         

Rancid_Swan

9:09 am on Sep 1, 2004 (gmt 0)

10+ Year Member



Ok, I've got this scrolling text javascript which was has been cleaned up a little so that it validates on the W3 Validator.

<script type="text/javascript">

//configure the below five variables to change the style of the scroller
var scrollerdelay='3300' //delay between msg scrolls. 3000=3 seconds.
var scrollerwidth='230px'
var scrollerheight='73px'
var scrollerbgcolor='white'
//set below to '' if you don't wish to use a background image
var scrollerbackground=''

//configure the below variable to change the contents of the scroller
var messages=new Array();
messages[0]="<ul class='scrolling1'><li style='padding-bottom:7px; padding-top:-3px;'><a href='/inlandrevenue'>Contact Centre Vacancies with the Inland Revenue<\/a><\/li><li><a href='/parkdean'>Interim Finance vacancies at Parkdean Holidays<\/a><\/li><\/ul>";
messages[1]="<ul class='scrolling1'><li style='padding-bottom:7px'><a href='/npower'>npower are recruiting Team Leaders in Newcastle<\/a><\/li><li><a href='/nbs'>Contact Centre vacancies at Newcastle Building Society<\/a><\/li><\/ul>";
messages[2]="<ul class='scrolling1'><li style='padding-bottom:7px'><a href='/tsg'>Sales Director position at Technology Services Group<\/a><\/li><li><a href='/barclays'>Barclays are recruiting Team Leaders in Sunderland<\/a><\/li><\/ul>";
messages[3]="<ul class='scrolling1'><li style='padding-bottom:7px'><a href='/lsc'>Project Manager vacancies at the Legal Services Commission<\/a><\/li><li><a href='/nrg'>Exciting Recuitment positions at the NRG Group<\/a><\/li><\/ul>";

///////Do not edit pass this line///////////////////////

var ie=document.all
var dom=document.getElementById

if (messages.length>2)
i=2
else
i=0

function move1(whichlayer){
tlayer=eval(whichlayer)
if (tlayer.top>0 && tlayer.top<=5){
tlayer.top=0
setTimeout("move1(tlayer)",scrollerdelay)
setTimeout("move2(document.getElementById('scroller').document.second)",scrollerdelay)
return
}
if (tlayer.top>=tlayer.document.height*-1){
tlayer.top-=5
setTimeout("move1(tlayer)",50)
}
else{
tlayer.top=parseInt(scrollerheight)
tlayer.document.write(messages[i])
tlayer.document.close()
if (i==messages.length-1)
i=0
else
i++
}
}

function move2(whichlayer){
tlayer2=eval(whichlayer)
if (tlayer2.top>0 && tlayer2.top<=5){
tlayer2.top=0
setTimeout("move2(tlayer2)",scrollerdelay)
setTimeout("move1(document.getElementById('scroller').document.first)",scrollerdelay)
return
}
if (tlayer2.top>=tlayer2.document.height*-1){
tlayer2.top-=5
setTimeout("move2(tlayer2)",50)
}
else{
tlayer2.top=parseInt(scrollerheight)
tlayer2.document.write(messages[i])
tlayer2.document.close()
if (i==messages.length-1)
i=0
else
i++
}
}

function move3(whichdiv){
tdiv=eval(whichdiv)
if (parseInt(tdiv.style.top)>0 && parseInt(tdiv.style.top)<=5){
tdiv.style.top=0+"px"
setTimeout("move3(tdiv)",scrollerdelay)
setTimeout("move4(second2_obj)",scrollerdelay)
return
}
if (parseInt(tdiv.style.top)>=tdiv.offsetHeight*-1){
tdiv.style.top=parseInt(tdiv.style.top)-5+"px"
setTimeout("move3(tdiv)",50)
}
else{
tdiv.style.top=parseInt(scrollerheight)
tdiv.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++
}
}

function move4(whichdiv){
tdiv2=eval(whichdiv)
if (parseInt(tdiv2.style.top)>0 && parseInt(tdiv2.style.top)<=5){
tdiv2.style.top=0+"px"
setTimeout("move4(tdiv2)",scrollerdelay)
setTimeout("move3(first2_obj)",scrollerdelay)
return
}
if (parseInt(tdiv2.style.top)>=tdiv2.offsetHeight*-1){
tdiv2.style.top=parseInt(tdiv2.style.top)-5+"px"
setTimeout("move4(second2_obj)",50)
}
else{
tdiv2.style.top=parseInt(scrollerheight)
tdiv2.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++
}
}

function startscroll(){
if (ie¦¦dom){
first2_obj=ie? first2 : document.getElementById("first2")
second2_obj=ie? second2 : document.getElementById("second2")
move3(first2_obj)
second2_obj.style.top=scrollerheight
second2_obj.style.visibility='visible'
}
else if (document.layers){
document.getElementById('scroller').visibility='show'
move1(document.getElementById('scroller').document.first)
document.getElementById('scroller').document.second.top=parseInt(scrollerheight)+5
document.getElementById('scroller').document.second.visibility='show'
}
}

window.onload=startscroll

</script>

<div id="scroller" style=" width:230px; margin: auto auto; visibility:hidden; " >
<div id="first" style=" left:0; top:1px; width:230px; " >

<script type="text/javascript" >
if (document.layers) {
document.write(messages[0]);
}
</script>

</div><!-- first //-->
<div id="second" style=" left:0; top:0; width:230px; margin: auto auto; visibility:hidden; " >

<script type="text/javascript" >
if (document.layers) {
document.write(messages[dyndetermine=(messages.length==1)? 0 : 1]);
}
</script>
</div><!-- second //-->
</div><!-- scroller //-->

<script type="text/javascript" >
if (ie¦¦dom){
document.writeln('<div id="scroller2" style=" position:relative; width:230px; height:73px; overflow:hidden; ">')
document.writeln('<div style="position:absolute; width:230px; height:73px; clip:rect(0 230px 73px 0); left:0px; top:0px">')
document.writeln('<div id="first2" style="position:absolute; width:230px; left:0px; top:1px; ">')
document.write(messages[0])
document.writeln('<\/div>')
document.writeln('<div id="second2" style="position:absolute; width:230px; left:0px; top:0px; visibility:hidden">')
document.write(messages[dyndetermine=(messages.length==1)? 0 : 1])
document.writeln('<\/div>')
document.writeln('<\/div>')
document.writeln('<\/div>')
}
</script>

It works perfectly in IE5+

[nrgplc.com...]

but in Netscape 7 it only scrolls the first two messages and then dissapears forever... Unless I remove the page's doc type declaration, and then it works fine!

Does anyone know what's causing this, any help would be greatly appreciated.

Thanks
Marcus

StupidScript

11:12 pm on Sep 1, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Can we assume that the entire page passes the W3C validation with the DTD in place? Which DTD are you using (please paste code)? Did you also include a "charset" META tag? Did that validate?

Rancid_Swan

4:08 pm on Sep 20, 2004 (gmt 0)

10+ Year Member



Hi StupidScript

Yes, the whole page validates with the DTD, and yes it has a charset specified...

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

What I've now realised is that when viewing on Netscape, if I use the following dtd

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

the Netscape doesn't like it, and only displays the first two messages, but if I remove the link from the DTD ie use this...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

then it works OK.

Any ideas why this would be?

Thanks
Marcus