javaScript中的事件對象event,javascriptevent

來源:互聯網
上載者:User

javaScript中的事件對象event,javascriptevent

事件對象event,每當一個事件被觸發的時候,就會隨之產恒一個事件對象event,該對象中主要包含了關於該事件的基本屬性,事件類型type(click、dbclick等值)、目標元素target(我的理解是事件來源對象,即觸發該事件的dom元素)等,以及一些與該事件相關的方法,取消事件預設行為preventDefault()、組織事件繼續冒泡或捕獲stopPropagation()等等,這裡我只列舉了,項目中我用到的屬性和方法。

既然事件被觸發,就隨之產生了一個event對象,筆者在IE中測試了,不需要通過賦值即可使用,或許低版本的需要吧,Firefox瀏覽器是需要對其進行賦值的,在這裡我覺得需要養成一個習慣,多謝一行代碼唄,每次在事件處理常式中使用event對象,都通過賦值的方式去使用:

var event = event||window.event;

其實,預設參數數組中第一元素就是event對象,也就是說,可以用數組元素賦值

var event = arguments[0];

type屬性,應該是最容易理解的,事件類型,單擊click,雙擊dbclick等等

target屬性,觸發事件的dom元素對象,我看到網上說target是Firefox瀏覽器,srcElement是IE中的,但是我測試的結果是,在IE11中兩個都可以使用了,一樣的效果,但是Firefox中只能使用target屬性,瀏覽器之間的實現方式能不能有個通用的標準呢,相容性很糾結呢,所以和event對象的擷取一樣,建議是通過賦值的方式去擷取觸發事件的dom對象:

var target = event.target||event.srcElement;

preventDefault()方法是用來取消預設事件行為的,比如超連結,點擊超連結,會根據href屬性,跳到另一個頁面,之前在項目中,就遇到很多需要取消超連結的預設點擊行為,在點擊事件處理常式中,取消預設的事件行為,可以如下操作:

if(event.preventDefault){//判斷該函數是否存在     event.preventDefault;}else{     returnValue = false;}

這樣也實現了取消超連結的預設行為,其實在項目中,還看到別的同事使用的別的方式,也取消是預設的點擊行為

<a href="javaScript:void(0);">也行</a>

stopPropagation()方法直接就取消事件的繼續冒泡或者捕獲了,這個很實用的,如果父元素和子項目都綁定了某個相同類型的事件,比如都綁定了click事件,現在使用者觸發了一個事件,事件在捕獲階段被觸發,針對父元素,則會繼續向下捕獲,進而觸發子項目的事件,針對子項目,在冒泡階段被觸發,也同樣因為冒泡行為,會觸發父元素的事件,因此往往需要取消這種無意的觸發,

if(event.stopPropagation){//判斷是否存在      event.stopPropagation();}else{      event.cancleBubble = true;}


2014年9月30日22:04:18

後續項目中,如果還是用到了別的相關操作,我在繼續補充








JavaScript 中的windowevent代表的是事件的狀態,但是我有一個疑問

首先回答你第一個問題:window.event代表著事件對象的狀態。只有在事件發生時生效。如滑鼠、鍵盤等事件被觸發時這個對象才存在。window.event這隻在IE下是這樣的。他並不是標準。。也就是說其他瀏覽器並不支援。在W3C標準支援的瀏覽器下事件對向是引發事件涵數的第一個參數,參數名隨意,在下面的例子中我的事件對象的參數名是evt,也可以定義為其他名字.為了相容IE瀏覽器可以這樣寫
<style type="text/css">
#obj{background:red;width:300px;height:200px;position:relative;}
</style>
<div id="obj"></div>
<script type="text/javascript">
document.getElementById("obj").onclick=function(evt){
//擷取的這個ID為obj的DIV對象就是個執行個體引起滑鼠事件的元素
//evt代表事件對象(W3C DOM標準下)
var evt=evt || event; //標準化事件對象(W3C DOM 和IE DOM )
evt.Target=evt.Target || evt.srcElement;//標準化事件對象屬性<引起事件的元素>
//(W3C DOM 和IE DOM )
evt.layerX=evt.layerX || evt.offsetX;//滑鼠相對於引起事件的元素的父元素的X座標(標準化IE)
evt.layerY=evt.layerY || evt.offsetY;//滑鼠相對於引起事件的元素的父元素的Y座標(標準化IE)
alert("相對這個DIV的X方向的座標"+evt.layerX+"\n相對這個DIV的Y方向的座標"+evt.layerY)
}
</script>
//以上都是手打的。望採納。可直接儲存代碼部分複製到頁面的body部分。在IE和FF下都可以正常執行。
 
JavaScript中event對象是做什用的?

event是判斷對象是否為空白~
event.srcElement是引發事件的目標對象 常用於onclick事件
tagname屬性的作用是:返回已選元素的標籤名稱 你這個肯定是在<td>裡加的 所以代碼上判斷了是否為td
toLowerCase()就是將所有大寫變小寫

if ( (!event) || ('td'!=event.srcElement.tagName.toLowerCase()) ) return; 這句話的意思就是如果event為空白或者所選的元素名稱不是'td'的話就返回 不進行下邊的程式了
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.