41 votes

Jquery click ne fonctionne pas sur ipad

Nous avons une application web qui utilise Jquery blockUI pour ouvrir une fenêtre contextuelle et effectuer une action. Tout cela fonctionne bien sur Safari et IE 8. Le problème est avec l'Ipad. Aucune des actions dans le pop up ne répond. il reste juste sur cette page. même fermer ne fonctionne pas. Faut-il ajouter quelque chose d'autre ? Voici le code qui ouvre une page et l'événement de clic pour la fermeture.

<script>
$(document).ready(function() {
  $.ajaxSetup( {
           cache:false
   });

        $("#sendInviteDiv").load("invite.htm?action=view&pid="+pid);
            $.blockUI({ message: $('#sendInviteDiv'),
                centerY: 0,
                    css: {
                top:  ($(window).height() - 550) /2 + 'px',
                        left: ($(window).width() - 870) /2 + 'px',
                        width: '870px'
                }
            });
            //var ua = navigator.userAgent;
            //var event = (ua.match(/iPad/i)) ? "touchstart" : "click";
            //alert(ua);

            $('#closeInvite').click($.unblockUI);

    $('#inviteBtn').click(function() {
//script to load 
       //setPositionDetails('${formName}','inviteBtn');

       });
}

});

</script>

J'apprécie les conseils.

javascript est activé et les popups sont autorisés dans les paramètres Safari de l'Ipad.

2 votes

Activez la console de débogage dans les préférences de Safari (Settings - Safari - Developer). Des messages d'erreur ?

1voto

Abhishek Points 41

Probablement, plutôt que de définir les deux événements click et touch, vous pourriez définir un gestionnaire qui vérifierait si l'appareil fonctionne avec click ou touch.

var handleClick= 'ontouchstart' in document.documentElement ? 'touchstart': 'click';
$(document).on(handleClick,'.button',function(){
alert('Click is now working with touch and click both');
});

0voto

Atchuta Vani Points 91

En fait, il s'agit de quelques modifications de javascript dans le code. appel d'une méthode javascript avec ; à la fin. placement des balises script dans le corps du texte au lieu de l'en-tête. et même changer le texte affiché (veuillez "cliquer") pour quelque chose qui n'est pas un événement, comme par exemple "Veuillez noter" etc.

J'ai tourné le débogueur sur safari, il n'a pas donné beaucoup d'informations ou même des erreurs parfois.

0voto

Eino Gourdin Points 440

Nous avons un problème similaire : l'événement click sur un bouton ne fonctionne pas, tant que l'utilisateur n'a pas fait défiler la page. Le bogue n'apparaît que sur iOS.

Nous avons résolu le problème en faisant défiler un peu la page :

$('#modal-window').animate({scrollTop:$("#next-page-button-anchor").offset().top}, 500);

(Cela ne répond pas à la cause ultime, cependant. Peut-être un bug dans Safari mobile ?)

0voto

Luke Wenke Points 1113

J'avais un span qui créait une popup. Si j'utilisais "click touchstart", cela déclenchait des parties de la fenêtre popup pendant le touchend. J'ai corrigé ce problème en créant un span "click touchend".

0voto

djbp Points 704

J'ai constaté que lorsque j'ai rendu ma liaison plus spécifique, elle a commencé à fonctionner sur iOS. J'avais :

$(document).on('click tap', 'span.clickable', function(e){ ... });

Quand je l'ai changé en :

$("div.content").on('click tap', 'span.clickable', function(e){ ... });

iOS a commencé à répondre.

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