contain与compareDocumentPosition

时间:2023-03-09 04:17:48
contain与compareDocumentPosition

contain方法由IE创建,用于判断元素之间是否是父亲与后代的关系,例如:如果A元素包含B元素,则返回true,否则,返回false

eg:

<div id= "a">
      <div id= "b"></div>
</div>

var a= document.getElementById("a");
var b= document.getElementById("b");

console.log(a.contains(b)); //true

值得注意的是这个方法得到了大多数浏览器的支持,除了IE的死对头Firefox,这里我们介绍另一种函数compareDocumentPosition(),即对比文档元素之间的位置

a在b的前面   4

a在b的后面   2

a包含b         20

b包含a        10

a与b相同      0

(这些结论由本人亲测获得,与w3c教程上的返回值不完全相同)

compareDocumentPosition得到了所有浏览器的支持(IE9+)

由此得出兼容性方案

if(!!window.find){
  HTMLElement.prototype.contains = function(B){
    return this.compareDocumentPosition(B) - 19 > 0
  }
}