Add tool to list DOM properties/methods
authorMihai Bazon <mihai.bazon@gmail.com>
Tue, 17 Mar 2015 09:46:04 +0000 (11:46 +0200)
committerMihai Bazon <mihai.bazon@gmail.com>
Tue, 17 Mar 2015 09:46:04 +0000 (11:46 +0200)
tools/props.html [new file with mode: 0644]

diff --git a/tools/props.html b/tools/props.html
new file mode 100644 (file)
index 0000000..23d1f7d
--- /dev/null
@@ -0,0 +1,53 @@
+<html>
+  <head>
+  </head>
+  <body>
+    <script>(function(){
+      var props = Object.create(null);
+
+      function addObject(obj) {
+        if (obj == null) return;
+        Object.getOwnPropertyNames(obj).forEach(add);
+        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]);
+      });
+
+      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"));
+
+      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");
+      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>