PageRenderTime 66ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/test-scripts/innerHTML/dom_versus_inner_html.html

https://bitbucket.org/scope/dragonfly-stp-1/
HTML | 1436 lines | 1319 code | 117 blank | 0 comment | 0 complexity | 0806df30bd61f76a72c6d5ee666c8234 MD5 | raw file
Possible License(s): Apache-2.0

Large files files are truncated, but you can click here to view the full file

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title> new document </title>
  5. <style>
  6. /* debugger style */
  7. .folder-key {
  8. border:none;
  9. margin:0;
  10. margin-right:7px;
  11. padding:0;
  12. font-size:10px;
  13. line-height:11px;
  14. height:11px;
  15. width:11px;
  16. background: transparent url('data:image/png;charset=utf-8;base64,R0lGODlhCwAhAKIAAAAAAP///8zMzGZmZv///wAAAAAAAAAAACH5BAEAAAQALAAAAAALACEAAAM9KLqs8RA6OOJ8VYqYnxtgWF1BF5Amam3R2rww066zVnts/Yngmc+kVpB2izEIyKRyyWw6n1BmaRqtWq/LBAA7') scroll no-repeat 0 0;
  17. cursor:pointer;
  18. }
  19. examine-objects,
  20. examine-objects item
  21. {
  22. display:block;
  23. }
  24. examine-objects
  25. {
  26. padding: 0 9px;
  27. }
  28. examine-objects examine-objects
  29. {
  30. padding: 0 0 0 16px;
  31. }
  32. examine-objects key
  33. {
  34. margin-right:7px;
  35. }
  36. examine-objects key.no-expander
  37. {
  38. margin-left: 18px;
  39. }
  40. .prototype-chain-object
  41. {
  42. background-color: #666;
  43. color: #fff;
  44. font-weight: bold;
  45. padding: 2px 16px;
  46. margin: 2px 0;
  47. }
  48. </style>
  49. <style>
  50. /* ecma object tree */
  51. examine-objects key {
  52. color: #111;
  53. }
  54. examine-objects .string {
  55. color:#742;
  56. }
  57. examine-objects .number, offsets value {
  58. color:#920;
  59. }
  60. examine-objects .undefined {
  61. color:#c00;
  62. font-style: italic;
  63. }
  64. examine-objects .null {
  65. color:#c00;
  66. font-style: italic;
  67. }
  68. examine-objects .boolean {
  69. color:#920;
  70. }
  71. examine-objects .object {
  72. color:#18a;
  73. }
  74. </style>
  75. <style>
  76. /* html 5 markup */
  77. /* debugger style */
  78. .examine-objects
  79. {
  80. padding: 0 9px;
  81. }
  82. .examine-objects .examine-objects
  83. {
  84. padding: 0 0 0 16px;
  85. }
  86. .key
  87. {
  88. margin-right:7px;
  89. }
  90. .key.no-expander
  91. {
  92. margin-left: 18px;
  93. }
  94. .prototype-chain-object
  95. {
  96. background-color: #666;
  97. color: #fff;
  98. font-weight: bold;
  99. padding: 2px 16px;
  100. margin: 2px 0;
  101. }
  102. /* ecma object tree */
  103. .key {
  104. color: #111;
  105. }
  106. .string {
  107. color:#742;
  108. }
  109. .number {
  110. color:#920;
  111. }
  112. .undefined {
  113. color:#c00;
  114. font-style: italic;
  115. }
  116. .null {
  117. color:#c00;
  118. font-style: italic;
  119. }
  120. .boolean {
  121. color:#920;
  122. }
  123. .object {
  124. color:#18a;
  125. }
  126. </style>
  127. <style>
  128. body
  129. {
  130. font-family: sans-serif;
  131. }
  132. </style>
  133. <script>
  134. // dom.js
  135. /**
  136. * @fileoverview
  137. * Helper function prototypes related to DOM objects and the DOM
  138. * <strong>fixme: Christian should document the template syntax</strong>
  139. *
  140. * TEMPLATE :: =
  141. * "[" [NODENAME | "null"]
  142. * {"," TEXT | "," TEMPLATE}
  143. * {"," KEY "," VALUE}
  144. * "]"
  145. *
  146. * where NODENAME, TEXT and KEY are DOM strings and VALUE can be everything except an array
  147. */
  148. Element.prototype.render = Document.prototype.render = function(args)
  149. {
  150. if (typeof args == 'string' && this.nodeType == 1)
  151. {
  152. this.insertAdjacentHTML('beforeend', args);
  153. return this.firstElementChild;
  154. }
  155. var
  156. doc = this.nodeType == 9 ? this : this.ownerDocument,
  157. i = 0,
  158. ele = this,
  159. first_arg = args[0],
  160. arg = null,
  161. node_string_properties = ['innerHTML'];
  162. if (args.length)
  163. {
  164. if (first_arg)
  165. {
  166. if (typeof first_arg == 'string')
  167. {
  168. ele = first_arg in CustomElements ? CustomElements[first_arg].create() : doc.createElement(first_arg);
  169. i++;
  170. }
  171. arg = args[i];
  172. while (true)
  173. {
  174. if (arg instanceof Array)
  175. {
  176. ele.render(arg);
  177. arg = args[++i];
  178. }
  179. else if (typeof arg == 'string' && ((args.length - i) % 2 || args[i + 1] instanceof Array))
  180. {
  181. ele.appendChild(doc.createTextNode(arg));
  182. arg = args[++i];
  183. }
  184. else
  185. {
  186. break;
  187. }
  188. }
  189. for ( ; args[i]; i += 2)
  190. {
  191. if (typeof args[i] != 'string')
  192. {
  193. throw "TemplateSyntaxError";
  194. }
  195. if (typeof args[i + 1] == 'string' && node_string_properties.indexOf(args[i]) == -1)
  196. {
  197. ele.setAttribute(args[i], args[i + 1]);
  198. }
  199. else
  200. {
  201. ele[args[i]] = args[i + 1];
  202. }
  203. }
  204. if (this.nodeType == 1 && (this != ele))
  205. {
  206. this.appendChild(ele);
  207. }
  208. return ele;
  209. }
  210. else
  211. {
  212. return this.appendChild(doc.createTextNode(args[1]));
  213. }
  214. }
  215. return null;
  216. };
  217. Element.prototype.renderInner = Document.prototype.renderInner = function callee(template)
  218. {
  219. var
  220. i = template[0] && template[0] instanceof Array ? 0 : 1,
  221. arg = template[i],
  222. tag_name = template[0],
  223. ret = "",
  224. content = [],
  225. attrs = i && ["<", tag_name, " "] || [];
  226. if (tag_name)
  227. {
  228. while (true)
  229. {
  230. if (arg instanceof Array)
  231. {
  232. content.push(callee.call(null, arg));
  233. arg = template[++i];
  234. }
  235. else if (typeof arg == 'string' && ((template.length - i) % 2 || template[i + 1] instanceof Array))
  236. {
  237. content.push(arg.replace(/&/g, "&amp;").replace(/</g, "&lt;"));
  238. arg = template[++i];
  239. }
  240. else
  241. {
  242. break;
  243. }
  244. }
  245. if (attrs.length)
  246. content.push("</", tag_name, ">");
  247. for ( ; template[i]; i += 2)
  248. {
  249. attrs.push(template[i], "=\u0022", template[i + 1].replace(/"/g, "&quot"), "\u0022", " ");
  250. }
  251. if (attrs.length)
  252. attrs.push(">");
  253. ret = attrs.join("") + content.join("");
  254. if (this && this.nodeType == 1)
  255. {
  256. window.__t_3 = Date.now();
  257. this.innerHTML += ret;
  258. }
  259. }
  260. return ret;
  261. };
  262. </script>
  263. <script>
  264. // namespaces
  265. window.cls || ( window.cls = {} );
  266. /**
  267. * @constructor
  268. * A simple class to create a namespace on the window object.
  269. * It has one methode to add new created objects to it.
  270. */
  271. window.cls.Namespace = function(namespace)
  272. {
  273. if( window[namespace] instanceof this.constructor )
  274. {
  275. return window[namespace];
  276. }
  277. this.init(namespace);
  278. }
  279. window.cls.Namespace.prototype = new function()
  280. {
  281. this.add = function(obj)
  282. {
  283. if( !(obj.id || obj.name) )
  284. {
  285. throw "to add an object to a namespace it must have either an id or a name";
  286. }
  287. return ( this[obj.id || obj.name] = obj );
  288. }
  289. this.init = function(namespace)
  290. {
  291. if( !( window[namespace] instanceof this.constructor ) )
  292. {
  293. window[namespace] = this;
  294. }
  295. }
  296. this.toString = function()
  297. {
  298. return "[object Namespace]";
  299. }
  300. }
  301. </script>
  302. <script>
  303. // actions
  304. /**
  305. * @constructor
  306. */
  307. var EventHandler = function(type, is_capturing, handler_key)
  308. {
  309. handler_key = handler_key ? handler_key : 'handler';
  310. if(!window.eventHandlers)
  311. {
  312. window.eventHandlers = {};
  313. }
  314. if(window.eventHandlers[type])
  315. {
  316. return;
  317. }
  318. window.eventHandlers[type] = {};
  319. var handler = function(event)
  320. {
  321. var ele = event.target, handler = null, container = null;
  322. if( ele.nodeType != 1 )
  323. {
  324. return;
  325. }
  326. if(event.which == 3)
  327. {
  328. // right click
  329. event.stopPropagation();
  330. event.preventDefault();
  331. return;
  332. }
  333. handler = ele.getAttribute(handler_key);
  334. while( !handler && ( ele = ele.parentElement ) )
  335. {
  336. handler = ele.getAttribute(handler_key);
  337. }
  338. if( handler && eventHandlers[type][handler] )
  339. {
  340. if( type == 'click' && /toolbar-buttons/i.test(ele.parentNode.nodeName) )
  341. {
  342. container =
  343. document.getElementById(ele.parentNode.parentNode.id.replace('toolbar', 'container'));
  344. }
  345. eventHandlers[type][handler](event, ele, container);
  346. }
  347. }
  348. this.post = function(handler, event)
  349. {
  350. if(eventHandlers[type][handler])
  351. {
  352. eventHandlers[type][handler](event);
  353. }
  354. }
  355. document.addEventListener(type, handler, is_capturing ? is_capturing : false);
  356. }
  357. new EventHandler('click');
  358. new EventHandler('dblclick', false, 'edit-handler');
  359. new EventHandler('change');
  360. new EventHandler('input');
  361. new EventHandler('keyup', true);
  362. new EventHandler('keydown', true);
  363. new EventHandler('keypress', true);
  364. new EventHandler('mousedown');
  365. new EventHandler('mouseover');
  366. new EventHandler('focus', true, 'focus-handler');
  367. new EventHandler('blur', true, 'blur-handler');
  368. </script>
  369. <script>
  370. // helpers
  371. var cls = window.cls || ( window.cls = {} );
  372. /**
  373. * @fileoverview
  374. * <strong>fixme: Deprecated. marked for removal</strong>
  375. */
  376. /**
  377. * @constructor
  378. * @deprecated
  379. * use EventHandler and BaseActions
  380. */
  381. window.cls.Helpers = function()
  382. {
  383. var self = this;
  384. var handleKeypress = function(event, id)
  385. {
  386. event.preventDefault();
  387. event.stopPropagation();
  388. var button = document.getElementById(id);
  389. if(button && !button.disabled)
  390. {
  391. button.click();
  392. }
  393. }
  394. // TODO this should be handled with the Keyhandler class
  395. var keypressListener = function(event)
  396. {
  397. if( event.which == 0 )
  398. {
  399. switch(event.keyCode)
  400. {
  401. case 119: // F8
  402. {
  403. event.preventDefault();
  404. handleKeypress(event, 'continue-run');
  405. break;
  406. }
  407. case 121: // F10
  408. {
  409. event.preventDefault();
  410. handleKeypress(event, 'continue-step-next-line');
  411. break;
  412. }
  413. case 122: // F11
  414. {
  415. event.preventDefault();
  416. if(event.shiftKey)
  417. {
  418. handleKeypress(event, 'continue-step-out-of-call');
  419. }
  420. else
  421. {
  422. handleKeypress(event, 'continue-step-into-call');
  423. }
  424. break;
  425. }
  426. }
  427. }
  428. }
  429. this.setSelected = function(event)
  430. {
  431. var ele=event.target;
  432. var parent = ele.parentNode;
  433. var siblings = parent.getElementsByTagName(ele.nodeName), sibling = null, i=0;
  434. for( ; sibling = siblings[i]; i++)
  435. {
  436. if( sibling.parentElement == parent )
  437. {
  438. if(sibling == ele)
  439. {
  440. sibling.addClass('selected');
  441. }
  442. else
  443. {
  444. sibling.removeClass('selected');
  445. }
  446. }
  447. }
  448. }
  449. this.shortenURI = function(uri)
  450. {
  451. var ret_uri = uri;
  452. var title = '';
  453. var max_length = 40;
  454. if( ret_uri && ret_uri.length > max_length )
  455. {
  456. title = uri;
  457. ret_uri = uri.split('?')[0];
  458. if( ret_uri.length > max_length )
  459. {
  460. var temp = /\/([^/]+)$/.exec(ret_uri);
  461. if( temp )
  462. {
  463. ret_uri = temp[1];
  464. }
  465. }
  466. }
  467. return {uri: ret_uri, title: title};
  468. }
  469. this.resolveURLS = function(top_url, url)
  470. {
  471. return (
  472. /^.{4,5}:\/\//.test(url) && url
  473. || /^\//.test(url) && /^.{4,5}:\/\/[^/]*/.exec(top_url)[0] + url
  474. || top_url.replace(/\?.*$/, '').replace(/#.*$/, '').replace(/\/[^/]*$/, "/") + url );
  475. }
  476. this.escapeTextHtml = (function()
  477. {
  478. var re_amp = /&/g, re_lt = /</g;
  479. return function(str)
  480. {
  481. return str.replace(re_amp, "&amp;").replace(re_lt, "&lt;");
  482. }
  483. })();
  484. this.escapeAttributeHtml = (function()
  485. {
  486. var re_amp = /&/g, re_lt = /</g, re_quot = /"/g;
  487. return function(str)
  488. {
  489. return str.replace(re_amp, "&amp;").replace(re_lt, "&lt;").replace(re_quot, "&quot;");
  490. }
  491. })();
  492. this.setCookie = function(key, value, time)
  493. {
  494. document.cookie = (
  495. key + "=" + encodeURIComponent(value) +
  496. "; expires=" +
  497. ( new Date( new Date().getTime() + ( time || 360*24*60*60*1000 ) ) ).toGMTString() +
  498. "; path=/");
  499. }
  500. this.getCookie = function(key)
  501. {
  502. var value = new RegExp(key + "=([^;]*)").exec(document.cookie);
  503. return value && decodeURIComponent(value[1]);
  504. }
  505. // mouseover handler in the breadcrumb
  506. this.breadcrumbSpotlight = function(event)
  507. {
  508. var obj_id = parseInt(event.target.getAttribute('obj-id'));
  509. if(obj_id && /^breadcrumb$/i.test(event.target.parentNode.nodeName))
  510. {
  511. hostspotlighter.soft_spotlight(obj_id);
  512. }
  513. }
  514. // mouseover handler in the breadcrumb
  515. this.breadcrumbClearSpotlight = function(event)
  516. {
  517. var obj_id = event.target.getAttribute('obj-id');
  518. if( obj_id )
  519. {
  520. //hostspotlighter.clearSpotlight();
  521. }
  522. }
  523. this.service_dashed_name = function(name)
  524. {
  525. for ( var cur = '', i = 0, ret = ''; cur = name[i]; i++)
  526. {
  527. ret += /[A-Z]/.test(cur) && ( i ? '-' : '' ) + cur.toLowerCase() || cur;
  528. }
  529. return ret;
  530. }
  531. this.service_class_name = window.app.helpers.dash_to_class_name;
  532. document.addEventListener('keypress', keypressListener, true);
  533. }
  534. </script>
  535. <script>
  536. // inspection
  537. window.cls || (window.cls = {});
  538. cls.EcmascriptDebugger || (cls.EcmascriptDebugger = {});
  539. cls.EcmascriptDebugger["6.0"] || (cls.EcmascriptDebugger["6.0"] = {});
  540. /**
  541. * @constructor
  542. */
  543. /*
  544. status: OK
  545. payload:
  546. objectChainList:
  547. objectChain:
  548. objectList:
  549. object:
  550. value:
  551. objectID: 2
  552. isCallable: 0
  553. type: "object"
  554. prototypeID: 3
  555. className: "HTMLDocument"
  556. propertyList:
  557. property:
  558. name: "URL"
  559. type: "string"
  560. value: "opera:debug"
  561. property:
  562. name: "activeElement"
  563. type: "object"
  564. value:
  565. objectValue:
  566. objectID: 22
  567. isCallable: 0
  568. type: "object"
  569. prototypeID: 37
  570. className: "HTMLButtonElement"
  571. */
  572. cls.EcmascriptDebugger["6.0"].InspectionBaseData = function()
  573. {
  574. /* interface */
  575. // expand and collapse.
  576. this.setObject = function(rt_id, obj_id, virtualProperties){};
  577. this.getSelectedObject = function(){};
  578. this.getData = function(rt_id, obj_id, depth, org_args){};
  579. this.prettyPrint = function(data, target_depth, use_filter, filter_type){};
  580. this.clearData = function(rt_id, obj_id, depth, key){};
  581. /* private */
  582. this.parseXML = function(status, message, rt_id, obj_id, org_args){};
  583. this.getObject = function(obj_id, depth, key){};
  584. this.getCountVirtualProperties = function(index){};
  585. this.__getData = function(index, target_depth){};
  586. /* constants */
  587. const
  588. OBJECT_CHAIN_LIST = 0,
  589. // sub message ObjectList
  590. OBJECT_LIST = 0,
  591. // sub message ObjectInfo
  592. VALUE = 0,
  593. PROPERTY_LIST = 1,
  594. // sub message ObjectValue
  595. OBJECT_ID = 0,
  596. IS_CALLABLE = 1,
  597. TYPE = 2,
  598. PROTOTYPE_ID = 3,
  599. CLASS_NAME = 4,
  600. FUNCTION_NAME = 5;
  601. // sub message Property
  602. NAME = 0,
  603. PROPERTY_TYPE = 1,
  604. PROPERTY_VALUE = 2,
  605. OBJECT_VALUE = 3,
  606. // added fields
  607. PROPERTY_ITEM = 4,
  608. MAX_VALUE_LENGTH = 30;
  609. //this._obj_map = {};
  610. //this._queried_map = {};
  611. /*
  612. object:
  613. value:
  614. objectID: 2
  615. isCallable: 0
  616. type: "object"
  617. prototypeID: 3
  618. className: "HTMLDocument"
  619. propertyList:
  620. property:
  621. name: "URL"
  622. type: "string"
  623. value: "opera:debug"
  624. property:
  625. name: "activeElement"
  626. type: "object"
  627. value:
  628. objectValue:
  629. objectID: 22
  630. isCallable: 0
  631. type: "object"
  632. prototypeID: 37
  633. className: "HTMLButtonElement"
  634. */
  635. this.setObject = function(rt_id, obj_id, virtual_props, identifier, _class)
  636. {
  637. this._obj_map =
  638. {
  639. 0:
  640. [
  641. [
  642. [obj_id],
  643. [
  644. [
  645. identifier || '',
  646. 'object',
  647. ,
  648. [obj_id, , , , _class || '']
  649. ]
  650. ]
  651. ]
  652. ]
  653. };
  654. this._queried_map = {};
  655. this._expand_tree = {};
  656. this._rt_id = rt_id;
  657. this._obj_id = obj_id;
  658. // TODO sync format
  659. this._virtual_props = virtual_props;
  660. }
  661. this.get_object =
  662. this.getSelectedObject = function()
  663. {
  664. return this._obj_id && {rt_id: this._rt_id, obj_id: this._obj_id} || null;
  665. }
  666. this._id_counter = 0;
  667. this._get_id = function()
  668. {
  669. this._id_counter++;
  670. return "inspection-id-" + this._id_counter.toString();
  671. }
  672. this._init = function(id, views)
  673. {
  674. this.id = id || this._get_id();
  675. this._views = views || [];
  676. if (!window.inspections)
  677. {
  678. new cls.Namespace("inspections");
  679. }
  680. window.inspections.add(this);
  681. }
  682. this._update_views = function()
  683. {
  684. for (var view_id = '', i = 0; view_id = this._views[i]; i++)
  685. {
  686. if (window.views[view_id])
  687. {
  688. window.views[view_id].update();
  689. }
  690. }
  691. }
  692. this.collapse = this.clear = function(){};
  693. this.expand =
  694. this.inspect =
  695. this.get_data = function(cb, path)
  696. {
  697. if (path === undefined)
  698. {
  699. path = [this._obj_id];
  700. }
  701. if (path)
  702. {
  703. var obj_id = path[path.length - 1];
  704. if (this._obj_map[obj_id])
  705. {
  706. cb();
  707. }
  708. else
  709. {
  710. var tag = window.tag_manager.set_callback(this, this._handle_examine_object, [path, cb]);
  711. window.services['ecmascript-debugger'].requestExamineObjects(tag, [this._rt_id, [obj_id], 1]);
  712. }
  713. }
  714. }
  715. this._handle_examine_object = function(status, message, path, cb)
  716. {
  717. var
  718. obj_id = 0,
  719. tree = this._expand_tree,
  720. proto_chain = null,
  721. property_list = null,
  722. i = 0,
  723. class_name = '',
  724. items = null,
  725. attributes = null,
  726. cursor = null,
  727. i = 0,
  728. re_d = /^\d+$/;
  729. if (status)
  730. opera.postError(ui_strings.S_DRAGONFLY_INFO_MESSAGE + ' failed to examine object');
  731. else
  732. {
  733. for ( ; path[i]; i++)
  734. {
  735. obj_id = path[i];
  736. // TODO
  737. //alert((path[i + 1] == obj_id) +' '+(i < (path.length - 1) && !tree[obj_id]))
  738. if (i < (path.length - 1) && !tree[obj_id])
  739. {
  740. throw 'not valid path in InspectionBaseData._handle_examine_object';
  741. }
  742. tree = tree[obj_id] || (tree[obj_id] = {});
  743. }
  744. proto_chain = message[OBJECT_CHAIN_LIST][0][OBJECT_LIST];
  745. for (i = 0; proto = proto_chain[i]; i++)
  746. {
  747. class_name = proto[VALUE][CLASS_NAME];
  748. property_list = proto[PROPERTY_LIST];
  749. if (property_list)
  750. {
  751. if (class_name == "Array" || /Collection/.test(class_name))
  752. {
  753. items = [];
  754. attributes = [];
  755. for (i = 0; cursor = property_list[i]; i++)
  756. {
  757. if (re_d.test(cursor[NAME]))
  758. {
  759. cursor[PROPERTY_ITEM] = parseInt(cursor[NAME]);
  760. items.push(cursor);
  761. }
  762. else
  763. attributes.push(cursor);
  764. }
  765. items.sort(this._sort_item);
  766. attributes.sort(this._sort_name);
  767. proto[PROPERTY_LIST] = items.concat(attributes);
  768. }
  769. else
  770. proto[PROPERTY_LIST].sort(this._sort_name);
  771. }
  772. if (i == 0 && obj_id == this._obj_id && this._virtual_props)
  773. proto[PROPERTY_LIST] = this._virtual_props.concat(proto[PROPERTY_LIST] || []);
  774. }
  775. this._obj_map[obj_id] = proto_chain;
  776. if (cb)
  777. {
  778. cb();
  779. }
  780. }
  781. }
  782. this._sort_name = function(a, b)
  783. {
  784. return a[NAME] < b[NAME] ? -1 : a[NAME] > b[NAME] ? 1 : 0;
  785. };
  786. this._sort_item = function(a, b)
  787. {
  788. return a[PROPERTY_ITEM] < b[PROPERTY_ITEM] ? -1 : a[PROPERTY_ITEM] > b[PROPERTY_ITEM] ? 1 : 0;
  789. };
  790. this.clear_data =
  791. this.clearData = function(path)
  792. {
  793. var i = 0, cur = '', tree = this._expand_tree, dead_ids = null, ids = null;
  794. if (path)
  795. {
  796. for (; cur = path[i]; i++)
  797. {
  798. if (i == path.length -1)
  799. {
  800. dead_ids = [cur].concat(this._get_all_ids(tree[cur]));
  801. tree[cur] = null;
  802. }
  803. else
  804. {
  805. tree = tree[cur];
  806. if (!tree)
  807. throw 'not valid path in InspectionBaseData.clearData';
  808. }
  809. }
  810. ids = this._get_all_ids(this._expand_tree);
  811. for (i = 0; cur = dead_ids[i]; i++)
  812. {
  813. if (ids.indexOf(cur) == -1)
  814. this._obj_map[cur] = this._queried_map[cur] = null;
  815. }
  816. }
  817. else
  818. {
  819. this._obj_map =
  820. this._queried_map =
  821. this._expand_tree =
  822. this._virtual_props = null;
  823. this._rt_id =
  824. this._obj_id = 0;
  825. }
  826. }
  827. this._get_all_ids = function get_all_ids(tree, ret)
  828. {
  829. ret || (ret = []);
  830. for (var id in tree)
  831. {
  832. if (tree[id])
  833. {
  834. ret.push(id);
  835. get_all_ids(tree[id], ret);
  836. }
  837. }
  838. return ret;
  839. }
  840. this.get_expand_tree = function()
  841. {
  842. return this._expand_tree;
  843. }
  844. this.get_data = function(obj_id)
  845. {
  846. return this._obj_map[obj_id];
  847. }
  848. };
  849. </script>
  850. <script>
  851. window.cls || (window.cls = {});
  852. cls.EcmascriptDebugger || (cls.EcmascriptDebugger = {});
  853. cls.EcmascriptDebugger["6.0"] || (cls.EcmascriptDebugger["6.0"] = {});
  854. /**
  855. * @constructor
  856. * @extends InspectionBaseData
  857. */
  858. cls.EcmascriptDebugger["6.0"].FixObjectInspectionData = function(rt_id, obj_id, identifier, _class)
  859. {
  860. this._init();
  861. this.setObject(rt_id, obj_id, null, identifier, _class)
  862. }
  863. </script>
  864. <script>
  865. // direct creation of innerHTML string
  866. (function()
  867. {
  868. const
  869. // sub message ObjectInfo
  870. VALUE = 0,
  871. PROPERTY_LIST = 1,
  872. // sub message ObjectValue
  873. OBJECT_ID = 0,
  874. CLASS_NAME = 4,
  875. // sub message Property
  876. NAME = 0,
  877. PROPERTY_TYPE = 1,
  878. PROPERTY_VALUE = 2,
  879. OBJECT_VALUE = 3,
  880. // added fields
  881. MAX_VALUE_LENGTH = 30;
  882. var _pretty_print_object = function(model, tree, obj_id, ret)
  883. {
  884. ret || (ret = []);
  885. var data = model.get_data(obj_id), obj = model.get_object();
  886. if (obj && data)
  887. {
  888. ret.push(
  889. "<examine-objects " +
  890. "rt-id='" + obj.rt_id + "' " +
  891. "data-id='" + model.id + "' " +
  892. "obj-id='" + obj.obj_id + "' " +
  893. ">"
  894. );
  895. for (var proto = null, i = 0; proto = data[i]; i++)
  896. {
  897. // skip the first object description
  898. if (i)
  899. ret.push("<div class='prototype-chain-object'>", proto[VALUE][CLASS_NAME], "</div>");
  900. _pretty_print_properties(model, tree, proto[PROPERTY_LIST] || [], ret);
  901. }
  902. ret.push("</examine-objects>");
  903. };
  904. return ret;
  905. };
  906. var _pretty_print_properties = function(model, tree, property_list, ret)
  907. {
  908. var value = '', type = '', short_val = '', obj_id = 0;
  909. for (var prop = null, i = 0; prop = property_list[i]; i++)
  910. {
  911. value = prop[PROPERTY_VALUE];
  912. switch (type = prop[PROPERTY_TYPE])
  913. {
  914. case "number":
  915. case "boolean":
  916. {
  917. ret.push(
  918. "<item>" +
  919. "<key class='no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</key>" +
  920. "<value class='" + type + "'>" + value + "</value>" +
  921. "</item>"
  922. );
  923. break;
  924. }
  925. case "string":
  926. {
  927. short_val = value.length > MAX_VALUE_LENGTH ?
  928. value.slice(0, MAX_VALUE_LENGTH) + '&#x2026;"' : '';
  929. value = helpers.escapeTextHtml(value).replace(/'/g, '&#39;');
  930. if (short_val)
  931. {
  932. ret.push(
  933. "<item>" +
  934. "<input type='button' handler='expand-value' class='folder-key'/>" +
  935. "<key>" + helpers.escapeTextHtml(prop[NAME]) + "</key>" +
  936. "<value class='" + type + "' data-value='" + value + "'>" +
  937. "\"" + helpers.escapeTextHtml(short_val) +
  938. "</value>" +
  939. "</item>"
  940. );
  941. }
  942. else
  943. {
  944. ret.push(
  945. "<item>" +
  946. "<key class='no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</key>" +
  947. "<value class='" + type + "'>\"" + value + "\"</value>" +
  948. "</item>"
  949. );
  950. }
  951. break;
  952. }
  953. case "null":
  954. case "undefined":
  955. {
  956. ret.push(
  957. "<item>" +
  958. "<key class='no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</key>" +
  959. "<value class='" + type + "'>" + type + "</value>" +
  960. "</item>"
  961. );
  962. break;
  963. }
  964. case "object":
  965. {
  966. obj_id = prop[OBJECT_VALUE][OBJECT_ID];
  967. ret.push(
  968. "<item obj-id='" + obj_id + "'>" +
  969. "<input " +
  970. "type='button' " +
  971. "handler='examine-object' " +
  972. "class='folder-key' "
  973. );
  974. if (obj_id in tree)
  975. ret.push("style='background-position: 0px -11px') ");
  976. ret.push(
  977. "/>" +
  978. "<key>" + helpers.escapeTextHtml(prop[NAME]) + "</key>" +
  979. "<value class='object'>" + prop[OBJECT_VALUE][CLASS_NAME] + "</value>"
  980. );
  981. if (obj_id in tree)
  982. _pretty_print_object(model, tree[obj_id], obj_id, ret);
  983. ret.push("</item>");
  984. break;
  985. }
  986. }
  987. }
  988. };
  989. this.inspected_js_object = function(model, show_root, path)
  990. {
  991. var tree = model.get_expand_tree();
  992. if (typeof show_root === 'boolean' && model.get_object())
  993. path = show_root ? null : [model.get_object().obj_id];
  994. for (var obj_id = 0, i = 0; path && path[i]; i++)
  995. {
  996. tree = tree[obj_id = path[i]];
  997. if (!tree)
  998. throw 'not valid path in templates.inspected_js_object';
  999. }
  1000. return _pretty_print_object(model, tree, obj_id).join('');
  1001. }
  1002. }).apply(window.templates || (window.templates = {}));
  1003. </script>
  1004. <script>
  1005. // template
  1006. (function()
  1007. {
  1008. const
  1009. // sub message ObjectInfo
  1010. VALUE = 0,
  1011. PROPERTY_LIST = 1,
  1012. // sub message ObjectValue
  1013. OBJECT_ID = 0,
  1014. CLASS_NAME = 4,
  1015. // sub message Property
  1016. NAME = 0,
  1017. PROPERTY_TYPE = 1,
  1018. PROPERTY_VALUE = 2,
  1019. OBJECT_VALUE = 3,
  1020. // added fields
  1021. MAX_VALUE_LENGTH = 30;
  1022. var _pretty_print_object = function(model, tree, obj_id)
  1023. {
  1024. var ret = [];
  1025. var obj = model.get_object();
  1026. var data = model.get_data(obj_id);
  1027. if (obj && data)
  1028. {
  1029. for (var proto = null, i = 0; proto = data[i]; i++)
  1030. {
  1031. // skip the first object description
  1032. if (i)
  1033. ret.push(['div', proto[VALUE][CLASS_NAME], 'class', 'prototype-chain-object']);
  1034. ret.push(_pretty_print_properties(model, tree, proto[PROPERTY_LIST] || []));
  1035. }
  1036. }
  1037. return (
  1038. ['examine-objects',
  1039. ret,
  1040. 'rt-id', obj.rt_id.toString(),
  1041. 'data-id', model.id,
  1042. 'obj-id', obj.obj_id.toString()
  1043. ]);
  1044. };
  1045. var _pretty_print_properties = function(model, tree, property_list)
  1046. {
  1047. var ret = [], value = '', type = '', short_val = '', obj_id = 0;
  1048. for (var prop = null, i = 0; prop = property_list[i]; i++)
  1049. {
  1050. value = prop[PROPERTY_VALUE];
  1051. switch (type = prop[PROPERTY_TYPE])
  1052. {
  1053. case "number":
  1054. case "boolean":
  1055. {
  1056. ret.push(
  1057. ['item',
  1058. ['key', helpers.escapeTextHtml(prop[NAME]), 'class', 'no-expander'],
  1059. ['value', value.toString(), 'class', type]
  1060. ]);
  1061. break;
  1062. }
  1063. case "string":
  1064. {
  1065. short_val = value.length > MAX_VALUE_LENGTH ?
  1066. value.slice(0, MAX_VALUE_LENGTH) + '&#x2026;"' : '';
  1067. value = helpers.escapeTextHtml(value).replace(/'/g, '&#39;');
  1068. if (short_val)
  1069. {
  1070. ret.push(
  1071. ['item',
  1072. ['input', 'type', 'button', 'handler', 'expand-value', 'class', 'folder-key'],
  1073. ['key', helpers.escapeTextHtml(prop[NAME])],
  1074. ['value', helpers.escapeTextHtml(short_val), 'class', type, 'data-value', value]
  1075. ]);
  1076. }
  1077. else
  1078. {
  1079. ret.push(
  1080. ['item',
  1081. ['key', helpers.escapeTextHtml(prop[NAME]), 'class', 'no-expander'],
  1082. ['value', value, 'class', type]
  1083. ]);
  1084. }
  1085. break;
  1086. }
  1087. case "null":
  1088. case "undefined":
  1089. {
  1090. ret.push(
  1091. ['item',
  1092. ['key', helpers.escapeTextHtml(prop[NAME]), 'class', 'no-expander'],
  1093. ['value', type, 'class', type]
  1094. ]);
  1095. break;
  1096. }
  1097. case "object":
  1098. {
  1099. obj_id = prop[OBJECT_VALUE][OBJECT_ID];
  1100. ret.push(
  1101. ['item',
  1102. ['input',
  1103. 'type', 'button',
  1104. 'handler', 'examine-object',
  1105. 'class', 'folder-key'
  1106. ].concat(obj_id in tree ? ['style', 'background-position: 0px -11px'] : []),
  1107. ['key', helpers.escapeTextHtml(prop[NAME])],
  1108. ['value', prop[OBJECT_VALUE][CLASS_NAME], 'class', 'object'],
  1109. obj_id in tree ? _pretty_print_object(model, tree[obj_id], obj_id) : [],
  1110. 'obj-id', obj_id.toString()
  1111. ]);
  1112. break;
  1113. }
  1114. }
  1115. }
  1116. return ret;
  1117. };
  1118. this.inspected_js_object_test = function(model, show_root, path)
  1119. {
  1120. var tree = model.get_expand_tree();
  1121. if (typeof show_root === 'boolean' && model.get_object())
  1122. path = show_root ? null : [model.get_object().obj_id];
  1123. for (var obj_id = 0, i = 0; path && path[i]; i++)
  1124. {
  1125. tree = tree[obj_id = path[i]];
  1126. if (!tree)
  1127. throw 'not valid path in InspectionBaseData.pretty_print';
  1128. }
  1129. return _pretty_print_object(model, tree, obj_id);
  1130. }
  1131. }).apply(window.templates || (window.templates = {}));
  1132. </script>
  1133. <script>
  1134. // creating valid HTML5 innerHTML string
  1135. (function()
  1136. {
  1137. const
  1138. // sub message ObjectInfo
  1139. VALUE = 0,
  1140. PROPERTY_LIST = 1,
  1141. // sub message ObjectValue
  1142. OBJECT_ID = 0,
  1143. CLASS_NAME = 4,
  1144. // sub message Property
  1145. NAME = 0,
  1146. PROPERTY_TYPE = 1,
  1147. PROPERTY_VALUE = 2,
  1148. OBJECT_VALUE = 3,
  1149. // added fields
  1150. MAX_VALUE_LENGTH = 30;
  1151. var _pretty_print_object = function(model, tree, obj_id, ret)
  1152. {
  1153. ret || (ret = []);
  1154. var data = model.get_data(obj_id), obj = model.get_object();
  1155. if (obj && data)
  1156. {
  1157. ret.push(
  1158. "<div class='examine-objects' " +
  1159. "data-rt-id='" + obj.rt_id + "' " +
  1160. "data-data-id='" + model.id + "' " +
  1161. "data-obj-id='" + obj.obj_id + "' " +
  1162. ">"
  1163. );
  1164. for (var proto = null, i = 0; proto = data[i]; i++)
  1165. {
  1166. // skip the first object description
  1167. if (i)
  1168. ret.push("<div class='prototype-chain-object'>", proto[VALUE][CLASS_NAME], "</div>");
  1169. _pretty_print_properties(model, tree, proto[PROPERTY_LIST] || [], ret);
  1170. }
  1171. ret.push("</div>");
  1172. };
  1173. return ret;
  1174. };
  1175. var _pretty_print_properties = function(model, tree, property_list, ret)
  1176. {
  1177. var value = '', type = '', short_val = '', obj_id = 0;
  1178. for (var prop = null, i = 0; prop = property_list[i]; i++)
  1179. {
  1180. value = prop[PROPERTY_VALUE];
  1181. switch (type = prop[PROPERTY_TYPE])
  1182. {
  1183. case "number":
  1184. case "boolean":
  1185. {
  1186. ret.push(
  1187. "<div class='item'>" +
  1188. "<span class='key no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</span>" +
  1189. "<span class='value " + type + "'>" + value + "</span>" +
  1190. "</div>"
  1191. );
  1192. break;
  1193. }
  1194. case "string":
  1195. {
  1196. short_val = value.length > MAX_VALUE_LENGTH ?
  1197. value.slice(0, MAX_VALUE_LENGTH) + '&#x2026;"' : '';
  1198. value = helpers.escapeTextHtml(value).replace(/'/g, '&#39;');
  1199. if (short_val)
  1200. {
  1201. ret.push(
  1202. "<div class='item'>" +
  1203. "<input type='button' data-handler='expand-value' class='folder-key'/>" +
  1204. "<span class='key'>" + helpers.escapeTextHtml(prop[NAME]) + "</span>" +
  1205. "<span class='value " + type + "' data-value='" + value + "'>" +
  1206. "\"" + helpers.escapeTextHtml(short_val) +
  1207. "</span>" +
  1208. "</div>"
  1209. );
  1210. }
  1211. else
  1212. {
  1213. ret.push(
  1214. "<div class='item'>" +
  1215. "<span class='key no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</span>" +
  1216. "<span class='value " + type + "'>\"" + value + "\"</span>" +
  1217. "</div>"
  1218. );
  1219. }
  1220. break;
  1221. }
  1222. case "null":
  1223. case "undefined":
  1224. {
  1225. ret.push(
  1226. "<div class='item'>" +
  1227. "<span class='key no-expander'>" + helpers.escapeTextHtml(prop[NAME]) + "</span>" +
  1228. "<span class='value " + type + "'>" + type + "</span>" +
  1229. "</div>"
  1230. );
  1231. break;
  1232. }
  1233. case "object":
  1234. {
  1235. obj_id = prop[OBJECT_VALUE][OBJECT_ID];
  1236. ret.push(
  1237. "<div class='item' data-obj-id='" + obj_id + "'>" +
  1238. "<input " +
  1239. "type='button' " +
  1240. "data-handler='examine-object' " +
  1241. "class='folder-key' "
  1242. );
  1243. if (obj_id in tree)
  1244. ret.push("style='background-position: 0px -11px') ");
  1245. ret.push(
  1246. "/>" +
  1247. "<span class='key'>" + helpers.escapeTextHtml(prop[NAME]) + "</span>" +
  1248. "<span class='value object'>" + prop[OBJECT_VALUE][CLASS_NAME] + "</span>"
  1249. );
  1250. if (obj_id in tree)
  1251. _pretty_print_object(model, tree[obj_id], obj_id, ret);
  1252. ret.push("</div>");
  1253. break;
  1254. }
  1255. }
  1256. }
  1257. };
  1258. this.inspected_js_object_3 = function(model, show_root, path)
  1259. {
  1260. var tree = model.get_expand_tree();
  1261. if (typeof show_root === 'boolean' && model.get_object())
  1262. path = show_root ? null : [model.get_object().obj_id];
  1263. for (var obj_id = 0, i = 0; path && path[i]; i++)
  1264. {
  1265. tree = tree[obj_id = path[i]];
  1266. if (!tree)
  1267. throw 'not valid path in templates.inspected_js_object';
  1268. }
  1269. return _pretty_print_object(model, tree, obj_id).join('');
  1270. }
  1271. }).apply(window.templates || (window.templates = {}));
  1272. </script>
  1273. <script>
  1274. //static data
  1275. var __obj_map = {"0":[[[1],[["Window","object",null,[1,null,null,null,""]]]]],"1":[[[1,1,"object",6,"Window"],[["Array","object",null,[34,1,"function",321,"Function","Array"]],["Attr","object",null,[134,1,"object",6,"Attr"]],["Audio","object",null,[106,1,"object",321,"Audio"]],["Boolean","object",null,[37,1,"function",321,"Function","Boolean"]],["ByteArray","object",null,[111,1,"object",321,"ByteArray"]],["CDATASection","object",null,[137,1,"object",6,"CDATASection"]],["CSSMediaRule","object",null,[156,1,"object",6,"CSSMediaRule"]],["CSSPrimitiveValue","object",null,[304,1,"object",321,"CSSPrimitiveValue"]],["CSSRule","object",null,[88,0,"object",6,"CSSRule"]],["CSSRuleList","object",null,[155,1,"object",6,"CSSRuleList"]],["CSSStyleDeclaration","object",null,[153,1,"object",6,"CSSStyleDeclaration"]],["CSSStyleSheet","object",null,[154,1,"object",6,"CSSStyleSheet"]],["CanvasGradient","object",null,[169,1,"object",6,"CanvasGradient"]],["CanvasPattern","object",null,[170,1,"object",6,"CanvasPattern"]],["CanvasRenderingContext2D","object",null,[167,1,"object",6,"CanvasRenderingContext2D"]],["CanvasRenderingContext2DGame","object",null,[168,1,"object",6,"CanvasRenderingContext2DGame"]],["ClientRect","object",null,[150,1,"object",6,"ClientRect"]],["ClientRectList","object",null,[151,1,"object",6,"ClientRectList"]],["Comment","object",null,[136,1,"object",6,"Comment"]],["ConnectionCallback","object",null,[116,1,"function",321,"Function","ConnectionCallback"]],["DOMError","object",null,[92,0,"object",6,"DOMError"]],["DOMException","object",null,[91,0,"object",6,"DOMException"]],["DOMImplementationLS","object",null,[96,0,"object",6,"DOMImplementationLS"]],["DOMParser","object",null,[94,1,"object",321,"DOMParser"]],["Database","object",null,[172,1,"object",6,"Database"]],["Date","object",null,[39,1,"function",321,"Function","Date"]],["Document","object",null,[132,1,"object",6,"Document"]],["DocumentFragment","object",null,[133,1,"object",6,"DocumentFragment"]],["DocumentType","object",null,[138,1,"object",6,"DocumentType"]],["Element","object",null,[131,1,"object",6,"Element"]],["Entity","object",null,[140,1,"object",6,"Entity"]],["EntityReference","object",null,[141,1,"object",6,"EntityReference"]],["Error","object",null,[42,1,"function",321,"Function","Error"]],["EvalError","object",null,[43,1,"function",321,"Function","EvalError"]],["Event","object",null,[119,1,"object",6,"Event"]],["Function","object",null,[33,1,"function",321,"Function","Function"]],["HTMLAnchorElement","object",null,[207,1,"object",321,"HTMLAnchorElement"]],["HTMLAppletElement","object",null,[211,1,"object",321,"HTMLAppletElement"]],["HTMLAreaElement","object",null,[214,1,"object",321,"HTMLAreaElement"]],["HTMLAudioElement","object",null,[225,1,"object",321,"HTMLAudioElement"]],["HTMLBRElement","object",null,[202,1,"object",321,"HTMLBRElement"]],["HTMLBaseElement","object",null,[182,1,"object",321,"HTMLBaseElement"]],["HTMLBaseFontElement","object",null,[203,1,"object",321,"HTMLBaseFontElement"]],["HTMLBodyElement","object",null,[117,1,"object",321,"HTMLBodyElement"]],["HTMLButtonElement","object",null,[118,1,"object",321,"HTMLButtonElement"]],["HTMLCanvasElement","object",null,[228,1,"object",321,"HTMLCanvasElement"]],["HTMLCollection","object",null,[146,1,"object",6,"HTMLCollection"]],["HTMLDListElement","object",null,[129,1,"object",321,"HTMLDListElement"]],["HTMLDataListElement","object",null,[194,1,"object",321,"HTMLDataListElement"]],["HTMLDirectoryElement","object",null,[197,1,"object",321,"HTMLDirectoryElement"]],["HTMLDivElement","object",null,[122,1,"object",321,"HTMLDivElement"]],["HTMLDocument","object",null,[148,1,"object",6,"HTMLDocument"]],["HTMLElement","object",null,[149,1,"object",6,"HTMLElement"]],["HTMLEmbedElement","object",null,[212,1,"object",321,"HTMLEmbedElement"]],["HTMLFieldSetElement","object",null,[191,1,"object",321,"HTMLFieldSetElement"]],["HTMLFontElement","object",null,[204,1,"object",321,"HTMLFontElement"]],["HTMLFormElement","object",null,[185,1,"object",321,"HTMLFormElement"]],["HTMLFrameElement","object",null,[222,1,"object",321,"HTMLFrameElement"]],["HTMLFrameSetElement","object",null,[221,1,"object",321,"HTMLFrameSetElement"]],["HTMLHRElement","object",null,[205,1,"object",321,"HTMLHRElement"]],["HTMLHeadElement","object",null,[126,1,"object",321,"HTMLHeadElement"]],["HTMLHeadingElement","object",null,[128,1,"object",321,"HTMLHeadingElement"]],["HTMLHtmlElement","object",null,[112,1,"object",321,"HTMLHtmlElement"]],["HTMLIFrameElement","object",null,[223,1,"object",321,"HTMLIFrameElement"]],["HTMLImageElement","object",null,[208,1,"object",321,"HTMLImageElement"]],["HTMLInputElement","object",null,[123,1,"object",321,"HTMLInputElement"]],["HTMLIsIndexElement","object",null,[183,1,"object",321,"HTMLIsIndexElement"]],["HTMLLIElement","object",null,[199,1,"object",321,"HTMLLIElement"]],["HTMLLabelElement","object",null,[190,1,"object",321,"HTMLLabelElement"]],["HTMLLegendElement","object",null,[192,1,"object",321,"HTMLLegendElement"]],["HTMLLinkElement","object",null,[125,1,"object",321,"HTMLLinkElement"]],["HTMLMapElement","object",null,[213,1,"object",321,"HTMLMapElement"]],["HTMLMarqueeElement","object",null,[229,1,"object",321,"HTMLMarqueeElement"]],["HTMLMediaElement","object",null,[224,1,"object",321,"HTMLMediaElement"]],["HTMLMenuElement","object",null,[198,1,"object",321,"HTMLMenuElement"]],["HTMLMetaElement","object",null,[181,1,"object",321,"HTMLMetaElement"]],["HTMLModElement","object",null,[206,1,"object",321,"HTMLModElement"]],["HTMLOListElement","object",null,[196,1,"object",321,"HTMLOListElement"]],["HTMLObjectElement","object",null,[209,1,"object",321,"HTMLObjectElement"]],["HTMLOptGroupElement","object",null,[187,1,"object",321,"HTMLOptGroupElement"]],["HTMLOptionElement","object",null,[188,1,"object",321,"HTMLOptionElement"]],["HTMLOptionsCollection","object",null,[147,1,"object",6,"HTMLOptionsCollection"]],["HTMLOutputElement","object",null,[193,1,"object",321,"HTMLOutputElement"]],["HTMLParagraphElement","object",null,[124,1,"object",321,"HTMLParagraphElement"]],["HTMLParamElement","object",null,[210,1,"object",321,"HTMLParamElement"]],["HTMLPreElement","object",null,[201,1,"object",321,"HTMLPreElement"]],["HTMLQuoteElement","object",null,[200,1,"object",321,"HTMLQuoteElement"]],["HTMLScriptElement","object",null,[113,1,"object",321,"HTMLScriptElement"]],["HTMLSelectElement","object",null,[186,1,"object",321,"HTMLSelectElement"]],["HTMLSourceElement","object",null,[227,1,"object",321,"HTMLSourceElement"]],["HTMLStyleElement","object",null,[184,1,"object",321,"HTMLStyleElement"]],["HTMLTableCaptionElement","object",null,[216,1,"object",321,"HTMLTableCaptionElement"]],["HTMLTableCellElement","object",null,[220,1,"object",321,"HTMLTableCellElement"]],["HTMLTableColElement","object",null,[217,1,"object",321,"HTMLTableColElement"]],["HTMLTableElement","object",null,[215,1,"object",321,"HTMLTableElement"]],["HTMLTableRowElement","object",null,[219,1,"object",321,"HTMLTableRowElement"]],["HTMLTableSectionElement","object",null,[218,1,"object",321,"HTMLTableSectionElement"]],["HTMLTextAreaElement","object",null,[189,1,"object",321,"HTMLTextAreaElement"]],["HTMLTitleElement","object",null,[127,1,"object",321,"HTMLTitleElement"]],["HTMLUListElement","object",null,[195,1,"object",321,"HTMLUListElement"]],["HTMLUnknownElement","object",null,[180,1,"object",321,"HTMLUnknownElement"]],["HTMLVideoElement","object",null,[226,1,"object",321,"HTMLVideoElement"]],["Image","object",null,[104,1,"object",321,"Image"]],["ImageData","object",null,[110,1,"object",321,"ImageData"]],["Infinity","number","Infinity"],["JSON","object",null,[41,0,"object",6,"JSON"]],["LSException","object",null,[93,0,"object",6,"LSException"]],["LSParser","object",null,[160,1,"object",6,"LSParser"]],["LSParserFilter","object",null,[95,0,"object",6,"LSParserFilter"]],["Math","object",null,[40,0,"object",6,"Math"]],["MediaError","object",null,[165,1,"object",6,"MediaError"]],["MediaList","object",null,[158,1,"object",6,"MediaList"]],["MouseEvent","object",null,[121,1,"object",6,"MouseEvent"]],["MutationEvent","object",null,[152,1,"object",6,"MutationEvent"]],["NaN","number","NaN"],["NamedNodeMap","object",null,[144,1,"object",6,"NamedNodeMap"]],["Node","object",null,[130,1,"object",6,"Node"]],["NodeFilter","object",null,[89,0,"object",6,"NodeFilter"]],["NodeList","object",null,[143,1,"object",6,"NodeList"]],["Notation","object",null,[139,1,"object",6,"Notation"]],["Number","object",null,[36,1,"function",321,"Function","Number"]],["Object","object",null,[32,1,"function",321,"Function","Object"]],["Option","object",null,[105,1,"object",321,"Option"]],["ProcessingInstruction","object",null,[142,1,"object",6,"ProcessingInstruction"]],["RGBColor","object",null,[305,1,"object",321,"RGBColor"]],["Range","object",null,[159,1,"object",6,"Range"]],["RangeError","object",null,[44,1,"function",321,"Function","RangeError"]],["RangeException","object",null,[90,0,"object",6,"RangeException"]],["ReferenceError","object",null,[45,1,"function",321,"Function","ReferenceError"]],["RegExp","object",null,[38,1,"function",321,"Function","RegExp"]],["SQLError","object",null,[176,1,"object",6,"SQLError"]],["SQLResultSet","object",null,[174,1,"object",6,"SQLResultSet"]],["SQLResultSetRowList","object",null,[175,1,"object",6,"SQLResultSetRowList"]],["SQLTransaction","object",null,[173,1,"object",6,"SQLTransaction"]],["SVGAElement","object",null,[257,1,"object",321,"SVGAElement"]],["SVGAngle","object",null,[308,1,"object",321,"SVGAngle"]],["SVGAnimateColorElement","object",null,[231,1,"object",321,"SVGAnimateColorElement"]],["SVGAnimateElement","object",null,[230,1,"object",321,"SVGAnimateElement"]],["SVGAnimateMotionElement","object",null,[234,1,"object",321,"SVGAnimateMotionElement"]],["SVGAnimateTransformElement","object",null,[232,1,"object",321,"SVGAnimateTransformElement"]],["SVGAnimationElement","object",null,[299,1,"object",321,"SVGAnimationElement"]],["SVGAudioElement","object",null,[297,1,"object",321,"SVGAudioElement"]],["SVGCircleElement","object",null,[235,1,"object",321,"SVGCircleElement"]],["SVGClipPathElement","object",null,[265,1,"object",321,"SVGClipPathElement"]],["SVGDefsElement","object",null,[236,1,"object",321,"SVGDefsElement"]],["SVGDescElement","object",null,[237,1,"object",321,"SVGDescElement"]],["SVGDocument","object",null,[166,1,"object",6,"SVGDocument"]],["SVGEllipseElement","object",null,[238,1,"object",321,"SVGEllipseElement"]],["SVGException","object",null,[107,0,"object",6,"SVGException"]],["SVGFEBlendElement","object",null,[266,1,"object",321,"SVGFEBlendElement"]],["SVGFEColorMatrixElement","object",null,[267,1,"object",321,"SVGFEColorMatrixElement"]],["SVGFEComponentTransferElement","object",null,[268,1,"object",321,"SVGFEComponentTransferElement"]],["SVGFECompositeElement","object",null,[273,1,"object",321,"SVGFECompositeElement"]],["SVGFEConvolveMatrixElement","object",null,[274,1,"object",321,"SVGFEConvolveMatrixElement"]],["SVGFEDiffuseLightingElement","object",null,[275,1,"object",321,"SVGFEDiffuseLightingElement"]],["SVGFEDisplacementMapElement","object",null,[279,1,"object",321,"SVGFEDisplacementMapElement"]],["SVGFEDistantLightElement","object",null,[276,1,"object",321,"SVGFEDistantLightElement"]],["SVGFEFloodElement","object",null,[280,1,"object",321,"SVGFEFloodElement"]],["SVGFEFuncAElement","object",null,[272,1,"object",321,"SVGFEFuncAElement"]],["SVGFEFuncBElement","object",null,[271,1,"object",321,"SVGFEFuncBElement"]],["SVGFEFuncGElement","object",null,[270,1,"object",321,"SVGFEFuncGElement"]],["SVGFEFuncRElement","object",null,[269,1,"object",321,"SVGFEFuncRElement"]],["SVGFEGaussianBlurElement","object",null,[281,1,"object",321,"SVGFEGaussianBlurElement"]],["SVGFEImageElement","object",null,[282,1,"object",321,"SVGFEImageElement"]],["SVGFEMergeElement","object",null,[283,1,"object",321,"SVGFEMergeElement"]],["SVGFEMergeNodeElement","object",null,[284,1,"object",321,"SVGFEMergeNodeElement"]],["SVGFEMorphologyElement","object",null,[285,1,"object",321,"SVGFEMorphologyElement"]],["SVGFEOffsetElement","object",null,[286,1,"object",321,"SVGFEOffsetElement"]],["SVGFEPointLightElement","object",null,[277,1,"object",321,"SVGFEPointLightElement"]],["SVGFESpecularLightingElement","object",null,[287,1,"object",321,"SVGFESpecularLightingElement"]],["SVGFESpotLightElement","object",null,[278,1,"object",321,"SVGFESpotLightElement"]],["SVGFETileElement","object",null,[288,1,"object",321,"SVGFETileElement"]],["SVGFETurbulenceElement","object",null,[289,1,"object",321,"SVGFETurbulenceElement"]],["SVGFilterElement","object",null,[290,1,"object",321,"SVGFilterElement"]],["SVGFontElement","object",null,[260,1,"object",321,"SVGFontElement"]],["SVGForeignObjectElement","object",null,[263,1,"object",321,"SVGForeignObjectElement"]],["SVGGElement","object",null,[239,1,"object",321,"SVGGElement"]],["SVGGlyphElement","object",null,[261,1,"object",321,"SVGGlyphElement"]],["SVGImageElement","object",null,[240,1,"object",321,"SVGImageElement"]],["SVGLength","object",null,[307,1,"object",321,"SVGLength"]],["SVGLineElement","object",null,[241,1,"object",321,"SVGLineElement"]],["SVGLinearGradientElement","object",null,[242,1,"object",321,"SVGLinearGradientElement"]],["SVGMPathElement","object",null,[259,1,"object",321,"SVGMPathElement"]],["SVGMarkerElement","object",null,[291,1,"object",321,"SVGMarkerElement"]],["SVGMaskElement","object",null,[292,1,"object",321,"SVGMaskElement"]],["SVGMatrix","object",null,[302,1,"object",321,"SVGMatrix"]],["SVGMissingGlyphElement","object",null,[262,1,"object",321,"SVGMissingGlyphElement"]],["SVGNumber","object",null,[306,1,"object",321,"SVGNumber"]],["SVGPaint","object",null,[310,1,"object",321,"SVGPaint"]],["SVGPath","object",null,[314,1,"object",321,"SVGPath"]],["SVGPathElement","object",null,[243,1,"object",321,"SVGPathElement"]],["SVGPathSeg","object",null,[312,1,"object",321,"SVGPathSeg"]],["SVGPatternElement","object",null,[293,1,"object",321,"SVGPatternElement"]],["SVGPoint","object",null,[301,1,"object",321,"SVGPoint"]],["SVGPolygonElement","object",null,[244,1,"object",321,"SVGPolygonElement"]],["SVGPolylineElement","object",null,[245,1,"object",321,"SVGPolylineElement"]],["SVGPreserveAspectRatio","object",null,[311,1,"object",321,"SVGPreserveAspectRatio"]],["SVGRGBColor","object",null,[313,1,"object",321,"SVGRGBColor"]],["SVGRadialGradientElement","object",null,[246,1,"object",321,"SVGRadialGradientElement"]],["SVGRect","object",null,[303,1,"object",321,"SVGRect"]],["SVGRectElement","object",null,[247,1,"object",321,"SVGRectElement"]],["SVGSVGElement","object",null,[264,1,"object",321,"SVGSVGElement"]],["SVGScriptElement","object",null,[258,1,"object",321,"SVGScriptElement"]],["SVGSetElement","object",null,[233,1,"object",321,"SVGSetElement"]],["SVGStopElement","object",null,[248,1,"object",321,"SVGStopElement"]],["SVGStyleElement","object",null,[294,1,"object",321,"SVGStyleElement"]],["SVGSwitchElement","o…

Large files files are truncated, but you can click here to view the full file