我刚开始考虑在android上做一些基本的移动web开发,并编写测试脚本来调查触摸事件。我在android模拟器中运行了以下代码,并且touchend事件永远不会被触发。谁能告诉我为什么?touchend事件不适用于Android
我已经尝试过三个版本的模拟器(1.6,2.1和2.2),并且所有三个版本的行为都是一样的。
在此先感谢您提供的任何帮助。
干杯, 科尔姆
编辑 - 我也试过这种使用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>
我米不知道你是如何试图做到这一点。当你说你已经用模拟器试过了,你是什么意思?您是否正在运行Android应用程序(例如,使用各种“视图”的“活动”),还是正在使用Android浏览器访问网页?如果您正在编写实际的Android应用程序,请注意'WebView'不适用于'onTouchEvent'回调。其内置的系统可以在大于屏幕的页面上与“MotionEvent”发生冲突,这样就会出现不一致的行为。 – 2010-06-07 10:35:40
我在7in安卓平板电脑上也收到了这个问题,'touchend'事件永远不会触发..请参阅http://code.google.com/p/android/issues/detail?id=19827#makechanges – 2012-08-20 15:45:12