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下使用数组不能使用圆括号(),只能使用中括号[]