1、如果使用 contains 函数的话还是很简单

function commonParentNode(oNode1, oNode2) {
  while(oNode1) {
    if(oNode1.contains(oNode2)) {
      return oNode1
    }
    oNode1 = oNode1.parentNode
  }
}

2、暴力解

function commonParentNode(oNode1, oNode2) {
  var nodeList1 = [], nodeList2 = []
  while (oNode1) {
    nodeList1.unshift(oNode1)
    oNode1 = oNode1.parentNode
  }
  while (oNode2) {
    nodeList2.unshift(oNode2)
    oNode2 = oNode2.parentNode
  }

  var cur = 0, commonNode = null
  while (cur < nodeList1.length && cur < nodeList2.length) {
    if (nodeList1[cur] === nodeList2[cur]) {
      commonNode = nodeList1[cur]
    }
    cur++
  }
  return commonNode
}