7

В чем разница между screenX/Y, clientX/Y и pageX/Y?

9

Вопрос о различиях между screenX/Y, clientX/Y и pageX/Y

Какова разница между свойствами screenX/screenY, clientX/clientY и pageX/pageY в JavaScript?

Также интересно узнать, на iPad в Safari, совпадают ли расчеты с теми, что делаются на десктопе, или существуют какие-то различия из-за особенностей viewport?

Буду признателен, если вы приведете примеры, чтобы проиллюстрировать эти различия.

2 ответ(ов)

0

clientX/Y относятся к относительным координатам экрана. Например, если ваша веб-страница достаточно длинная, то clientX/Y предоставляет координаты нажатой точки в терминах её фактической пиксельной позиции на экране. В то время как ScreenX/Y дает координаты относительно начала страницы. Таким образом, clientX/Y указывает на позицию относительно видимой области, а ScreenX/Y — на позицию относительно всего документа.

0

Что мне помогло, так это добавить обработчик события прямо на эту страницу и покликать по ней самостоятельно! Откройте консоль в инструментах разработчика/Firebug и вставьте этот код:

document.addEventListener('click', function(e) {
  console.log(
    'page: ' + e.pageX + ',' + e.pageY,
    'client: ' + e.clientX + ',' + e.clientY,
    'screen: ' + e.screenX + ',' + e.screenY)
}, false);
Кликните в любом месте

С помощью этого кода вы сможете отслеживать позиции клика по мере прокрутки, перемещения окна браузера и так далее.

Обратите внимание, что значения pageX/Y и clientX/Y совпадают, когда вы прокрутите страницу до самого верха!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь