2011-06-03 66 views

回答

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 2011-06-03 15:23:02

+0

增加了一个例子。尝试一下 – simshaun 2011-06-04 00:31:23

+0

尝试在自己的文件中的代码,效果很好,但是当与我们现有的代码一起使用时,脚本行意味着用触摸的坐标生成警报(在我们实际实现它之前用作测试)不起作用。以下是我们的:alert(event.changedTouches [0] .pageX);' – Mason 2011-06-06 18:09:55

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;