當需要取到鼠標點擊相對于層的位置信息時,在ie下可以用event.offsetX, evnet.offsetY,在Firefox下是event.layerX, event.layerY。但是firefox下總是有問題,取到的不是相對于層的坐標,而是pageX,pageY。 Google了半天也沒有發現什么解決辦法,最后在一個網站看到一個例子,原來在層中要設置position為absolute或者relative。
OK,問題解決,這點問題竟然讓我花費了2個小時。 :(
評論
不明白不要亂講,在這里誤導群眾!
offsetX/offsetY:相對于當前元素的位移
x/y:相對于當前座標系的位移,但是IE常常搞錯當前座標系
layerX/layerY:相對于當前座標系的位移
pageX/pageY:相對于網頁的位移
clientX/clientY:相對于可視窗口的位移
screenX/screenY:相對于屏幕的位移
offsetX/offsetY:W3C- IE+ Firefox- Opera+ Safari+
x/y:W3C- IE+ Firefox- Opera+ Safari+
layerX/layerY:W3C- IE- Firefox+ Opera- Safari+
pageX/pageY:W3C- IE- Firefox+ Opera+ Safari+
clientX/clientY:W3C+ IE+ Firefox+ Opera+ Safari+
screenX/screenY:W3C+ IE+ Firefox+ Opera+ Safari+
六對屬性只有clientX/clientY和screenX/screenY是W3C規范內的。
而offsetX/offsetY和pageX/pageY知其一組即可通過計算取得另一組,對于JS開發者而言,Firefox/Opera/Safari提供的pageX/pageY更加實用。x/y和layerX/layerY本應該是作用相同、名稱不同的兩組屬性,即相對于offsetParent對象的位移,但是IE對offsetParent的判斷卻相當不準確,大部份情況下offsetParent對象都等于body對象,最嚴重的后果就是在一個絕對定位的層中offsetParent對象本應該為層對象,可IE卻依舊為body對象,導致座標系混亂,而Opera和Safari中的x/y則同樣繼承了IE中的錯誤,因此x/y屬性能不用則不用。 回復 更多評論
offsetX/offsetY:相對于當前元素的位移
x/y:相對于當前座標系的位移,但是IE常常搞錯當前座標系
layerX/layerY:相對于當前座標系的位移
pageX/pageY:相對于網頁的位移
clientX/clientY:相對于可視窗口的位移
screenX/screenY:相對于屏幕的位移
offsetX/offsetY:W3C- IE+ Firefox- Opera+ Safari+
x/y:W3C- IE+ Firefox- Opera+ Safari+
layerX/layerY:W3C- IE- Firefox+ Opera- Safari+
pageX/pageY:W3C- IE- Firefox+ Opera+ Safari+
clientX/clientY:W3C+ IE+ Firefox+ Opera+ Safari+
screenX/screenY:W3C+ IE+ Firefox+ Opera+ Safari+
六對屬性只有clientX/clientY和screenX/screenY是W3C規范內的。
而offsetX/offsetY和pageX/pageY知其一組即可通過計算取得另一組,對于JS開發者而言,Firefox/Opera/Safari提供的pageX/pageY更加實用。x/y和layerX/layerY本應該是作用相同、名稱不同的兩組屬性,即相對于offsetParent對象的位移,但是IE對offsetParent的判斷卻相當不準確,大部份情況下offsetParent對象都等于body對象,最嚴重的后果就是在一個絕對定位的層中offsetParent對象本應該為層對象,可IE卻依舊為body對象,導致座標系混亂,而Opera和Safari中的x/y則同樣繼承了IE中的錯誤,因此x/y屬性能不用則不用。 回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||