В Chrome для Android версии 16 и 18 (по крайней мере) есть ошибка, которая сообщает об ошибках clientX
и clientY
неправильно. Если страница прокручивается, значения clientX/Y
будут ошибочными, по крайней мере, для события touchstart
, но не для события click
. Здесь есть ошибка:
https://code.google.com/p/chromium/issues/detail?id=117754
В этом примере вы можете попробовать: http://www.apprisant.com/tab/cd.html
Я сделал аналогичный пример с холстом здесь: http://codepen.io/simonsarris/full/dJcvn
Эти примеры работают с другими мобильными браузерами (включая обычный старый Android-браузер), но Chrome для Android, похоже, сломал clientX/Y на (по крайней мере, некоторых) событиях при прокрутке.
Интересно, что clientX и clientY не разбиваются на событие click
, как на touchstart
.
Мой вопрос заключается в том, что наилучшим способом решения проблемы с клиентом и клиентом я работаю последовательно в браузерах? Похоже, что смещение с помощью window.scrollX
и window.scrollY
"решит" проблему, но хорошее обходной путь:
- Определите, что браузер страдает или нет, предпочтительно, не делая пользователя ничего и не прибегая к проверке userAgent (поэтому не делайте никаких предположений о конкретных версиях браузера). Другими словами, , как определить, какие браузеры имеют плохие значения для
clientX
иclientY
? - Решите проблему надежно и только в тех браузерах, где она нуждается в решении (предположительно, только для Chrome для Android и только для определенных версий, поскольку будущие версии могут быть точными). По-видимому, смещение
window.scrollX/Y
- единственное, что необходимо сделать здесь.