移动浏览器中触摸事件的相对位置

时间:2013-03-11 16:54:51

标签: javascript events enyo

我遇到触摸事件的相对位置到发生它的html元素的问题。我知道,这可能被问了一百万次。但我几天都在努力解决这个问题,看了很多解决方案。

奇怪的是,在我测试的所有桌面浏览器上,它都运行了,但没有移动浏览器。

我在桌面上测试

  • 火狐

和移动

  • HTC One X(4.1)Chrome
  • Samsung Note 10.1(4.1)Stock Browser
  • Samsung Note 10.1(4.1)Chrome
  • Nexus 7(4.2)Chrome

以下是我的代码jsfiddle

似乎问题是,如果我捕获事件的画布位于滚动区域内,则scrollTop元素的offsetParent属性在移动设备上设置为0浏览器,它在桌面浏览器上具有适当的值。

这是一个已知的错误吗?或者我在这里监督一些事情? 更重要的是,是否有解决方法或其他方法来实现我的目标?

以下是我的一些代码,我如何计算相对位置:

getRelativePosition: function (element, event ) {
var position = { x : event.pageX, y : event.pageY };

do {

  this.log(element.offsetTop);
  this.log(element.offsetHeight);


  position.x -= element.offsetLeft;
  position.y -= element.offsetTop;

  position.x += element.scrollLeft;
  position.y += element.scrollTop;

} while(element = element.offsetParent);

return position;
}

1 个答案:

答案 0 :(得分:1)

问题可能是因为Enyo使用CSS 3D变换来改进某些平台上的滚动。有一个名为getAbsoluteBounds的新效用函数放入核心来计算相对位置。

您可以查看它是否能处理您的情况。简单地看一下,我不确定它和你的有什么不同。如果没有,您可能想要在其上提交Jira。