này đang làm việc cho tôi trên Mobile Safari 10 layerX và layerY thuộc tính cung cấp x tương đối và y, nhưng không đưa vào tài khoản các biến đổi. Vì vậy, tôi đã áp dụng thủ công phép biến đổi bằng cách lấy các giá trị quy mô biến đổi từ css.
e = sự kiện cảm ứng
parent = phần tử cha nơi áp dụng "chuyển đổi". Đối với tôi đó là const parent = $(e.target.parentNode);
const layerX = e.originalEvent.layerX;
const layerY = e.originalEvent.layerY;
const currentScaleX = parseFloat(parent.css('transform').match(/-?[\d\.]+/g)[0]);
const currentScaleY = parseFloat(parent.css('transform').match(/-?[\d\.]+/g)[3]);
if (currentScaleX < 1){
currentScaleX += 1;
}
if (currentScaleY < 1){
currentScaleY +=1;
}
const offsetX = layerX * currentScaleX;
const offsetY = layerY * currentScaleY;
Để thực hiện hai dòng cuối cùng tương thích với cảm ứng và nhấp vào các sự kiện:
const offsetX = e.offsetX || layerX * currentScaleX;
const offsetY = e.offsetY || layerY * currentScaleY;
tham chiếu cho grabbing chuyển đổi các giá trị: Fetch the css value of transform directly using jquery
và là những gì 'canvasName'? cố gắng sử dụng 'canvasName.clientX' – Eugeny89
canvasName là id của canvas –
dừng! sau đó bạn cần phải làm một cái gì đó như 'canvas = getElementById (canvasName)' và sau đó bạn có thể làm 'canvas.offsetLeft' – Eugeny89