1.通常我们使用contains()方法不通过在DOM文档树中查找即可获得这个消息,传入两个参数,一个是祖先节点另一个是需要检测的后台节点。
2.通过compareDocumentPosition()确定节点之间的关系,返回一个表示该关系的位掩码。

掩码 节点关系
1   无关(给定的节点不在当前文档中)
2 居前(给定的节点在DOM树中)
4 居后(给定的节点在DOM树中位于参考节点之后)
8 包含(给定的节点是参考节点的祖先)
16 被包含(给定节点是参考节点的后代)
function contains(refNode,otherNode){if( typeof refNode.contains == "function" && (!client.engine.webkit || client.engine.webkit >= 522)){return refNode.contains(otherNode);} else if (typeof refNode.compareDocumentPosition == "function"){return !!(refNode.compareDocumentPosition(otherNode) & 16)} else {var node = otherNode.parentNodedo{if(node === refNode){return true}else{node = node.parentNode}}while(node !== null);return false}}function getContains(){alert(contains(document.documentElement,document.body))}

这个函数使用了三种方式来检测。函数的第一个参数是参考节点,第二个参数是检查节点。在函数体内,首先检测refNode中是否存在contains()方法(能力检测)。这一部分代码还检查了当前浏览器所用的Webkit版本号。如果方法存在而且不是Webkit

(!client.engine.webkit),则需要继续执行代码。如果浏览器是webkit且至少是Safari3(WebKit版本号为522或者更高,那么可以继续执行代码),在Webkit版本号小于522的Safari浏览器中,contains()方法不能正常使用。

转载于:https://www.cnblogs.com/daniel-lij/p/7102382.html

跨浏览器检测某个节点是不是另一个节点的后代相关推荐

  1. 每天一道LeetCode-----计算二叉树的最大路径和,路径只需要从一个节点到达另一个节点,无其他要求

    Binary Tree Maximum Path Sum 原题链接Binary Tree Maximum Path Sum 给定一个二叉树,计算二叉树中最长的路径和,路径只需要从一个节点到另一个节点, ...

  2. 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)

    两种方法实现: package cn.exercise.list; import java.util.HashMap; /** * 删除链表重复节点(重复节点只保留一个) */ public clas ...

  3. activiti根据当前节点获取下一个节点信息

    在流程中使用监听器判断当前节点是否需要经过,否则跳转到下一个节点,如下图 当提交申请之后,当前提交人为部门负责人,那么部门负责人节点就不需要走了,直接到下一个节点,但是下一个节点是什么并不知道,就可以 ...

  4. LeetCode 2096. 从二叉树一个节点到另一个节点每一步的方向(最小公共祖先)

    文章目录 1. 题目 2. 解题 1. 题目 给你一棵 二叉树 的根节点 root ,这棵二叉树总共有 n 个节点. 每个节点的值为 1 到 n 中的一个整数,且互不相同. 给你一个整数 startV ...

  5. 在无头单链表的一个非头节点前插入一个节点(C语言)

    ①时间复杂度为N: void InsertNotHead(PSListNode pHead, PSListNode pos, DataType data) {PSListNode pPreNode = ...

  6. react 递归遍历四层树结构 遍历分支中的最后一个节点_图解:数据结构中的 6 种树,你心中有数吗?...

    (给算法爱好者加星标,修炼编程内功) 来源:LemonCoder/后端技术学堂(本文来自作者投稿) 数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习 ...

  7. activiti根据当前节点获取下一个UseTask节点

    以前写过一篇文章activiti根据当前节点获取下一个节点信息,当时的需求只是需要获取下一个节点而已,并没有要求获得什么类型的节点,所以下一个节点可能是任何节点,在最近的项目中的需求是根据当前的节点获 ...

  8. 左神算法基础班4_4_3在二叉树中找到一个节点的后继节点

    Problem: 在二叉树中找到一个节点的后继节点 [题目] 现在有一种新的二叉树节点类型如下: public class Node { public int value; public Node l ...

  9. [Leetcode][第116 117题][JAVA][填充每个节点的下一个右侧节点指针][BFS][链表前驱节点]

    [问题描述][中等] [解答思路] 1. BFS层次遍历思想 (通用) 时间复杂度:O(N) 空间复杂度:O(N) public Node connect(Node root) {if (root = ...

最新文章

  1. android WebView总结
  2. IDEA工具Terminal使用git log中文乱码的解决方法
  3. python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM
  4. 写JQuery 插件 什么?你还不会写JQuery 插件
  5. 一天一个设计模式之JS实现——建造者模式
  6. 一分钟教你在PyTorch跑模型的时候提取中间层查看图片
  7. fiddler+mitmproxy+夜神模拟器安装
  8. SpringBoot整合JPA(六)
  9. STM32F103驱动无刷直流电机应用思路
  10. max函数的线性化方法
  11. 常用分类词汇表-英美菜谱
  12. 低调的华丽:从服务器开发的角度认识 asp.net 中的回调技术
  13. 推荐阅读:《我在赶集网的两个月(完整版)》
  14. mdio phy(bcm5482)访问
  15. Error starting daemon: error initializing graphdriver: driver not supported
  16. C#文件操作相关语句 - 大全
  17. C语言:typedef用法简介
  18. 浙江理工大学计算机考研难度,浙江理工大学考研难度(浙江理工大学是211吗)...
  19. 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
  20. 数据中心综合布线系统

热门文章

  1. ASP.NET MVC 拦截器(转)
  2. CVPR 2022 | 旷视研究院入选论文亮点解读
  3. 【社招】vivo西安研发中心招聘影像类英才
  4. EfficientDet目标检测谷歌官方终于开源了!
  5. 近期机器学习竞赛汇总~总奖池超千万人民币!
  6. 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
  7. tableview插入刷新_iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码...
  8. 三相滤波器怎么接线_数字滤波器设计的一般套路
  9. 程序员们之间的“鄙视链”,程序员底之间无声的战争
  10. 李沐《动手学深度学习》中文版PDF和视频免费领!!!