Я только что начал смотреть на выполнение некоторой основной разработки мобильного Интернета на андроиде и записи сценария тестирования для исследования сенсорных событий. Я выполнил следующий код в эмуляторе андроида, и 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>
Это веб-разработка, поэтому я создаю веб-страницу, которая может использовать события касания.
Я понял, в чем проблема.
При выполнении события touchend
массив event.touches[]
пуст, поэтому возникает ошибка Javascript. Событие выполняется, но ничего не выводится, потому что я пытаюсь получить доступ к неопределенным данным. Браузер эмулятора, похоже, не имеет никаких инструментов отладки Javascript, которые я нашел, и даже не сообщил мне, когда произошла ошибка Javascript, поэтому мне потребовалось некоторое время, чтобы разобраться с этим.
TouchList всегда пуст, когда запускается событие touchchend, потому что вы убрали все пальцы с экрана :).
http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/