| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Скрипт работает только в опере |
| Автор: Angel333 18.12.2009, 19:10 |
| На главной страничке моего сайта скрипт работает только в Опере. Подскажите, пожалуйста, в чем проблема. Вот сайт http://master-klass.net.ua/ |
| Автор: bars80080 18.12.2009, 20:03 |
| то есть совершенно в падлу и пример скрипта запостить, и рассказать о том что должно быть, и как получается. нате ссылку и тестите всё, выуживая, что же работает не так, как хотел автор |
| Автор: Angel333 18.12.2009, 23:26 |
| я думал не тяжело заглянуть в исходник и в хэде посмотреть скрипт. Извините за неудобность. Вот скрипт: <script language="JavaScript1.2"> grphcs=new Array(2) Image0=new Image(); Image0.src=grphcs[0]="mk/snow.gif"; Image1=new Image(); Image1.src=grphcs[1]="mk/snow.gif"; Amount=25; Ypos=new Array(); Xpos=new Array(); Speed=new Array(); Step=new Array(); Cstep=new Array(); ns=(document.layers)?1:0; ns6=(document.getElementById&&!document.all)?1:0; if (ns){ for (i = 0; i < Amount; i++){ var P=Math.floor(Math.random()*grphcs.length); rndPic=grphcs[P]; document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0><img src="+rndPic+"></LAYER>"); } } else{ document.write('<div style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i = 0; i < Amount; i++){ var P=Math.floor(Math.random()*grphcs.length); rndPic=grphcs[P];//osw document.write('<img id="si'+i+'" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">'); } document.write('</div></div>'); } WinHeight=(ns||ns6)?window.innerHeight:window.document.body.clientHeight; WinWidth=(ns||ns6)?window.innerWidth-70:window.document.body.clientWidth;//fantasyflash.ru for (i=0; i < Amount; i++){ Ypos[i] = Math.round(Math.random()*WinHeight); Xpos[i] = Math.round(Math.random()*WinWidth); Speed[i]= Math.random()*5+3; Cstep[i]=0; Step[i]=Math.random()*0.1+0.05; } function fall(){ var WinHeight=(ns||ns6)?window.innerHeight:window.document.body.clientHeight; var WinWidth=(ns||ns6)?window.innerWidth-70:window.document.body.clientWidth; var hscrll=(ns||ns6)?window.pageYOffset:document.body.scrollTop; var wscrll=(ns||ns6)?window.pageXOffset:document.body.scrollLeft; for (i=0; i < Amount; i++){ sy = Speed[i]*Math.sin(90*Math.PI/180); sx = Speed[i]*Math.cos(Cstep[i]); Ypos[i]+=sy; Xpos[i]+=sx; if (Ypos[i] > WinHeight){ Ypos[i]=-60; Xpos[i]=Math.round(Math.random()*WinWidth); Speed[i]=Math.random()*5+3; } if (ns){ document.layers['sn'+i].left=Xpos[i]; document.layers['sn'+i].top=Ypos[i]+hscrll; } else if (ns6){ document.getElementById("si"+i).style.left=Math.min(WinWidth,Xpos[i]); document.getElementById("si"+i).style.top=Ypos[i]+hscrll; } else{ eval("document.all.si"+i).style.left=Xpos[i]; eval("document.all.si"+i).style.top=Ypos[i]+hscrll; } Cstep[i]+=Step[i]; } setTimeout('fall()',20); } window.onload=fall //--> </script> Нужно чтобы снежинки падали во всех браузерах, а они падают только в опере |
| Автор: bars80080 19.12.2009, 01:48 | ||
| код очень древний - основная причина. если вы писали сами, советую выкинуть ту книжку, по которой вы его изучали проверка на нетскейп, который почил уже как несколько лет назад, не используйте эту конструкцию вот эта самая конструкция может служить корнем ошибок, не используйте её всякому элементу можно поставить id, и любой браузер сейчас поддерживает document.getElementById могут не работать вот эти все свойства innerWidth, clientWidth, pageYOffset, scrollLeft и т.п.. их очень много, разные в разных браузерах, сказать точно где что работает не могу. самое простое - проверяйте, что они выдают:
что покажет в разных браузерах п.с. кстати, используйте кнопку "код", а то ваш текст не читаемый |
| Автор: HARDMID 21.12.2009, 11:43 | ||
Не пользуйтесь устаревшим кодом. Вот более современный. И работает во всех. По крайней мере, я не жалуюсь, пусть скрипт уже 2 год пользую.
|
| Автор: 12345c 1.1.2010, 04:02 |
| Каждый год эта напасть со снегом : ). Я как-то делал, взяв за основу самый продвинутый на то время скрипт. http://forum.vingrad.ru/forum/topic-76142/view-all.html Но не дорабатывал 2 года, поэтому тоже, как пишут, не везде работает (Опера10 и ие8). |