我的应用程序中有一个加载微调器动画,当它执行大量的js执行时会在FF和IE中保持冻结,但是当执行大量的js执行时,它在chrome中运行正常。
我已经成为了一名能够证明这个问题的人。由于不同浏览器的性能不同,我做了三个不同的。它们之间的唯一区别是重复的项目数量。不确定它是否也依赖于计算机,在这种情况下,您可以更改项目数以获得较小的性能。
在这个Chrome version中,当我重新填充列表时,微调器动画一直在旋转,即使你可以看到在更新ng-repeat之前需要一段时间。
在此FireFox version和IE version中,当重新填充列表时,微调器会停止动画。
css:
.spinner-container {
position: absolute;
top: 40%;
left: 50%;
}
#preloader {
margin: 0 auto;
font-size: 10px;
position: relative;
text-indent: -9999em;
border-top: 1.1em solid red;
border-right: 1.1em solid red;
border-bottom: 1.1em solid red;
border-left: 1.1em solid green;
-webkit-animation: load8 1.1s infinite linear;
animation: load8 1.1s infinite linear;
}
#preloader,
#preloader:after {
border-radius: 50%;
width: 80px;
height: 80px;
}
@-webkit-keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
有谁知道为什么会这样,也许是解决方案?
当然,我们会尝试重构"重js执行"但这可能需要一段时间,如果有一个适当的加载微调器就会很好。
感谢
答案 0 :(得分:2)
这是预期的行为,这是浏览器在单个线程中进行渲染的方式。 Chrome(准确地说是Webkit浏览器)以这种方式不同,这就是他们通常被称为“快速'并且'响应'。 This article总结了这一点。
您可能希望将CPU密集型任务委派给Web worker。