IE與Firefox的幾個javascript兼容問題及解決

項目中遇到的問題
  javascript動態建立頁面元素
  代碼:
  var hName=document.createElement("<input type='hidden' name='midNames'>");
  ie下能正常執行,Firefox下執行不了
解決辦法:
   var h = document.createElement('input');
       h.setAttribute('type', 'hidden');

       h.setAttribute('name', 'midNames'); javascript

如下爲網絡收集整理以下: css

一、Firefox沒法響應DIV的onClick事件 java

緣由:Firefox下不支持如下語法:   Javascript代碼   <DIV onClick="javascript:onPre();">      <DIV onClick="javascript:onPre();">   解決:所有按如下形式書寫:   Javascript代碼   <DIV onClick=onPre()>      <DIV onClick=onPre()> 二、沒法動態建立頁面元素,即createElement無效 緣由:在Fireox下不僅能使用標籤名作參數,不能使用<>形式,如如下語句在Firefox下不起做用,但在IE下能正常工做:   Javascript代碼   var obj=document.createElement('<DIV id=h_sb></DIV>');      var obj=document.createElement('<DIV id=h_sb></DIV>'); 解決:所有按如下形式書寫:   Javascript代碼   var obj=document.createElement('DIV');      obj.id='h_sb';      var obj=document.createElement('DIV'); obj.id='h_sb'; 三、在爲動態建立的元素指定事件處理函數時,在Firefox下是運行指定函數,而非設置 緣由:Firefox下,指定時間處理函數時不能帶參數,不然Firefox只會執行函數,如:   Javascript代碼   obj.onClick=test(1);      obj.onClick=test(1); 在Firefox下會運行test函數,而不是將test函數關聯到obj的click事件   解決:若是指定函數無參數則使用:   Javascript代碼   obj.onClick=test;      obj.onClick=test;   若是指定函數有參數則:   Javascript代碼   obj.onClick=function(){test(1)};      obj.onClick=function(){test(1)}; 四、將動態元素添加到頁面時,insertBefore出錯 緣由:在Firefox下不可省略insertBefore函數的第二參數   解決:使用以下語句:   Javascript代碼   document.body.insertBefore(obj,null);      document.body.insertBefore(obj,null); 五、Firefox下無event對象,沒法直接獲取鼠標座標 解決:在指定事件處理函數時使用以下語句:   Javascript代碼   obj.onClick=function(ev){onMidClick(ev,sb_h)};      obj.onClick=function(ev){onMidClick(ev,sb_h)};   說明:以上ev參數類時ie的event對象,由系統自動填入,第二參數爲用戶自定義參數   在處理函數onMidClick中:   Javascript代碼     function onMidClick(evt,objSb){         var mx;     //獲取鼠標的X座標         if ( window.event ){          mx=event.clientX;         }else{          mx=evt.pageX;         }        }        function onMidClick(evt,objSb){ var mx; //獲取鼠標的X座標 if ( window.event )     { mx=event.clientX; }else{ mx=evt.pageX; } } 六、表格操做函數無效,即如下語句沒法工做:    Javascript代碼    var newrow=objnt.insertRow();       var cal=newrow.insertCell();       var newrow=objnt.insertRow(); var cal=newrow.insertCell();    緣由:與第四同樣不可缺省參數    解決:使用以下語句:    Javascript代碼    var newrow=objnt.insertRow(-1);       var cal=newrow.insertCell(-1);       var newrow=objnt.insertRow(-1); var cal=newrow.insertCell(-1); 七、Firefox下沒法直接獲取styleSheet的cssText,在IE下,可直接獲取並設置styleSheet的cssText, 但在Firefox下只能使用document.styleSheets[0].cssRules[0].cssText單個獲取樣式,同時使用使用:    Javascript代碼    document.styleSheets[0].cssRules[0].cssText=newcssText;       document.styleSheets[0].cssRules[0].cssText=newcssText;    頁面不會自動更新樣式,必須使用:    Javascript代碼    document.styleSheets[0].cssRules[0].style.cssText=newcssText;       document.styleSheets[0].cssRules[0].style.cssText=newcssText; 八、Firefox下使用數組不能使用圓括號(),只能使用中括號[]
相關文章
相關標籤/搜索