Mobile Safari “touchend” événement ne se déclenche pas lors de la dernière touche est retiré?

Le "geste" je suis en train de capture est un robinet quand, mais uniquement lorsqu'un élément (ou d'autres de même) a déjà un contact sur elle. Donc, touch (1) appuie sur le bouton vers le bas tandis que la touche (2) robinets à certaines options, appuyez sur (1) les rejets et le bouton est enfoncé.

Le problème, je vais avoir, c'est avec le dernier bit. Le "touchend" l'événement n'est pas déclenché lorsque je presse le dernier doigt? Donc je n'ai aucun moyen d'appuyer sur le bouton?

..les "touchend" l'événement a toujours la touche.longueur = 0?

Voici un peu de code de sorte que vous pouvez voir ce que je veux dire. Je pense que cela peut être un bug dans le navigateur safari mobile?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Multi-touch problem</title>
        <style>
            #touchpane{
                width:900px;
                height:500px;
                background-color:#333;
            }
        </style>
    </head>
    <body>
        <div id="touchpane" click="void();"></div>
        <script>
                var tp = document.getElementById("touchpane");
                tp.addEventListener('touchstart', function(e){
                    e.preventDefault();//to stop copy and paste
                    console.log("touchstart " + e.touches.length );
                }, false)
                tp.addEventListener('touchend', function(e){
                    console.log("touchend " + e.touches.length );
                                    //not called when last finger removed?
                }, false)
                tp.addEventListener('touchcancel', function(e){
                    console.log("touchcancel");
                }, false)
        </script>
    </body>
</html>
  • Assurez-vous d'inclure votre version de l'OS. Cela fonctionne comme prévu pour moi en 3.1.3 (first-gen iPod touch): "évènements touchstart 1", "évènements touchstart 2", "touchend 1", "touchend 0".
  • Bien sûr, désolé. 3.2.1 sur l'iPad. Ce et quelques autres semblent avoir été corrigés dans la version 4.2
InformationsquelleAutor ad rees | 2010-09-08