看鼠標位置mousexy是一款很實用的小軟件,可以隨時看到自己鼠標的位置,一款小工具,可以確定鼠標在顯示器上的X、Y坐標。在鼠標移動時,如果OnMouseMove得到的當前鼠標位置與之前記錄的Point2(x2, y2)不滿足(x2 - x1) = (y2 - y1)的關(guān)系,則通過更改當前鼠標位置,使得滿足上式關(guān)系,來達到校正的效果。
一個常見的例子是在Word里畫橢圓,當你按住Shift再拖動的時候,就能畫出正圓來,此時的鼠標位置應該就是被實時校正的。
運行效果如下:
瀏覽器中獲取鼠標位置:
圖示:
測試結(jié)果如下:
chrome:
e.pageX——相對整個頁面的坐標
e.layerX——相對當前坐標系的border左上角開始的坐標
e.offsetX——相對當前坐標系的border左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對可視區(qū)域的坐標
ff:
e.pageX——相對整個頁面的坐標
e.layerX——相對當前坐標系的border左上角開始的坐標
e.offsetX——無
e.clientX——相對可視區(qū)域的坐標
e.x——無
opera:
e.pageX——相對整個頁面的坐標
e.layerX——無
e.offsetX——相對當前坐標系的內(nèi)容區(qū)域左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對可視區(qū)域的坐標
safari:(這個和chrome是一樣的)
e.pageX——相對整個頁面的坐標
e.layerX——相對當前坐標系的border左上角開始的坐標
e.offsetX——相對當前坐標系的border左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對可視區(qū)域的坐標
IE9:
e.pageX——相對整個頁面的坐標
e.layerX——相對當前坐標系的border左上角開始的坐標 + 滾動條滾過的距離(這個NB轟轟了····=。=)
e.offsetX——相對當前坐標系的內(nèi)容區(qū)域左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對當前坐標系的border左上角開始
IE8:
e.pageX——無
e.layerX——無
e.offsetX——相對當前坐標系的內(nèi)容區(qū)域左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對當前坐標系的border左上角開始
IE7:
e.pageX——無
e.layerX——無
e.offsetX——相對當前坐標系的內(nèi)容區(qū)域左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對當前坐標系的border左上角開始
IE6:
e.pageX——無
e.layerX——無
e.offsetX——相對當前坐標系的內(nèi)容區(qū)域左上角開始的坐標
e.clientX——相對可視區(qū)域的坐標
e.x——相對當前坐標系的border左上角開始
綜合為下表:
插入表格不方便,鴨梨很大啊
其中clientX是W3C標準的一個屬性,所以都挺符合的,其他的就看瀏覽器廠商的心情了。
對于非IE6/7/8來說,pageX屬性都可以獲取到鼠標事件發(fā)生處到整個頁面左邊的坐標,IE6/7/8就只能通過clientX+scrollLeft來獲得相同的結(jié)果。
需要注意的是layerX和x這兩個屬性。
event.x本來是IE的,但是除了FF之外,其他的也都實現(xiàn)了這個屬性,但是opera,chrome和safari和IE的實現(xiàn)并不一致,opera,chrome和safari的event.x返回值和event.clientX相同
opera沒有實現(xiàn)layerX,IE9實現(xiàn)了,但是IE9又是個奇葩,layerX實現(xiàn)得稀奇古怪。
layerX與offsetX
除了ff,其他瀏覽器都實現(xiàn)了offsetX,opera跟隨IE系列,與IE實現(xiàn)相同,就是從內(nèi)容區(qū)域邊界開始算起,就是上面圖示中的B點,chrome和safari從border邊界開始算起,就是上面圖示中的A點。