событие touchend не работает над Android

Я только что начал смотреть на выполнение некоторой основной разработки мобильного Интернета на андроиде и записи сценария тестирования для исследования сенсорных событий. Я выполнил следующий код в эмуляторе андроида, и touchend событие никогда не запускается. Кто-либо может сказать мне почему?

Я попробовал в трех версиях эмулятора (1.6, 2.1 и 2.2), и все три ведут себя таким же образом.

Заранее спасибо за любую справку можно дать мне.

С наилучшими пожеланиями, Colm

РЕДАКТИРОВАНИЕ - я также попробовал это использование платформы XUI и имею ту же проблему, таким образом, я предполагаю, что у меня есть фундаментальное неверное толкование того, как этот материал работает......

Тест карты

    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <meta name="language" content="english" />

    <meta name="viewport" content="minimum-scale=1.0,
                                   width=device-width,
                                   height=device-height,
                                   user-scalable=no">
    <script type="text/javascript">
        window.onload = function(){
            document.body.appendChild(
                    document.createTextNode("w: " + screen.width + " x " + "h : " +screen.height)
            );
           attachTouchEvents();
        }
        function attachTouchEvents() {
            console = document.getElementById("console");
            var map = document.getElementById("map");
            map.addEventListener ('touchstart', function (event) {
                event.preventDefault();
                var touch = event.touches[0];
                document.getElementById("touchCoord").innerHTML = "S : " + touch.pageX + " " + touch.pageY;
                document.getElementById("touchEvent").innerHTML = "Touch Start";
            }, false);

            map.addEventListener ('touchmove', function (event) {
                event.preventDefault();
                var touch = event.touches[0];
                document.getElementById("touchCoord").innerHTML = "M : " + touch.pageX + " " + touch.pageY;
                document.getElementById("touchEvent").innerHTML = "Touch Move";
            }, false);

            map.addEventListener ('touchend', function (event) {
                var touch = event.touches[0];
                document.getElementById("touchCoord").innerHTML = "E : " + touch.pageX + " " + touch.pageY;
                document.getElementById("touchEvent").innerHTML = "Touch End";
                event.preventDefault();
            }, false);
            console.innerHTML = "event attached";
        }
    </script>
    <style type="text/css">
        html, body {
            height:100%;
            width:100%;
            margin: 0;
            background-color:red;
        }
        #map {
            height: 300px;
            width: 300px;
            background-color:yellow;
        }
    </style>
</head>

<body>
    <div id="map"></div>
    <div id="touchCoord">Touch Coords</div>
    <div id="touchEvent">Touch Evnt</div>
    <div id="console">Console</div>

</body>

32
задан Protos 7 June 2010 в 08:22
поделиться

2 ответа

Это веб-разработка, поэтому я создаю веб-страницу, которая может использовать события касания.

Я понял, в чем проблема.

При выполнении события touchend массив event.touches[] пуст, поэтому возникает ошибка Javascript. Событие выполняется, но ничего не выводится, потому что я пытаюсь получить доступ к неопределенным данным. Браузер эмулятора, похоже, не имеет никаких инструментов отладки Javascript, которые я нашел, и даже не сообщил мне, когда произошла ошибка Javascript, поэтому мне потребовалось некоторое время, чтобы разобраться с этим.

7
ответ дан 27 November 2019 в 20:26
поделиться

TouchList всегда пуст, когда запускается событие touchchend, потому что вы убрали все пальцы с экрана :).

http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/

2
ответ дан 27 November 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: