我遇到触摸事件的相对位置到发生它的html元素的问题。我知道,这可能被问了一百万次。但我几天都在努力解决这个问题,看了很多解决方案。
奇怪的是,在我测试的所有桌面浏览器上,它都运行了,但没有移动浏览器。
我在桌面上测试
和移动
以下是我的代码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;
}
答案 0 :(得分:1)
问题可能是因为Enyo使用CSS 3D变换来改进某些平台上的滚动。有一个名为getAbsoluteBounds
的新效用函数放入核心来计算相对位置。
您可以查看它是否能处理您的情况。简单地看一下,我不确定它和你的有什么不同。如果没有,您可能想要在其上提交Jira。