【问题标题】:DocumentFragment browser supportDocumentFragment 浏览器支持
【发布时间】:2010-11-24 02:44:11
【问题描述】:

今天我偶然发现了 createDocumentFragment。我想知道是否支持 DocumementFragment,以及如何在不同的浏览器上,特别是 IE 系列。

有人知道这方面的事情吗?

【问题讨论】:

标签: javascript cross-browser


【解决方案1】:

是的,所有现代浏览器(包括 IE6)都完全支持它。

请参阅:http://www.quirksmode.org/dom/w3c_core.html#miscellaneous

【讨论】:

  • 虽然所有浏览器都支持documentFragment,但是getElementsByTagNamechildren等DOM遍历方法对它们不起作用。
【解决方案2】:

一般来说,按照 DOM 规范,它总是可以正常工作。

但不要指望非标准扩展能够无缝工作...例如,您不能在 DocumentFragment 上设置 innerHTML(这是一种耻辱,因为它可以大大提高某些大页面的插入速度)。

【讨论】:

  • 但是您可以使用document.createElement 创建一个持有者div,并将字符串作为innerHTML 添加到div,然后最后将div 附加到documentFragment跨度>
  • 是的,但这与直接在div 上操作相比没有性能优势。这个想法是加快诸如向表中添加许多行之类的操作,这些操作通常使用逐节点 DOM 方法很慢。您可以通过将片段与 Range 对象组合来做很多这样的事情,除了 DOM Level 2 TR(尤其是 IE)的浏览器实现还没有完全实现。
【解决方案3】:
         ╔═════════════════════════════════╗
         ║ document.createDocumentFragment ║
╔════════╬═════════════════════════════════╣
║ IE5    ║ true                            ║
║ IEM5.2 ║ true                            ║
║ IE5.5  ║ false                           ║
║ IE6+   ║ true                            ║
║ OPM6+  ║ true                            ║
║ OP7+   ║ true                            ║
║ N6+    ║ true                            ║
║ KQ     ║ true                            ║
╚════════╩═════════════════════════════════╝

但请注意,存在并不总是需要实施。

陷阱

  • Mac 上的 IE Mac 5.2 无法将文本节点添加到文档片段,也无法将片段的内容附加到文档。
  • Opera 7.2 会创建片段,但不会将样式应用于创建的元素。

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 2019-07-30
    • 2012-02-14
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多