| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <html>  <head>  </head>  <body>    <script>(function(){      var props = {};      function addObject(obj) {        if (obj == null) return;        try {          Object.getOwnPropertyNames(obj).forEach(add);        } catch(ex) {}        if (obj.prototype) {          Object.getOwnPropertyNames(obj.prototype).forEach(add);        }        if (typeof obj == "function") {          try {            Object.getOwnPropertyNames(new obj).forEach(add);          } catch(ex) {}        }      }      function add(name) {        props[name] = true;      }      Object.getOwnPropertyNames(window).forEach(function(thing){        addObject(window[thing]);      });      try {        addObject(new Event("click"));        addObject(new Event("contextmenu"));        addObject(new Event("mouseup"));        addObject(new Event("mousedown"));        addObject(new Event("keydown"));        addObject(new Event("keypress"));        addObject(new Event("keyup"));      } catch(ex) {}      var ta = document.createElement("textarea");      ta.style.width = "100%";      ta.style.height = "20em";      ta.style.boxSizing = "border-box";      <!-- ta.value = Object.keys(props).sort(cmp).map(function(name){ -->      <!--   return JSON.stringify(name); -->      <!-- }).join(",\n"); -->      ta.value = JSON.stringify({        vars: [],        props: Object.keys(props).sort(cmp)      }, null, 2);      document.body.appendChild(ta);      function cmp(a, b) {        a = a.toLowerCase();        b = b.toLowerCase();        return a < b ? -1 : a > b ? 1 : 0;      }    })();</script>  </body></html>
 |