0

jqueryプラグインを使用してページを表示しています。ChromeとIEでページ全体の座標をキャプチャできますが、Firefoxで同じことをしようとすると、ページではなく画面の座標がキャプチャされます。誰かが助けることができますか。

コード:

$('.page').bind('click', function(event) {      

    var x;
    var y;


    if (!(event.offsetX || event.offsetY)) {

     x = event.clientX;
         y = event.clientY;

        }
        else {
            x = event.offsetX;
            y = event.offsetY;
        }               

    alert("x :" +x +", y: " +y);
}); 
4

1 に答える 1

4

jQueryを使用している場合は、 jQueryが正規化するイベントオブジェクトの属性pageXと属性を使用します。そのリンクから:pageY

イベントのプロパティ

jQueryは、ブラウザー間の一貫性を保つために次のプロパティを正規化します。

  • 目標
  • relatedTarget
  • pageX
  • pageY
  • どれの
  • metaKey

(私の強調。)

それらは確実にドキュメントに関連します。イベントが発生した要素に関連する座標を取得しようとしている場合は、を介してその要素の位置を見つけてoffset、次のように計算できます。

$(".page").click(function(event) {
    var pos = $(this).offset();

    console.log("Click relative to document: " + event.pageX + "x" + event.pageY);
    pos.left = event.pageX - pos.left;
    pos.top  = event.pageY - pos.top;
    console.log("Click relative to element:  " + pos.left + "x" + pos.top);
});

実例| ソース

于 2012-12-08T10:00:47.067 に答える