標籤:post class ie11 瀏覽器 type屬性 2014年 pos name rip
事件對象event,每當一個事件被觸發的時候,就會隨之產恒一個事件對象event,該對象中主要包括了關於該事件的基本屬性,事件類型type(click、dbclick等值)、目標元素target(我的理解是事件來源對象,即觸發該事件的dom元素)等,以及一些與該事件相關的方法。取消事件預設行為preventDefault()、組織事件繼續冒泡或捕獲stopPropagation()等等,這裡我僅僅列舉了,項目中我用到的屬性和方法。
既然事件被觸發。就隨之產生了一個event對象。筆者在IE中測試了。不須要通過賦值就可以使用,也許低版本號碼的須要吧,Firefox瀏覽器是須要對其進行賦值的,在這裡我認為須要養成一個習慣。多謝一行代碼唄。每次在事件處理常式中使用event對象,都通過賦值的方式去使用:
var event = event||window.event;
事實上,預設參數數組中第一元素就是event對象,也就是說,能夠用數組元素賦值
var event = arguments[0];
type屬性。應該是最easy理解的,事件類型。單擊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中的事件對象event