2017-10-20 18 views
0

J'ai du mal à faire fonctionner quelque chose dans Safari (et sur ios) qui fonctionne bien sur Firefox, Chrome, Edge et IE.Le gestionnaire de clic ne déclenche pas les éléments rendus dans Ajax Callback - seulement dans Safari

Sur ma page, il y a un champ de saisie qui envoie une entrée au serveur et ajoute un élément au dom après que le serveur a créé cet élément (pensez à un combobox complexe avec le rendu côté serveur des résultats de recherche).

Cet élément dom qui est ajouté à la page contient des liens cliquables comme celui-ci

<a href="" class="stampOption">Search result 1</a> 

Puisque personne ne sait combien de ces liens seront présents sur une page, je me inscrire aa gestionnaire de clic sur le document comme celui-ci :

$ (document) .on ("cliquez touchstart taper", la fonction (EVT) {

if ($(evt.target).hasClass("stampOption")) { 

       some code...  
}); 

Bien que ce soit bien dans tous les navigateurs, je l'ai testé à ce jour, le clic han dler n'est jamais appelé dans Safari.

J'ai essayé plusieurs solutions de rechange comme des événements délégués (qui semblent aussi avoir des problèmes sur Safari/iOS) comme si:

$(document).on("click touchstart tap", ".stampOption", function(evt) { 

. Et j'ai appliqué le pointeur: le pointeur CSS ainsi que le truc onclick = "" qui est suggéré ici sur SO et ailleurs.

Je me suis également assuré qu'aucun autre gestionnaire d'événement de clic n'empêche le bouillonnement ou autre.

Donc, des idées quoi d'autre que je pourrais essayer?

+0

Essayez de donner un '#' à l'href et d'empêcher l'action par défaut du lien - Je pense que le safari peut avoir un problème avec les liens sans un href – Pete

+0

+ Pete malheureusement, ce doesn ne t'aide pas. Le href n'est pas navigué et le gestionnaire de clic n'est pas appelé du tout. Juste comme avant. –

Répondre

0

Nevermind. Le problème était un gestionnaire de flou sur la même page qui utilisait relatedTarget, qui, sur Safari, était toujours Null, donc une instruction if() - n'est jamais arrivée à la bonne conclusion sur Safari, alors que tout se passait bien dans les autres navigateurs. Supposons qu'un gestionnaire ait mangé l'événement click sur Safari. Un cas typique d'ignorance envers les incompatibilités du navigateur ...