【问题标题】:Why is "event.offsetX" undefined when "touchstart" event?为什么“touchstart”事件时“event.offsetX”未定义?
【发布时间】:2025-12-18 21:35:01
【问题描述】:

我正在尝试捕获touchstart 相对于元素(“.canvas”)的位置 有没有可能捕捉到这个事件offsetXoffsetY

$(".canvas").on("mousemove", function(event){
     console.log(event.offsetX + " - " + event.offsetY);
})

使用click 事件: http://jsfiddle.net/jfejc6zw/1/

使用touchstart 事件(使用您的手机或模拟器进行测试) http://jsfiddle.net/jfejc6zw/2/

提前致谢!

【问题讨论】:

    标签: javascript mobile canvas mobile-safari hammer.js


    【解决方案1】:

    如果您已经在使用 jQuery,为什么还要为低级事件坐标而烦恼呢?只需使用 jQuery .offset().position() 函数,因为 jQuery 已经解决了所有浏览器不一致问题。

    【讨论】:

    • offset() 只给出了 jQuery 元素的位置。 offsetX/offsetY 给出 事件 相对于它们被触发的元素的位置。