使用 documentFragment 的 IE 性能不佳

2023-12-02

为了测试 DOM 操作与innerHTML,我使用了这个小测试方法documentFragment (web page) 追加 10000href元素到一个div元素。对于 Chrome 或 Firefox,性能还可以,但在 IE(10、9、8)中,性能非常糟糕,需要大约10-12秒。谁能解释这种差异和/或详细说明增强 IE 性能的解决方案?

这是一个jsfiddle展示它。

方法:

function useFragment(){
    var frag = document.createDocumentFragment(),
        i = 10000,
        rval = document.createElement('span');
    frag.appendChild(rval);
    do {
     var optText = 'option '+i
        ,ref = document.createElement('a') 
        ,zebra = i%2 ? 'zebra' : ''
        ,islist = true
        ,isSel = i === 5
     ;
     rval.insertBefore(ref,rval.firstChild);
     ref.appendChild(document.createTextNode(optText));
     ref.id = 'opt' + i;
     ref.className = zebra + (islist && isSel ? ' scrollSelect' : '');
     ref.href = '#' + i;
     ref.title = optText;
   } while (i-->0);
   return rval;
}

我想我已经找到了它:它看起来像,虽然documentFragment应该是一个“离线”元素(不属于实时 DOM 的元素)IE 不这么对待它。强制片段的方式really离线就是向其附加一些元素,设置它的display财产给none并将其余元素附加到该元素。完成后,删除display:none财产和documentFragment可以附加到 DOM。

它仍然慢了三倍(在我的 PC 上,它仍然需要大约 1-1.5 秒,而在 Chrome/Firefox 中,10000 个元素大约需要 2-300 毫秒)。因此,对于 IE(甚至版本 10),使用innerHTML向 DOM 添加一堆元素是更快的方法。我想说,IE 仍然是开发者的噩梦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 documentFragment 的 IE 性能不佳 的相关文章

