Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№113-08-2010 18:13:49

GerAlt86
Участник
 
Группа: Members
Зарегистрирован: 13-08-2010
Сообщений: 2
UA: IE 8.0

Проблема со скриптом

Господа,помогите,пожалуйста,новичку.
Имееться следующий скрипт(бабочка,порхающая за курсором)

Выделить код

Код:

<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 бабочка висит в верхнем правом углу и не реагирует на движения курсора. Помогите,пожалуйста, исправить ошибку?

Отсутствует

 

№213-08-2010 18:35:57

ru-vadik
Участник
 
Группа: Extensions
Откуда: Россия
Зарегистрирован: 23-10-2004
Сообщений: 1976
UA: Firefox 4.0

Re: Проблема со скриптом

Отладчиком пользовались?


Не стойте на месте - ищите новые тупики :)

Отсутствует

 

№314-08-2010 23:57:17

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
UA: Firefox 3.6
Веб-сайт

Re: Проблема со скриптом

GerAlt86
В IE неправильно реализована работа с событиями. Скрипт, который вы используете, был написан походу лет 10 назад, когда нормальных браузеров еще толком не было, и он основан на предположении, что работать может только по-кривому, т.е. в IE.
Конкретно, проблема в том, что событие должно передаваться функции в качестве аргумента, а не быть свойством некого объекта. Т.е. правильно будет:
function doMouse(e) { ... }
Далее работаем не с "window.event" а с "e". Правда, для особо тупых ослов [ie] придется все же вставить строку:
if (!e) e = window.event;

Отсутствует

 

№415-08-2010 16:50:01

GerAlt86
Участник
 
Группа: Members
Зарегистрирован: 13-08-2010
Сообщений: 2
UA: Opera 10.6

Re: Проблема со скриптом

Сделал изменения по Вашему совету. Скрипт приобрел вид:

Выделить код

Код:

<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(рисунок висит в верхнем углу и не реагирует на движения). Пожалуйста, помогите, ктонить знающий и грамотный.

Отсутствует

 

№516-08-2010 08:49:11

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468
UA: Seamonkey 2.0

Re: Проблема со скриптом

GerAlt86
Выкиньте этот шлак и напишите с нуля - займёт 10-15 минут. На это

Выделить код

Код:

style="POSITION

даже смотреть противно.

ЗЫ: Ух! Только сейчас заметил:

Выделить код

Код:

setTimeout("MoveWinnie()",10)

- интересно, насколько долго это сможет проработать?

Отредактировано ViRUS (16-08-2010 08:50:34)


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№616-08-2010 10:19:46

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
UA: Foxware 0.0
Веб-сайт

Re: Проблема со скриптом

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)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]