JavaScript取得鼠標(biāo)絕對(duì)位置程序代碼介紹
更新時(shí)間:2012年09月16日 02:19:04 作者:
文章介紹了關(guān)于JavaScript在不同瀏覽器下取得鼠標(biāo)絕對(duì)位置相關(guān)函數(shù)用法及兼容性介紹,有需要的同學(xué)可參考一下
首先不同瀏覽器中event位置屬性的分析:
1. IE的event.x,event.y是以事件觸發(fā)元素的父元素外界為參考點(diǎn)(不包括滾動(dòng)距離)
2. Firefox的event.pageX,event.pageY是以body元素為參考點(diǎn)(包括滾動(dòng)距離)
3. event.clientX,event.clientY以瀏覽器左上角為參考點(diǎn)(不包括滾動(dòng)距離)
4. IE的event.offsetX,event.offsetY和Firefox的event.layerX,event.layerY以事件觸發(fā)元素內(nèi)界的左上角為參考點(diǎn)(包括滾動(dòng)距離,當(dāng)有邊框時(shí),可能出現(xiàn)負(fù)數(shù))
然后是DOM對(duì)象高度屬性分析
1. scrollHeight: 獲取對(duì)象的滾動(dòng)高度
2. scrollLeft:設(shè)置或獲取位于對(duì)象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離
3. scrollTop:設(shè)置或獲取位于對(duì)象最頂端和窗口中可見內(nèi)容的最頂端之間的距離
4. scrollWidth:獲取對(duì)象的滾動(dòng)寬度
5. offsetHeight:獲取對(duì)象相對(duì)于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
6. offsetLeft:獲取對(duì)象相對(duì)于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
7. offsetTop:獲取對(duì)象相對(duì)于版面或由 offsetTop 屬性指定的父坐標(biāo)的計(jì)算頂端位置
有了以上分析,寫出兩個(gè)取位置的函數(shù)
// 取X軸位置
function mouseX(evt) {
// firefox
if (evt.pageX) return evt.pageX;
// IE
else if (evt.clientX)
return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
// 取Y軸位置
function mouseY(evt) {
// firefox
if (evt.pageY) return evt.pageY;
// IE
else if (evt.clientY)
return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
else return null;
}
獲取Html控件的絕對(duì)位置的兩種方法
function getAbsPoint(e){
var x = e.offsetLeft, y = e.offsetTop;
while (e = e.offsetParent) {
x += e.offsetLeft;
y += e.offsetTop;
}
alert("x:" + x + "," + "y:" + y);
}
function getAbsPoint(obj){
var x, y;
oRect = obj.getBoundingClientRect();
x = oRect.left
y = oRect.top
alert("(" + x + "," + y + ")")
}
注意
document.body.scrollLeft,document.body.scrollTop只用于IE6以前的版本,在IE6中,對(duì)沒(méi)有宣告 DOCTYPE,或者宣告的是transitional DOCTYPE,那么IE6將使用document.documentElement.scrollLeft 來(lái)獲取鼠標(biāo)的絕對(duì)位置
1. IE的event.x,event.y是以事件觸發(fā)元素的父元素外界為參考點(diǎn)(不包括滾動(dòng)距離)
2. Firefox的event.pageX,event.pageY是以body元素為參考點(diǎn)(包括滾動(dòng)距離)
3. event.clientX,event.clientY以瀏覽器左上角為參考點(diǎn)(不包括滾動(dòng)距離)
4. IE的event.offsetX,event.offsetY和Firefox的event.layerX,event.layerY以事件觸發(fā)元素內(nèi)界的左上角為參考點(diǎn)(包括滾動(dòng)距離,當(dāng)有邊框時(shí),可能出現(xiàn)負(fù)數(shù))
然后是DOM對(duì)象高度屬性分析
1. scrollHeight: 獲取對(duì)象的滾動(dòng)高度
2. scrollLeft:設(shè)置或獲取位于對(duì)象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離
3. scrollTop:設(shè)置或獲取位于對(duì)象最頂端和窗口中可見內(nèi)容的最頂端之間的距離
4. scrollWidth:獲取對(duì)象的滾動(dòng)寬度
5. offsetHeight:獲取對(duì)象相對(duì)于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
6. offsetLeft:獲取對(duì)象相對(duì)于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
7. offsetTop:獲取對(duì)象相對(duì)于版面或由 offsetTop 屬性指定的父坐標(biāo)的計(jì)算頂端位置
有了以上分析,寫出兩個(gè)取位置的函數(shù)
復(fù)制代碼 代碼如下:
// 取X軸位置
function mouseX(evt) {
// firefox
if (evt.pageX) return evt.pageX;
// IE
else if (evt.clientX)
return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
// 取Y軸位置
function mouseY(evt) {
// firefox
if (evt.pageY) return evt.pageY;
// IE
else if (evt.clientY)
return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
else return null;
}
獲取Html控件的絕對(duì)位置的兩種方法
復(fù)制代碼 代碼如下:
function getAbsPoint(e){
var x = e.offsetLeft, y = e.offsetTop;
while (e = e.offsetParent) {
x += e.offsetLeft;
y += e.offsetTop;
}
alert("x:" + x + "," + "y:" + y);
}
function getAbsPoint(obj){
var x, y;
oRect = obj.getBoundingClientRect();
x = oRect.left
y = oRect.top
alert("(" + x + "," + y + ")")
}
注意
document.body.scrollLeft,document.body.scrollTop只用于IE6以前的版本,在IE6中,對(duì)沒(méi)有宣告 DOCTYPE,或者宣告的是transitional DOCTYPE,那么IE6將使用document.documentElement.scrollLeft 來(lái)獲取鼠標(biāo)的絕對(duì)位置
您可能感興趣的文章:
- javascript窗口寬高,鼠標(biāo)位置,滾動(dòng)高度(詳細(xì)解析)
- JS獲得鼠標(biāo)位置(兼容多瀏覽器ie,firefox)腳本之家修正版
- 基于JavaScript實(shí)現(xiàn) 獲取鼠標(biāo)點(diǎn)擊位置坐標(biāo)的方法
- js獲取鼠標(biāo)位置雜談附多瀏覽器兼容代碼
- js獲取鼠標(biāo)位置實(shí)例詳解
- js獲取鼠標(biāo)點(diǎn)擊的位置實(shí)現(xiàn)思路及代碼
- firefox中用javascript實(shí)現(xiàn)鼠標(biāo)位置的定位
- javascript之鼠標(biāo)拖動(dòng)位置互換效果代碼
- JavaScript中獲取鼠標(biāo)位置相關(guān)屬性總結(jié)
- JS判斷鼠標(biāo)進(jìn)入容器的方向與window.open新窗口被攔截的問(wèn)題
- JS實(shí)現(xiàn)窗口加載時(shí)模擬鼠標(biāo)移動(dòng)的方法
- JS獲取鼠標(biāo)位置距瀏覽器窗口距離的方法示例
相關(guān)文章
JS中判斷某個(gè)字符串是否包含另一個(gè)字符串的五種方法
本文給大家?guī)?lái)JS中判斷某個(gè)字符串是否包含另一個(gè)字符串的五種方法,有string對(duì)象的方法,match() 方法,RegExp對(duì)象的方法,test() 方法,exec() 方法,具體內(nèi)容詳情大家參考下本文2018-05-05ECharts實(shí)現(xiàn)數(shù)據(jù)超出Y軸最大值max但不隱藏
這篇文章主要為大家介紹了ECharts實(shí)現(xiàn)數(shù)據(jù)超出Y軸最大值max但不隱藏實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10JavaScript實(shí)現(xiàn)的DOM繪制柱狀圖效果示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的DOM繪制柱狀圖效果,涉及javascript數(shù)值計(jì)算及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08js中關(guān)于require與import的區(qū)別及說(shuō)明
這篇文章主要介紹了js中關(guān)于require與import的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10js實(shí)現(xiàn)的拖動(dòng)后記錄軌跡并運(yùn)行
軌跡拖動(dòng)(拖影效果)2010-06-06幾種設(shè)置表單元素中文本輸入框不可編輯的方法總結(jié)
這篇文章主要是對(duì)幾種設(shè)置表單元素中文本輸入框不可編輯的方法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11如何使用js正則表達(dá)式驗(yàn)證文件夾名是否符合規(guī)范
眾所周知正則表達(dá)式非常強(qiáng)大,下面這篇文章主要給大家介紹了關(guān)于如何使用js正則表達(dá)式驗(yàn)證文件夾名是否符合規(guī)范的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05