| <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> |