日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > web前端 > htmlcss > JS的事件監(jiān)聽機(jī)制

JS的事件監(jiān)聽機(jī)制

來源:程序員人生   發(fā)布時(shí)間:2015-04-28 07:49:16 閱讀次數(shù):2734次

很久之前有個(gè)叫Netscape的姑娘,她制定了Javascript的1套事件驅(qū)動(dòng)機(jī)制(即事件捕獲)

后來又有1個(gè)叫“IE”的小子,這孩子比較傲氣,他認(rèn)為“憑甚么我要依照你的規(guī)則走”,因而他又創(chuàng)造了1套自己的規(guī)則(事件冒泡)

再后來,有個(gè)叫W3C的牙婆,想撮合這兩個(gè)孩子,將他們的特點(diǎn)融會(huì)在了1起,這下,事件產(chǎn)生的順序變成:

事件從根節(jié)點(diǎn)開始,逐級(jí)派送到子節(jié)點(diǎn),若節(jié)點(diǎn)綁定了事件動(dòng)作,則履行動(dòng)作,然后繼續(xù)走,這個(gè)階段稱為“捕獲階段(Capture)”;
履行完捕獲階段后,事件由子節(jié)點(diǎn)往根節(jié)點(diǎn)派送,若節(jié)點(diǎn)綁定了事件動(dòng)作,則履行動(dòng)作,然后繼續(xù)走,這個(gè)階段稱為“冒泡階段(Bubble)”。

仁慈的Netscape和其姐妹們都接受了牙婆的建議,采取了新的事件規(guī)則,而自豪固執(zhí)的IE小子始終依照自己的規(guī)則履行。終究使得這成為困擾前端開發(fā)人員的兼容性問題之1。那末,怎樣綁定事件呢?

由于這兩派閱讀器的差異,其綁定的方法也不1樣,其中,遵守標(biāo)準(zhǔn)的閱讀器使用W3C定義的addEventListener函數(shù)綁定,函數(shù)定義以下:

function addEventListener(string eventFlag, function eventFunc, [bool useCapture=false])

eventFlag : 事件名稱,如click、mouseover…
eventFunc: 綁定到事件中履行的動(dòng)作
useCapture: 指定是不是綁定在捕獲階段,true為是,false為否,默許為true
在事件監(jiān)聽流中可使用event.stopPropagation()來禁止事件繼續(xù)往下流

IE中使用自有的attachEvent函數(shù)綁定時(shí)間,函數(shù)定義以下:

function attachEvent(string eventFlag, function eventFunc)

eventFlag: 事件名稱,但要加上on,如onclick、onmouseover…
eventFunc: 綁定到事件中履行的動(dòng)作
在事件監(jiān)聽流中可使用window.event.cacenlBubble=false來禁止事件繼續(xù)往下流

總結(jié):addEventListener(string eventFlag, function eventFunc, [bool useCapture=false]),針對(duì)ff,chrome,safari閱讀器,false指冒泡階段,默許為true,指捕獲階段。不過1般我們都用false。

attachEvent(string eventFlag, function eventFunc),針對(duì)ie系列、還有opera閱讀器,少了事件處理機(jī)制的參數(shù),只指定事件類型(別忘了on)和觸發(fā)哪一個(gè)函數(shù)。

有了這些認(rèn)知以后,有了大致的思路,對(duì)應(yīng)的代碼:

if(document.addEventListener){ document.addEventListener('click', hideBox, false);

在document綁定信息框(豎的那個(gè))隱藏函數(shù)(即隨意點(diǎn)html頁面的哪里關(guān)閉展開的信息框,這也是使用document.addEventListener的緣由,要幫在文檔上)

document.getElementById('status_hide').addEventListener('click', showBox, false);

在status_hide節(jié)點(diǎn)綁定信息框展開(詳細(xì)的那個(gè))函數(shù)并停止事件流(即點(diǎn)擊豎的這個(gè),展開詳細(xì)的那個(gè))

document.getElementById('status_show').addEventListener('click', stopEvent, false);

由于false肯定的是事件冒泡,為了避免點(diǎn)詳情的時(shí)候,向上冒泡到document,觸發(fā)document設(shè)置的click時(shí)hidebox方法,在status_show我們要綁定禁止事件流函數(shù)。

}

這個(gè)明白了,針對(duì)ie再寫個(gè)attachEvent的就能夠了,固然ie的參數(shù)只用2個(gè)就能夠了,它的時(shí)間處理機(jī)制就是冒泡不用額外設(shè)置。

最后要說說這段函數(shù)。

var stopEvent = function(event){ e = event || window.event; if(e.stopPropagation){ e.stopPropagation(); }else { e.cancelBubble = true; } };

可以肯定它的作用是避免前面提到的冒泡,引發(fā)不該引發(fā)的click事件。

可是它呢function(event){e = event || window.event}

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产区精品 | 久久色av | 黄免费| 久久丁香综合 | 亚洲国产精品一区二区第一页 | 污视频免费看 | 青青草伊人久久 | 91啪国产在线 | 玖玖国产精品视频 | 国产精品久久久久免费 | 久久综合一区 | 国产一区二区视频在线 | 欧美黄色一级 | 国产一区二区三区精品在线观看 | 国产视频亚洲 | 亚洲视频在线观看网址 | 91成人精品 | 国产黄色大片 | 日本精品久久久久久久 | 不卡中文字幕 | 国产成人精品免费 | 欧美日韩精品一区 | 日本精品国产 | 十八女人毛片免费视频 | 亚洲成人高清在线 | av成人一区二区 | 精品国产91亚洲一区二区三区www | 国产成人精品免费视频 | 操操操网站 | 精品一区二区久久久久久久网站 | 国产全黄a一级毛片91 | 久久久久久久91 | 国内 美女 主播 精品 视频 | 亚洲免费视频观看 | 爱综合 | 波多野结衣av电影 | 精品2区| 99re6热只有精品免费观看 | 中国一级特黄毛片大片 | 天天干女人 | 一级免费视频 |