事件的概念:事件就是用戶與瀏覽器交互后執(zhí)行的某種動(dòng)作,而響應(yīng)某個(gè)事件的函數(shù)就叫做事件處理程序(事件偵聽(tīng)器);
HTML事件處理程序的缺點(diǎn):時(shí)差問(wèn)題,用戶可能會(huì)在HTML元素一出現(xiàn)在頁(yè)面上就觸發(fā)響應(yīng)的事件郊艘,但當(dāng)時(shí)的事件處理程序有可能尚不具備執(zhí)行條件,就會(huì)引發(fā)錯(cuò)誤唯咬;
擴(kuò)展事件處理程序的作用域鏈在不同瀏覽器中會(huì)導(dǎo)致不同結(jié)果纱注,不同JavaScript引擎遵循的標(biāo)識(shí)符解析規(guī)則略有差異,很可能會(huì)在訪問(wèn)非限定對(duì)象成員時(shí)出錯(cuò)胆胰;
Dom中的事件對(duì)象:
事件對(duì)象: 在觸發(fā)DOM上的某個(gè)事件時(shí)狞贱,會(huì)產(chǎn)生一個(gè)事件對(duì)象event,這個(gè)對(duì)象中包含所有與事件相關(guān)的信息煮剧;
event上的屬性:
type: 被觸發(fā)的事件的類型斥滤;
target: 事件目標(biāo);
DOM0:通過(guò)JavaScript指定事件處理程序的傳統(tǒng)方式勉盅,就是將一個(gè)函數(shù)賦值給一事件處理程序?qū)傩杂悠模@種方式是所有現(xiàn)代瀏覽器都支持;
優(yōu)勢(shì):簡(jiǎn)單具有跨瀏覽器的優(yōu)勢(shì)小缺陷只能綁定一次事件處理程序給元素綁定事件(都是小寫)element.onclick = function () {};給元素解綁事件element.onclick = null草娜;
DOM2級(jí)事件定義了兩個(gè)方法挑胸,用于處理綁定和刪除事件處理程序的操作;
綁定:XXX.addEventListener(事件名宰闰,函數(shù)茬贵,是否捕獲);
true: 在捕獲階段調(diào)用事件處理程序移袍;
false: 在冒泡階段調(diào)用事件處理程序解藻;
可以多次綁定不同的事件處理程序,并且會(huì)按照它們的綁定順序執(zhí)行葡盗;
解綁:removeEventLitener(事件名螟左,函數(shù),是否捕獲)觅够;
IE中也有兩種方法:
綁定:
XXX.attachEvent(事件名胶背,函數(shù));
IE只支持冒泡喘先,并不支持捕獲钳吟;
解除:
XXX.detachEvent(事件名,函數(shù))窘拯;