Ich habe gerade angefangen zu tun, einige grundlegende mobile Web-Entwicklung auf dem Android und ein Schreiben ein Testskript, um die Touch-Ereignisse zu untersuchen. Ich habe den folgenden Code im Android-Emulator ausgeführt, und das touchend-Ereignis wird nie ausgelöst. Kann mir jemand sagen warum?touchend Ereignis funktioniert nicht auf Android
Ich habe in drei Versionen des Emulators (1.6, 2.1 und 2.2) versucht und alle drei verhalten sich auf die gleiche Weise.
Vielen Dank im Voraus für jede Hilfe, die Sie mir geben können.
Cheers, Colm
EDIT - Ich habe auch dies mit der XUI Rahmen versucht und haben das gleiche Problem, so das Zeug funktioniert Ich vermute, ich ein grundlegendes Missverständnis, wie haben ......
Map-Test
<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>
I‘ Ich bin mir nicht sicher, wie Sie das versuchen. Als du gesagt hast, dass du es mit dem Emulator ausprobiert hast, was meintest du? Führen Sie eine Android-Anwendung (z. B. eine "Aktivität", die verschiedene "Ansichten" verwendet) oder greifen Sie mit dem Android-Browser auf eine Webseite zu? Wenn Sie eine tatsächliche Android-Anwendung schreiben, beachten Sie, dass 'WebView' nicht gut mit den' onTouchEvent'-Callbacks funktioniert. Das eingebaute System zum Schwenken auf einer Seite, die größer als der Bildschirm ist, steht in Konflikt mit 'MotionEvent', so dass Sie inkonsistentes Verhalten bekommen. –
Ich bekomme das auch in einem 7in Android Tablet, 'touchend' Ereignis wird nie ausgelöst .. siehe http://code.google.com/p/android/issues/detail?id=19827#makechanges –