跨浏览器检测某个节点是不是另一个节点的后代
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
跨浏览器检测某个节点是不是另一个节点的后代相关推荐
- 每天一道LeetCode-----计算二叉树的最大路径和,路径只需要从一个节点到达另一个节点,无其他要求
Binary Tree Maximum Path Sum 原题链接Binary Tree Maximum Path Sum 给定一个二叉树,计算二叉树中最长的路径和,路径只需要从一个节点到另一个节点, ...
- 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)
两种方法实现: package cn.exercise.list; import java.util.HashMap; /** * 删除链表重复节点(重复节点只保留一个) */ public clas ...
- activiti根据当前节点获取下一个节点信息
在流程中使用监听器判断当前节点是否需要经过,否则跳转到下一个节点,如下图 当提交申请之后,当前提交人为部门负责人,那么部门负责人节点就不需要走了,直接到下一个节点,但是下一个节点是什么并不知道,就可以 ...
- LeetCode 2096. 从二叉树一个节点到另一个节点每一步的方向(最小公共祖先)
文章目录 1. 题目 2. 解题 1. 题目 给你一棵 二叉树 的根节点 root ,这棵二叉树总共有 n 个节点. 每个节点的值为 1 到 n 中的一个整数,且互不相同. 给你一个整数 startV ...
- 在无头单链表的一个非头节点前插入一个节点(C语言)
①时间复杂度为N: void InsertNotHead(PSListNode pHead, PSListNode pos, DataType data) {PSListNode pPreNode = ...
- react 递归遍历四层树结构 遍历分支中的最后一个节点_图解:数据结构中的 6 种树,你心中有数吗?...
(给算法爱好者加星标,修炼编程内功) 来源:LemonCoder/后端技术学堂(本文来自作者投稿) 数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习 ...
- activiti根据当前节点获取下一个UseTask节点
以前写过一篇文章activiti根据当前节点获取下一个节点信息,当时的需求只是需要获取下一个节点而已,并没有要求获得什么类型的节点,所以下一个节点可能是任何节点,在最近的项目中的需求是根据当前的节点获 ...
- 左神算法基础班4_4_3在二叉树中找到一个节点的后继节点
Problem: 在二叉树中找到一个节点的后继节点 [题目] 现在有一种新的二叉树节点类型如下: public class Node { public int value; public Node l ...
- [Leetcode][第116 117题][JAVA][填充每个节点的下一个右侧节点指针][BFS][链表前驱节点]
[问题描述][中等] [解答思路] 1. BFS层次遍历思想 (通用) 时间复杂度:O(N) 空间复杂度:O(N) public Node connect(Node root) {if (root = ...
最新文章
- android WebView总结
- IDEA工具Terminal使用git log中文乱码的解决方法
- python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM
- 写JQuery 插件 什么?你还不会写JQuery 插件
- 一天一个设计模式之JS实现——建造者模式
- 一分钟教你在PyTorch跑模型的时候提取中间层查看图片
- fiddler+mitmproxy+夜神模拟器安装
- SpringBoot整合JPA(六)
- STM32F103驱动无刷直流电机应用思路
- max函数的线性化方法
- 常用分类词汇表-英美菜谱
- 低调的华丽:从服务器开发的角度认识 asp.net 中的回调技术
- 推荐阅读:《我在赶集网的两个月(完整版)》
- mdio phy(bcm5482)访问
- Error starting daemon: error initializing graphdriver: driver not supported
- C#文件操作相关语句 - 大全
- C语言:typedef用法简介
- 浙江理工大学计算机考研难度,浙江理工大学考研难度(浙江理工大学是211吗)...
- 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- 数据中心综合布线系统
热门文章
- ASP.NET MVC 拦截器(转)
- CVPR 2022 | 旷视研究院入选论文亮点解读
- 【社招】vivo西安研发中心招聘影像类英才
- EfficientDet目标检测谷歌官方终于开源了!
- 近期机器学习竞赛汇总~总奖池超千万人民币!
- 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
- tableview插入刷新_iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码...
- 三相滤波器怎么接线_数字滤波器设计的一般套路
- 程序员们之间的“鄙视链”,程序员底之间无声的战争
- 李沐《动手学深度学习》中文版PDF和视频免费领!!!