Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Координаты мыши в Firefox


Автор: PROCESSOR 20.4.2006, 20:22
в опере и IE при onClick можно узнать windows.event.x  (y) , а в firefox как ?  

 

Автор: dstorm81 20.4.2006, 20:44
<html>
<body onclick=alert(event.clientX+':'+event.clientY)>
</body>
</html>
вот так попробуй, должно помоч  

Автор: Burrr 21.4.2006, 09:27
Я пользую вот  такую ф-ию, работает в Gecko, Opera и FF (в других не проверял), с учетом скролла:
Код

function defPosition(event)
{
    if (document.attachEvent!=null){
        this.x = window.event.clientX + d.documentElement.scrollLeft + d.body.scrollLeft;
        this.y = window.event.clientY + d.documentElement.scrollTop + d.body.scrollTop;
    }
    if (!document.attachEvent&&document.addEventListener){
        this.x = event.clientX + window.scrollX;
        this.y = event.clientY + window.scrollY;
    }
    return {x:this.x,y:this.y};
}
  

Автор: sergfaq 8.10.2007, 09:22
Почему может ругаться в FF на строку 
mY = window.event.clientY
и даже 
alert(window.event.clientY);

Автор: dsCode 8.10.2007, 10:44
sergfaq, зависит от того, кто в данный момент event (Вы мышкой кликаете?). А как ругается (кто там is not defined?)?

Добавлено через 48 секунд
Burrr, 
Цитата(Burrr @  21.4.2006,  09:27 Найти цитируемый пост)
d.documentElement.scrollLeft

а если documentElement не определен? Ошибка?

Автор: Avb 8.10.2007, 10:56
sergfaq, в FF event не является свойством window, а передается в качестве аргумента функции.
Поэтому для FF в обработчике события:
mY = event.clientY;

В примере Burr-а есть четкое разделение браузеров. Поэтому в одном случае он юзает window.event, в другом просто event.

Если такого разделения не требуется, то обычно вначале функции делают 
Код

function defPosition(event)
{
var event = event || window.event;
...
}

чтобы кроссбраузерно получить объект события, и далее уже в коде всегда используют просто event.

Автор: armor85 10.11.2008, 12:31
Здравствуйте,

а как узнать координаты мыши в FF на клик,
Код

function mousePageXY(e){
  var x = 0, y = 0;
  if (!e) e = window.event;
  if (e.pageX || e.pageY)  {
    x = e.pageX;
    y = e.pageY;
  }  else if (e.clientX || e.clientY)  {
    x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) -  document.documentElement.clientLeft;
    y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
  }
 tempX = x;
 tempY = y;
 return true;
}
document.onmousemove  = mousePageXY;



но обойтись без document.onmousemove  = mousePageXY;

в IE понятное дело рабоает, достаточно вызвать mousePageXY();
а в FF что нужно подставить под e?

Автор: Michael.de 11.11.2008, 01:11
Код

<html>
<head>
<script type='text/javascript'>
function f(e){
 e=e||window.event;
 cX=e.clientX;
 cY=e.clientY;
 alert('X='+cX+', Y='+cY);
}
</script>
</head>
<body onclick='f(event);'></body>
</html>
оно?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)