我在网上尝试了很多解决方案,但由于某种原因,当我在画布上移动触摸时,该页面仍然垂直移动:
<html>
<head>
<style>
html, body {
overflow-x: hidden;
}
body {
background-color: lightgray;
position: relative;
}
body.noScroll {
overflow: hidden;
}
</style>
</head>
<body>
<canvas id="myCanvas" style="touch-action: none;" width="800" height="800"></canvas><br>
<script>
document.body.addEventListener("touchmove", getTouchPos)
var canvas = document.getElementById('myCanvas')
var context = canvas.getContext('2d')
context.fillStyle = "#000";
context.fillRect(0, 0, canvas.width, canvas.height);
function getTouchPos(evt) {
evt.preventDefault();
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在 iOS Safari 上测试。
我有一个 HTML5 应用程序,它广泛使用其画布。iOS 11.3 更新后,我们开始遇到触摸问题。
实现时,我们确保明确告诉用户代理不应处理该事件。(即我们添加了evnt.preventDefault()
我们还限制了画布,并确保禁用浏览器对所有平移和缩放手势的处理。(touch-action: none
虽然Safari不正式支持这个基本实现,但这确实适用于iOS 11.3之前的任何浏览器)
这并不特定于任何浏览器,但它会在 11.3 设备之后的任何 iOS 设备上表现出来。
可以使用此 JSFiddle 进行复制:https://jsfiddle.net/w542djdw/15/
任何建议将不胜感激。