domprops.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. <!doctype html>
  2. <html>
  3. <body>
  4. <script>
  5. !function(G) {
  6. var domprops = [];
  7. var objs = [ G ];
  8. var tagNames = [
  9. "a",
  10. "abbr",
  11. "acronym",
  12. "address",
  13. "applet",
  14. "area",
  15. "article",
  16. "aside",
  17. "audio",
  18. "b",
  19. "base",
  20. "basefont",
  21. "bdi",
  22. "bdo",
  23. "bgsound",
  24. "big",
  25. "blink",
  26. "blockquote",
  27. "body",
  28. "br",
  29. "button",
  30. "canvas",
  31. "caption",
  32. "center",
  33. "checked",
  34. "cite",
  35. "code",
  36. "col",
  37. "colgroup",
  38. "command",
  39. "comment",
  40. "compact",
  41. "content",
  42. "data",
  43. "datalist",
  44. "dd",
  45. "declare",
  46. "defer",
  47. "del",
  48. "details",
  49. "dfn",
  50. "dialog",
  51. "dir",
  52. "disabled",
  53. "div",
  54. "dl",
  55. "dt",
  56. "element",
  57. "em",
  58. "embed",
  59. "fieldset",
  60. "figcaption",
  61. "figure",
  62. "font",
  63. "footer",
  64. "form",
  65. "frame",
  66. "frameset",
  67. "h1",
  68. "h2",
  69. "h3",
  70. "h4",
  71. "h5",
  72. "h6",
  73. "head",
  74. "header",
  75. "hgroup",
  76. "hr",
  77. "html",
  78. "i",
  79. "iframe",
  80. "image",
  81. "img",
  82. "input",
  83. "ins",
  84. "isindex",
  85. "ismap",
  86. "kbd",
  87. "keygen",
  88. "label",
  89. "legend",
  90. "li",
  91. "link",
  92. "listing",
  93. "main",
  94. "map",
  95. "mark",
  96. "marquee",
  97. "math",
  98. "menu",
  99. "menuitem",
  100. "meta",
  101. "meter",
  102. "multicol",
  103. "multiple",
  104. "nav",
  105. "nextid",
  106. "nobr",
  107. "noembed",
  108. "noframes",
  109. "nohref",
  110. "noresize",
  111. "noscript",
  112. "noshade",
  113. "nowrap",
  114. "object",
  115. "ol",
  116. "optgroup",
  117. "option",
  118. "output",
  119. "p",
  120. "param",
  121. "picture",
  122. "plaintext",
  123. "pre",
  124. "progress",
  125. "q",
  126. "rb",
  127. "readonly",
  128. "rp",
  129. "rt",
  130. "rtc",
  131. "ruby",
  132. "s",
  133. "samp",
  134. "script",
  135. "section",
  136. "select",
  137. "selected",
  138. "shadow",
  139. "slot",
  140. "small",
  141. "source",
  142. "spacer",
  143. "span",
  144. "strike",
  145. "strong",
  146. "style",
  147. "sub",
  148. "summary",
  149. "sup",
  150. "svg",
  151. "table",
  152. "tbody",
  153. "td",
  154. "template",
  155. "textarea",
  156. "tfoot",
  157. "th",
  158. "thead",
  159. "time",
  160. "title",
  161. "tr",
  162. "track",
  163. "tt",
  164. "u",
  165. "ul",
  166. "var",
  167. "video",
  168. "wbr",
  169. "xmp",
  170. "XXX",
  171. ];
  172. for (var n = 0; n < tagNames.length; n++) {
  173. add(document.createElement(tagNames[n]));
  174. }
  175. var nsNames = {
  176. "http://www.w3.org/1998/Math/MathML": [
  177. "annotation",
  178. "annotation-xml",
  179. "maction",
  180. "maligngroup",
  181. "malignmark",
  182. "math",
  183. "menclose",
  184. "merror",
  185. "mfenced",
  186. "mfrac",
  187. "mglyph",
  188. "mi",
  189. "mlabeledtr",
  190. "mlongdiv",
  191. "mmultiscripts",
  192. "mn",
  193. "mo",
  194. "mover",
  195. "mpadded",
  196. "mphantom",
  197. "mprescripts",
  198. "mroot",
  199. "mrow",
  200. "ms",
  201. "mscarries",
  202. "mscarry",
  203. "msgroup",
  204. "msline",
  205. "mspace",
  206. "msqrt",
  207. "msrow",
  208. "mstack",
  209. "mstyle",
  210. "msub",
  211. "msubsup",
  212. "msup",
  213. "mtable",
  214. "mtd",
  215. "mtext",
  216. "mtr",
  217. "munder",
  218. "munderover",
  219. "none",
  220. "semantics",
  221. ],
  222. "http://www.w3.org/2000/svg": [
  223. "a",
  224. "altGlyph",
  225. "altGlyphDef",
  226. "altGlyphItem",
  227. "animate",
  228. "animateColor",
  229. "animateMotion",
  230. "animateTransform",
  231. "circle",
  232. "clipPath",
  233. "color-profile",
  234. "cursor",
  235. "defs",
  236. "desc",
  237. "discard",
  238. "ellipse",
  239. "feBlend",
  240. "feColorMatrix",
  241. "feComponentTransfer",
  242. "feComposite",
  243. "feConvolveMatrix",
  244. "feDiffuseLighting",
  245. "feDisplacementMap",
  246. "feDistantLight",
  247. "feDropShadow",
  248. "feFlood",
  249. "feFuncA",
  250. "feFuncB",
  251. "feFuncG",
  252. "feFuncR",
  253. "feGaussianBlur",
  254. "feImage",
  255. "feMerge",
  256. "feMergeNode",
  257. "feMorphology",
  258. "feOffset",
  259. "fePointLight",
  260. "feSpecularLighting",
  261. "feSpotLight",
  262. "feTile",
  263. "feTurbulence",
  264. "filter",
  265. "font",
  266. "font-face",
  267. "font-face-format",
  268. "font-face-name",
  269. "font-face-src",
  270. "font-face-uri",
  271. "foreignObject",
  272. "g",
  273. "glyph",
  274. "glyphRef",
  275. "hatch",
  276. "hatchpath",
  277. "hkern",
  278. "image",
  279. "line",
  280. "linearGradient",
  281. "marker",
  282. "mask",
  283. "mesh",
  284. "meshgradient",
  285. "meshpatch",
  286. "meshrow",
  287. "metadata",
  288. "missing-glyph",
  289. "mpath",
  290. "path",
  291. "pattern",
  292. "polygon",
  293. "polyline",
  294. "radialGradient",
  295. "rect",
  296. "script",
  297. "set",
  298. "solidcolor",
  299. "stop",
  300. "style",
  301. "svg",
  302. "switch",
  303. "symbol",
  304. "text",
  305. "textPath",
  306. "title",
  307. "tref",
  308. "tspan",
  309. "unknown",
  310. "use",
  311. "view",
  312. "vkern",
  313. ],
  314. };
  315. if (document.createElementNS) for (var ns in nsNames) {
  316. for (var n = 0; n < nsNames[ns].length; n++) {
  317. add(document.createElementNS(ns, nsNames[ns][n]));
  318. }
  319. }
  320. var skips = [
  321. G.alert,
  322. G.back,
  323. G.blur,
  324. G.captureEvents,
  325. G.clearImmediate,
  326. G.clearInterval,
  327. G.clearTimeout,
  328. G.close,
  329. G.confirm,
  330. G.console,
  331. G.dump,
  332. G.fetch,
  333. G.find,
  334. G.focus,
  335. G.forward,
  336. G.getAttention,
  337. G.history,
  338. G.home,
  339. G.location,
  340. G.moveBy,
  341. G.moveTo,
  342. G.navigator,
  343. G.open,
  344. G.openDialog,
  345. G.print,
  346. G.process,
  347. G.prompt,
  348. G.resizeBy,
  349. G.resizeTo,
  350. G.setImmediate,
  351. G.setInterval,
  352. G.setTimeout,
  353. G.showModalDialog,
  354. G.sizeToContent,
  355. G.stop,
  356. ];
  357. var types = [];
  358. var interfaces = [
  359. "beforeunloadevent",
  360. "compositionevent",
  361. "customevent",
  362. "devicemotionevent",
  363. "deviceorientationevent",
  364. "dragevent",
  365. "event",
  366. "events",
  367. "focusevent",
  368. "hashchangeevent",
  369. "htmlevents",
  370. "keyboardevent",
  371. "messageevent",
  372. "mouseevent",
  373. "mouseevents",
  374. "storageevent",
  375. "svgevents",
  376. "textevent",
  377. "touchevent",
  378. "uievent",
  379. "uievents",
  380. ];
  381. var i = 0, full = false;
  382. var addEvent = document.createEvent ? function(type) {
  383. if (~indexOf(types, type)) return;
  384. types.push(type);
  385. for (var j = 0; j < interfaces.length; j++) try {
  386. var event = document.createEvent(interfaces[j]);
  387. event.initEvent(type, true, true);
  388. add(event);
  389. } catch (e) {}
  390. } : function() {};
  391. var scanProperties = Object.getOwnPropertyNames ? function(o, fn) {
  392. var names = Object.getOwnPropertyNames(o);
  393. names.forEach(fn);
  394. for (var k in o) if (!~indexOf(names, k)) fn(k);
  395. } : function(o, fn) {
  396. for (var k in o) fn(k);
  397. };
  398. setTimeout(function next() {
  399. for (var j = 10; --j >= 0 && i < objs.length; i++) {
  400. var o = objs[i];
  401. var skip = ~indexOf(skips, o);
  402. try {
  403. scanProperties(o, function(k) {
  404. if (!~indexOf(domprops, k)) domprops.push(k);
  405. if (/^on/.test(k)) addEvent(k.slice(2));
  406. if (!full) try {
  407. add(o[k]);
  408. } catch (e) {}
  409. });
  410. } catch (e) {}
  411. if (skip || full) continue;
  412. try {
  413. add(o.__proto__);
  414. } catch (e) {}
  415. try {
  416. add(o.prototype);
  417. } catch (e) {}
  418. try {
  419. add(new o());
  420. } catch (e) {}
  421. try {
  422. add(o());
  423. } catch (e) {}
  424. }
  425. if (!full && objs.length > 20000) {
  426. alert(objs.length);
  427. full = true;
  428. }
  429. if (i < objs.length) {
  430. setTimeout(next, 0);
  431. } else {
  432. document.write('<pre>[\n "' + domprops.sort().join('",\n "').replace(/&/g, "&amp;").replace(/</g, "&lt;") + '"\n]</pre>');
  433. }
  434. }, 0);
  435. function add(o) {
  436. if (o) switch (typeof o) {
  437. case "function":
  438. case "object":
  439. if (!~indexOf(objs, o)) objs.push(o);
  440. }
  441. }
  442. function indexOf(list, value) {
  443. var j = list.length;
  444. while (--j >= 0) {
  445. if (list[j] === value) break;
  446. }
  447. return j;
  448. }
  449. }(function() {
  450. return this;
  451. }());
  452. </script>
  453. </body>
  454. </html>