Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2011, 00:06
Новичок на форуме
Отправить личное сообщение для mihalab Посмотреть профиль Найти все сообщения от mihalab
 
Регистрация: 06.06.2011
Сообщений: 3

помогите отладить скрипт
на просторах интернета нашёл скрипт, с помощью которого летают бабочки по экрану. в фф, ие, хроме работает. а в опере нехочет. не могу понять, почему
<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>
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2011, 00:15
Аватар для NoResponse
Профессор
Отправить личное сообщение для NoResponse Посмотреть профиль Найти все сообщения от NoResponse
 
Регистрация: 17.06.2010
Сообщений: 152

выкиньте это поделие десятилетней давности на свалку истории, и найдите... а еще лучше сами напишите новый скрипт
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2011, 01:10
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от mihalab
не могу понять, почему
Клевая шаблонная фраза! Чувак, если тебя не смущает language="JavaScript1.2", то как насчет этого:
if (NS4||NS6||IE4){
window.onload=init;
??? Скрипт написан для Netscape 4 или 6 или internet explorer 4!!! Так что закопай этот скрипт там, где откопал его
Ответить с цитированием
  #4 (permalink)  
Старый 06.06.2011, 14:13
Новичок на форуме
Отправить личное сообщение для mihalab Посмотреть профиль Найти все сообщения от mihalab
 
Регистрация: 06.06.2011
Сообщений: 3

послушался вашему мнению и выкинул скрипт. написал сам. на компе, в виде 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>
Ответить с цитированием
  #5 (permalink)  
Старый 06.06.2011, 14:56
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сразу бросилось в глаза, что ты присвоиваешь неправильные значения стилям - нужно указывать с размерностью:
bater1.style.top = y1 *!* + "px"*/!*;// и так везде
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2011, 18:01
Новичок на форуме
Отправить личное сообщение для mihalab Посмотреть профиль Найти все сообщения от mihalab
 
Регистрация: 06.06.2011
Сообщений: 3

большое спасибо! "px" помогло
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите! "Не работает скрипт отсчета времени! Я нуб) Dobson Общие вопросы Javascript 4 28.05.2011 18:20
Помогите настроить скрипт раскрывающегося меню melomanfm Работа 6 10.08.2009 01:21
Помогите создать скрипт замены картинок при наведении курсора. SantaS Я не знаю javascript 3 05.06.2009 12:59
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05