>  기사  >  웹 프론트엔드  >  Firefox와 Compatibility_javascript 기술 간의 2가지 문제 요약

Firefox와 Compatibility_javascript 기술 간의 2가지 문제 요약

WBOY
WBOY원래의
2016-05-16 18:22:46836검색
1: rule과 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 (키,값) ;
}
}
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. 길이; j ){
if(css.cssRules[j].selectorText==key){
css.deleteRule(j)
}
}
})() :
(css.removeRule(key)) ;
}
}

이 문제를 해결하기 위해 메서드를 추가한 방법입니다. .
2: Firefox 및 IE에서 배경색을 가져오는 데 문제가 있음(getComputeStyle과 currentStyle의 차이)
코드 복사 코드는 다음과 같습니다.

function getCurrentStyle(oElement) {
if(navigator.userAgent.indexOf("Firefox")>0 ){
var rgbstr= document.defaultView.getCompulatedStyle(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)
}
}

복사 code 코드는 다음과 같습니다.

function toHexColor(r,g,b){
var hex='#'
var hexStr = '0123456789ABCDEF';
낮음 = r % 16;
높음 = (r - 낮음)/16;
hex =hexStr.charAt(높음) hexStr.charAt(낮음); g % 16;
높음 = (g - 낮음)/16;
hex =hexStr.charAt(높음) hexStr.charAt(낮음);
낮음 = b % 16; b - low)/16;
hex =hexStr.charAt(high) hexStr.charAt(low);
return hex;
}


Firefox는 rgb이므로 16진수로 변환도 필요합니다. 저도 아주 멍청한 변환 방법을 정리한 뒤 보고 맞췄습니다!
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.