随机推荐

  • Laravel 更快地查询控制器或视图中的所有内容

    查询控制器中的所有内容并返回每个查询更快 还是在使用视图时查询更快 假设所有模型都有关系 Example 完成控制器中的所有操作然后返回 Public function articlesHome id art Articles find i
  • 什么时候需要在 ISR 中使用 volatile?

    我正在制作嵌入式固件 初始化后的所有事情都发生在 ISR 中 我有它们之间共享的变量 我想知道在什么情况下它们需要是易失性的 我从不阻塞 等待另一个 ISR 的变化 在不使用易失性的情况下 什么时候可以确定实际内存已被读取或写入 每个 IS
  • SolidJS 中的条件样式

    我在 SolidJS 中有一个组件 看起来像这样 const MyComponent Component params gt const votes setVotes createSignal new Set const toggle va
  • 对不同列表中相同索引的元素求和

    我有一个列表列表 其中每个内部列表代表电子表格中的一行 使用我当前的数据结构 如何对具有相同索引的内部列表上的每个元素执行操作 这基本上相当于在电子表格中的列中执行操作 这是我正在寻找的示例 就加法而言 gt gt gt lisolis 1
  • 如何在 Liferay 7 中添加新语言?

    我的问题是如何添加新语言 例如泰语liferay 7 当我检查现有标志时 我发现图像不是 png 而是 svg 但我无法使用图标添加新语言 在这个page jsp我看到图像的构造函数是自动生成的 这段代码描述了svg图像的生成
  • 获取 Windows ‘ShFileOperation’ API 在 Delphi 中递归删除文件

    我正在使用以下代码删除大量文件 function FastDelete const fromDir string Boolean var fos TSHFileOpStruct begin ZeroMemory fos SizeOf fos
  • 如何复制进程的标准输出(复制,而不是重定向)?

    有很多示例展示了如何重定向另一个应用程序的标准输出 但是 我想让应用程序保留其标准输出 并且仅在父进程中检索标准输出的副本 这可能吗 我的场景 我有一些测试 使用 Visual Studio Test Runner 启动外部进程 服务器 来
  • 有没有办法创建 ColoredCheckbox 组件?

    我正在尝试创建一个可重复使用的material ui彩色复选框组件 您将十六进制颜色传递给组件 它会影响复选框颜色 到目前为止我已经明白了 但我想不出一种将颜色传递给 withStyles 的方法 const WhiteCheckbox w
  • 提取两个相似标题之间具有特定单词的段落

    我的文本文件包含类似这样的段落 summary A result oriented and dedicated professional with three years experience in Software Development
  • 将目标添加到导航栏中的后退按钮

    我正在设置标题和后退按钮的值UINavigationBar如下 self navigationItem title Post self navigationController navigationBar setTitleTextAttri
  • 是否可以从 C# 读取内部 CPU 滴答计数器?

    我有一个多线程 C 程序 我需要记录每个线程在特定自旋等待锁中花费的时间间隔 我知道有一些方法可以从 C 或汇编程序执行此操作 但是是否可以以某种方式直接从 C 访问相同的计数器 也就是说 无需通过 Stopwatch 类 我假设调用 St
  • 如何重命名 xcode 方案并保持 Git 提交正常工作?

    更新 我将此作为错误报告给 Apple 他们修复了它 所有这些在 xCode 4 5 中似乎都可以正常工作 历史学家可以继续读下去 我非常想在 xCode 4 3 中重命名 iOS 项目的构建方案 我已成功重命名该项目 然后我可以重命名目标
  • 获取星期一和星期日等..作为 Unix 中任何日期的一周参数

    如何获取某个日期一周中的星期一和星期日的日期 这给出了 最后 星期一的日期 date dlast monday Y m d 我想传递一个日期作为参数查找该周的星期一和星期日 基本上 我想要一周的周日和周一 任何日期 不仅仅是上周一 尝试这个
  • 如何将字符串从 HTML 传递到 Python 并返回到 HTML

    背景 我创建了一个非常简单的前端 用户可以在其中输入字符串 输入并单击 检查 按钮后 我想将此字符串作为 JSON 传递到 python 字符串 在其中执行 SQL 查找 根据 SQL 的外观 python 脚本应该传递一个布尔值 该值应该
  • 获取编译时已知的特定长度的切片

    在此代码中 fn unpack u32 data u8 gt u32 assert eq data len 4 let res data 0 as u32 data 1 as u32 lt lt 8 data 2 as u32 lt lt
  • 带有 C# ImageFormat 类的 WebP 图像

    我正在从网络下载图像以将其保存在本地 它适用于任何其他图像格式 但当我尝试读取 WebP 图像时 下面的方法会失败并出现参数异常 private static Image GetImage string url try HttpWebReq
  • 包容性和排除性的区别?

    我觉得这是一个简单的概念 但我在包容性和排他性方面遇到了麻烦 特别是关于随机数生成器 例如 如果我想要一个值 2 8 包括 2 和 8 那么这将是包容性的 对吗 该代码看起来怎么样 像这样的事情 nextInt 8 2 2 例如 如果我想要
  • 从一元数据创建二元(关系)数据

    我的冲突数据看起来像这样 conflict ID country code SideA 1 1 1 1 2 1 1 3 0 2 4 1 2 5 0 现在我想将其变成如下所示的二元冲突数据 SideA 1 应该是country code 1
  • 如何使用 PHP 创建随机字符串?

    我知道 PHP 中的 rand 函数生成随机整数 但是生成随机字符串的最佳方法是什么 例如 原始字符串 9 个字符 string abcdefghi 限制为 6 个字符的随机字符串示例 string ibfeca 更新 我发现了大量这些类型
  • 使用 documentFragment 的 IE 性能不佳

    为了测试 DOM 操作与innerHTML 我使用了这个小测试方法documentFragment web page 追加 10000href元素到一个div元素 对于 Chrome 或 Firefox 性能还可以 但在 IE 10 9 8