Показать полную графическую версию : [решено] Javascript: Положение курсора мыши в Firefox
Для Оперы и IE работает такая функция:
function mouseX() {
if (window.event.pageX) return window.event.pageX; // это для Оперы
else return window.event.clientX; // это для IE
}
Для y-координаты соответствующая с игреком.
Но вот Firefox (2) никак не хочет возвращать координату из такой функции.
Пробовал также и другие event'ы из списка (http://www.quirksmode.org/js/events_properties.html#position): clientX, layerX, offsetX, pageX, screenX, x. Ни один из них в FF не возвращает значение.
Как померить-то?
// относительно страницы целиком
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;
Хм... Может быть я что-то неправильно делаю?
Вот, скажем, имеется некоторый элемент на странице, при проведении курсором над которым выводится алерт с координатой (разумеется, я не для этого собираюсь задействовать, но не суть):
<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 не хочет :(
в FF не хочет »
емнип если event должен передаваться обработчику как параметр (как в твоем случае), то FF не поддерживает глобальный объект event... т.е тебе нужно везде добавить параметр mouseX(event)
Действительно, если event передавать в функцию, то всё работает. Спасибо :)
Теперь, правда, проявилась очередная проблема кроссбраузерности, но это уже другой вопрос. Попробую самостоятельно разрешить.
UPD: Вот и решилось.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.