zoukankan      html  css  js  c++  java
  • 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" />

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

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

    学习记录,望指点学习,谢谢!
  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/herewego/p/10431741.html
Copyright © 2011-2022 走看看