これは私のために働いているのモバイルサファリ10. layerXとlayerY属性は、相対的なxとyを提供していますが、変換考慮されません。だから私は手動でCSSから変換スケール値を取得して変換を適用しました。
E = touchstartイベント
親= "変換" が適用される親要素。変換値を取得するため
const offsetX = e.offsetX || layerX * currentScaleX;
const offsetY = e.offsetY || layerY * currentScaleY;
参考:私にとっては、タッチで最後の2行は、互換性を持たせるとイベントをクリックし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;
たFetch the css value of transform directly using jquery
をと 'canvasName'は何ですか? 'canvasName.clientX'を使用しよう – Eugeny89
canvasNameはキャンバスのIDです –
停止! 'canvas = getElementById(canvasName)'のようなやり方で 'canvas.offsetLeft'を実行する必要があります。 – Eugeny89