欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

javascript事件處理-創(chuàng)新互聯(lián)

一般我們?cè)贘S中添加事件,是這樣子的javascript事件處理
obj.onclick=method

這種綁定事件的方式,兼容主流瀏覽器,但如果一個(gè)元素上添加多次同一事件呢?

六盤水ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

如果這樣寫,那么只有最后綁定的事件,這里是method3會(huì)被執(zhí)行,這個(gè)時(shí)候我們就不能用onclick這樣的寫法了,主角改登場(chǎng)了,在IE中我們可以使用attachEvent方法

//object.attachEvent(event,function);btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);

使用格式是前面是事件類型,注意的是需要加on,比如onclick,onsubmit,onchange,執(zhí)行順序是

method3->method2->method1

可惜這個(gè)微軟的私人方法,火狐和其他瀏覽器都不支持,幸運(yùn)的是他們都支持W3C標(biāo)準(zhǔn)的addEventListener方法

//element.addEventListener(type,listener,useCapture);btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);

執(zhí)行順序?yàn)閙ethod1->method2->method3

做前端開發(fā)工程師,最悲劇的某過于瀏覽器兼容問題了,上面有兩種添加事件的方法,為了同一添加事件的方法,我們不得不再重新寫一個(gè)通用的添加事件函數(shù),幸虧再有前人幫我們做了這件事

function addEvent(elm, evType, fn, useCapture) {
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture);//DOM2.0return true;
}
else if (elm.attachEvent) {
var r = elm.attachEvent(‘on‘ + evType, fn);//IE5+return r;
}
else {
elm['on' + evType] = fn;//DOM 0}
}

下面是Dean Edwards 的版本

function addEvent(element, type, handler) {
//為每一個(gè)事件處理函數(shù)分派一個(gè)唯一的IDif (!handler.$$guid) handler.$$guid = addEvent.guid++;
//為元素的事件類型創(chuàng)建一個(gè)哈希表if (!element.events) element.events = {};
//為每一個(gè)"元素/事件"對(duì)創(chuàng)建一個(gè)事件處理程序的哈希表var handlers = element.events[type];
if (!handlers) {
handlers= element.events[type] = {};
//存儲(chǔ)存在的事件處理函數(shù)(如果有)if (element["on" + type]) {
handlers[0] = element["on" + type];
}
}
//將事件處理函數(shù)存入哈希表handlers[handler.$$guid] = handler;
//指派一個(gè)全局的事件處理函數(shù)來做所有的工作element["on" + type] = handleEvent;
};
//用來創(chuàng)建唯一的ID的計(jì)數(shù)器addEvent.guid = 1;
function removeEvent(element, type, handler) {
//從哈希表中刪除事件處理函數(shù)if (element.events && element.events[type]) {
delete element.events[type][handler.$$guid];
}
};
function handleEvent(event) {
var returnValue = true;
//抓獲事件對(duì)象(IE使用全局事件對(duì)象)event = event || fixEvent(window.event);
//取得事件處理函數(shù)的哈希表的引用var handlers = this.events[event.type];
//執(zhí)行每一個(gè)處理函數(shù)for (var i in handlers) {
this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) {
returnValue= false;
}
}
return returnValue;
};
//為IE的事件對(duì)象添加一些“缺失的”函數(shù)function fixEvent(event) {
//添加標(biāo)準(zhǔn)的W3C方法event.preventDefault = fixEvent.preventDefault;
event.stopPropagation= fixEvent.stopPropagation;
return event;
};
fixEvent.preventDefault= function() {
this.returnValue = false;
};
fixEvent.stopPropagation= function() {
this.cancelBubble = true;
};

功能非常強(qiáng)悍,解決IE的this指向問題,event總是作為第一個(gè)參數(shù)傳入,跨瀏覽器就更不在話下。

最后貢獻(xiàn)一個(gè)HTML5工作組的版本:

var addEvent=(function(){
if(document.addEventListener){
return function(el,type,fn){
if(el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}
}else{
el.addEventListener(type,fn,false);
}
};
}else{
return function(el,type,fn){
if(el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}
}else{
el.attachEvent(‘on‘+type,function(){
return fn.call(el,window.event);
});
}
};
}
})();

可能細(xì)心的讀者發(fā)現(xiàn)了IE的attachEvent和W3C標(biāo)準(zhǔn)的addEventListener綁定多個(gè)事件的執(zhí)行順序是不一樣的

文章轉(zhuǎn)自:http://www.oschina.net/question/54100_25614   http://www.popo4j.com/article/js-add-event-attachEvent-and-addEventListener.html,

網(wǎng)頁(yè)標(biāo)題:javascript事件處理-創(chuàng)新互聯(lián)
鏈接URL:http://aaarwkj.com/article14/ddodde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序企業(yè)建站、用戶體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司服務(wù)器托管、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
搡老女人老91妇女老熟女| 国产一级内射视频免费观看| 激情亚洲综合一区二区| 好色人妻在线播放中文字幕| 99久久久精品国产免费| 偷窥偷拍视频一区二区| 91久久国产综合精品| 国产一区二区主播不卡| 麻豆精品国产一区二区91| 最新欧美精品一区二区| 少妇高潮视频在线观看| 亚洲精品视频久久偷拍| 国产精品久久久久久爽| 精品裸足人妻少妇二区三区| 日本h电影一区二区三区| 真做的欧美三级在线观看| 亚洲精品在线播放av| 日本一区二区三区高清不卡| 日本一区二区免费高清不卡| 大香蕉欧美日韩在线视频| 成人av免费高清在线| 欧美av在线免费观看| 日韩中文字幕不卡免费| 98精品偷拍视频一区二区三区| 日本一区二区三区伦理| 国产亚洲精品第一综合| 91精品人妻一区二区| 亚洲精品乱码精品乱码不卡| 女人高潮被爽到呻吟在线| 蜜桃视频中文字幕二区三区| 高清一区二区三区不卡视频| 精品一区二区三区在线观看国产| 在线免费观看成人午夜福利| 国产福利在线观看网站| 又爽又色的日本网站| 亚洲欧美日韩一区中文天国| 日韩国产一区二区三区精品| 亚洲国产精品第一区第二区| 天堂av免费资源在线观看| 一区二区三区日韩电影在线| 午夜福利亚洲免费久久|