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'的話就返回 不進行下邊的程式了