Maison > Article > interface Web > Solution au déclenchement d'un clic d'événement deux fois dans les compétences iScroll_javascript
J’ai déjà lu de nombreux articles d’amis traitant de ce problème. Par exemple, utilisez une variable pour enregistrer l'intervalle d'exécution ou quelque chose du genre. J'ai l'impression de devoir me masturber à chaque fois, ce qui est assez fatiguant. J'aime choisir des outils avant de déplacer des briques. En fait, la solution à ce problème est très simple. iScroll intercepte en fait les événements touchstart et touchend lorsque l'on clique sur le navigateur. Utilisez js pour déclencher l'événement onclick de l'élément (fonction _end) lorsque vous touchez la fin. En fonctionnement réel, touchend est exécuté en premier, puis la fonction associée à onclick est exécutée. Cela crée un casse-tête avec un clic et deux déclencheurs. Ce n'est pas un problème en premier lieu. La raison pour laquelle c'est un problème est que nous devons jeter un œil au code source d'iScroll. La façon de résoudre ce problème est de refuser d’exécuter la fonction une deuxième fois. Et ma logique est exactement la même. Nous pouvons supprimer la fonction liée à l'événement onclick après avoir exécuté le code qui déclenche l'événement click dans la fonction _end. Ajoutez ensuite à nouveau l'événement après quelques centaines de millisecondes de timing. Par exemple :
Après avoir supprimé les fonctions liées à onclick, la fonction de test ne se déclenchera naturellement pas une deuxième fois. Afin de continuer à l'utiliser la prochaine fois, nous pouvons utiliser setTimeout pour restaurer le contenu onclick.
Le code source iscroll modifié (environ 550 à 570 lignes, dans la fonction _end) :
Fonction _clickBack et extrait de code hashBox (ajoutés avant la fonction _end)
Bien sûr, il peut également être implémenté via une fonction publique sans modifier le code source d'iscroll.
Ce qui précède représente tout le contenu de cet article. J'espère qu'il sera utile à tout le monde d'apprendre à utiliser le contrôle coulissant iscroll