js獲取鼠標(biāo)位置實(shí)例詳解
本文實(shí)例講述了js獲取鼠標(biāo)位置的方法。分享給大家供大家參考,具體如下:
用 javascript 獲取當(dāng)前頁(yè)面上鼠標(biāo)(光標(biāo))位置在許多情況下都會(huì)用到,比如拖放,懸停提示(tooltip) 等等。當(dāng)然,這里我們依然要面對(duì)瀏覽器的兼容問(wèn)題,在不同的瀏覽器下,對(duì)這些相關(guān)的屬性處理方式也不同,這里詳細(xì)介紹了瀏覽器在處理這些屬性時(shí)的差異和最終的解決方法。
Javascript代碼如下:
<script type="text/javascript">
// 說(shuō)明:獲取鼠標(biāo)位置
// 整理:http://www.codebit.cn
// 來(lái)源:http://www.webreference.com
function mousePosition(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
</script>
使用方式:
document.onmousemove = mouseMove;
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mousePosition(ev);
}
關(guān)于代碼的詳細(xì)說(shuō)明如下:
我們首先要聲明一個(gè) evnet 對(duì)象,無(wú)論移動(dòng)、點(diǎn)擊、按鍵等,都會(huì)激活一個(gè) evnet ,在 Internet Explorer 里, event 是全局變量,會(huì)被存儲(chǔ)在 window.event 里. 在 firefox 或者其他瀏覽器,event 會(huì)被相應(yīng)的函數(shù)獲?。?dāng)我們將mouseMove函數(shù)賦值于document.onmousemove,mouseMove 會(huì)獲取鼠標(biāo)移動(dòng)事件。
為了讓 ev 在所有瀏覽器下獲取了 event 事件,在Firefox下"||window.event"將不起作用,因?yàn)閑v已經(jīng)有了賦值。在 MSIE 中 ev 為空,所以得到 window.event 。
因?yàn)樵谶@篇文章中我們需要多次獲取鼠標(biāo)位置,所以我們?cè)O(shè)計(jì)了一個(gè) mousePosition 函數(shù),它包含一個(gè)參數(shù) : event 。
因?yàn)槲覀円?MSIE 和其他瀏覽器下運(yùn)行,F(xiàn)irefox 和其他瀏覽器用 event.pageX 和 event.pageY 來(lái)表示鼠標(biāo)相對(duì)于文檔的位置,如果你有一個(gè) 500*500 的窗口并且你的鼠標(biāo)在絕對(duì)中間,那么 pageX 和 pageY 的值都是 250,如果你向下滾動(dòng) 500, 那么 pageY 將變成 750。
MSIE 正好相反,它使用 event.clientX 和 event.clientY 表示鼠標(biāo)相當(dāng)于窗口的位置,而不是文檔。在同樣的例子中,如果你向下滾動(dòng)500,clientY 依然是 250,因此,我們需要添加 scrollLeft 和 scrollTop 這兩個(gè)相對(duì)于文檔的屬性。最后,MSIE 中文檔并不是從 0,0 開(kāi)始,而是通常有一個(gè)小的邊框(通常是 2 象素),邊框的大小定義在 document.body.clientLeft 和 clientTop 中,我們也把這些加進(jìn)去。
完成代碼:
<script type="text/javascript">
// 說(shuō)明:獲取鼠標(biāo)位置
// 整理:http://www.codebit.cn
// 來(lái)源:http://www.webreference.com
function mousePosition(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
document.onmousemove = mouseMove;
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mousePosition(ev);
document.getElementByIdx('mouseXPosition').value = mousePos.x;
document.getElementByIdx('mouseYPosition').value = mousePos.y;
}
</script>
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- js與jquery中獲取當(dāng)前鼠標(biāo)的x、y坐標(biāo)位置的代碼
- 使用JS獲取當(dāng)前地理位置方法匯總
- js獲取元素在瀏覽器中的絕對(duì)位置
- js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到某個(gè)位置便自動(dòng)定位某個(gè)tr
- js獲取元素相對(duì)窗口位置的實(shí)現(xiàn)代碼
- JS中獲取 DOM 元素的絕對(duì)位置實(shí)例詳解
- JS控制彈出新頁(yè)面窗口位置和大小的方法
- JS獲取當(dāng)前地理位置的方法
- js實(shí)現(xiàn)獲取鼠標(biāo)當(dāng)前的位置
- 一篇文章讓你徹底搞懂js中的位置計(jì)算
相關(guān)文章
JavaScript算法實(shí)例之求二叉樹(shù)從根到葉的所有路徑和
如果你希望求某一特定路徑(例如從根到葉子)上數(shù)字的和,那么問(wèn)題就轉(zhuǎn)變?yōu)榱恕扒蠖鏄?shù)從根到葉的所有路徑和”,所以本文給大家介紹了如何使用JavaScript求二叉樹(shù)從根到葉的所有路徑和,需要的朋友可以參考下2023-10-10
js實(shí)現(xiàn)的簡(jiǎn)單圖片浮動(dòng)效果完整實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)的簡(jiǎn)單圖片浮動(dòng)效果,以完整實(shí)例形式分析了javascript實(shí)現(xiàn)圖片定時(shí)漂浮移動(dòng)功能的方法,涉及javascript定時(shí)函數(shù)與數(shù)值動(dòng)態(tài)運(yùn)算相關(guān)技巧,需要的朋友可以參考下2016-05-05
Javascript/Jquery——簡(jiǎn)單定時(shí)器的多種實(shí)現(xiàn)方法
本文為大家詳細(xì)介紹下使用Javascript/Jquery實(shí)現(xiàn)簡(jiǎn)單的定時(shí)器,方法有多種,大家可以根據(jù)自己的喜好自由選擇,希望對(duì)大家有所幫助2013-07-07
微信小程序顯示倒計(jì)時(shí)功能示例【測(cè)試可用】
這篇文章主要介紹了微信小程序顯示倒計(jì)時(shí)功能,結(jié)合實(shí)例形式分析了微信小程序針對(duì)給定時(shí)間的倒計(jì)時(shí)功能相關(guān)界面顯示與邏輯運(yùn)算操作技巧,需要的朋友可以參考下2018-12-12
JavaScript實(shí)現(xiàn)離開(kāi)頁(yè)面前提示功能【附j(luò)Query實(shí)現(xiàn)方法】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)離開(kāi)頁(yè)面前提示功能,結(jié)合具體實(shí)例形式分析了javascript實(shí)現(xiàn)針對(duì)關(guān)閉頁(yè)面的事件響應(yīng)原理與操作技巧,并附帶jQuery的相應(yīng)實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09
基于js中style.width與offsetWidth的區(qū)別(詳解)
下面小編就為就大家?guī)?lái)一篇基于js中style.width與offsetWidth的區(qū)別(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
input file上傳 圖片預(yù)覽功能實(shí)例代碼
input file上傳圖片預(yù)覽其實(shí)很簡(jiǎn)單。今天小編就通過(guò)本文給大家介紹input file上傳 圖片預(yù)覽功能的實(shí)現(xiàn)代碼,比較簡(jiǎn)單,對(duì)input file 上傳預(yù)覽功能感興趣的朋友參考下吧2016-10-10

