JS中通用的contains方法判断两个节点的关系
来源:互联网 发布:做网络销售怎么样 编辑:程序博客网 时间:2024/06/05 18:36
“我生本无乡,心安是归处”
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.parentNode; do { if (node === refNode){ return true; } else { node = node.parentNode; } } while (node !== null); return false; }}
这个函数组合使用了三种方式来确定一个节点是不是另一个节点的后代。函数的第一个参数是参考节点,第二个参数是要检查的节点。在函数体内,首先检测 refNode 中是否存在 contains() 方法(能力检测)。这一部分代码还检查了当前浏览器所用的 WebKit 版本号。如果方法存在而且不是 WebKit( !client.engine.webkit ),则继续执行代码。否则,如果浏览器是 WebKit 且至少是 Safari 3(WebKit版本号为 522 或更高),那么也可以继续执行代码。在 WebKit 版本号小于 522 的 Safari 浏览器中,contains() 方法不能正常使用。
接下来检查是否存在 compareDocumentPosition() 方法,而函数的最后一步则是自 otherNode开始向上遍历 DOM 结构,以递归方式取得 parentNode ,并检查其是否与 refNode 相等。在文档树的顶端, parentNode 的值等于 null ,于是循环结束。这是针对旧版本 Safari 设计的一个后备策略
阅读全文
0 0
- JS中通用的contains方法判断两个节点的关系
- JS 中DOM节点的访问关系
- js中判断由字符串from和to代表的两个日期的先后关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- JS中节点的常用方法
- C#两个集合之间数据的关系--Contains
- ArcGIS中判断两个Geometry之间的关系
- [转]ArcGIS中判断两个Geometry之间的关系
- TOJ 2241. Ancestor 【判断一棵树上两个节点的关系】
- 【jQuery】检测两个节点的包含关系
- 判断元素之间的包含关系contains和compareDocumentPosition详解
- c# winform中treeview判断父节点与子节点的关系
- 判断二叉树中两个节点的最低共同父节点
- 判断二叉树中两个节点的最低共同父节点
- 深入浅谈事物
- Maven仓库被墙,抽空研究下setting.xml 配置
- Teigha 40010 保存设置Wipeout时的边界显示问题
- 利用qqbot记录QQ聊天信息
- Leetcode算法学习日志-447 Number of Boomerangs
- JS中通用的contains方法判断两个节点的关系
- kotlin的可变价值
- JS 数据类型转换
- 为什么使用mq?
- 在OpenCV环境下做导向滤波的代码
- 独热编码 OneHotEncoder()
- Java
- Mybaities 批量操作数据库报错,抛MySQLSyntaxErrorException异常
- 欢迎使用CSDN-markdown编辑器