• 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" />

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

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

    学习记录,望指点学习,谢谢!
  • 相关阅读:
    TCP/IP——何时用UDP代替TCP
    网络编程——客户/服务器程序设计范式
    各种常见英特网应用协议的使用情况和传输层三大协议的异同
    linux dd使用记录
    杂谈-为什么我们不要去外包公司
    小雪的成都
    哪个的情感
    mac上的git completion
    ue4 UE4Editor.lib找不到
    ue4 重新生成ide project文件的命令行
  • 原文地址:https://www.cnblogs.com/herewego/p/10431741.html
Copyright © 2020-2023  润新知