试图从Javascript修改CSS3动画时,Chrome崩溃
我有一个包含以下内容的HTML文件:试图从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
<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>