Javascript.RU

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

скрипт не работает в опере, в 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]+"&nbsp;&nbsp;"
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>

Зарание спасибо!

Последний раз редактировалось Андрей Параничев, 04.03.2009 в 17:13. Причина: Пользуйтесь bb-тегами [js] и [html] для оформления листингов кода в теле сообщения
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2009, 17:24
Аспирант
Отправить личное сообщение для Onis Посмотреть профиль Найти все сообщения от Onis
 
Регистрация: 15.07.2008
Сообщений: 31

Для начала нормально отпарсите его и раставьте точки с запятой.

Потом посмотрите внимательно на этот момент:
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]+"&nbsp;&nbsp;";
//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;

Последний раз редактировалось Onis, 06.03.2009 в 19:28.
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2009, 19:01
Аспирант
Отправить личное сообщение для Onis Посмотреть профиль Найти все сообщения от Onis
 
Регистрация: 15.07.2008
Сообщений: 31

На скорую руку набросал:
<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) нормально.
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2009, 14:27
Новичок на форуме
Отправить личное сообщение для toper Посмотреть профиль Найти все сообщения от toper
 
Регистрация: 04.03.2009
Сообщений: 4

слишком быстро бегает
Сообщение от Onis Посмотреть сообщение
Для начала нормально отпарсите его и раставьте точки с запятой.

Потом посмотрите внимательно на этот момент:
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]+"&nbsp;&nbsp;";
//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;
Исправил, тепер в Опере работает, но очень быстро
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2009, 16:50
Аспирант
Отправить личное сообщение для Onis Посмотреть профиль Найти все сообщения от Onis
 
Регистрация: 15.07.2008
Сообщений: 31

marquee вообще вещь немного "стремная" ее лучше не использовать. Выше я написал Вам код который делает тоже самое только с помощью div'а и причем делает это во всех браузерах с одинаковой скоростью. Постарайтесь в нем разобраться, если что спрашивайте.
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2009, 18:03
Новичок на форуме
Отправить личное сообщение для toper Посмотреть профиль Найти все сообщения от toper
 
Регистрация: 04.03.2009
Сообщений: 4

конкретнее о проблеме
Сообщение от Onis Посмотреть сообщение
marquee вообще вещь немного "стремная" ее лучше не использовать. Выше я написал Вам код который делает тоже самое только с помощью div'а и причем делает это во всех браузерах с одинаковой скоростью. Постарайтесь в нем разобраться, если что спрашивайте.
Посмотрите пожалуйста на мою страничку www.sokalschooltwo.hmarka.net (через IE). У меня скрипт размещен внутри стиля
<div id="Layer48">

<script language="JavaScript1.2" type="text/javascript" src="script/wx.js"></script>

<hr color="orange">
</div>
ваш последний вариант работает, но он записан в head, а мой в body. Подскажите как мне быть.
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2009, 19:48
Аспирант
Отправить личное сообщение для Onis Посмотреть профиль Найти все сообщения от Onis
 
Регистрация: 15.07.2008
Сообщений: 31

Извините если я Вас не правильно понял. Для того чтобы подключть мой скрипт достаточно вставить мой код в файл 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;   // шаг анимции

Последний раз редактировалось Onis, 10.03.2009 в 19:54.
Ответить с цитированием
  #8 (permalink)  
Старый 12.03.2009, 12:04
Новичок на форуме
Отправить личное сообщение для toper Посмотреть профиль Найти все сообщения от toper
 
Регистрация: 04.03.2009
Сообщений: 4

Сообщение от Onis Посмотреть сообщение
Извините если я Вас не правильно понял. Для того чтобы подключть мой скрипт достаточно вставить мой код в файл 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;   // шаг анимции

Огромное Вам спасибо!!!
Вы меня очень выручили.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в опере, работает в IE XpycTuk Общие вопросы Javascript 9 06.03.2009 15:50
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32
Простой скрипт не работает в Firefox'e... Aik Firefox/Mozilla 2 03.02.2009 22:30
Не работает скрипт в Опере stosen Элементы интерфейса 34 03.11.2008 20:38
Не работает скрипт в Опере 312kbps Общие вопросы Javascript 1 16.10.2008 18:11