Страницы: 1
Господа,помогите,пожалуйста,новичку.
Имееться следующий скрипт(бабочка,порхающая за курсором)
<IMG id="buterfly" style="POSITION: absolute; Middle: 9000px" src="../img/nasekomoe4.gif"> <SCRIPT><!-- ddx=0;ddy=0;PX=600;PY=0;xm=0;ym =0; OlsW=Ols.width/2;OlsH=Ols.height/2 function MoveWinnie(){ x=Math.round(PX+=((xm-PX)*3)/400); y=Math.round(PY+=((ym-PY)*3)/400); Ols.style.left=x-OlsW; Ols.style.top=y //osw setTimeout("MoveWinnie()",10); } function doMouse(){ xm=window.event.x; ym=window.event.y; } document.onmousemove=doMouse; MoveWinnie(); //--></SCRIPT>
При работе с IE и Opera не возникает никаких проблем.При работе с Mozilla Firefox бабочка висит в верхнем правом углу и не реагирует на движения курсора. Помогите,пожалуйста, исправить ошибку?
Отсутствует
Отсутствует
GerAlt86
В IE неправильно реализована работа с событиями. Скрипт, который вы используете, был написан походу лет 10 назад, когда нормальных браузеров еще толком не было, и он основан на предположении, что работать может только по-кривому, т.е. в IE.
Конкретно, проблема в том, что событие должно передаваться функции в качестве аргумента, а не быть свойством некого объекта. Т.е. правильно будет:
function doMouse(e) { ... }
Далее работаем не с "window.event" а с "e". Правда, для особо тупых ослов придется все же вставить строку:
if (!e) e = window.event;
Отсутствует
Сделал изменения по Вашему совету. Скрипт приобрел вид:
<IMG id=Ols style="POSITION: absolute; Middle: 9000px" src="img/nasekomoe4.gif"> <SCRIPT> ddx=0; ddy=0; //начальное местоположение PX=600; PY=0; xm=0; ym =0 //переменная рисунка OlsW=Ols.width/2; OlsH=Ols.height/2; function MoveWinnie(){ //изменение на новые координаты x=Math.round(PX+=((xm-PX)*3)/400); y=Math.round(PY+=((ym-PY)*3)/400); //изменение местоположение самого рисунка относительного текущего местоположения курсора Ols.style.left=x-OlsW; Ols.style.top=y; setTimeout("MoveWinnie()",10) } function doMouse(e){ if (!e) e = window.event; xm=e.pageX; ym=e.pageY; } document.onmousemove=doMouse; MoveWinnie() </SCRIPT>
Проблема осталося. Скрипт работает во всех браузерах -opera,IE, за исключением Mozilla Firefox(рисунок висит в верхнем углу и не реагирует на движения). Пожалуйста, помогите, ктонить знающий и грамотный.
Отсутствует
GerAlt86
Выкиньте этот шлак и напишите с нуля - займёт 10-15 минут. На это
даже смотреть противно.
ЗЫ: Ух! Только сейчас заметил:
- интересно, насколько долго это сможет проработать?
Отредактировано ViRUS (16-08-2010 08:50:34)
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
GerAlt86
function doMouse(e) { var x = 0, y = 0; if (!e) e = window.event; //for IE if (e.pageX || e.pageY) { x = e.pageX; y = e.pageY; } else if (e.clientX || e.clientY) //for IE { x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; } Ymouse=y-20; //image position is 20px above cursor Xmouse=x; } ... MoveWinnie() { document.getElementById("Ols").style.left = Xmouse+'px'; document.getElementById("Ols").style.top = Ymouse+'px'; }
P.S.
Разберитесь с кодом таки. Что за свойство CSS middle? Нет такого!
Отредактировано Snik (16-08-2010 10:22:23)
Отсутствует
Страницы: 1