获取iPad触摸起始坐标

6
我希望您能在 JavaScript 中获得 iPad 上的触摸事件坐标。我该如何做到这一点?
3个回答

6
我相信这应该能解决问题:
var x = event.targetTouches[0].pageX,
    y = event.targetTouches[0].pageY;

更新:
以下是一个示例:
<!doctype html>
<html lang="en" class="no-js">
<head>
    <meta charset="utf-8">

    <title>Touch event test</title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
</head>

<body>

<script>
    $(function() {
        var $log = $("#log");

        function updateLog(x, y) {
            $log.html('X: '+x+'; Y: '+y);
        }

        document.addEventListener('touchstart', function(e) {
            updateLog(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
        }, false);

        document.addEventListener('touchmove', function(e) {
            e.preventDefault();
            updateLog(e.targetTouches[0].pageX, e.targetTouches[0].pageY);
        }, false);
    });
</script>

<div id="log"></div>

</body>
</html>

1
我们得到了一个未定义值的event.targetTouches。还有其他建议吗? - Mason
在自己的文件中尝试了这段代码,运行良好。但是当与我们现有的代码一起使用时,用于生成带有触摸坐标的警报的脚本行(在实际实现之前用作测试)无法正常工作。以下是我们拥有的内容:alert(event.changedTouches[0].pageX); - Mason
如果它没有生成警报,那么可能是实现中存在错误。调试超出了这个问题的范围,所以如果你需要帮助,请发布一个新的问题并在此处评论链接。我会尽力帮忙。 - simshaun

3
尝试使用:
x = event.originalEvent.pageX;
y = event.originalEvent.pageY;

0

这是一个老问题,但是没有被接受的答案,我的解决方案适用于iPad的情况如下:

var x = event.originalEvent.touches[0].clientX;
var y = event.originalEvent.touches[0].clientY;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接