2011-06-03 85 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;