【问题标题】:Chrome Bug - window.scroll method intercepts DOM RenderingChrome Bug - window.scroll 方法拦截 DOM 渲染
【发布时间】:2012-06-11 01:26:41
【问题描述】:

首先,使用此页面上的导航菜单(左侧): http://bestds.com/TankStorage/

我正在使用 javascipt 在单击时更新这些 li 元素的 dom backgroundColor。

Firefox 渲染更新后的 DOM 元素,但 Chrom 和 Chromium 不渲染它们。

使用 Chromium 的文档检查器,我可以清楚地看到 li 元素的背景颜色已正确更新,但它们没有被渲染。有趣的是,当我将光标悬停在 Chrom 文档检查器中未渲染的 html 元素上后,它会继续渲染 DOM 更改吗!

我应该如何解决这个问题?

【问题讨论】:

    标签: javascript dom google-chrome rendering chromium


    【解决方案1】:

    我想通了。 Chrom 存在渲染错误。

    如果你调用一个窗口滚动函数,在你更新一些 DOM 属性之后,Chrom 不会完全渲染你所有的 DOM 修改。

    为了解决这个问题,我替换了这一行:

    window.scroll(0,docPos);
    

    用这一行:

    setTimeout('window.scroll(0,' + docPos + ')',1);
    

    这使 Chrom 能够在窗口滚动渲染错误阻止它之前渲染 dom 更改。

    【讨论】:

    • 我通过 Chrom 的帮助菜单提交了错误,但该方法没有为您提供跟踪链接。
    • 这真的很烦人,但是浪费了我大约 25 分钟的时间来调试它。