【发布时间】:2012-06-13 20:09:56
【问题描述】:
我正在尝试以递归方式将 CSSStyleDeclaration 对象重新应用到文档的 innerHTML 中的每个节点。例如,如果您在此页面上调用 window.getComputedStyle(document.getElementsByTagName("a")[0]),则返回的散列中有大约 650 个不同的属性。假设我的文档的 innerHTML 中有 1000 个节点。当我遍历 innerHTML 并在每个 CSSStyleDeclaration 哈希中应用样式时,即对 node.style.setProperty(key, value) 进行了 650,000 次调用。但是,通过循环迭代,我正在逐个处理每个节点。相反,一次对 DOM 进行 1000 次调用而不是执行此循环会更有效率。问题是,如果这在 Chrome 中是可能的,我不知道怎么做。
我怀疑 Chrome 在整个 DOM 上都有一个 GIL(因为没有更好的词),但这可能只是迷信。如果不是这样,我会假设锁在节点级别。但同样,完全的迷信。我在这个没有事实的环境中运作。如果您有任何指点,我将不胜感激。
【问题讨论】:
-
你能做类似
node.style = firstLinkStyle;的事情吗?不确定这是否有效。
标签: javascript css dom google-chrome dom-node