12 votes

l'événement touchstart ne se déclenche pas sur une div scrollable si elle est déjà scrollée (sur iPhone)

J'ai rencontré ce problème lors du défilement sur mon iPhone 6 (testé sur Safari et Chrome) :

Si je touche la div alors qu'elle est déjà en mouvement de défilement inertiel, le mouvement de défilement s'arrête comme prévu, mais la fonction de défilement inertiel est désactivée. touchstart ne se déclenche pas du tout.

Testé sur l'appareil Xiaomi Android (testé sur Chrome), le défilement s'arrête. ET les touchstart est déclenché.

Pourquoi la touchstart ne se déclenche pas ? S'agit-il d'un comportement standard sur l'iPhone ?

J'ai mis en place une procédure pour tester ce comportement :

https://fiddle.jshell.net/galoxia/L63wj9or/

Il suffit de faire le geste pour "activer" le défilement inertiel sur la boîte bleue, puis de toucher à nouveau pour l'arrêter. Sur Android, vous verrez touchstart dans la case jaune. Sur l'iPhone, ce n'est pas le cas.

0voto

idmadj Points 875

Avez-vous trouvé une solution ?

En touchstart n'est pas non plus déclenché lorsque l'on tape pendant le défilement élastique. Non touchmove o touchend soit, l'ensemble de la touche passe inaperçue pour Javascript, mais le défilement a lieu. Tout ce que vous obtenez est un scroll et, occasionnellement, un resize .

Cela peut justifier un rapport sur le système de suivi des bogues de WebKit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X