2014-07-01 5 views
3

두 요소를 비교하여 계산 스타일의 모든 차이점을 찾으려고합니다.. 이를 위해, 나는 의 모든 스타일을 반복하는거야, 그리고 수행하여 B에 비교 다음 나는 주장 길이로이 일을 해요getComputedStyle을 통해 반환 된 CSSStyleDeclaration은 항상 주어진 브라우저에서 같은 길이를 유지합니까?

var stylesA = window.getComputedStyle(a), 
    stylesB = window.getComputedStyle(b), 
    length = stylesA.length, 
    i, style; 

for(i = 0; i < length; i++) { 
    style = stylesA[i]; 
    if(stylesA[style] != stylesB[style]) { 
     // Respond appropriately 
    } 
} 

을 A가 일 때 항상 B의 길이가 될 것이지만, 나는 이것을 관찰을 통해 완전히 근거하고 있습니다.

var elms = document.querySelectorAll("*"), 
    length = elms.length, i; 

for(i = 0; i < length; i++) { 
    console.log(window.getComputedStyle(elms[i]).length); 
} 

가 임의의 MDN 페이지에 적용된 모든 요소에 대해 다음과 같은 생산 : 길이가 브라우저 브라우저에서 다르지만 값이 항상 겉으로는 동일 (새 속성에 대한 회계, 공급 업체 등 버전을 접두사) :

Chrome 35 253 
Firefox 30 211 
IE11   317 

이제 분명이 내 질문에 반환하게 모든 브라우저의 완전한 목록은, 이 값은 특정 요소에 대해 서로 다른 수없는? 나는 DOM Level 2 문서와 MDN article을보고있는 것이 아무것도 발견하지 못했습니다. getComputedStyle()입니다.

특히, 특정 요소에만 적용해야하는 및 content과 같은 스타일은 적용 가능한 경우에만 목록에 포함된다고 가정합니다. 그러나 둘 다 관계없이 존재하는 것으로 보입니다.

내 어설 션을 확인하는 문서가 있습니까?

답변

0

귀하의 주장은 실제로 정확합니다 : getComputedStyle까지 요소 별 CSS 스타일은 없습니다. 그러나 SVG 또는 MathML의 요소 (예 : <svg> 태그를 사용하여 포함 된 요소)를 포함하면 상황이 더 복잡해 질 수 있습니다.