Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Javascript: Положение курсора мыши в Firefox (http://forum.oszone.net/showthread.php?t=120466)

Coutty 19-10-2008 15:39 927931

Javascript: Положение курсора мыши в Firefox
 
Для Оперы и IE работает такая функция:
HTML код:

function mouseX() {
          if (window.event.pageX) return window.event.pageX;        // это для Оперы
          else return window.event.clientX;                                // это для IE
}

Для y-координаты соответствующая с игреком.
Но вот Firefox (2) никак не хочет возвращать координату из такой функции.
Пробовал также и другие event'ы из списка: clientX, layerX, offsetX, pageX, screenX, x. Ни один из них в FF не возвращает значение.
Как померить-то?

Sham 20-10-2008 02:12 928198

Код:

// относительно страницы целиком

var x = event.pageX || event.clientX + document.documentElement.scrollLeft;

var y = event.pageY || event.clientY + document.documentElement.scrollTop;

// относительно видимой части

var x = (event.pageX)? event.pageX - window.pageXOffset : event.clientX;

var y = (event.pageY)? event.pageY - window.pageYOffset : event.clientY;


Coutty 20-10-2008 09:07 928285

Хм... Может быть я что-то неправильно делаю?
Вот, скажем, имеется некоторый элемент на странице, при проведении курсором над которым выводится алерт с координатой (разумеется, я не для этого собираюсь задействовать, но не суть):
HTML код:

<html>
<head>
<title>1</title>
<script>
function mouseX() {
return event.pageX || event.clientX + document.documentElement.scrollLeft;
}
</script>
</head>
<body>
<a href=# onmouseover="alert(mouseX())">LINK</a>
</body>
</html>

В Опере работает, в IE работает, в FF не работает.
Аналогично и return (event.pageX)? event.pageX - window.pageXOffset : event.clientX; - в FF не хочет :(

Sham 22-10-2008 01:58 930207

Цитата:

Цитата Coutty
в FF не хочет »

емнип если event должен передаваться обработчику как параметр (как в твоем случае), то FF не поддерживает глобальный объект event... т.е тебе нужно везде добавить параметр
Код:

mouseX(event)

Coutty 22-10-2008 08:42 930290

Действительно, если event передавать в функцию, то всё работает. Спасибо :)
Теперь, правда, проявилась очередная проблема кроссбраузерности, но это уже другой вопрос. Попробую самостоятельно разрешить.
UPD: Вот и решилось.


Время: 01:27.

Время: 01:27.
© OSzone.net 2001-