Проблема положения event.clientX в JavaScript - PullRequest
1 голос
/ 23 ноября 2010

Я изучаю образец javascript с этой страницы,

http://nofunc.org/AJAX_Star_Rating

Я запутался в следующих фрагментах кода в функции XY (e, v), особенно в двух операторах event.clientX+document.documentElement.scrollLeft и event.clientY+document.documentElement.scrollTop, кто-нибудь может дать мне знать, что такое document.documentElement.scrollLeft и document.documentElement.scrollTop?И почему мы добавляем его к event.clientX и event.clientY, пожалуйста (т.е. какие значимые значения мы могли бы получить, добавляя их к event.clientX и event.clientY)?

Кстати: я использую Internet Explorer.

спасибо заранее, Джордж

Ответы [ 2 ]

5 голосов
/ 23 ноября 2010

clientX - Получает или задает x-координату позиции указателя мыши относительно клиентской области окна, исключая декорации окна и полосы прокрутки. http://msdn.microsoft.com/en-us/library/ms533567(VS.85).aspx

scrollLeft - Устанавливает или получает расстояние между левым краем объекта и самой левой частью содержимого, видимого в данный момент в окне. http://msdn.microsoft.com/en-us/library/ms534617(VS.85).aspx

В непрофессионалах это получение положения мыши на экране (clientX и clientY), а затем добавление этого значения к текущей позиции прокрутки (scrollLeft и scrollTop) страницы, чтобы получить общую позицию пикселя для точки.

т.е. Если вы просматриваете страницу с прокруткой вниз на 200 пикселей, и щелчок мыши происходит на 200 пикселей вниз по области просмотра клиента, то это будет на 400 пикселей ниже документа.

РЕДАКТИРОВАТЬ:

«Клиентская область окна» относится к области отображения Internet Explorer, которую вы видите / манипулируете страницей. Он начинается с 0px 0px в верхнем левом углу и имеет такую ​​же ширину / высоту, как и окно вашего браузера (за исключением полос прокрутки, рамки, строки заголовка и т. Д.).

В этом примере он пытается получить абсолютную позицию события на странице, учитывая, где в «видимой области» браузера вы сделали клик, и добавляя это к тому, как далеко вниз / вправо «видимая область» "прокрутил на странице.

1 голос
/ 13 декабря 2010

У меня возникла та же проблема с использованием этого скрипта на моем сайте http://www.alterboutique.com

Я нашел решение здесь: www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_23310105.html

В нижней части страницы есть сообщение от Кравимира, в котором он дает решение, заменяющее код функции XY своим кодом:

function XY (e, v) {e =е || window.event;var d = документ, dE = d.documentElement, o;if (typeof (e.pageX) == 'number') o = {'X': e.pageX, 'Y': e.pageY};else o = {'X': e.clientX + d.body.scrollLeft + (dE? dE.scrollLeft: 0), 'Y': e.clientY + d.body.scrollTop + (dE? dE.scrollTop: 0)};Возвращение (v о [v]: о);}

У меня это сработало.

Удачи

Жан-Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...