Node.comparedocumentposition(otherNode)

掩码Mask)在计算机学科及数字逻辑中指的是一串二进制数字,通过与目标数字的按位操作(如 &),达到屏蔽指定位而实现需求。


返回掩码:
  • DOCUMENT_POSITION_DISCONNECTED (1); // 000001
  • DOCUMENT_POSITION_PRECEDING (2); // 000010
  • DOCUMENT_POSITION_FOLLOWING (4); // 000100
  • DOCUMENT_POSITION_CONTAINS (8); // 001000
  • DOCUMENT_POSITION_CONTAINED_BY (16, 10 in hexadecimal); // 010000
  • DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC (32, 20 in hexadecimal). // 100000

// 返回值是 10,8 + 2
document.body.compareDocumentPosition(document.documentElement);

所以比较节点位置关系的时候需要使用 & :
if (document.body.compareDocumentPosition(document.documentElement) & Node.DOCUMENT_POSITION_CONTAINS) {}