Положение мыши - Совместимость браузера - Javascript - PullRequest
14 голосов
/ 27 июля 2010

работая с мышью в Javascript, я иногда встречал следующие атрибуты события:

  • clientX, clientY
  • layerX, layerY
  • смещениеX, смещениеY
  • pageX, pageY
  • screenX, screenY
  • x, y

Мне интересно, как вообще выглядит их кросс-браузерная совместимость, так как я нашел только кусочки информации, которые я пытаюсь исправить вместе.

Спасибо, ребята

1 Ответ

10 голосов
/ 27 июля 2010

Вот как это делает jQuery:

// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
  var doc = document.documentElement, body = document.body;
  event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
  event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc   && doc.clientTop  || body && body.clientTop  || 0);
}

Тестирование pageX (или pageY) или вычисление его из clientX и scrollLeft и clientLeft

...