在升级到 Windows 10 周年更新后,使用系统自带的 Edge 浏览器浏览部分网站出现这种报错:

在网络上搜索 HierarchyRequestError 会找到同样的案例,大致都指向使用 appendChild 时报错,因此初步判定此报错是和节点操作相关。

翻看网络上的案例,发现大多是 appendChild 使用方法错误,而 Edge 的这个报错却是相同的代码在其他浏览器和之前版本的 Edge 下都没有出现的问题,所以应该不会是粗心造成的低级错误,可能是浏览器本身的问题。

但毕竟要解决不是。

既然看到 Avalon 1.5.5 报错,那么根据浏览器报错阅读源码,发现错误是出现在 ms-repeat 指令中:

while (elem.firstChild) {binding.template.appendChild(elem.firstChild)  // 这里报错
}

那么推断,这里的操作被最新的 Edge 认为是“将不合适的节点 append 到了另一个不合适的节点中”。

经过一番排查,发现问题是出在 avalonFragment 上。Avalon 中的所有 fragment 都是通过 avalonFragment.cloneNode(false) 创建的,那么把这些 fragment 都改为由 document.createDocumentFragment() 创建,错误果然消失。

那么做一个精简的报错案例:

<!-- Windows 10 周年更新后的 Edge 14 下会报 HierarchyRequestError 的用法 -->
<div id="test-div"></div><script>var fragment = document.createDocumentFragment();var newFragment = fragment.cloneNode(false);var newDIV = document.createElement("div");newDIV.innerHTML = "newDIV";newFragment.appendChild(newDIV);fragment.appendChild(newFragment);document.querySelector("#test-div").appendChild(fragment);
</script>

所以解决方法也很简单,暂时不要使用 cloneNode 的方式创建 Fragment 然后又将其 append 到另一个 clone 出来的 Fragment 中,用 document.createDocumentFragment() 代替

有意思的是,如果是 cloneNode 一个 element 比如 div 则不会报错,因此很可能是 Edge 14 自己的 Bug。

皆大欢喜。_(:3」∠)_

Windows 10 周年更新后的 Edge 14 的 HierarchyRequestError 报错相关推荐

  1. windows10系统更新后,Edge或者Chrome浏览器报错:“STATUS_INVALID_IMAGE_HASH”

    报错产生原因: (一)windows10系统更新后 (二)某些开发工具如vsCode,安装了open in browser插件,开发时打开默认浏览器 Edge或者Chrome浏览器报错:"S ...

  2. Windows 10 周年更新后TPM的一个bug?

    迟迟等不到推送更新,终于忍不住手动更新了.还是那句话,我很喜欢现在更新的方式,让Windows不会越来越臃肿. 升级完后一般我有一周的适应期,检查兼容性之类.目前的已知问题有,插入Kindle蓝屏-- ...

  3. 微软修复Windows 10周年更新KB3194496累积更新安装问题

    9月28日,微软面向Slow和Release Preview通道用户发送累积更新KB3194496,升级后版本号为Build 14393.222,不过不少用户反馈称安装失败,弹出"无法执行更 ...

  4. Windows 10 周年更新正式版下载 + win10 快捷键

    Windows 10 周年更新正式版  360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd) 今后提到周年更新版.1607版或RS1版,都 ...

  5. 小米5更新后android studio 通过USB安装报错:install_canceled_by_user

    之前遇到过这个问题,无非是usb调试没有打开:又或者是没有及时在手机上点击确认:在或者不管怎么样rebuild或者重启手机就能成功,但是在2016年11月24号更新了miui系统后,不管怎么样都会遇到 ...

  6. 小米系统更新后android studio 通过USB安装报错:install_canceled_by_user

    之前我也曾在Android Studio 安装应用失败总结一文中总结过这个问题,无非是usb调试没有打开:又或者是没有及时在手机上点击确认:再或者不管怎么样rebuild或者重启手机就能成功,但不知道 ...

  7. Windows 10“创作者更新”改进了高DPI缩放支持

    即将于下周正式发布的 Windows 10"创作者更新"将带来诸多激动人心的新功能,但它其实还包含了许多底层的小改进,比如更好地支持高 DPI 显示屏.在 Windows 10&q ...

  8. 微信与此ipad不兼容电脑也显示设备版本过低9.0_iOS系统出现怪异Bug:iPhone/iPad没法正常用;微软计划6月开测Windows 10 21H1更新...

    IT服务圈儿 有温度.有态度的IT自媒体平台  开发者头条  1.Microsoft Edge 83 稳定版发布 微软推出了 Microsoft Edge 83 稳定版(83.0.478.37),现在 ...

  9. Windows 10累积更新发布:RS3正式版前最后一更

    Windows 10用户很快将能够通过Update Assistant工具手动安装Windows 10创作者更新.而在正式版到来之前这仅剩的一点空白时间当中,微软又发布了两个累积更新来优化体验.今天发 ...

最新文章

  1. 软件中的易用性设计及测试(三)之实践
  2. 计算机知识幼儿园,幼儿园中班计算机教学工作计划
  3. [life]见证本届世界杯意大利的出局
  4. Ext js tabpanel的使用
  5. sql server中截取字符串的常用函数(自己经常到用的时候想不起来所以拿到这里)...
  6. 把触发器说透(转载)
  7. 解决安装多个Xcode出现的PBXProjectWizardChooserWizard问题
  8. ibase4j使用信息心得
  9. Visual SVN Server
  10. arm mali 天梯图_11月最新版联发科CPU天梯图 直观看天梯图秒懂联发科处理器排行...
  11. 动态规划入门(走楼梯问题 c++)
  12. IDEA Schemas and DTDs
  13. js Array 标准方法
  14. ros2 launch 常见问题
  15. Python Pandas DataFrame 删除缺失值 None Nan drop dropna 替换缺失值 fillna 重复值删除 duplicate 数值替换 replace apply
  16. pip安装包下载地址
  17. 数据结构课程设计大作业——江大公交路线查询系统
  18. 易中天品汉代风云人物08:韩信成败之谜
  19. ZigBee协议栈简介和流程
  20. Azure资源托管标识浅析和实践

热门文章

  1. 给初恋女孩的信....
  2. 毒霸能清除的大小流氓清单(部分)
  3. setInterval动态时间处理
  4. JAVA通信系列三:Netty入门总结(转)
  5. python学习笔记之运算符
  6. 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
  7. Linux下 apache 配置 wsgi 以使用 python-flask (2016年2月)
  8. 博客迁移至http://www.vlix.org/
  9. 谁说女生不能搞IT?一名女程序员的奋斗史
  10. C#资源释放及Dispose、Close和析构方法