Javascript 触角
这是我从触摸事件中获得的返回数据。明显缺少任何有用的触摸X/Y坐标()。这是一个无可救药的泛泛问题,但无论如何,有什么想法吗?传递给触摸时执行的函数的“事件”对象:Javascript 触角,javascript,angularjs,canvas,touch,Javascript,Angularjs,Canvas,Touch,这是我从触摸事件中获得的返回数据。明显缺少任何有用的触摸X/Y坐标()。这是一个无可救药的泛泛问题,但无论如何,有什么想法吗?传递给触摸时执行的函数的“事件”对象: { "originalEvent": { "isTrusted": true }, "type": "touchstart", "timeStamp": 1450388006795, "jQuery203026962137850932777": true,
{
"originalEvent": {
"isTrusted": true
},
"type": "touchstart",
"timeStamp": 1450388006795,
"jQuery203026962137850932777": true,
"which": 0,
"view": "$WINDOW",
"target": {},
"shiftKey": false,
"metaKey": false,
"eventPhase": 3,
"currentTarget": {},
"ctrlKey": false,
"cancelable": true,
"bubbles": true,
"altKey": false,
"delegateTarget": {},
"handleObj": {
"type": "touchstart",
"origType": "touchstart",
"data": null,
"guid": 2026,
"namespace": ""
},
"data": null
}
现在,这是在画布中的角度UI模式中,但鼠标事件可以正常工作。这里是我的元素顺便说一句:
link: function(scope, element, attrs, model){
//scope.canvasElem = element[0].children[0].children[0];
scope.canvasElem = angular.element($('.touchScreen'))[0];
scope.ctx = scope.canvasElem.getContext('2d');
以下是我如何绑定的示例:
element.bind('touchstart', scope.touchStart);
编辑,下面是一个用于比较的mousedown事件对象:
{
"originalEvent": {
"isTrusted": true
},
"type": "mousedown",
"timeStamp": 1450389131400,
"jQuery20309114612976554781": true,
"toElement": {},
"screenY": 436,
"screenX": 726,
"pageY": 375,
"pageX": 726,
"offsetY": 81,
"offsetX": 41,
"clientY": 375,
"clientX": 726,
"buttons": 1,
"button": 0,
"which": 1,
"view": "$WINDOW",
"target": {},
"shiftKey": false,
"relatedTarget": null,
"metaKey": false,
"eventPhase": 3,
"currentTarget": {},
"ctrlKey": false,
"cancelable": true,
"bubbles": true,
"altKey": false,
"delegateTarget": {},
"handleObj": {
"type": "mousedown",
"origType": "mousedown",
"data": null,
"guid": 2025,
"namespace": ""
},
"data": null
}
看起来您正在使用jQuery,或者至少是一个类似jQuery的实现。jQuery不会将所有触摸事件属性复制到规范化事件包装器。但是,您可以在
originalEvent
对象下找到它们
originalEvent
属性包含本机触摸事件,您可以根据规范使用该事件
例如,代码如下所示:
$('body').on('touchmove', function(e) {
// Access the original event like this:
console.log(e.originalEvent);
});
嘿,我很感谢你的回答,你能详细说明我是如何到达那个包装器的吗?@VSO我添加了一个如何将原始事件对象记录到控制台的示例。我尝试了,它返回的结果是:{“isTrusted”:true}。原始对象中的属性(在我的问题帖子中)是我可以访问的所有属性。我真的希望我遗漏了一些东西。@VSO您是在使用jQuery还是类似jQuery的东西?可能您需要的属性没有被控制台枚举,但是如果您按名称访问它,它仍然存在。Alexander,它可能是jQuery lite或任何与angular一起预打包的属性。我会调查的。我再次感谢你的帮助,它缩小了范围。