javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?
問題描述
canvas在響應mousedown事件時,可以通過event.offsetX和offsetY來提取元素內坐標,那我換成了touchstart后沒有offsetX和offsetY.該在哪里找到元素內坐標呢?
問題解答
回答1:在我的 canvas 地圖庫 Sinomap 中處理的算法是這樣的(有改動):
// 注意這里是為 canvas 的 DOM 元素增加 Listener 而非 canvas 的 ctxdocument .getElementById(’my-canvas’) .addEventListener(’click’, updateHandler, false)function updateHandler (e) { // canvas 為你的 canvas ctx 變量 const box = canvas.getBoundingClientRect() const mouseX = (e.clientX - box.left) * canvas.width / box.width const mouseY = (e.clientY - box.top) * canvas.height / box.height console.log([mouseX, mouseY])}回答2:
touch事件 你需要 獲取 e.touches[0].pageX 或者其他坐標,至于touchend 的話,為了兼容性考慮,最好用e.changedTouches
回答3:相關文章:
1. Mysql && Redis 并發問題2. javascript - 百度echarts series數據更新問題3. css3 - 手機網頁中用css寫1px的描邊,為什么需要加一句overflow:hidden才能真正顯示1px?4. php - 第三方支付平臺在很短時間內多次異步通知,訂單多次確認收款5. python - type函數問題6. javascript - node服務端渲染的困惑7. css3 - css before 中文亂碼?8. mysql - 一個表和多個表是多對多的關系,該怎么設計9. css - 求推薦幾款好用的移動端頁面布局調試工具呢?10. mysql新建字段時 timestamp NOT NULL DEFAULT ’0000-00-00 00:00:00’ 報錯
