opera9.6 的一个顽固的bug
在叙述之前 先说下 万幸 这个bug opera10已经修复了
divElement是一个 div元素 默认样式 width:100px;border-width:0:
window.setTimeout(function() { divElement.style.borderWidth = '20px'; }, 100);
当setTimeout回调 来改变某div的borderWidth的时候 opera9不重新渲染就是说看起来会没有变化
除非 切换焦点到其他窗口再切回来才重新渲染
我想强制他重新渲染.但问题来了.貌似opera9有缓存机制 用来减少reflow
比如我:
window.setTimeout(function() { divElement.style.borderWidth = '20px'; divElement.style.width='1000px'; }, 100);
这样就重新渲染了
border也变了
但是一旦再改回去原来的宽
border又没了
所以 想在改变border以后 强制重新渲染貌似也不行
如:
window.setTimeout(function() {
show.style.borderWidth = '20px';
show.style.width = '1000px';//强制重新渲染 此时border变化 显示出来了
show.style.width = '100px'; //恢复原来的宽度 此时border又变成原始的0了
}, 100);
或者
window.setTimeout(function() {
show.style.width = '101px';
show.style.borderWidth = '20px';
show.style.width = '100px';
}, 100);
都不行
解决办法 :
window.setTimeout(function() {
show.style.width = '101px';
show.style.borderWidth = '20px';
window.setTimeout(function() { show.style.width = '100px'; }, 0);
}, 100);