Pointerleave причина срабатывания
Здравствуйте!
Во время перемещения в версии с тачпадом хотел отслеживать pointermove, но событие move прерывается после 5-9 вызовов и вызывается событие leave. Не могу понять почему так? Может кто-то подсказать. Если нужен код: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Test</title> <script type="text/javascript" src="jquery.min.js"></script> </head> <body style="height: 100vh; width: 100vw; background: #000"> <script type="text/javascript"> $('body').on('pointerleave', (e) => { console.log('leave'); }) $('body').on('pointermove', (e) => { console.log('move'); }) </script> </body> </html> |
Biotoxsin,
может прокрутка |
Цитата:
|
Цитата:
С тачскрином такое происходит, т.к. вначале перед pointerleave возникает событие pointercancel. Это стандартная последовательность событий pointercancel - pointerleave перед тем, как браузер прекращает пользовательскую обработку движений по тачскрин. А событие pointercancel возникает, потому, что браузер берет на себя обработку движений пальцев, думая, что это какие то стандартные жесты, например, скроллинг или зумирование. Что бы он так не думал, нужно использовать стиль touch-action https://developer.mozilla.org/ru/doc...S/touch-action Попробуйте так <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Test</title> <script type="text/javascript" src="jquery.min.js"></script> </head> <body style="height: 100vh; width: 100vw; background: #000; touch-action: none;"> <script type="text/javascript"> $('body').on('pointerleave', (e) => { console.log('leave'); }) $('body').on('pointermove', (e) => { console.log('move'); }) </script> </body> </html> |
Часовой пояс GMT +3, время: 08:28. |