我有一个 HTML 文件:
<div id="container"></div>
我有一个定义了 CSS3 动画的样式表:
.image {
position: absolute;
-webkit-animation-name: image-create;
-webkit-animation-duration: 1s;
}
@-webkit-keyframes image-create {
from {
width: 0px;
height: 0px;
}
to {
width: 500px;
height: 500px;
}
}
这应该使图像从 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");
</p>
调用 addImage() 时,我试图在坐标 (x, y) 处创建图像。动画应该让它增长,同时从创建图像的位置 (x, y) 移动到左上角 (0, 0)。
相反,Chrome 只是崩溃到“Aw, snap”页面。有谁知道为什么会这样?
编辑:这是一个例子。如果我访问它,这对我来说会崩溃:http: //jsfiddle.net/LVpWS/10/
在这一行中,我注释掉了一些行并且它没有崩溃:http: //jsfiddle.net/LVpWS/21/
EDIT2:如果我切换回 Chrome 20,它会起作用。