談談滑鼠定位的影響因素,并總結常見的與位置相關的event事件的屬性。
滑鼠事件發生時的滑鼠定位問題即Mouse Position,由于标準的滞後及各個浏覽器廠商的實作不同,目前沒有完美的解決方案。
該問題首先受到不同浏覽器的事件模型有不同的實作方式的影響:
IE浏覽器中,有一個顯式的window.event對象,可以随時取用。
W3C相容浏覽器中,使用隐式對象,以第一個參數event的形式傳遞給事件處理函數。
其次,不同浏覽器中Event對象的位置相關屬性也有差别:
screenX 相對于電腦螢幕的左上角,滑鼠的X坐标。标準屬性,都支援。
screenY 相對于電腦螢幕的左上角,滑鼠的Y坐标。标準屬性,都支援。
clientX 相對于目前視窗可視區域(不包括視窗邊框)的左上角,滑鼠的X坐标。标準屬性,都支援。
clientY 相對于目前視窗可視區域(不包括視窗邊框)的左上角,滑鼠的Y坐标。标準屬性,都支援。
x 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。标準草案屬性,等價于clientX,IE支援
如果沒有這樣的父元素,預設以BODY元素(等價于pageX)。
y 相對于css中有position屬性的最近的父元素,滑鼠偏移的y軸坐标。标準草案屬性,等價于clientY,IE支援
如果沒有這樣的父元素,預設以BODY元素(等價于pageY)。
pageX 相對于BODY元素的左上角,滑鼠的X坐标。标準草案屬性,隻有非IE,IE9以後版本支援。
e.pageX = window.pageXOffset + e.clientX
pageY 相對于BODY元素的左上角,滑鼠的Y坐标。标準草案屬性,隻有非IE,IE9以後版本支援。
e.pageY = window.pageYOffset + e.clientY
offsetX 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。标準草案屬性,非IE支援。
offsetY 相對于css中有position屬性的最近的父元素,滑鼠偏移的Y軸坐标。标準草案屬性,非IE支援。
offsetX 相對于發出事件的元素,滑鼠偏移的x軸坐标。标準草案屬性,隻有IE支援。
offsetY 相對于發出事件的元素,滑鼠偏移的Y軸坐标。标準草案屬性,隻有IE支援。
layerX 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。非标準屬性,等價于offsetX,隻有非IE支援。
layerY 相對于css中有position屬性的最近的父元素,滑鼠偏移的y軸坐标。非标準屬性,等價于offsetY,隻有非IE支援。
scrollX,滾動條滾動的水準長度。
scrollY,滾動條滾動的垂直長度。