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