firefox火狐浏览器与与ie兼容的2个问题总结

1:rules与cssRules区别:

  

复制代码 代码如下:

  function addCSSRule(css,key,value){

  //var css = document.styleSheets[document.styleSheets.length-1];

  if(navigator.userAgent.indexOf("Firefox")>0 )

  {

  css.insertRule(key+"{"+value+"}", css.cssRules.length)

  }

  else

  {

  css.addRules(key,value);

  }

  }

  function removeCSSRule(key){

  for(var i = 0; i < document.styleSheets.length; i++){

  var css = document.styleSheets[i];

  navigator.userAgent.indexOf("Firefox")>0 ?

  (function(){

  for(var j = 0; j < css.cssRules.length; j++){

  if(css.cssRules[j].selectorText==key){

  css.deleteRule(j);

  }

  }

  })() :

  (css.removeRule(key)) ;

  }

  }

  我是这样加了一个方法解决这个问题的。。

  2:火狐和ie中获得背景色问题(getComputedStyle与currentStyle的区别)

  

复制代码 代码如下:

  function getCurrentStyle(oElement) {

  if(navigator.userAgent.indexOf("Firefox")>0 ){

  var rgbstr=document.defaultView.getComputedStyle(oElement,null).backgroundColor;

  var strR;

  if(rgbstr.toString().indexOf('(')>0 && rgbstr.toString().indexOf(')')>0)

  {

  strR= rgbstr.toString().substring(parseInt(rgbstr.toString().indexOf('(')+1),rgbstr.toString().indexOf(')')).split(',');

  }

  return toHexColor(strR[0],strR[1],strR[2]).substring(1);

  }

  else{

  return oElement.currentStyle.backgroundColor.trim().substring(1);

  }

  }

  

复制代码 代码如下:

  function toHexColor(r,g,b){

  var hex='#';

  var hexStr = '0123456789ABCDEF';

  low = r % 16;

  high = (r - low)/16;

  hex+=hexStr.charAt(high) + hexStr.charAt(low);

  low = g % 16;

  high = (g - low)/16;

  hex+=hexStr.charAt(high) + hexStr.charAt(low);

  low = b % 16;

  high = (b - low)/16;

  hex+=hexStr.charAt(high) + hexStr.charAt(low);

  return hex;

  }

  记住 火狐获得的rgbstr是rgb的因此我还要转成16进制的。我也整理了一个很笨的转换方法再上面望打击拍砖!