返回顶部
首页 > 资讯 > 精选 >Node.contain函数兼容处理的方法是什么
  • 315
分享到

Node.contain函数兼容处理的方法是什么

2023-07-05 09:07:38 315人浏览 独家记忆
摘要

本文小编为大家详细介绍“node.contain函数兼容处理的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.contain函数兼容处理的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧

本文小编为大家详细介绍“node.contain函数兼容处理的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.contain函数兼容处理的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

contains方法

Node 接口的 contains()  方法返回一个布尔值,表示一个节点是否是给定节点的后代,即该节点本身、其直接子节点(childNodes)、子节点的直接子节点等。

参数

otherNode

测试的节点。

备注:  otherNode 不是可选的,但是可以设置为 null

返回值

返回一个布尔值,如果 otherNode 包含在节点中会返回 true,否则返回 false

如果 otherNode 参数为 null,则 contains() 始终返回 false

示例

下面的函数用来检查一个元素是否是 body 元素的后代元素。由于 contains 会包含元素自身,而确定 body 是否包含自身不是设计 isInPage 的意图,这种情况明确返回 false

function isInPage(node) {  return (node === document.body) ? false : document.body.contains(node);}

规范

Specification
DOM Standard # ref-for-dom-node-contains①

浏览器兼容性

Report problems with this compatibility data on GitHub


desktopmobile









ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung InternetWEBView Android
contains16Toggle history12Toggle history9Toggle history7Toggle history1.1Toggle history18Toggle history9Toggle history10.1Toggle history1Toggle history1.0Toggle history4.4Toggle history

兼容处理

因为是原生方法,兼容性有限,所以针对公司的项目兼容需求,还需要进行兼容处理。具体代码如下:

const contains = (root, el) => {    if (root.compareDocumentPosition) return root === el || !!(root.compareDocumentPosition(el) & 16);    if (root.contains && el.nodeType === 1) {        return root.contains(el) && root !== el;    }    while ((el = el.parentNode)) if (el === root) return true;    return false;};

这段代码实现了一个检测节点是否存在于指定容器中的函数contains,其中使用了三种不同的方式进行判断:

  • 如果浏览器支持compareDocumentPosition方法,则直接使用该方法进行判断。首先判断root节点是否等于el节点,如果是,则返回true;否则,使用compareDocumentPosition方法判断el节点是否在root节点中,如果结果为16,则返回true,否则返回false

  • 如果浏览器不支持compareDocumentPosition方法,但支持contains方法,则判断el节点是否是一个元素节点(nodeType为1),如果是,则使用contains方法判断el节点是否在root节点中,并且root节点不等于el节点,如果满足,则返回true,否则返回false

  • 如果浏览器既不支持compareDocumentPosition方法,也不支持contains方法,则使用while循环遍历el节点的所有祖先节点,判断是否有节点等于root节点,如果有,则返回true,否则返回false

综合三种方式,可以实现在各种浏览器中兼容检测节点是否存在于指定容器中的功能。

读到这里,这篇“Node.contain函数兼容处理的方法是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Node.contain函数兼容处理的方法是什么

