ie低版本内核事件兼容问题(事件绑定,绑定事件自动执行,文档模式问题)

问题情况

搜狗等,兼容模式下,以前前端写的点击事件的代码没有,

后来一看是因为兼容模式为9,导致点击事件失效

解决办法,步骤

1,处理绑定事件兼容问题

ie低版本绑定事件只支持attactevent,所以先写个兼容的事件绑定函数

1     function myEve(ele,evetype,fn,uc){
2         var eledoc = document.getElementById(ele)        
3         if(eledoc.addEventListener){
4             eledoc.addEventListener(evetype,fn,uc)
5         }else if(eledoc.attachEvent){
6             eledoc.attachEvent('on' + evetype, fn)
7         }
8     };

2,

function a(id){
        var elec = document.getElementById(id)
        if(elec.className.indexOf('sso') > 0){
            elec.className = elec.className.slice(0,-3) + 'mmo';
        }else{            
            elec.className = elec.className.slice(0,-3) + 'sso';
        }
    }
myEve('linedesign','click',a('linedesign'),false);//一开始直接使用这样的代码在载入页面时,事件便自己执行一次,而且无法继续点击效果,此处需要将事件处理函数,不传参数,就不会自己执行,改为下面一段

 

1 myEve('linedesign','click',function a(){
2         var elec = document.getElementById('linedesign')
3         if(elec.className.indexOf('sso') > 0){
4             elec.className = elec.className.slice(0,-3) + 'mmo';
5         }else{            
6             elec.className = elec.className.slice(0,-3) + 'sso';
7         }
8 },false);//最后改成了这样,暂时能用

 

3,这些改完后,发现回到ie内核下还是需要手动修改一次文档模式,再次刷新,才能在ie7,8,9下绑定到点击事件

4,继续解决,

此时在header标签中加入

1 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

不用手动修改文档模式,即可绑定事件执行。

 

 

这些都是暂时实现了,有些原理没太明白,有知晓的网友,请不吝赐教,谢谢!

posted @ 2019-02-25 16:44  xxdw8  阅读(383)  评论(0编辑  收藏  举报