【发布时间】:2014-11-26 21:23:42
【问题描述】:
我想重绘包含大量 DOM 元素的页面的一部分。理想情况下,我想设置visibility: hidden;,重绘该部分,然后设置visibility: visible;。但是,Chrome 似乎忽略了我设置 CSS 的 javascript。
如果您取消注释 debugger 行,您会看到 Chrome 在调试时实际上可以正确呈现内容。这可能不是 Chrome 特有的。
万一SO代码sn-p不起作用,我还发了jsFiddle。
//debugger;
var container = document.getElementById("container");
container.style.visibility = "hidden";
//debugger;
// In my case, some d3 code that draws SVG elements
// In this case, something that makes the browser work for x seconds
var delay = 3000,
counter = 1000;
var t0 = new Date().getTime(),
t1 = undefined;
while ((t1 = new Date().getTime()) <= t0 + delay) {
if (t1 >= t0 + counter) {
console.log(counter);
counter += 1000;
}
}
container.style.visibility = "visible";
#container {
border: 1px dotted red;
width: 100%;
height: 100%;
}
<div id="container">
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
<div>Some DOM Element</div>
</div>
【问题讨论】:
-
在没有任何 DOM 操作代码的情况下,我们如何才能确定您的 DOM 操作是如何落后于 Chrome 的?没有什么可处理的了。请发布您的实际 DOM 代码,以便我们知道发生了什么。
-
也许我的标题具有误导性,但我的代码显示 Chrome 挂起。所以这不是 DOM 操作代码。
-
那么标题 具有误导性 - 我无法弄清楚您到底想问什么,但我建议将其更新为更清晰的内容。就目前而言,我根本不明白这个问题。
标签: javascript html css google-chrome dom