Mobile Safari, parfois, ne déclenche pas l'événement click
C'est une dynamique JavaScript de l'application que je suis en train de travailler sur. J'ai beaucoup de <a>
d'ancrage des éléments qui ont une classe. Lorsque cette classe est cliqué, quelque chose doit se passer. Cela fonctionne très bien dans Firefox, Chrome, IE, mais , dans certains cas, cliquez sur événement n'est pas déclenché sur le navigateur Safari mobile (iPad et iPhone).
Ces éléments ont tous exactement le même CSS, c'est juste leur position qui diffère (ils sont dans différents conteneurs).
J'ai essayé différentes solutions que j'ai trouvé ici, mais avec pas de chance. Par exemple:
- réglage du curseur pointeur
- le code dans cette réponse
Avez-vous une autre idée qui pourrait m'aider à trouver une solution à cela? Pourquoi ne l'événement click ne se déclenche que dans certains cas?
Merci!
- Vous devriez avoir un attribut href pour assurer l'ancrage fonctionne correctement. Utiliser .preventDefault() en js, pour contrer son comportement.
- Merci Kyle. Ajouté hrefs mais pas de chance. Les autres éléments que les travaux n'ont pas non hrefs. Exactement comment dois-je utiliser l' .preventDefault()?
- L'application utilise jQuery, il est .preventDefault() dans sa fonction de clic.
Vous devez vous connecter pour publier un commentaire.
L'événement click résultant d'un robinet sur iOS fera des bulles comme prévu sous certaines conditions-dont vous l'avez mentionné, le curseur de style. Voici un autre:
http://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
C'est beaucoup mieux fixer vecteur, et peut être fait sans un contrôle de navigateur. Vous n'avez qu'à ajouter une div en raison de la "non compris le
<body>
" partie:Maintenant, cliquez sur chaque événement à l'origine de l'intérieur div fera des bulles comme prévu dans iOS (ce qui signifie que vous pouvez les attraper avec
$(document).on('click', '.class', etc...)
).body { cursor:pointer; }
. Beaucoup de codes insérer des éléments dynamiques àbody
, je ne veux pas avoir à modifier tous.Avez-vous essayé?? C'est parce que ios n'est pas le feu à l'événement click parfois, ne reconnaît l'événement tactile
touchstart
?Déclarant simplement ces vides écouteurs d'événement fait le tour. Il suffit de l'essayer 🙂
Cela permettra de le faire fonctionner sur tous les navigateurs:
C'est un fou problème et en effet LinusR réponse et la description sur quirksmode sont exacts. Mon général, cliquez sur l'écouteur d'événement à ne pas travailler à cause de cela dans iOS Safari:
J'ai maintenant enveloppé mon application avec un
<div onclick="void(0);"></div>
et qui fonctionne. J'ai aussi ajouté un peu plus de choses à corriger certains problèmes qui en est sorti:J'avais besoin de la
height: 100%;
de faire de la sur disponible sur l'ensemble de la page parce que j'en avais besoin. Si vous ne le faites pasheight: 100%;
l'événement de clic ne sera qu'un feu à l'intérieur de la hauteur de la div.La
-webkit-tap-highlight-color: transparent;
est d'empêcher un onclick flash superposition de style, comme l'iOS par défaut avec les éléments cliquables. La div après qui permet de restaurer la valeur initiale de la propriété CSS, ainsi que d'autres éléments cliquables ont un comportement normal à cet égard. Voir cette réponse pour plus d'info.Il y a un événement pour les appareils mobiles. Essayez d'ajouter le
tap
écouteur d'événement en plus de laclick
événement. Ils peuvent être fixés simultanément avec les éléments suivants:tap
. J'ai essayé la plupart des événements avec aucun résultat.