помогите отладить скрипт
на просторах интернета нашёл скрипт, с помощью которого летают бабочки по экрану. в фф, ие, хроме работает. а в опере нехочет. не могу понять, почему
<script language="JavaScript1.2" type="text/javascript"> /* Flying Butterfly script (By BGAudioDr@aol.com) Modified slightly/ permission granted to Dynamic Drive to feature script in archive */ var Ymax=8; //MAX # OF PIXEL STEPS IN THE "X" DIRECTION var Xmax=8; //MAX # OF PIXEL STEPS IN THE "Y" DIRECTION var Tmax=10000; //MAX # OF MILLISECONDS BETWEEN PARAMETER CHANGES //FLOATING IMAGE URLS FOR EACH IMAGE. ADD OR DELETE ENTRIES. KEEP ELEMENT NUMERICAL ORDER STARTING WITH "0" !! var floatimages=new Array(); floatimages[0]='http://bater.ru/novosibirsk/templates/butterfly/images/flying_bater.gif'; floatimages[1]='http://bater.ru/novosibirsk/templates/butterfly/images/flying_bater.gif'; //*********DO NOT EDIT BELOW*********** var NS4 = (navigator.appName.indexOf("Netscape")>=0 && parseFloat(navigator.appVersion) >= 4 && parseFloat(navigator.appVersion) < 5)? true : false; var IE4 = (document.all)? true : false; var NS6 = (parseFloat(navigator.appVersion) >= 5 && navigator.appName.indexOf("Netscape")>=0 )? true: false; var wind_w, wind_h, t='', IDs=new Array(); for(i=0; i<floatimages.length; i++){ t+=(NS4)?'<layer name="pic'+i+'" visibility="hide" width="10" height="10"><a >' : '<div id="pic'+i+'" style="position:absolute; visibility:hidden;width:10px; height:10px; z-index: 100"><a >'; t+='<img src="'+floatimages[i]+'" name="p'+i+'" border="0">'; t+=(NS4)? '</a></layer>':'</a></div>'; } document.write(t); function moveimage(num){ if(getidleft(num)+IDs[num].W+IDs[num].Xstep >= wind_w+getscrollx())IDs[num].Xdir=false; if(getidleft(num)-IDs[num].Xstep<=getscrollx())IDs[num].Xdir=true; if(getidtop(num)+IDs[num].H+IDs[num].Ystep >= wind_h+getscrolly())IDs[num].Ydir=false; if(getidtop(num)-IDs[num].Ystep<=getscrolly())IDs[num].Ydir=true; moveidby(num, (IDs[num].Xdir)? IDs[num].Xstep : -IDs[num].Xstep , (IDs[num].Ydir)? IDs[num].Ystep: -IDs[num].Ystep); } function getnewprops(num){ IDs[num].Ydir=Math.floor(Math.random()*2)>0; IDs[num].Xdir=Math.floor(Math.random()*2)>0; IDs[num].Ystep=Math.ceil(Math.random()*Ymax); IDs[num].Xstep=Math.ceil(Math.random()*Xmax) setTimeout('getnewprops('+num+')', Math.floor(Math.random()*Tmax)); } function getscrollx(){ if(NS4 || NS6)return window.pageXOffset; if(IE4)return document.body.scrollLeft; } function getscrolly(){ if(NS4 || NS6)return window.pageYOffset; if(IE4)return document.body.scrollTop; } function getid(name){ if(NS4)return document.layers[name]; if(IE4)return document.all[name]; if(NS6)return document.getElementById(name); } function moveidto(num,x,y){ if(NS4)IDs[num].moveTo(x,y); if(IE4 || NS6){ IDs[num].style.left=x+'px'; IDs[num].style.top=y+'px'; }} function getidleft(num){ if(NS4)return IDs[num].left; if(IE4 || NS6)return parseInt(IDs[num].style.left); } function getidtop(num){ if(NS4)return IDs[num].top; if(IE4 || NS6)return parseInt(IDs[num].style.top); } function moveidby(num,dx,dy){ if(NS4)IDs[num].moveBy(dx, dy); if(IE4 || NS6){ IDs[num].style.left=(getidleft(num)+dx)+'px'; IDs[num].style.top=(getidtop(num)+dy)+'px'; }} function getwindowwidth(){ if(NS4 || NS6)return window.innerWidth; if(IE4)return document.body.clientWidth; } function getwindowheight(){ if(NS4 || NS6)return window.innerHeight; if(IE4)return document.body.clientHeight; } function init(){ wind_w=getwindowwidth(); wind_h=getwindowheight(); for(i=0; i<floatimages.length; i++){ IDs[i]=getid('pic'+i); if(NS4){ IDs[i].W=IDs[i].document.images["p"+i].width; IDs[i].H=IDs[i].document.images["p"+i].height; } if(NS6 || IE4){ IDs[i].W=document.images["p"+i].width; IDs[i].H=document.images["p"+i].height; } getnewprops(i); moveidto(i , Math.floor(Math.random()*(wind_w-IDs[i].W)), Math.floor(Math.random()*(wind_h-IDs[i].H))); if(NS4)IDs[i].visibility = "show"; if(IE4 || NS6)IDs[i].style.visibility = "visible"; startfly=setInterval('moveimage('+i+')',Math.floor (Math.random()*100)+100); }} function hidebutterfly(){ for(i=0; i<floatimages.length; i++){ if (IE4) eval("document.all.pic"+i+".style.visibility='hidd en'") else if (NS6) document.getElementById("pic"+i).style.visibility= 'hidden' else if (NS4) eval("document.pic"+i+".visibility='hide'") clearInterval(startfly) } } if (NS4||NS6||IE4){ window.onload=init; window.onresize=function(){ wind_w=getwindowwidth(); wind_h=getwindowheight(); } } </script> |
выкиньте это поделие десятилетней давности на свалку истории, и найдите... а еще лучше сами напишите новый скрипт
|
Цитата:
if (NS4||NS6||IE4){ window.onload=init;??? Скрипт написан для Netscape 4 или 6 или internet explorer 4!!! Так что закопай этот скрипт там, где откопал его:) |
послушался вашему мнению и выкинул скрипт. написал сам. на компе, в виде html страничке работает нормально. при прикручивании к cms, бабочка летать не хочет. я думаю, что косяк где-то со слоями. через margin-top и left смещается слой, а вот через скрипт не хочет
<script language="JavaScript"> var Tmax=50; //время в мс между смещениями бабочек var incX = 5; //шаг смещения по горозинтали var incY = 5; //шаг смещения по вертикали var directionY1 = 0; //направление полета. 0-вниз, 1-вверх var directionX1 = 0; //направление полета. 0-вправо, 1-влево function move() { bater1.style.top = y1; bater1.style.left = x1; alert(WindowHeight); if ((y1>0) && (y1<WindowHeight-bater1.clientHeight-5)) { if(directionY1==0) { y1=y1+incY; bater1.style.top=y1; } else { y1=y1-incY; bater1.style.top=y1; } } else { if(directionY1==0) { directionY1=1; y1=y1-incY; bater1.style.top=y1; } else { directionY1=0; y1=y1+incY; bater1.style.top=y1; } }; if ((x1>0) && (x1<WindowWidth-bater1.clientWidth-5)) { if(directionX1==0) { x1=x1+incX; bater1.style.left=x1; } else { x1=x1-incX; bater1.style.left=x1; } } else { if(directionX1==0) { directionX1=1; x1=x1-incX; bater1.style.left=x1; } else { directionX1=0; x1=x1+incX; bater1.style.left=x1; } }; setTimeout("move()", Tmax); } </script> <div id="bater1" style="position:absolute; z-index: 100;"> <img src="http://bater.ru/novosibirsk/templates/butterfly/images/flying_bater.gif" border="0"></div> <script language="JavaScript"> var bater1 = document.getElementById("bater1") var WindowHeight=document.body.clientHeight; var WindowWidth=document.body.clientWidth; var x1 = Math.floor(Math.random() * (WindowWidth-bater1.clientWidth)); var y1 = Math.floor(Math.random() * (WindowHeight-bater1.clientHeight)); bater1.style.left=x1; bater1.style.top=y1; move(); </script> |
Сразу бросилось в глаза, что ты присвоиваешь неправильные значения стилям - нужно указывать с размерностью:
bater1.style.top = y1 *!* + "px"*/!*;// и так везде |
большое спасибо! "px" помогло
|
Часовой пояс GMT +3, время: 03:03. |