457 lines
13 KiB
HTML
457 lines
13 KiB
HTML
|
<!doctype html>
|
||
|
<html>
|
||
|
<body>
|
||
|
<script>
|
||
|
!function(G) {
|
||
|
var domprops = [];
|
||
|
var objs = [ G ];
|
||
|
var tagNames = [
|
||
|
"a",
|
||
|
"abbr",
|
||
|
"acronym",
|
||
|
"address",
|
||
|
"applet",
|
||
|
"area",
|
||
|
"article",
|
||
|
"aside",
|
||
|
"audio",
|
||
|
"b",
|
||
|
"base",
|
||
|
"basefont",
|
||
|
"bdi",
|
||
|
"bdo",
|
||
|
"bgsound",
|
||
|
"big",
|
||
|
"blink",
|
||
|
"blockquote",
|
||
|
"body",
|
||
|
"br",
|
||
|
"button",
|
||
|
"canvas",
|
||
|
"caption",
|
||
|
"center",
|
||
|
"checked",
|
||
|
"cite",
|
||
|
"code",
|
||
|
"col",
|
||
|
"colgroup",
|
||
|
"command",
|
||
|
"comment",
|
||
|
"compact",
|
||
|
"content",
|
||
|
"data",
|
||
|
"datalist",
|
||
|
"dd",
|
||
|
"declare",
|
||
|
"defer",
|
||
|
"del",
|
||
|
"details",
|
||
|
"dfn",
|
||
|
"dialog",
|
||
|
"dir",
|
||
|
"disabled",
|
||
|
"div",
|
||
|
"dl",
|
||
|
"dt",
|
||
|
"element",
|
||
|
"em",
|
||
|
"embed",
|
||
|
"fieldset",
|
||
|
"figcaption",
|
||
|
"figure",
|
||
|
"font",
|
||
|
"footer",
|
||
|
"form",
|
||
|
"frame",
|
||
|
"frameset",
|
||
|
"h1",
|
||
|
"h2",
|
||
|
"h3",
|
||
|
"h4",
|
||
|
"h5",
|
||
|
"h6",
|
||
|
"head",
|
||
|
"header",
|
||
|
"hgroup",
|
||
|
"hr",
|
||
|
"html",
|
||
|
"i",
|
||
|
"iframe",
|
||
|
"image",
|
||
|
"img",
|
||
|
"input",
|
||
|
"ins",
|
||
|
"isindex",
|
||
|
"ismap",
|
||
|
"kbd",
|
||
|
"keygen",
|
||
|
"label",
|
||
|
"legend",
|
||
|
"li",
|
||
|
"link",
|
||
|
"listing",
|
||
|
"main",
|
||
|
"map",
|
||
|
"mark",
|
||
|
"marquee",
|
||
|
"math",
|
||
|
"menu",
|
||
|
"menuitem",
|
||
|
"meta",
|
||
|
"meter",
|
||
|
"multicol",
|
||
|
"multiple",
|
||
|
"nav",
|
||
|
"nextid",
|
||
|
"nobr",
|
||
|
"noembed",
|
||
|
"noframes",
|
||
|
"nohref",
|
||
|
"noresize",
|
||
|
"noscript",
|
||
|
"noshade",
|
||
|
"nowrap",
|
||
|
"object",
|
||
|
"ol",
|
||
|
"optgroup",
|
||
|
"option",
|
||
|
"output",
|
||
|
"p",
|
||
|
"param",
|
||
|
"picture",
|
||
|
"plaintext",
|
||
|
"pre",
|
||
|
"progress",
|
||
|
"q",
|
||
|
"rb",
|
||
|
"readonly",
|
||
|
"rp",
|
||
|
"rt",
|
||
|
"rtc",
|
||
|
"ruby",
|
||
|
"s",
|
||
|
"samp",
|
||
|
"script",
|
||
|
"section",
|
||
|
"select",
|
||
|
"selected",
|
||
|
"shadow",
|
||
|
"slot",
|
||
|
"small",
|
||
|
"source",
|
||
|
"spacer",
|
||
|
"span",
|
||
|
"strike",
|
||
|
"strong",
|
||
|
"style",
|
||
|
"sub",
|
||
|
"summary",
|
||
|
"sup",
|
||
|
"svg",
|
||
|
"table",
|
||
|
"tbody",
|
||
|
"td",
|
||
|
"template",
|
||
|
"textarea",
|
||
|
"tfoot",
|
||
|
"th",
|
||
|
"thead",
|
||
|
"time",
|
||
|
"title",
|
||
|
"tr",
|
||
|
"track",
|
||
|
"tt",
|
||
|
"u",
|
||
|
"ul",
|
||
|
"var",
|
||
|
"video",
|
||
|
"wbr",
|
||
|
"xmp",
|
||
|
"XXX",
|
||
|
];
|
||
|
for (var n = 0; n < tagNames.length; n++) {
|
||
|
add(document.createElement(tagNames[n]));
|
||
|
}
|
||
|
var nsNames = {
|
||
|
"http://www.w3.org/1998/Math/MathML": [
|
||
|
"annotation",
|
||
|
"annotation-xml",
|
||
|
"maction",
|
||
|
"maligngroup",
|
||
|
"malignmark",
|
||
|
"math",
|
||
|
"menclose",
|
||
|
"merror",
|
||
|
"mfenced",
|
||
|
"mfrac",
|
||
|
"mglyph",
|
||
|
"mi",
|
||
|
"mlabeledtr",
|
||
|
"mlongdiv",
|
||
|
"mmultiscripts",
|
||
|
"mn",
|
||
|
"mo",
|
||
|
"mover",
|
||
|
"mpadded",
|
||
|
"mphantom",
|
||
|
"mprescripts",
|
||
|
"mroot",
|
||
|
"mrow",
|
||
|
"ms",
|
||
|
"mscarries",
|
||
|
"mscarry",
|
||
|
"msgroup",
|
||
|
"msline",
|
||
|
"mspace",
|
||
|
"msqrt",
|
||
|
"msrow",
|
||
|
"mstack",
|
||
|
"mstyle",
|
||
|
"msub",
|
||
|
"msubsup",
|
||
|
"msup",
|
||
|
"mtable",
|
||
|
"mtd",
|
||
|
"mtext",
|
||
|
"mtr",
|
||
|
"munder",
|
||
|
"munderover",
|
||
|
"none",
|
||
|
"semantics",
|
||
|
],
|
||
|
"http://www.w3.org/2000/svg": [
|
||
|
"a",
|
||
|
"altGlyph",
|
||
|
"altGlyphDef",
|
||
|
"altGlyphItem",
|
||
|
"animate",
|
||
|
"animateColor",
|
||
|
"animateMotion",
|
||
|
"animateTransform",
|
||
|
"circle",
|
||
|
"clipPath",
|
||
|
"color-profile",
|
||
|
"cursor",
|
||
|
"defs",
|
||
|
"desc",
|
||
|
"discard",
|
||
|
"ellipse",
|
||
|
"feBlend",
|
||
|
"feColorMatrix",
|
||
|
"feComponentTransfer",
|
||
|
"feComposite",
|
||
|
"feConvolveMatrix",
|
||
|
"feDiffuseLighting",
|
||
|
"feDisplacementMap",
|
||
|
"feDistantLight",
|
||
|
"feDropShadow",
|
||
|
"feFlood",
|
||
|
"feFuncA",
|
||
|
"feFuncB",
|
||
|
"feFuncG",
|
||
|
"feFuncR",
|
||
|
"feGaussianBlur",
|
||
|
"feImage",
|
||
|
"feMerge",
|
||
|
"feMergeNode",
|
||
|
"feMorphology",
|
||
|
"feOffset",
|
||
|
"fePointLight",
|
||
|
"feSpecularLighting",
|
||
|
"feSpotLight",
|
||
|
"feTile",
|
||
|
"feTurbulence",
|
||
|
"filter",
|
||
|
"font",
|
||
|
"font-face",
|
||
|
"font-face-format",
|
||
|
"font-face-name",
|
||
|
"font-face-src",
|
||
|
"font-face-uri",
|
||
|
"foreignObject",
|
||
|
"g",
|
||
|
"glyph",
|
||
|
"glyphRef",
|
||
|
"hatch",
|
||
|
"hatchpath",
|
||
|
"hkern",
|
||
|
"image",
|
||
|
"line",
|
||
|
"linearGradient",
|
||
|
"marker",
|
||
|
"mask",
|
||
|
"mesh",
|
||
|
"meshgradient",
|
||
|
"meshpatch",
|
||
|
"meshrow",
|
||
|
"metadata",
|
||
|
"missing-glyph",
|
||
|
"mpath",
|
||
|
"path",
|
||
|
"pattern",
|
||
|
"polygon",
|
||
|
"polyline",
|
||
|
"radialGradient",
|
||
|
"rect",
|
||
|
"script",
|
||
|
"set",
|
||
|
"solidcolor",
|
||
|
"stop",
|
||
|
"style",
|
||
|
"svg",
|
||
|
"switch",
|
||
|
"symbol",
|
||
|
"text",
|
||
|
"textPath",
|
||
|
"title",
|
||
|
"tref",
|
||
|
"tspan",
|
||
|
"unknown",
|
||
|
"use",
|
||
|
"view",
|
||
|
"vkern",
|
||
|
],
|
||
|
};
|
||
|
if (document.createElementNS) for (var ns in nsNames) {
|
||
|
for (var n = 0; n < nsNames[ns].length; n++) {
|
||
|
add(document.createElementNS(ns, nsNames[ns][n]));
|
||
|
}
|
||
|
}
|
||
|
var skips = [
|
||
|
G.alert,
|
||
|
G.back,
|
||
|
G.blur,
|
||
|
G.captureEvents,
|
||
|
G.clearImmediate,
|
||
|
G.clearInterval,
|
||
|
G.clearTimeout,
|
||
|
G.close,
|
||
|
G.confirm,
|
||
|
G.console,
|
||
|
G.dump,
|
||
|
G.fetch,
|
||
|
G.find,
|
||
|
G.focus,
|
||
|
G.forward,
|
||
|
G.getAttention,
|
||
|
G.history,
|
||
|
G.home,
|
||
|
G.location,
|
||
|
G.moveBy,
|
||
|
G.moveTo,
|
||
|
G.navigator,
|
||
|
G.open,
|
||
|
G.openDialog,
|
||
|
G.print,
|
||
|
G.process,
|
||
|
G.prompt,
|
||
|
G.resizeBy,
|
||
|
G.resizeTo,
|
||
|
G.setImmediate,
|
||
|
G.setInterval,
|
||
|
G.setTimeout,
|
||
|
G.showModalDialog,
|
||
|
G.sizeToContent,
|
||
|
G.stop,
|
||
|
];
|
||
|
var types = [];
|
||
|
var interfaces = [
|
||
|
"beforeunloadevent",
|
||
|
"compositionevent",
|
||
|
"customevent",
|
||
|
"devicemotionevent",
|
||
|
"deviceorientationevent",
|
||
|
"dragevent",
|
||
|
"event",
|
||
|
"events",
|
||
|
"focusevent",
|
||
|
"hashchangeevent",
|
||
|
"htmlevents",
|
||
|
"keyboardevent",
|
||
|
"messageevent",
|
||
|
"mouseevent",
|
||
|
"mouseevents",
|
||
|
"storageevent",
|
||
|
"svgevents",
|
||
|
"textevent",
|
||
|
"touchevent",
|
||
|
"uievent",
|
||
|
"uievents",
|
||
|
];
|
||
|
var i = 0, full = false;
|
||
|
var addEvent = document.createEvent ? function(type) {
|
||
|
if (~indexOf(types, type)) return;
|
||
|
types.push(type);
|
||
|
for (var j = 0; j < interfaces.length; j++) try {
|
||
|
var event = document.createEvent(interfaces[j]);
|
||
|
event.initEvent(type, true, true);
|
||
|
add(event);
|
||
|
} catch (e) {}
|
||
|
} : function() {};
|
||
|
var scanProperties = Object.getOwnPropertyNames ? function(o, fn) {
|
||
|
var names = Object.getOwnPropertyNames(o);
|
||
|
names.forEach(fn);
|
||
|
for (var k in o) if (!~indexOf(names, k)) fn(k);
|
||
|
} : function(o, fn) {
|
||
|
for (var k in o) fn(k);
|
||
|
};
|
||
|
setTimeout(function next() {
|
||
|
for (var j = 10; --j >= 0 && i < objs.length; i++) {
|
||
|
var o = objs[i];
|
||
|
var skip = ~indexOf(skips, o);
|
||
|
try {
|
||
|
scanProperties(o, function(k) {
|
||
|
if (!~indexOf(domprops, k)) domprops.push(k);
|
||
|
if (/^on/.test(k)) addEvent(k.slice(2));
|
||
|
if (!full) try {
|
||
|
add(o[k]);
|
||
|
} catch (e) {}
|
||
|
});
|
||
|
} catch (e) {}
|
||
|
if (skip || full) continue;
|
||
|
try {
|
||
|
add(o.__proto__);
|
||
|
} catch (e) {}
|
||
|
try {
|
||
|
add(o.prototype);
|
||
|
} catch (e) {}
|
||
|
try {
|
||
|
add(new o());
|
||
|
} catch (e) {}
|
||
|
try {
|
||
|
add(o());
|
||
|
} catch (e) {}
|
||
|
}
|
||
|
if (!full && objs.length > 20000) {
|
||
|
alert(objs.length);
|
||
|
full = true;
|
||
|
}
|
||
|
if (i < objs.length) {
|
||
|
setTimeout(next, 0);
|
||
|
} else {
|
||
|
document.write('<pre>[\n "' + domprops.sort().join('",\n "').replace(/&/g, "&").replace(/</g, "<") + '"\n]</pre>');
|
||
|
}
|
||
|
}, 0);
|
||
|
|
||
|
function add(o) {
|
||
|
if (o) switch (typeof o) {
|
||
|
case "function":
|
||
|
case "object":
|
||
|
if (!~indexOf(objs, o)) objs.push(o);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function indexOf(list, value) {
|
||
|
var j = list.length;
|
||
|
while (--j >= 0) {
|
||
|
if (list[j] === value) break;
|
||
|
}
|
||
|
return j;
|
||
|
}
|
||
|
}(function() {
|
||
|
return this;
|
||
|
}());
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|