скрипт не работает в опере, в IE работает
написал скрипт для крокручивания картинок-ссылок на видеофайлы, в интернет Експлорере все работает, в Опере не хочет. Помогите пожалуйста найти причину. Вот сам скрипт:
<SCRIPT>
var sliderwidth=501;
var sliderheight=150;
var slidespeed=4;
<!-- web-mastery.info -->
var leftrightslide=new Array()
var finalslide=''
leftrightslide[0]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/4kv3wrqwnb.612/" title="Візитка школи"><img src="scrins/v.0-00-00.946.jpg" width=80 height=60 border=1 ></a>'
leftrightslide[1]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/vr1v07u9no.404/" title="Конкурс Красуня-2008"><img src="scrins/v1.0-12-37.814.jpg" width=80 height=60 border=1 ></a>'
leftrightslide[2]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/mr1jdoupp9.401/" title="Урок етики"><img src="scrins/v2.0-04-28.381.jpg" width=80 height=60 border=1></a>'
leftrightslide[3]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/l0nxtrysva.609/" title="Урок фізкультури"><img src="scrins/v3.0-11-03.385.jpg" width=80 height=60 border=1 ></a>'
leftrightslide[4]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/dntum4axtq.609/" title="Шевченкове свято"><img src="scrins/v4.0-00-06.568.jpg" width=80 height=60 border=1></a>'
leftrightslide[5]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/1as3to55yl.402/" title="Сокальський парубок"><img src="scrins/v5.0-00-56.471.jpg" width=80 height=60 border=1 ></a>'
var copyspeed=slidespeed
for (i=0;i<leftrightslide.length;i++)
finalslide=finalslide+leftrightslide[i]+" "
if (document.all){
document.write('<marquee behavior="alternate" id="ieslider" scrollAmount=0 style="width:'+sliderwidth+'">'+finalslide+'</marquee>')
ieslider.onmouseover=new Function("ieslider.scrollAmount=0")
ieslider.onmouseout=new Function("if (document.readyState=='complete') ieslider.scrollAmount=slidespeed")}
function regenerate(){ window.location.reload() }
function regenerate2(){
if (document.layers){
document.ns_slider01.visibility="show"
setTimeout("window.onresize=regenerate",450)
intializeleftrightslide() }
if (document.all)
ieslider.scrollAmount=slidespeed}
function intializeleftrightslide(){
document.ns_slider01.document.ns_slider02. document.write('<nobr>'+finalslide+'</nobr>')
document. ns_slider01.document.ns_slider02.document.close()
thelength=document.ns_slider01. document.ns_slider02.document.width
scrollslide() }
function scrollslide(){
if (document.ns_slider01. document.ns_slider02.left>=thelength*(-1)){
document.ns_slider01. document.ns_slider02.left-=slidespeed
setTimeout("scrollslide()",100)
}else{
document.ns_slider01. document.ns_slider02.left=sliderwidth
scrollslide()}}
window.onload=regenerate2
</SCRIPT>
Зарание спасибо! |
Для начала нормально отпарсите его и раставьте точки с запятой.
Потом посмотрите внимательно на этот момент:
if (document.all){
document.write('<marquee behavior="alternate" id="ieslider" scrollAmount=0 style="width:'+sliderwidth+'">'+finalslide+'</marquee>')
ieslider.onmouseover=new Function("ieslider.scrollAmount=0")
ieslider.onmouseout=new Function("if (document.readyState=='complete') ieslider.scrollAmount=slidespeed")}
Он сработает только в IE. Уберите этот If и у вас он будет работать в Opera. Хр*новенько конечно, но будет. Примерно должно быть так:
var sliderwidth=501;
var sliderheight=150;
var slidespeed=4;
<!-- web-mastery.info -->
var leftrightslide=new Array();
var finalslide='';
leftrightslide[0]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/4kv3wrqwnb.612/" title="Візитка школи"><img src="scrins/v.0-00-00.946.jpg" width=80 height=60 border=1 ></a>';
leftrightslide[1]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/vr1v07u9no.404/" title="Конкурс Красуня-2008"><img src="scrins/v1.0-12-37.814.jpg" width=80 height=60 border=1 ></a>';
leftrightslide[2]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/mr1jdoupp9.401/" title="Урок етики"><img src="scrins/v2.0-04-28.381.jpg" width=80 height=60 border=1></a>';
leftrightslide[3]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/l0nxtrysva.609/" title="Урок фізкультури"><img src="scrins/v3.0-11-03.385.jpg" width=80 height=60 border=1 ></a>';
leftrightslide[4]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/dntum4axtq.609/" title="Шевченкове свято"><img src="scrins/v4.0-00-06.568.jpg" width=80 height=60 border=1></a>';
leftrightslide[5]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/1as3to55yl.402/" title="Сокальський парубок"><img src="scrins/v5.0-00-56.471.jpg" width=80 height=60 border=1 ></a>';
var copyspeed=slidespeed
for (i=0;i<leftrightslide.length;i++)
finalslide=finalslide+leftrightslide[i]+" ";
//if (document.all)
//{
document.write('<marquee behavior="alternate" id="ieslider" scrollAmount=0 style="width:'+sliderwidth+'">'+finalslide+'</marquee>');
ieslider.onmouseover=new Function("ieslider.scrollAmount=0");
ieslider.onmouseout=new Function("if (document.readyState=='complete') ieslider.scrollAmount=slidespeed");
//}
function regenerate()
{
window.location.reload();
}
function regenerate2()
{
if (document.layers)
{
document.ns_slider01.visibility="show";
setTimeout("window.onresize=regenerate",450);
intializeleftrightslide();
}
if (document.all)
ieslider.scrollAmount=slidespeed;
}
function intializeleftrightslide()
{
document.ns_slider01.document.ns_slider02. document.write('<nobr>'+finalslide+'</nobr>');
document.ns_slider01.document.ns_slider02.document.close();
thelength=document.ns_slider01. document.ns_slider02.document.width;
scrollslide() ;
}
function scrollslide()
{
if (document.ns_slider01. document.ns_slider02.left>=thelength*(-1))
{
document.ns_slider01. document.ns_slider02.left-=slidespeed;
setTimeout("scrollslide()",100);
}
else
{
document.ns_slider01. document.ns_slider02.left=sliderwidth;
scrollslide();
}
}
window.onload=regenerate2;
|
На скорую руку набросал:
<html>
<head>
<script language="javascript" type="text/javascript">
var sliderwidth=501;
var sliderheight=70;
var slidespeed=50;
var slidestep =5;
<!-- web-mastery.info -->
var leftrightslide=new Array();
var finalslide='';
var slider = false;
var copyspeed=slidespeed;
var repeat = false;
var side = 1;
function createEl()
{
leftrightslide[0]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/4kv3wrqwnb.612/" title="Візитка школи"><img src="scrins/v.0-00-00.946.jpg" style="float:left; height:60; width:80; border:1px solid black;margin-right:8px"/></a>';
leftrightslide[1]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/vr1v07u9no.404/" title="Конкурс Красуня-2008"><img src="scrins/v1.0-12-37.814.jpg" style="float:left; height:60; width:80; border:1px solid black;margin-right:8px"/></a>';
leftrightslide[2]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/mr1jdoupp9.401/" title="Урок етики"><img src="scrins/v2.0-04-28.381.jpg" style="float:left; height:60; width:80; border:1px solid black;margin-right:8px"/></a>';
leftrightslide[3]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/l0nxtrysva.609/" title="Урок фізкультури"><img src="scrins/v3.0-11-03.385.jpg" style="float:left; height:60; width:80; border:1px solid black;margin-right:8px"/></a>';
leftrightslide[4]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/dntum4axtq.609/" title="Шевченкове свято"><img src="scrins/v4.0-00-06.568.jpg" style="float:left; height:60; width:80; border:1px solid black;margin-right:8px"/></a>';
leftrightslide[5]='<a href="http://flv.video.yandex.ru/lite/sokal-school2/1as3to55yl.402/" title="Сокальський парубок"><img src="scrins/v5.0-00-56.471.jpg" style="float:left; height:60; width:80; border:1px solid black; margin-right:8px"/></a>';
for (var i=0; i<leftrightslide.length; i++)
finalslide += "<td>"+leftrightslide[i]+"</td>";
finalslide = '<table border="0"><tr>'+finalslide+'</tr></table>';
slider = document.createElement('div');
slider.style.width = sliderwidth;
slider.style.height = sliderheight;
slider.style.overflow = 'hidden';
slider.style.whiteSpace = 'nowrap';
slider.onmouseover = stop;
slider.onmouseout = start;
slider.innerHTML = finalslide;
document.getElementById('body').appendChild(slider);
start()
}
function start()
{repeat = window.setInterval('scroll()',slidespeed);}
function stop()
{window.clearInterval(repeat);}
function scroll()
{
var now = slider.scrollLeft;
var left = slider.scrollWidth - slider.offsetWidth;
if(now == left || now ==0)
side*=-1;
slider.scrollLeft+= slidestep*side;
}
</script>
</head>
<body onload="createEl();" id="body">
</body>
</html>
Реализация хреновая но работает везде (тестировал в Chrome, FF3, IE6, Opera) нормально. |
слишком быстро бегает
Цитата:
|
marquee вообще вещь немного "стремная" ее лучше не использовать. Выше я написал Вам код который делает тоже самое только с помощью div'а и причем делает это во всех браузерах с одинаковой скоростью. Постарайтесь в нем разобраться, если что спрашивайте.
|
конкретнее о проблеме
Цитата:
<div id="Layer48"> <script language="JavaScript1.2" type="text/javascript" src="script/wx.js"></script> <hr color="orange"> </div> ваш последний вариант работает, но он записан в head, а мой в body. Подскажите как мне быть. |
Извините если я Вас не правильно понял. Для того чтобы подключть мой скрипт достаточно вставить мой код в файл wx.js
Создать элемент с произвольным id в который будут помещенны слайды e.g. <div id="slideContainer"></div> И прописать id этого элемента в этой строке:
document.getElementById('slideContainer').appendChild(slider);
Потом запустите скрипт после загрузки страницы прописав его так: <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="createEl();"> и всё. Редактировать скорость и шаг анимации с помощью этих переменных: var slidespeed=50; // скорость анимации var slidestep =5; // шаг анимции |
Цитата:
Огромное Вам спасибо!!! Вы меня очень выручили. :) :) :) |
| Часовой пояс GMT +3, время: 17:59. |