attachEvent与addEventlistener兼容性
關(guān)于原生事件綁定中attachEvent與addEventlistener中兼容性以及attachEvent函數(shù)中this指代window有關(guān)問(wèn)題
By odacash ? at 2014-07-01 ? 29 閱讀 ? 0 回復(fù) ? 0.0 希賽幣 請(qǐng)點(diǎn)擊下面回答中的"采納為答案"按鈕,選擇貢獻(xiàn)(希賽幣)比率后,點(diǎn)擊"確認(rèn)結(jié)算"按鈕。| 合計(jì)0人 | 0% | ? |
在原生事件綁定中IE綁定中需要用到attachEvent,FF與chrome中需要用到addEventListener.
attachEvent(事件,函數(shù))
例如:var oBtn = document.getElementById('button');
oBtn.addachEvent('onclick',function(){
alert('a');
})
oBtn.addachEvent('onclick',function(){
alert('b');
})
addEventListener(事件,函數(shù),false)
例如:var oBtn = document.getElementById('button');
oBtn.addEventListener('click',function(){
alert('a');
},false)
oBtn.addEventListener('click',function(){
alert('b');
},false)
上面大家可以看到運(yùn)用事件綁定的時(shí)候,事件的區(qū)別 一個(gè)是用onclick 一個(gè)是用到click,所以FF與chrome中的事件是不帶on,而IE是必須帶on的
由于出現(xiàn)兼容性的問(wèn)題 需要封裝函數(shù)
function addEvent(obj,ev,fn){
if(obj.attachEvent){
//針對(duì)IE瀏覽器
obj.attachEvent('on'+ev,fn)
}else{
//針對(duì)FF與chrome
obj.addEventListener(ev,fn,false)
}
}
所以上述的實(shí)例可以改寫(xiě)成
addEvent(oBtn,'click',function(){
alert('a');
})
addEvent(oBtn,'click',function(){
alert('b');
})
但是函數(shù)中如果出現(xiàn)this的話
例如:
addEvent(oBtn,'click',function(){
alert(this);
})
得到的結(jié)果是不一樣的 this在IE中彈出的window,在FF與chrome中指代的是當(dāng)前對(duì)象
如果要用到當(dāng)前對(duì)象需要對(duì)函數(shù)進(jìn)一步改造
addEvent(oBtn,'click',function(ev){
var oEvent = ev||event;
var that=oEvent.srcElement||oEvent.target;
alert(that)
})
- 本問(wèn)題標(biāo)題:關(guān)于原生事件綁定中attachEvent與addEventlistener中兼容性以及attachEvent函數(shù)中this指代window有關(guān)問(wèn)題
- 本問(wèn)題地址:http://www.educity.cn/wenda/146927.html
轉(zhuǎn)載于:https://www.cnblogs.com/leo388/p/4464147.html
總結(jié)
以上是生活随笔為你收集整理的attachEvent与addEventlistener兼容性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 互联网IT工程师需要具备哪些技能?
- 下一篇: 找不到org.springframewo