2013-09-05 10 views
0

애니메이션을 적용 할 요소의 현재 동작과 가장 가까운 키 프레임을 기반으로 원본을 새로운 애니메이션으로 변경하려면 CSS 키 프레임을 반복합니다. 아래 함수를 사용하여 스타일 시트를 반복하여 키 프레임 규칙을 얻습니다. 과 같이라는CSSKeyframesRule 길이 가져 오기

function findKeyframesRule(rule) { 
    var ss = document.styleSheets; 
    for (var i = 0; i < ss.length; ++i) { 
     for (var j = 0; j < ss[i].cssRules.length; ++j) { 
      if (ss[i].cssRules[j].type == window.CSSRule.WEBKIT_KEYFRAMES_RULE 
       && ss[i].cssRules[j].name == rule) { 
       return ss[i].cssRules[j]; 
      } 
     } 
    } 
    return null; 
} 

: var keyframes = findKeyframesRule(anim);

내 문제 : (그들은 같은 WebkitCSSKeyframesRule 객체를 가리 키 때문에 또는 변수 keyframes) 만에 수 없었다 나는 ss[i].cssRules[j]의 길이/크기를 얻을 필요가 그렇게 할 길을 찾는다. CSSKeyframesRules here의 출처라고 생각되는 내용을 발견했지만 C 언어이므로 길이/크기를 찾기 위해 사용하는 방법을 사용할 수 없습니다 (예 : ::length 등).

keyframes[3].keyText과 같은 것을 호출 할 수 있고 값을 얻었 기 때문에 길이가 있다는 것을 알고 있습니다. 따라서 과 같은 역할을합니다.

내가 keyframes.size(), keyframes.forEach, keyframes.length, 좀 더 시도를 시도했지만 그것은 배열 아니기 때문에 그들이 작동하지 않습니다, 그것은 CSSKeyframesRule 객체입니다. 나는 또한 부모를 사용하여 work arounds를 시도 했습니까? (나는 그것을 부르지 않아 - 나는 ss, ss[i], 그리고 ss[i].cssRules을 의미한다) 나는 작동 할 것이라고 생각했지만 ss[i].cssRules.length을 포함한다.

Here is a fiddle to show my problem

당신의 어떤 아이디어가 있습니까?

답변

1

코드가 정상적으로 작동합니다. 그냥

5

alert(keyframes.cssRules.length); 

바이올린을 얻을 것이다

keyframes.cssRules.length에게 경고하려고 : http://jsfiddle.net/creativevilla/T83Nc/

+0

이 * 마른 세수 * 그 잡기 주셔서 감사합니다. 나는 이것을 몇 시간 동안보고 있었고 그것을 생각하지 않았다! –