2
我在将触摸事件的相对位置获取到它发生的html元素时遇到了问题。我知道,这可能是一百万次。但是我为此付出了数日的努力,并且看到了很多解决方案。touchevent在手机浏览器中的相对位置
奇怪的是,在我测试的所有桌面浏览器上,它工作,但没有任何移动浏览器。
我在桌面上
- 歌剧
- 铬
- Firefox的测试
和移动
- 的HTC One X(4.1)铬
- 三星注10.1(4.1)股票浏览器
- 三星注10.1(4.1),铬
- 的Nexus 7(4.2),铬
这里是一个jsfiddle我的代码。
这似乎是问题是,如果我的画布捕获的事件是一个滚动区域内,一个offsetParent
元素的scrollTop
属性设置为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;
}