JSFiddle - React, Tailwind, and code Playground

by tdecs

JavaScript

var Utils = {
  contains: function (el1, el2) {
    var result;

      // el1 es window
      if (el1 === window) {
        // el2 puede ser window o un elemento del dom
        if (el2 && (el2 === window || el2.nodeType)) {
          // el1 es window y el2 window o elemento de dom
          // como window no tiene el metodo contain, devolvemos siempre true
          // (porque contiene todos los elementos de dom)
          result = true;

        // el2 no es window ni elemento de dom, devolvemos false
        } else {
          result = false;
        }
      // el1 es un elemento de dom
      } else if (el1 && el1.nodeType) {
        result = el1.contains(el2);

      // el1 es otra cosa, devolvemos false
      } else {
        result = false;
      }

      return result;
  }
};

Utils.contains(window, null); // false
Utils.contains({}, {}); // false
Utils.contains([]+[], {}+{}); // false
Utils.contains(window, 0|0); // false