我正在尝试调整html元素(flash对象)的大小,但它似乎每秒响应不超过一次?
这是浏览器强加的限制(IE7和FF3都这样做)? 或者我应该尝试以不同/更有效的方式调整大小?
function setHeightNow(height) {
if (document.getElementById) {
if (height > 0) {
var scaleItem = document.getElementById('application');
scaleItem.style.height = height + 'px';
}
}
}
答案 0 :(得分:0)
如果你在循环中调用此函数,如他/她的评论中提到的bobince,你应该将其更改为一系列setTimeout
调用(或setInterval
)以将控制权交还给浏览器。
像这样 -
var i = INITIAL_VALUE;
(function() {
setHeightNow(foo);
if (i < FINAL_VALUE) {
i++;
setTimeout(arguments.callee, 0); //you can play around with the timeout.
}
})();
另外
documents.getElementById
检查有点无用,因为所有浏览器都支持它。document.getElementById
调用放在此重复函数之外是明智的。答案 1 :(得分:0)
这肯定不是一个明确的限制;我们运行一个触发30次/秒的动画循环。 (使用33ms超时。)大多数情况下我们移动背景(动画)或调整不透明度(淡入/淡出)但有时我们也会重新调整元素大小。
但是,所有这些元素都是绝对定位的,或者位于固定容器中,因此它不会触发浏览器的重新布局。我怀疑你的问题只是执行重新布局的成本,其中大部分都归结为flash对象本身。