JavaScript和HTML的交互是通過事件實(shí)現(xiàn)的。JavaScript采用異步事件驅(qū)動編程模型驱入,當(dāng)文檔、瀏覽器莺褒、元素或與之相關(guān)對象發(fā)生特定事情時,瀏覽器會產(chǎn)生事件雪情。
事件流
事件流描述的是從頁面中接收事件的順序,目前主要有三種模型:
1.事件冒泡:事件開始時由最具體的元素接收尘执,然后逐級向上傳播到較為不具體的元素宴凉。
2.事件捕獲:不太具體的節(jié)點(diǎn)更早接收事件,而最具體的元素最后接收事件丧靡,和事件冒泡相反。
3.DOM事件流:DOM2級事件規(guī)定事件流包括三個階段饭庞,事件捕獲階段,處于目標(biāo)階段舟山,事件冒泡階段卤恳,首先發(fā)生的是事件捕獲,為截取事件提供機(jī)會纬黎,然后是實(shí)際目標(biāo)接收事件,最后是冒泡階段拆座。
事件處理程序
我們也稱之為事件偵聽器(listener)冠息,事件就是用戶或?yàn)g覽器自身執(zhí)行的某種動作。比如click逛艰、load、mouseover等菇绵,都是事件類型(俗稱事件名稱)镇眷,而響應(yīng)某個事件的方法就叫做事件處理程序或者事件監(jiān)聽器。
HTML內(nèi)聯(lián)方式
元素支持的每個事件都可以使用一個相應(yīng)事件處理程序同名的HTML屬性指定欠动。這個屬性的值應(yīng)該是可以執(zhí)行的JavaScript代碼,我們可以為一個button添加click事件處理程序翅雏。
<input type="button" value="Click Here" onclick="alert('Clicked!');" />
DOM2事件處理程序
DOM2級事件定義了兩個方法用于處理指定和刪除事件處理程序的操作:
1.addEventListener
2.removeEventListener
所有的DOM節(jié)點(diǎn)都包含這兩個方法人芽,并且它們都接受三個參數(shù):
1.事件類型
2.事件處理方法
3.布爾參數(shù),如果是true表示在捕獲階段調(diào)用事件處理程序橄妆,如果是false祈坠,則是在事件冒泡階段處理
剛才的例子我們可以這樣寫:
<input id="btnClick" type="button" value="Click Here" />
<script type="text/javascript">
var btnClick = document.getElementById('btnClick');
btnClick.addEventListener('click', function() {
alert(this.id);
}, false);
</script>
阻止默認(rèn)事件
preventDefault()
取消事件默認(rèn)行為
什么是事件默認(rèn)行為?
- a鏈接默認(rèn)跳轉(zhuǎn)
- type =submit默認(rèn)提交表單
- 其他瀏覽器默認(rèn)行為...
阻止傳播
stopPropagation()
取消事件進(jìn)一步捕獲或冒泡