使用jquery.hammer.js时如何返回X和Y坐标

DFa*_*nia 4 javascript jquery coordinates hammer.js

我正在使用jquery.hammer.js编写一个小页面,我在获取触摸事件的x和y坐标时遇到了问题.

我的代码如下:

var x1, y1;
var element = document.getElementById("myDIV")
$(element).hammer().on("touch", function(e){
x1 = e.clientX
y1 = e.clientY

document.getElementById("resultDIV").innerHTML = x1 + " " + y1
}
Run Code Online (Sandbox Code Playgroud)

但我得到的是"未定义的未定义"作为我的结果.

我有我能想到的一切,非常感谢任何帮助.

hud*_*dit 10

e.gesture现已弃用.使用最新版本的Hammer.js,您应该使用

var tapX, tapY;
tapX = e.center.x;
tapY = e.center.y;
Run Code Online (Sandbox Code Playgroud)

  • 这在移动设备上对我不起作用......似乎它与页面缩放有关,我得到的x,y坐标看起来大约是它们应该是的1/2,但是有*没有*指示事件结构中的任何位置(例如,"scale"报告为1) (2认同)

Kar*_*yan 9

  1. );最后错过了.
  2. 尝试始终;在每个末尾使用分号()statement.
  3. 如果您开始使用某些库,请先阅读文档和操作方法部分.

您可以从GitHub上文档中找到所需的信息.

更新:
我已经分析了event对象并找到了gesture这个对象的属性.该gesture包含另一个属性,这就是所谓center.最后,您可以使用pageX和从此属性获取X和Y坐标pageY.

var x1, y1;
x1 = e.gesture.center.pageX;
y1 = e.gesture.center.pageY;
Run Code Online (Sandbox Code Playgroud)

以下是JSFiddle中示例的工作演示.

而且,如果您使用multi-touch,您可以使用属性touches数组获取每次触摸的坐标gesture.其他属性名称保持不变(pageX, pageY).

var x1, y1;
x1 = e.gesture.touches[0].pageX;
y1 = e.gesture.touches[0].pageY;
Run Code Online (Sandbox Code Playgroud)

以下是使用数组获取第一次触摸坐标的示例的第二个演示touches.