2

タッチ イベントが発生した html 要素に対する相対位置を取得する際に問題があります。私は知っています、これはおそらく百万回尋ねられました。しかし、私はこれに何日も苦労しており、多くの解決策を見てきました。

奇妙なことに、私がテストしたすべてのデスクトップ ブラウザで動作しましたが、モバイル ブラウザでは動作しませんでした。

デスクトップでテストしました

  • オペラ
  • クロム
  • ファイアフォックス

そしてモバイルで

  • HTC One X (4.1) クローム
  • Samsung Note 10.1 (4.1) ストック ブラウザ
  • サムスン ノート 10.1 (4.1) クローム
  • ネクサス 7 (4.2) クローム

これが私のコードのjsfiddleです。

問題は、イベントをキャプチャするキャンバスがスクロール領域内にある場合、モバイル ブラウザーでは要素のscrollTopプロパティが設定され、デスクトップ ブラウザーでは適切な値が設定されることです。offsetParent0

これは既知のバグですか?それとも私はここで何かを監督しましたか?さらに重要なことは、私の目標を達成するための回避策や別の方法はありますか?

これが私のコードです。相対位置を計算する方法は次のとおりです。

getRelativePosition: function (element, event ) {
var position = { x : event.pageX, y : event.pageY };

do {

  this.log(element.offsetTop);
  this.log(element.offsetHeight);


  position.x -= element.offsetLeft;
  position.y -= element.offsetTop;

  position.x += element.scrollLeft;
  position.y += element.scrollTop;

} while(element = element.offsetParent);

return position;
}
4

1 に答える 1

1

この問題は、Enyo が CSS 3D 変換を使用して一部のプラットフォームでのスクロールを改善したために発生した可能性があります。getAbsoluteBounds相対位置を計算するために put into coreと呼ばれる新しいユーティリティ関数がありました。

それがあなたの状況を処理するかどうかを確認するかもしれません。ざっと見てみると、あなたのものと大差ないかどうかはわかりません。そうでない場合は、Jira にファイルすることをお勧めします。

于 2013-03-12T14:12:53.617 に答える