layerX/layerYとoffsetX/layerY

1378 ワード

イベントを引き起こすオブジェクトに対するマウスのX/Y座標:
offsetX/offsettY:IE特有で、イベントを引き起こすオブジェクトを参照点として、borderがあればコンテンツ領域の左上隅から計算します.
LayerX/layerY:Firefox特有で、ページbodyを参照点とし、イベントを引き起こすオブジェクトにposition位置決めが設定されている場合、IEと同様にイベントを引き起こすオブジェクトを参照点として、エレメントボックスモデルをトリガするborderの左上隅から計算されます.
すなわち、トリガ要素がposition位置決めを設定した場合、layerX/layerYとoffsetX/offsetYはほぼ等しく、唯一の違いはFirefoxがborderを参照点とし、IEがコンテンツを参照点とすることである.
以下のコードをIEとFirefoxでそれぞれテストしてもいいです.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
window.onload = function() {
    var oDiv = document.getElementById("oDiv");
    oDiv.onclick = function(evt) {
        evt = evt || fixEvent(window.event);
        alert("layerX == " + evt.layerX + "
layerY == " + evt.layerY);     } }; function fixEvent(evt) { //   IE   layerX   layerY  ,     evt.layerX = evt.offsetX;     evt.layerY = evt.offsetY;     return evt; } </script> <style type="text/css"> #oDiv {     width: 200px;     height: 200px;     background: blue;     border: 5px solid red;     margin: 100px;     position: relative;  /*  postion  ,layerX   offsetX  , 。 ,firefox   body,  IE   div。*/ }; </style> </head> <body> <div id="oDiv"><div> </body> </html>