Document​Type 和 Mutation Observer 更新为 ES11

阅读时长 5 分钟读完

DocumentType 和 Mutation Observer 更新为 ES11

在 Web 开发中,Document Type 和 Mutation Observer 可以说是前端开发者经常用到的两个重要概念。前者用于定义 HTML 中文档类型,而后者则用于监听 HTML 的文档树的变化。近日,随着 ECMAScript 2020 的发布,Document Type 和 Mutation Observer 也经过了更新,此文将详细介绍这两者在 ES11 中的变化。

更新 Document Type

在早期版本的 HTML 中,文档声明为 <!DOCTYPE html> ,它的目的是告诉浏览器该文档应使用哪个版本的 HTML 来解析,以确保网站能够得到正确的渲染。随着 HTML5 的出现,文档类型的声明变得更加简单,信息也更加明确。在 ES11 中,我们可以使用以下代码声明文档类型:

其中 qualifiedName 是必需的,表示文档类型的全名;publicIdsystemId 则是可选参数,用于提供更多的信息。我们来看一个示例:

这里我们使用 DOMImplementation() 来创建一个 documentType 对象,并将其传递给 createDocumentType() 方法中。我们指定了文档类型的全名为 "html",公共 ID 和系统 ID 均为空,它将返回一个 <!DOCTYPE html> 的字符串。在实际开发中,我们可以使用外部的 HTML 文件来完成此操作,如下:

在这个示例中,我们向服务器发送了一个 GET 请求,且响应类型为 document。加载成功后,我们可以通过 xhr.response.doctype 来访问相应的 documentType 对象。这个技巧可以用于在页面中加载外部 HTML 文件时,生成 document 对象。

更新 Mutation Observer

Mutation Observer 是 DOM API 中的一个重要组件,它可以用于监听 DOM 树中的变化。在 ES11 中,Mutation Observer 也经过了升级,它现在能够更灵活地处理数据,且功能更为强大。

我们可以利用 Mutation Observer 来监测 DOM 元素中的任何更改。比如改动了它的属性、子节点被添加或删除等等。观察器会跟踪这些变化,并且执行一个 JavaScript 回调函数来处理这些变化。

让我们看一下如何在 ES11 中使用 Mutation Observer:

-- -------------------- ---- -------
----- ---------------- - ----------------------------------------------

----- -------- - --- ---------------------------------------- -
  --- ---- -------- -- -------------- -
    -- -------------- --- ------------- -
      ---------------- - - ---------------------- - - --------- --- ------------
    - ---- -- -------------- --- ------------ -
      ---------------- ----- ----- ---- ---- ----- -- -----------
    -
  -
---

---------------------------------- - ----------- ----- ---------- ----- -------- ---- ---

在这里我们使用 elementToObserve 属性来指定要监控的 DOM 元素。然后,我们创建了一个 MutationObserver 实例,传递一个回调函数并开始监听摩棱两个参数:attributeschildListsubtree 参数表示我们需要监听子节点的变化。一旦监听器开始工作,它会持续观察指定元素的变化,并在适当时候执行回调函数。

总结

本文介绍了 ES11 中关于 Document Type 和 Mutation Observer 的更新,帮助开发者更好地掌握了这两个概念在新语法下的用法。通过本文的学习,你可以更加深入地了解 JavaScript 的 DOM 操作,以及如何使用 Mutation Observer 监测这些更改。这将为你将来的前端开发工作带来便利。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648ec0dd48841e9894d27201

纠错
反馈