ie低版本內核事件兼容問題(事件綁定,綁定事件自動執行,文檔模式問題)

問題狀況前端

搜狗等,兼容模式下,之前前端寫的點擊事件的代碼沒有,chrome

後來一看是由於兼容模式爲9,致使點擊事件失效函數

解決辦法,步驟ui

1,處理綁定事件兼容問題spa

ie低版本綁定事件只支持attactevent,因此先寫個兼容的事件綁定函數code

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,blog

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標籤中加入get

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

不用手動修改文檔模式,便可綁定事件執行。

 

 

這些都是暫時實現了,有些原理沒太明白,有知曉的網友,請不吝賜教,謝謝!

相關文章
相關標籤/搜索