JavaScript取得鼠標(biāo)絕對位置程序代碼介紹
更新時(shí)間:2012年09月16日 02:19:04 作者:
文章介紹了關(guān)于JavaScript在不同瀏覽器下取得鼠標(biāo)絕對位置相關(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對象高度屬性分析
1. scrollHeight: 獲取對象的滾動(dòng)高度
2. scrollLeft:設(shè)置或獲取位于對象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離
3. scrollTop:設(shè)置或獲取位于對象最頂端和窗口中可見內(nèi)容的最頂端之間的距離
4. scrollWidth:獲取對象的滾動(dòng)寬度
5. offsetHeight:獲取對象相對于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
6. offsetLeft:獲取對象相對于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
7. offsetTop:獲取對象相對于版面或由 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控件的絕對位置的兩種方法
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中,對沒有宣告 DOCTYPE,或者宣告的是transitional DOCTYPE,那么IE6將使用document.documentElement.scrollLeft 來獲取鼠標(biāo)的絕對位置
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對象高度屬性分析
1. scrollHeight: 獲取對象的滾動(dòng)高度
2. scrollLeft:設(shè)置或獲取位于對象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離
3. scrollTop:設(shè)置或獲取位于對象最頂端和窗口中可見內(nèi)容的最頂端之間的距離
4. scrollWidth:獲取對象的滾動(dòng)寬度
5. offsetHeight:獲取對象相對于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
6. offsetLeft:獲取對象相對于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
7. offsetTop:獲取對象相對于版面或由 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控件的絕對位置的兩種方法
復(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中,對沒有宣告 DOCTYPE,或者宣告的是transitional DOCTYPE,那么IE6將使用document.documentElement.scrollLeft 來獲取鼠標(biāo)的絕對位置
您可能感興趣的文章:
- 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新窗口被攔截的問題
- JS實(shí)現(xiàn)窗口加載時(shí)模擬鼠標(biāo)移動(dòng)的方法
- JS獲取鼠標(biāo)位置距瀏覽器窗口距離的方法示例
相關(guān)文章
JavaScript實(shí)現(xiàn)AOP詳解(面向切面編程,裝飾者模式)
下面小編就為大家分享一篇JavaScript實(shí)現(xiàn)AOP的方法(面向切面編程,裝飾者模式),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
微信小程序局部刷新觸發(fā)整頁刷新效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序局部刷新觸發(fā)整頁刷新效果的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
js點(diǎn)擊按鈕實(shí)現(xiàn)帶遮罩層的彈出視頻效果
這篇文章主要介紹了js點(diǎn)擊按鈕實(shí)現(xiàn)帶遮罩層的彈出視頻效果,需要的朋友可以參考下2015-12-12
原生js實(shí)現(xiàn)簡單的Ripple按鈕實(shí)例代碼
本篇文章主要介紹了原生js實(shí)現(xiàn)簡單的Ripple按鈕實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03

