【发布时间】:2013-05-03 13:40:01
【问题描述】:
我正在创建一个需要跨浏览器兼容的移动网站。对于一项功能,我需要检测触摸事件的位置。
Windows Phone 不支持 touchstart 等,所以我改用 mousedown,但我无法从事件中获取页面位置。它在桌面上没有问题,并且在 windows phone 上检测到 mousedown,但我不知道如何获取 offsetX - offset Y。
这是一个适用于桌面、iPhone 和 android 的示例 (我使用的是 jQuery,但没有插件或任何非标准的东西):
$("div").on("touchstart mousedown", function(e){
org_x = e.originalEvent.changedTouches[0].pageX ? e.originalEvent.changedTouches[0].pageX : e.originalEvent.offsetX;
alert(org_x);
org_y = e.originalEvent.changedTouches[0].pageY ? e.originalEvent.changedTouches[0].pageY : e.originalEvent.offsetY;
alert(org_y);
});
我已经在 windows phone 8 和 9 上测试过这个
【问题讨论】:
-
我不知道触摸事件或手机有什么不同,但你为什么不直接使用
e.pageX和e.pageY——而不是处理originalEvent。我很确定 jQuery 标准化了事件的位置,所以你不必做这样的事情 -
e.pageX e.pageY 适用于 mousedown mouseup,但在 windows phone mousemove 被视为与 mousedown 相同,因此它非常有限
标签: javascript jquery mobile windows-phone jquery-events