试图从Javascript修改CSS3动画时,Chrome崩溃

试图从Javascript修改CSS3动画时,Chrome崩溃,javascript,animation,css,css-animations,Javascript,Animation,Css,Css Animations,我有一个包含以下内容的HTML文件: <div id="container"></div> 这将使图像从0x0增长到500x500。 在我的Javascript文件中,我有以下内容: var findAnimation = function(name) { for (var i in document.styleSheets) { var styleSheet = document.styleSheets[i]; for (var

我有一个包含以下内容的HTML文件:

<div id="container"></div>
这将使图像从0x0增长到500x500。 在我的Javascript文件中,我有以下内容:

var findAnimation = function(name) {
    for (var i in document.styleSheets) {
        var styleSheet = document.styleSheets[i];
        for (var j in styleSheet.cssRules) {
            var rule = styleSheet.cssRules[j];
            if (rule.type === 7 && rule.name == name) {
                return rule;
            }
        }
    }
    return null;
}

var addImage = function(x, y, src) {
    var image = new Image();
    image.src = src;
    image.className = "image";
    image.style.width = "500px";
    image.style.height = "500px";
    image.style.left = x;
    image.style.top = y;
    image.onload = function() {
        document.getElementById("container").appendChild(image);
        var animation = findAnimation("image-create");
        for (var i in animation.cssRules) {
            var rule = animation.cssRules[i];
            if (rule.keyText == "0%") {
                rule.style.top = y;
                rule.style.left = x;
            }
            if (rule.keyText == "100%") {
                rule.style.top = 0;
                rule.style.left = 0;
            }
        }
    }
}

addImage(100, 100, "http://i.imgur.com/KGfgH.jpg");

调用addImage()时,我试图在坐标(x,y)处创建一个图像。动画应该使其增长,同时也从创建图像的位置(x,y)移动到左上角(0,0)

相反,Chrome只是崩溃到“Aw,snap”页面。有人知道为什么会这样吗

编辑:下面是一个例子。如果我访问它,它会崩溃:

在这篇文章中,我注释掉了一些行,它没有崩溃:


EDIT2:如果我切换回Chrome 20,它会工作。

我已经隔离了错误:
将新属性添加到
webkitcskeyframerule
实例时,页面崩溃(Aw、snap)。 可以使用以下代码在Chrome 21.0.1180.57中复制该错误:


@-webkit关键帧测试{
从{}
}
var keyFramesRule=document.getElementById('sheet').sheet.cssRules[0];
var keyFrameRule=keyFramesRule[0];
keyFrameRule.style.top=0;

当规则中已存在属性时,不会发生此崩溃。将来自{}的
替换为来自{top:1px;}
以检查:。

哪个Chrome版本?以什么方式撞车?“Aw,snap”,无响应,还是完整的应用程序故障?Chrome 21.0.1180.57 beta版,崩溃是指选项卡内容被一个带有悲伤表情的蓝屏所取代。这就是“Aw,snap”页面(可通过
chrome://crash
)。您是否尝试过通过观察内存使用情况和/或设置断点和/或注释掉一些代码来调试页面?是的,在注释掉rule.style.top=和rule.style.left=后,我不会崩溃。你知道我在做什么吗?把错误缩小到:。设置未在规则中指定的属性会导致此错误,这可以通过以下事实得到证明:此错误不会崩溃:。我已提交了一份崩溃报告(工具->报告问题),其中包含以下消息:。我已使用
Tools->报告问题
发送了一份崩溃报告。不过我不能。仅供参考:Chrome 22.0.1229.79中不再出现此错误。
var findAnimation = function(name) {
    for (var i in document.styleSheets) {
        var styleSheet = document.styleSheets[i];
        for (var j in styleSheet.cssRules) {
            var rule = styleSheet.cssRules[j];
            if (rule.type === 7 && rule.name == name) {
                return rule;
            }
        }
    }
    return null;
}

var addImage = function(x, y, src) {
    var image = new Image();
    image.src = src;
    image.className = "image";
    image.style.width = "500px";
    image.style.height = "500px";
    image.style.left = x;
    image.style.top = y;
    image.onload = function() {
        document.getElementById("container").appendChild(image);
        var animation = findAnimation("image-create");
        for (var i in animation.cssRules) {
            var rule = animation.cssRules[i];
            if (rule.keyText == "0%") {
                rule.style.top = y;
                rule.style.left = x;
            }
            if (rule.keyText == "100%") {
                rule.style.top = 0;
                rule.style.left = 0;
            }
        }
    }
}

addImage(100, 100, "http://i.imgur.com/KGfgH.jpg");
<style id="sheet">
@-webkit-keyframes test {
    from {}
}</style><script>
var keyFramesRule = document.getElementById('sheet').sheet.cssRules[0];
var keyFrameRule = keyFramesRule[0];
keyFrameRule.style.top = 0;</script>