Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Браузерный баг с clientX/Y (https://javascript.ru/forum/misc/73802-brauzernyjj-bag-s-clientx-y.html)

Shitbox2 16.05.2018 18:39

Браузерный баг с clientX/Y
 
Демка: https://tamtakoe.github.io/clientXY-bug/

Если в кратце, то ситауция такая, что курсор находится на одном месте, но в определенных ситуациях его координаты меняются (clientX/Y, pageX/Y, screenX/Y - все). Разумеется окно браузера остаётся на месте и никакие размеры там не меняются. Бывает, что баг сразу не воспроизводится, но после пары попыток повторится. Пробовал в последнем Хроме и Фаерфоксе).

Посмотрите, пожалуйста, у себя. Куда, кстати, о багах писать. Где приемная у разработчиков браузеров?

Aetae 16.05.2018 18:54

Меняется на другие или на те же?
Если на те же, просто срабатывает событие - то это известные глюки винды.
Если на другие - глюки твоего мыша.)

Nexus 16.05.2018 20:46

Win7 x64, Google v66.0.3359.139

По-моему ошибок нет, все работает, как часы.
Добавьте этот скрипт на страницу и сравните координаты мыши и координаты события:
document.body.addEventListener('mousemove',function(e){
	document.querySelector('#focus-input').value=e.clientX+':'+e.clientY;
	var list=[].slice.call(document.querySelectorAll('#log-container div'));
	list.pop();list.pop();
	list.forEach(node=>node.parentNode.removeChild(node));
});


У вас в лог записываются разные координаты, потому что вы не останавливаете свою мышь сразу после срабатывания события mouseover.

Shitbox2 17.05.2018 10:53

Обновил пример. Добавил указатель курсора и сразу стало видно, что сам дурак)

Получалось, что запоминались координаты вхождения курсора в элемент. После чего он проходил какое-то расстояние в элементе, а при прокручивании списка разумеется показывались его текущие координаты. От того и разница.

День потрачен на борьбу с ветряными мельницами. Всем спасибо, пойду учиться программировать)


Часовой пояс GMT +3, время: 08:50.