0

我正在遍历 CSS 关键帧,以便根据最接近动画元素当前行为的关键帧将原始动画更改为新动画。我使用下面的函数通过遍历样式表来获取关键帧规则。

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);

我的问题:我需要获取ss[i].cssRules[j](或变量keyframes,因为它们指向同一个 WebkitCSSKeyframesRule 对象)的长度/大小,但一直无法找到这样做的方法。我在这里找到了我认为是 CSSKeyframesRules 的来源,但它是用 C 语言编写的,所以我无法使用他们用来查找长度/大小的方法,即::length等。

我知道它有一个长度,因为我可以调用类似的东西keyframes[3].keyText并获取一个值,所以它就像一个数组。

我已经尝试过keyframes.size(), keyframes.forEach, keyframes.length, 以及更多尝试,但它们不起作用,因为它不是数组,而是 CSSKeyframesRule 对象。我还尝试使用 ¿parent? (我不知道怎么称呼它——我的意思是ss,ss[i]ss[i].cssRules)包括ss[i].cssRules.length我认为可行但它没有。

这是一个显示我的问题的小提琴

你们有什么想法吗?

4

1 回答 1

1

您的代码运行良好。试着提醒

关键帧.cssRules.length

将获得 5

alert(keyframes.cssRules.length);

小提琴:http: //jsfiddle.net/creativevilla/T83Nc/

于 2013-09-06T04:31:55.473 回答