我在获取触摸事件与其发生的 html 元素的相对位置时遇到问题。我知道,这可能被问了一百万次。但是我为此苦苦挣扎了好几天,并查看了许多解决方案。
奇怪的是,在我测试的所有桌面浏览器上,它都可以工作,但在任何移动浏览器上都没有。
我在桌面上测试过
- 歌剧
 - 铬合金
 - 火狐
 
在手机上
- HTC One X (4.1) 铬
 - 三星 Note 10.1 (4.1) 股票浏览器
 - 三星 Note 10.1 (4.1) 铬
 - Nexus 7 (4.2) 铬
 
这是我的代码的jsfiddle。
问题似乎是,如果我捕获事件的画布位于滚动区域内,则元素的scrollTop属性在移动浏览器上设置为,它在桌面浏览器上具有适当的值。offsetParent0
那么这是一个已知的错误吗?还是我在这里监督了什么?更重要的是,是否有解决方法或其他方法来实现我的目标?
这是我的一些代码,我如何计算相对位置:
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;
}