JavaScript event 物件:當(dāng)前事件
取得event物件
在W3C 規(guī)格中,event 物件是隨事件處理函數(shù)傳入的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支援這種方式;但是對於IE8.0 及其以下版本,event 物件必須作為window 物件的屬性。
◆?在遵循 W3C 規(guī)格的瀏覽器中,event 物件透過事件處理函數(shù)的參數(shù)傳入。
語法:
elementObject.OnXXX=function(e){ var eve=e; // 聲明一個(gè)變量來接收 event 對象 }
上面綁定的事件處理函數(shù)中,參數(shù) e 用來傳入 event 對象,變數(shù) eve 表示目前事件。這個(gè)過程是 JavaScript 會(huì)自動(dòng)完成的。
例如,要取得發(fā)生事件時(shí)滑鼠的座標(biāo),可以這樣寫:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(e){ var eve=e; var x=eve.x; // X坐標(biāo) var y=eve.y; // Y坐標(biāo) alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>
請看下面的示範(fàn)
語法:
elementObject.OnXXX=function(){ var eve=window.event; // 聲明一個(gè)變量來接收event對象 }例如,要取得發(fā)生事件時(shí)滑鼠的座標(biāo),可以這樣寫:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(){ var eve=window.event; var x=eve.x; // X坐標(biāo) var y=eve.y; // Y坐標(biāo) alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>請看下面的示範(fàn):
典型程式碼:
elementObject.OnXXX=function(e){ var eve = e || window.event; // 使用 || 運(yùn)算取得event對象 }這裡要注意一點(diǎn), || 運(yùn)算的回傳值不一定是Boolean 類型,當(dāng)|| 運(yùn)算的兩個(gè)運(yùn)算元中有一個(gè)為真時(shí),將傳回該操作數(shù)本身的值。上面的程式碼,如果 event 隨函數(shù)的參數(shù)傳入,e 為真,eve=e;如果作為 window 物件的屬性,window.event 為真,eve=window.event 。
改進(jìn)上面取得滑鼠座標(biāo)的程式碼,使它相容於所有瀏覽器:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(e){ var eve = e || window.event; var x=eve.x; var y=eve.y; alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>請看下面的示範(fàn):
event物件常用屬性與方法#
event 物件用來表示當(dāng)前事件,事件有很多狀態(tài),例如,滑鼠點(diǎn)擊時(shí)的位置,按下鍵盤時(shí)的按鍵,發(fā)生事件的HTML元素,是否執(zhí)行預(yù)設(shè)動(dòng)作,是否冒泡等,這些都是作為event物件的屬性和方法存在的。想要獲得對應(yīng)的狀態(tài),就要存取對應(yīng)的屬性和方法。
event 物件常用屬性與方法(W3C規(guī)格)
#除了上面W3C規(guī)範(fàn)所規(guī)定的屬性與方法外,IE瀏覽器還支援以下屬性。
event 物件的屬性(IE特有)