本文链接: https://lsjlt.com/news/351091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.contain函数兼容处理的方法是什么
    本文小编为大家详细介绍“Node.contain函数兼容处理的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.contain函数兼容处理的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-05
  • 一文详解Node.contain 函数兼容处理
    目录前言contains方法兼容处理总结前言 好久不写文章了,都不知道跟大家怎么打招呼了,新的一年开始,也应该收心,做一些文字的记录以及分享了。 先说下写这篇文章的由来吧,接到一个...
    99+
    2023-03-08
    Node.contain 函数兼容 Node.contain 函数
  • HTML5新标签兼容的方法是什么
    本篇内容介绍了“HTML5新标签兼容的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&nbs...
    99+
    2024-04-02
  • sqlserver备份向下兼容的方法是什么
    SQL Server备份向下兼容的方法是使用较低版本的SQL Server备份文件还原到较高版本的SQL Server数据库。这可以...
    99+
    2023-09-27
    sqlserver
  • win10兼容性视图设置的方法是什么
    在Windows 10中设置兼容性视图的方法如下:1. 打开控制面板:可以通过在开始菜单中搜索"控制面板"来找到。2. 在控制面板中...
    99+
    2023-10-08
    win10
  • PHP 函数版本兼容性的最新发展是什么?
    为了保持 php 函数版本兼容性,请查阅变更日志了解弃用的函数和行为更改,并使用替代方案。例如,ereg() 已弃用,建议使用 preg_match(),array_merge() 的行...
    99+
    2024-04-25
    php 函数兼容性
  • SQL Server2008数据库导入导出兼容性的处理方法
    SQL Server2008数据库导入导出兼容性的处理方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用场景:SQL Server 的...
    99+
    2024-04-02
  • Java8处理数据的函数式方式是什么
    本篇内容介绍了“Java8处理数据的函数式方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!处理数据的函数式方式Java 8 不仅仅添...
    99+
    2023-06-17
  • IE8兼容性问题的快速解决方法是什么
    IE8兼容性问题的快速解决方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为了实现IE8兼容基于其它网页标准开发的网站,IE8还专门提...
    99+
    2024-04-02
  • Javascript事件机制兼容性解决方法是什么
    本篇内容主要讲解“Javascript事件机制兼容性解决方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript事件机制兼容性解决方法是什么...
    99+
    2024-04-02
  • C++对全局函数的处理方式是什么
    这篇文章主要介绍“C++对全局函数的处理方式是什么”,在日常操作中,相信很多人在C++对全局函数的处理方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++对全局函数的处理方式是什么”的疑惑有所帮助!...
    99+
    2023-06-17
  • Teradata处理大数据的方法是什么
    Teradata处理大数据的方法包括以下几个核心技术和方法: 并行处理:Teradata采用共享架构,通过并行处理和分布式计算来...
    99+
    2024-03-08
    Teradata
  • C++ 函数重载中歧义调用的处理方法是什么?
    歧义调用发生在编译器无法确定调用哪个重载函数时。处理方法包括:为每个重载函数提供唯一的函数签名(参数类型和数量)。使用显式类型转换强制调用正确的函数,如果一个重载函数的参数类型更适合给定...
    99+
    2024-04-13
    函数重载 歧义调用 c++ 作用域
  • docker容器管理的方法是什么
    Docker容器可以通过以下几种方法进行管理: Docker CLI:使用Docker命令行工具来管理和操作容器,如创建、启动、...
    99+
    2024-04-02
  • python图像数据处理的方法是什么
    Python图像数据处理的方法有很多,包括但不限于以下几种:1. 使用PIL(Python Imaging Library)库:PI...
    99+
    2023-09-20
    python
  • matlab处理大量数据的方法是什么
    在处理大量数据时,MATLAB提供了许多方法和工具,包括以下几种:1. 预分配内存:在处理大量数据时,预分配内存是一种有效的方法,可...
    99+
    2023-09-15
    matlab
  • java并发处理数据的方法是什么
    Java中处理并发数据的方法有以下几种:1. 使用synchronized关键字:synchronized关键字可以用于方法或代码块...
    99+
    2023-10-11
    java
  • python气象数据处理的方法是什么
    在Python中,可以使用一些常用的库和方法来处理气象数据,其中包括:1. NumPy:用于处理数值计算和数组操作,可以用来处理气象...
    99+
    2023-10-12
    python
  • python数据降噪的处理方法是什么
    在Python中,常用的数据降噪处理方法有以下几种:1. 平滑滤波(Smoothing Filter):平滑滤波是一种常见的降噪方法...
    99+
    2023-08-23
    python
  • flink处理离线数据的方法是什么
    Flink处理离线数据的方法通常是通过批处理模式来实现。Flink提供了DataSet API来支持批处理模式,可以对离线数据进行批...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作