js實(shí)現(xiàn)獲取鼠標(biāo)當(dāng)前的位置
有時(shí)候,我們需要得到窗口拖動(dòng)或者鼠標(biāo)移動(dòng)的距離,此時(shí)可以通過(guò)計(jì)算鼠標(biāo)前后在頁(yè)面中的位置來(lái)得到想要的結(jié)果,下面介紹幾個(gè)事件屬性:
1、客戶區(qū)坐標(biāo)位置
鼠標(biāo)事件都是在瀏覽器視口中的特定位置上發(fā)生的。這個(gè)位置信息保存在事件對(duì)象的 clientX 和 clientY 屬性中。它們的值表示事件發(fā)生時(shí)鼠標(biāo)指針在視口中的水平和垂直坐標(biāo)(不包括頁(yè)面滾動(dòng)的距離)。如下圖所示:
var div = document.getElementById("myDiv"); //獲取元素 EventUtil.on(div, "click", function(event){ event = EventUtil.getEvent(event); alert("Screen coordinates: " + event.screenX + "," + event.screenY); });
注:其中,EventUtil.on()表示為元素綁定事件,EventUtil.getEvent(event)表示獲取事件對(duì)象。EventUtil是自定義的事件對(duì)象(使用JavaScript實(shí)現(xiàn)),里面包含了一些跨瀏覽器的方法,具體實(shí)現(xiàn),請(qǐng)看另一篇文章《js 實(shí)現(xiàn)一些跨瀏覽器的事件方法詳解及實(shí)例》。如果項(xiàng)目使用了jQuery插件,可相應(yīng)的替換成對(duì)應(yīng)的方法。
2、頁(yè)面坐標(biāo)位置
事件對(duì)象屬性pageX 和pageY,能告訴你事件是在頁(yè)面中的什么位置發(fā)生的。換句話說(shuō),這兩個(gè)屬性表示鼠標(biāo)光標(biāo)在頁(yè)面中的位置(相當(dāng)于鼠標(biāo)在窗口中的位置坐標(biāo) + 頁(yè)面滾動(dòng)的距離)。
var div = document.getElementById("myDiv");//獲取id為"myDiv"的元素 EventUtil.on(div, "click", function(event){//為元素綁定click事件 event = EventUtil.getEvent(event);//獲取event事件對(duì)象 var pageX = event.pageX,pageY = event.pageY; if (pageX === undefined){//IE8及更早版本 pageX = event.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft); } if (pageY === undefined){ pageY = event.clientY + (document.body.scrollTop || document.documentElement.scrollTop); } alert("Page coordinates: " + pageX + "," + pageY); });
3、屏幕坐標(biāo)位置
通過(guò)screenX和screenY屬性就可以確定鼠標(biāo)事件發(fā)生時(shí)鼠標(biāo)指針相對(duì)于整個(gè)屏幕的坐標(biāo)信息。如下圖所示:
var div = document.getElementById("myDiv"); EventUtil.on(div, "click", function(event){ event = EventUtil.getEvent(event); alert("Screen coordinates: " + event.screenX + "," + event.screenY); });
文章參考自《JavaScript高級(jí)程序設(shè)計(jì)第三版》
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)點(diǎn)餐小程序左側(cè)滑動(dòng)菜單
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)餐小程序左側(cè)滑動(dòng)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07JavaScript 代碼分割的實(shí)現(xiàn)步驟
JavaScript代碼分割是一種優(yōu)化策略,通過(guò)將代碼拆分成較小的塊,只在需要時(shí)加載,可以降低初始加載時(shí)間,減小頁(yè)面體積,本文主要介紹了JavaScript代碼分割的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-01-01Javascript 數(shù)組添加一個(gè) indexOf 方法的實(shí)現(xiàn)代碼
Javascript 的字符串有個(gè) indexOf 的方法,能夠返回字符在指定的字符串中的位置,非常有用,本文介紹了如何給 Javascript 數(shù)組也添加一個(gè)類似的方法。2009-09-09微信小程序開發(fā)(二):頁(yè)面跳轉(zhuǎn)并傳參操作示例
這篇文章主要介紹了微信小程序開發(fā)頁(yè)面跳轉(zhuǎn)并傳參操作,結(jié)合實(shí)例形式詳細(xì)分析了微信小程序頁(yè)面跳轉(zhuǎn)并傳參相關(guān)操作技巧,需要的朋友可以參考下2020-06-06深入理解JavaScript中的call、apply、bind方法的區(qū)別
下面小編就為大家?guī)?lái)一篇深入理解JavaScript中的call、apply、bind方法的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05JavaScript實(shí)現(xiàn)淘寶購(gòu)物件數(shù)選擇
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)淘寶購(gòu)物件數(shù)的選擇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08關(guān)于JavaScript中var聲明變量作用域的推斷
這個(gè)問(wèn)題其實(shí)之前困擾了我很久。如今終于想明白了,特來(lái)分享,如果有錯(cuò)誤的地方,請(qǐng)幫忙指正,我會(huì)隨時(shí)回來(lái)修正滴。2010-12-12