gpt4 book ai didi

javascript - touchend 事件在 Android 上不起作用

转载 作者:IT老高 更新时间:2023-10-28 21:46:05 25 4
gpt4 key购买 nike

我刚刚开始考虑在 android 上进行一些基本的移动 Web 开发,并编写一个测试脚本来调查触摸事件。我已经在 android 模拟器中运行了以下代码,并且 touchend 事件永远不会被触发。谁能告诉我为什么?

我在模拟器的三个版本(1.6、2.1 和 2.2)中进行了尝试,所有三个版本的行为方式都相同。

提前感谢您能给我的任何帮助。

干杯,科尔姆

编辑 - 我也尝试过使用 XUI 框架并遇到同样的问题,所以我猜我对这些东西的工作原理有一个根本的误解......

map 测试

    <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 v3 和 v4(可能还有 v2.3)上缺少 touchend 事件的人来说,有一个长期 Unresolved 错误仅在 v4.1 中得到修复(显然):

http://code.google.com/p/android/issues/detail?id=4549

http://code.google.com/p/android/issues/detail?id=19827

要解决此错误,您必须在 touchstart 或第一个 touchmove 事件上调用 preventDefault()。当然,这会阻止原生滚动,因此您需要自己重新实现。

关于javascript - touchend 事件在 Android 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com