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