2

Firefox でのみ発生するソフトウェアのバグに遭遇しました。その理由は、イベントに offsetX と offsetY が定義されていなかったためです。

これのおかげでなんとか直りまし

とにかく、私の質問はプログラミングのヘルプリクエストではありません。これらのプロパティが Firefox で定義されていないのはなぜですか? その背後にある理由は何ですか?

私は調べました:DOM3 UIEvent Spec。DOM3 MouseEvent 仕様。およびDOM2 MouseEvent 仕様。.

そこにはどちらのプロパティも記載されていないようですが、それは他のブラウザで導入された非公式のプロパティでしょうか?

4

2 に答える 2

7

W3 仕様で言及されていますが、offsetx/offsetyプロパティ自体はブラウザー間で一貫性を持って実装されていません。

IE、Webkit ブラウザー、および Opera でサポートされていますが、IE を除いて、これらはすべて仕様要件とは若干異なる機能を持っています

プロパティは Firefox ではまったくサポートされていません。これは、まだ解決されていない長年のバグのようです。

「それは他のブラウザで導入された非公式のプロパティだと思いますか?」

これは公式のプロパティであり、Firefox には実装されていないと思います。それが非公式の IE プロパティである場合、W3 仕様で言及されている Webkit/Opera ブラウザーに実装されていなかっただろうし、Firefox が実際に実装しようとしていなかったでしょう (上記のバグ リンクを確認してください)。

于 2013-06-25T09:43:18.010 に答える
2

offsetX と offsetY は Firefox では矛盾しているため、この方法で行うことができます

document.body.onclick = function(e) {
    e = e || window.event;

    var target = e.target || e.srcElement,
        rect = target.getBoundingClientRect(),
        offsetX = e.clientX - rect.left,
        offsetY = e.clientY - rect.top;

    console.log([offsetX, offsetY]);
};

詳細については、こちらこちらをご覧ください

于 2015-06-08T12:15:33.010 に答える