js事件驅(qū)動(dòng)機(jī)制 瀏覽器兼容處理方法
3.1. 事件是如何產(chǎn)生的 *
第一種情況,用戶對(duì)網(wǎng)頁(yè)做了某些操作,比如,點(diǎn)擊了一個(gè)按鈕,產(chǎn)生點(diǎn)擊事件。 第二種情況,用戶沒(méi)有對(duì)網(wǎng)頁(yè)做操作,也可能產(chǎn)生事件,比如瀏覽器已經(jīng)將整個(gè)頁(yè)面加載完畢,會(huì)產(chǎn)生加載完成事件。當(dāng)事件產(chǎn)生以后,瀏覽器會(huì)查找產(chǎn)生事件的節(jié)點(diǎn)有沒(méi)有綁訂相應(yīng)的事件處理代碼。如果有,則調(diào)用該代碼來(lái)處理。如果沒(méi)有,會(huì)繼續(xù)向上查找父節(jié)點(diǎn),有沒(méi)有對(duì)應(yīng)的事件處理代碼(事件冒泡)。
3.2. 綁訂事件處理代碼 **
1) 綁訂事件處理代碼到html標(biāo)記乊上
比如: <a id="a1" href="" onclick="f1();">click</a>
2) 綁訂事件處理代碼到dom節(jié)點(diǎn)之上
var obj = document.getElementById('a1'); obj.onclick=f1;
注意:
a. f1不要加"()",加"()"表示立即執(zhí)行f1這個(gè)凼數(shù)。
b. 可以使用匿名凼數(shù)迚行綁訂。
即: obj.onclick=function(){ //代碼。 }
c. 綁訂事件處理代碼到dom節(jié)點(diǎn)之上,可以將js代碼不html完全分離,方便代碼的維護(hù)。
d. 如果要給綁訂的凼數(shù)傳參。可以使用匿名凼數(shù)來(lái)解決。
即: obj.onclick=function(){ f(參數(shù)); }
3) 使用瀏覽器自帶的綁訂方式(了解)
不同的瀏覽器,有各自獨(dú)有的綁訂方式,因?yàn)樨⒓嫒?,所以盡量少用。
Script腳本可以在<body>中寫
等價(jià)于下圖
如果傳參數(shù)怎么辦?使用匿名凼數(shù)

【案例3.1】綁訂事件處理代碼到html標(biāo)記之上 **
3.3. 事件對(duì)象 ***
1) 獲得事件對(duì)象
IE瀏覽器: 可以直接使用event獲得
firefox: 必須給方法添加一個(gè)參數(shù)event
一般為了兼容ie,firefox,給方法添加一個(gè)參數(shù)event
2) 事件對(duì)象的作用
a. 獲得鼠標(biāo)點(diǎn)擊的坐標(biāo)
event.clientX event.clientY
b. 獲得事件源(產(chǎn)生事件的那個(gè)對(duì)象)
firefox: event.target獲得 IE瀏覽器: event.srcElement獲得




3.4. 事件冒泡 **
1) 什么是事件冒泡?當(dāng)一個(gè)節(jié)點(diǎn)產(chǎn)生事件以后,該事件會(huì)依次向上傳遞(先傳給父節(jié)點(diǎn),如果父節(jié)點(diǎn)還有父節(jié)點(diǎn), 再向上傳遞)。
2) 如何禁止冒泡? event.cancelBubble = true;

2) “事件冒泡”現(xiàn)象關(guān)閉對(duì)話框“你點(diǎn)擊了一個(gè)鏈接”,繼續(xù)彈出對(duì)話框“你點(diǎn)擊了一個(gè)div”

【案例3.4】事件對(duì)象 **
<html>
<!--事件對(duì)象-->





------------------------------------------------------------------------------------------------------
js是采用事件驅(qū)動(dòng)(event-driven)響應(yīng)用戶操作的。
比如通過(guò)鼠標(biāo)或者按鍵在瀏覽器窗口或者網(wǎng)頁(yè)元素(按鈕,文本框...)上執(zhí)行的操作,我們稱之為事件(Event)。
由鼠標(biāo)或熱鍵引發(fā)的一連串程序的動(dòng)作,稱之為事件驅(qū)動(dòng) (Event-Driver)。
對(duì)事件進(jìn)行處理程序或函數(shù),我們稱之為事件處理程序 (Event Handler)。
----------------------------------------------------------------------------------------------------------------------


瀏覽器兼容處理
<script language="javascript">
<!--
if(window.XMLHttpRequest){ //Mozilla, Safari, IE7,IE8
if(!window.ActiveXObject){ // Mozilla, Safari,
alert('Mozilla, Safari');
}else{
alert('IE7 .8');
}
}else {
alert('IE6');
}
//-->
</script>

-------------------------------------------------------------------------------待續(xù)
一個(gè)事件,需要多個(gè)方法,可以用,隔開就可以了
<input type="button" value="red" onclick="mychange(this),sayHello()"/>
<body onkeydown="showkey(event)" onload="abc()" onunload="abc2()">
以上這篇js事件驅(qū)動(dòng)機(jī)制 瀏覽器兼容處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 理解 Node.js 事件驅(qū)動(dòng)機(jī)制的原理
- 淺談javascript基礎(chǔ)之客戶端事件驅(qū)動(dòng)
- 快速掌握Node.js事件驅(qū)動(dòng)模型
- 詳解Javascript事件驅(qū)動(dòng)編程
- Node.js事件驅(qū)動(dòng)
- Node.js中的事件驅(qū)動(dòng)編程詳解
- 深入理解javaScript中的事件驅(qū)動(dòng)
- 你必須知道的Javascript知識(shí)點(diǎn)之"單線程事件驅(qū)動(dòng)"的使用
- JScript面向事件驅(qū)動(dòng)的編程
- 淺談JS和Nodejs中的事件驅(qū)動(dòng)
相關(guān)文章
HBuilderX開發(fā)一個(gè)簡(jiǎn)單的微信小程序的實(shí)現(xiàn)步驟
本文主要介紹了HBuilderX開發(fā)一個(gè)簡(jiǎn)單的微信小程序的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
jQuery實(shí)現(xiàn)動(dòng)態(tài)文字搜索功能
本文主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)文字搜索功能的分析過(guò)程,文章底部提供了完整的代碼。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
微信小程序個(gè)人中心的列表控件實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序個(gè)人中心的列表控件實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
BOM系列第一篇之定時(shí)器setTimeout和setInterval
這篇文章主要介紹了BOM系列第一篇之定時(shí)器setTimeout和setInterval 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
框架頁(yè)面高度自動(dòng)刷新的Javascript腳本
框架頁(yè)面高度自動(dòng)刷新,加載index.htm時(shí)候,每隔1秒鐘自動(dòng)調(diào)用腳本刷新框架頁(yè)面代碼,具體實(shí)現(xiàn)如下,感興趣的朋友可以了解下2013-11-11

