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

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://www.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)化
国产一区二区在线不卡播放| 欧美日韩一区二区综合性色| 亚洲一区二区另类视频| 97门久欧美日韩久久| 国产av毛片一区二区| 亚洲国产综合亚洲综合国产| 视频一区二区三区拍拍| 精品国内日本一区二区| 在线播放亚洲一区二区三区| 男女啪啪国产精品视频| 熟妇一区二区在线播放| 日韩精品在线不卡一区| 自拍偷拍亚洲丝袜大秀| 亚洲另类欧美日韩中文字幕| 欧美内射专区精品一区| 精品久久久久久久久极品| 免费精品一区二区三区欧美| 久久夜色精品国产高清不卡| 欧美亚洲国产精品综合在线| 国产av不卡二区三区| 日韩av在线播放亚洲天堂| 美女诱惑丝袜国产国产av丝袜| 精华国产一区二区三区| 日韩中文字幕乱码卡一| 97在线资源视频播放| 少妇太爽高潮在线播放| 黑人巨大精品欧美一区免 | 另类视频在线观看免费| 久久精品国产91麻豆| 不卡在线视频中文字幕| 国产成人精品福利一区二区| 日韩精品诱惑一区二区| 翔田千里精品久久一区二| 国产在线成年人免费观看| 中文字幕制服国产精品| 国内精品自产拍久久久久久久久91| 日本99精品视频10| 微拍福利一区二区三区| 婷婷丁香久久五月婷婷| 九九视频免费在线播放| 动漫美女视频在线看黄|