用javascript獲取當(dāng)頁面上鼠標光標位置和觸發(fā)事件的對象的代碼
更新時間:2009年12月09日 20:56:20 作者:
用 javascript 獲取當(dāng)頁面上鼠標(光標)位置 和 觸發(fā)事件的對象 的方法
用javascript獲取鼠標位置:
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);
}
關(guān)于代碼的詳細說明,原文中已經(jīng)介紹,現(xiàn)轉(zhuǎn)到此處:
我們首先要聲明一個 evnet 對象,無論移動、點擊、按鍵等,都會激活一個 evnet ,在 Internet Explorer 里, event 是全局變量,會被存儲在 window.event 里. 在 firefox 或者其他瀏覽器,event 會被相應(yīng)的函數(shù)獲取.當(dāng)我們將mouseMove函數(shù)賦值于document.onmousemove,mouseMove 會獲取鼠標移動事件。
為了讓 ev 在所有瀏覽器下獲取了 event 事件,在Firefox下"||window.event"將不起作用,因為ev已經(jīng)有了賦值。在 MSIE 中 ev 為空,所以得到 window.event 。
因為在這篇文章中我們需要多次獲取鼠標位置,所以我們設(shè)計了一個 mousePosition 函數(shù),它包含一個參數(shù) : event 。
因為我們要在 MSIE 和其他瀏覽器下運行,F(xiàn)irefox 和其他瀏覽器用 event.pageX 和 event.pageY 來表示鼠標相對于文檔的位置,如果你有一個 500*500 的窗口并且你的鼠標在絕對中間,那么 pageX 和 pageY 的值都是 250,如果你向下滾動 500, 那么 pageY 將變成 750。
MSIE 正好相反,它使用 event.clientX 和 event.clientY 表示鼠標相當(dāng)于窗口的位置,而不是文檔。在同樣的例子中,如果你向下滾動500,clientY 依然是 250,因此,我們需要添加 scrollLeft 和 scrollTop 這兩個相對于文檔的屬性。最后,MSIE 中文檔并不是從 0,0 開始,而是通常有一個小的邊框(通常是 2 象素),邊框的大小定義在 document.body.clientLeft 和 clientTop 中,我們也把這些加進去。
很幸運,我們現(xiàn)在已經(jīng)用 mousePosition 函數(shù)解決了坐標問題,不需為此費心了。
用javascript獲取觸發(fā)事件的對象
<script language = "javascript" >
document.onclick = onClick;
function onClick(ev)
{
ev = ev || window.event; // 事件
var target = ev.target || ev.srcElement; // 獲得事件源
/* target.getAttribute()是獲取該事件源對像里面的一些屬性。
比如對像中有(name,id,type等等);*/
var dragObj = target.getAttribute('id');
alert(dragObj);
}
</ script >
關(guān)鍵還是event對象在多瀏覽器下的兼容性,和上面方式是一樣的,這里代碼就不做說明了
復(fù)制代碼 代碼如下:
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);
}
關(guān)于代碼的詳細說明,原文中已經(jīng)介紹,現(xiàn)轉(zhuǎn)到此處:
我們首先要聲明一個 evnet 對象,無論移動、點擊、按鍵等,都會激活一個 evnet ,在 Internet Explorer 里, event 是全局變量,會被存儲在 window.event 里. 在 firefox 或者其他瀏覽器,event 會被相應(yīng)的函數(shù)獲取.當(dāng)我們將mouseMove函數(shù)賦值于document.onmousemove,mouseMove 會獲取鼠標移動事件。
為了讓 ev 在所有瀏覽器下獲取了 event 事件,在Firefox下"||window.event"將不起作用,因為ev已經(jīng)有了賦值。在 MSIE 中 ev 為空,所以得到 window.event 。
因為在這篇文章中我們需要多次獲取鼠標位置,所以我們設(shè)計了一個 mousePosition 函數(shù),它包含一個參數(shù) : event 。
因為我們要在 MSIE 和其他瀏覽器下運行,F(xiàn)irefox 和其他瀏覽器用 event.pageX 和 event.pageY 來表示鼠標相對于文檔的位置,如果你有一個 500*500 的窗口并且你的鼠標在絕對中間,那么 pageX 和 pageY 的值都是 250,如果你向下滾動 500, 那么 pageY 將變成 750。
MSIE 正好相反,它使用 event.clientX 和 event.clientY 表示鼠標相當(dāng)于窗口的位置,而不是文檔。在同樣的例子中,如果你向下滾動500,clientY 依然是 250,因此,我們需要添加 scrollLeft 和 scrollTop 這兩個相對于文檔的屬性。最后,MSIE 中文檔并不是從 0,0 開始,而是通常有一個小的邊框(通常是 2 象素),邊框的大小定義在 document.body.clientLeft 和 clientTop 中,我們也把這些加進去。
很幸運,我們現(xiàn)在已經(jīng)用 mousePosition 函數(shù)解決了坐標問題,不需為此費心了。
用javascript獲取觸發(fā)事件的對象
復(fù)制代碼 代碼如下:
<script language = "javascript" >
document.onclick = onClick;
function onClick(ev)
{
ev = ev || window.event; // 事件
var target = ev.target || ev.srcElement; // 獲得事件源
/* target.getAttribute()是獲取該事件源對像里面的一些屬性。
比如對像中有(name,id,type等等);*/
var dragObj = target.getAttribute('id');
alert(dragObj);
}
</ script >
關(guān)鍵還是event對象在多瀏覽器下的兼容性,和上面方式是一樣的,這里代碼就不做說明了
您可能感興趣的文章:
- js 觸發(fā)select onchange事件代碼
- 代碼觸發(fā)js事件(click、change)示例應(yīng)用
- js獲取觸發(fā)事件元素在整個網(wǎng)頁中的絕對坐標(示例代碼)
- javascript 動態(tài)改變onclick事件觸發(fā)函數(shù)代碼
- JavaScript 動態(tài)添加腳本,并觸發(fā)回調(diào)函數(shù)的實現(xiàn)代碼
- 文本框中,回車鍵觸發(fā)事件的js代碼[多瀏覽器兼容]
- 用按鈕觸發(fā)Javascript動態(tài)生成一個表格的代碼
- FireFox與IE 下js兼容觸發(fā)click事件的代碼
- 鼠標放上去觸發(fā)一個javascript提示框效果代碼
- UpdatePanel觸發(fā)javascript腳本的方法附代碼
- JS代碼觸發(fā)事件代碼實例
相關(guān)文章
bootstrap fileinput組件整合Springmvc上傳圖片到本地磁盤
這篇文章主要介紹了bootstrap fileinput組件整合Springmvc上傳圖片到本地磁盤的方法,需要的朋友可以參考下2017-05-05
js使用visibilitychange處理頁面關(guān)閉事件
本文主要介紹了js使用visibilitychange處理頁面關(guān)閉事件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
2022-06-06
JS實現(xiàn)六邊形3D拖拽翻轉(zhuǎn)效果的方法
這篇文章給大家分享一個利用javascript實現(xiàn)3D六邊形拖拽翻轉(zhuǎn)的效果實例,實現(xiàn)后的效果很贊,對大家的學(xué)習(xí)Javascript具有一定的參考借鑒價值,有需要的朋友們一起去來看看吧。
2016-09-09
淺談Webpack4 Tree Shaking 終極優(yōu)化指南
這篇文章主要介紹了淺談Webpack4 Tree Shaking 終極優(yōu)化指南,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
2019-11-11 
