我剛開始考慮在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