與訪問dom中的event物件不同,要訪問ie中的event物件有幾種不同的方式,取決於指定事件處理程式的方法。在使用dom0級方法新增事件處理程式時,event物件作為window物件乙個屬性存在。來看下面例子。
var btn = document.getelementbyid('mybtn');
btn.onclick = function
()
在此,我們通過window.event取得了event物件,並檢測了被觸發事件的型別(ie中的type屬性與dom中的type屬性是相同的),可是,如果事件處理程式是使用attachevent()新增的,那麼就會有乙個event物件作為引數被傳入事件處理程式函式中,如下所示.
var btn = document.getelementbyid('mybtn');
btn.attachevent('onclick', function
(event));
在像這樣使用attachevent()的情況下,也可以通過window物件來訪問event物件,就像使用dom0級方法時一樣。不過為方便起見,同乙個物件也會作為引數傳遞。
如果是通過html特性指定的事件處理程式,那麼還可以通過乙個名叫event的變數來訪問event物件(與dom中事件模型相同)。再看乙個例子。
"button" value="click me" onclick="alert(event.type)">
ie的event物件同樣也包含與建立它的事件相關的屬性和方法。其中很多屬性和方法都有對應的或者相關的dom屬性和方法。與dom的event物件一樣,這些屬性和方法也會因為事件型別的不同頁不同,但所有事件物件都會包含包含下表所列的屬性和方法。
屬性/方法
型別讀/寫
說明cancelbubble
boolean
讀/寫預設值為false,但將其設定為true就可以取消事件冒泡(與dom中的stoppropagation()方法的作用相同)
returnvalue
boolean
讀/寫預設值為true,但將其設定為false就可以事件的預設行為(與dom中的preventdefault()方法的作用相同)
srcelement
element
唯讀事件的目標(與dom中的target屬性相同)
type
string
唯讀被觸發的事件的型別
因為事件處理程式的作用域是根據指定它的方式來確定的。所有不能認為this會始終等於事件目標.故而,最好還是使用event.srcelement比較保險.例如:
var link = document.getelementbyid('mylink');
link.onclick=function
()
這個例子在onclick事件處理程式中使用returnvalue達到的阻止鏈結預設行為的目的。與dom不同的是,在此沒有辦法確定事件是否能被取消。
相應地,cancelbubble屬性與dom中的stoppropagation()方法的作用相同,都是用來停止事件冒泡的。由於ie不支援事件捕獲,因岩漿只能取消事件冒泡;但stoppropagation()可以同時取消事件捕獲和冒泡。例如:
var btn = document.getelementbyid('mybtn');
btn.onclick = function
() document.body.onclick = function
()
通過在onclick事件處理程式中將cancelbubble設定為true,就可以阻止事件通過冒泡頁觸發document.body中註冊的事件處理程式。結果,在單擊按鈕後,只會顯示乙個警告框。 JS基礎 事件 事件處理程式
在了解完事件流和事件物件之後,我們來看事件三劍客的最後一客 事件處理程式。在事件被使用者觸發之後,都有乙個相應這個操作的處理函式,這個函式就叫做事件處理器 事件偵聽器 在定義的時候不能使用未經定義的html轉義的html字元。在處理過程中,首先建立乙個封裝元素屬性值的函式,這個函式中有乙個區域性變數...
JS事件 事件處理程式 筆記總結ing
html事件處理程式 缺點 行為與結構耦合 dom0級事件處理程式 把事件當做元素的屬性給給其新增,實現了結構與行為的分離,btn.onclick function 需要寫兩份以支援不同瀏覽器的愛好。dom2級事件處理程式 btn.addeventlistener click,function fl...
js 事件 事件物件
關於事件寫了一系列文章 1.事件流 事件捕獲和事件冒泡 2.事件處理程式 3.事件物件 本文介紹事件物件 4.通用的事件偵聽器函式 5.事件迴圈 event loop 6.事件 event delegation 1.事件物件 觸發dom上的某個物件時,會產生乙個事件物件event dom0級事件物件...