whole_func_string: function findParents(el) {
    var endEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
    var haveEl = arguments[2];
    var haveEndEl = arguments[3];
  
    var retEls = [];
    if (haveEl) {
      retEls.push(el);
    }
    while (el && el.parentNode !== endEl) {
      el = el.parentNode;
      el && retEls.push(el);
    }
    if (haveEndEl) {
      retEls.push(endEl);
    }
    return retEls;
  }
func_code_string: function findParents(el) {
    var endEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
    var haveEl = arguments[2];
    var haveEndEl = arguments[3];
  
    var retEls = [];
    if (haveEl) {
      retEls.push(el);
    }
    while (el && el.parentNode !== endEl) {
      el = el.parentNode;
      el && retEls.push(el);
    }
    if (haveEndEl) {
      retEls.push(endEl);
    }
    return retEls;
  }
func_documentation_string: 查找元素的父节点们
  @param {HTMLElement} el 目标元素
  @param {HTMLElement} endEl 最大父容器（不指定则找到html）
  @param {Boolean} haveEl 包含当前元素
  @param {Boolean} haveEndEl 包含设定的最大父容器