{"__browser":{"country":"US","device":"unknown_device","mobile":false,"name":"unknown browser","platform":"unknown_platform","version":"0"},"__constants":{},"__CPDATA":{"domain_iframe":"https://cdpn.io","environment":"production","host":"codepen.io","iframe_allow":"accelerometer *; ambient-light-sensor *; camera *; display-capture *; encrypted-media *; geolocation *; gyroscope *; microphone *; midi *; payment *; vr *; web-share *; serial *; xr-spatial-tracking *","iframe_sandbox":"allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups-to-escape-sandbox allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation"},"__graphql":{"data":{"data":{"sessionUser":{"id":"VoDkNZ","name":"Captain Anonymous","title":"Captain Anonymous","avatar":"https://assets.codepen.io/t-1/user-default-avatar.jpg?format=auto&version=0","currentContext":{"id":"VoDkNZ","title":"Captain Anonymous","name":"Captain Anonymous","avatar":"https://assets.codepen.io/t-1/user-default-avatar.jpg?format=auto&version=0","username":"anon","__typename":"User"},"currentTeamId":null,"username":"anon","admin":false,"anon":true,"pro":false,"verified":false,"featureFlags":[],"teams":[],"__typename":"User"}}},"url":"https://codepen.io/graphql","api":"cprails"},"__user":{"anon":true,"base_url":"/anon/","cohorts":[],"current_team_hashid":null,"current_team_id":0,"hashid":"VoDkNZ","id":1,"itemType":"user","name":"Captain Anonymous","paid":false,"tier":0,"username":"anon","created_at":null,"email_verified":null,"collections_count":0,"collections_private_count":0,"followers_count":0,"followings_count":0,"pens_count":0,"pens_private_count":0,"projects_count":0,"projects_private_count":0},"__firebase":{"config":{"apiKey":"AIzaSyBgLAe7N_MdFpuVofMkcQLGwwhUu5tuxls","authDomain":"codepen-store-production.firebaseapp.com","databaseURL":"https://codepen-store-production.firebaseio.com","disabled":false,"projectId":"codepen-store-production"},"token":"eyJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczovL2lkZW50aXR5dG9vbGtpdC5nb29nbGVhcGlzLmNvbS9nb29nbGUuaWRlbnRpdHkuaWRlbnRpdHl0b29sa2l0LnYxLklkZW50aXR5VG9vbGtpdCIsImNsYWltcyI6eyJvd25lcklkIjoiVm9Ea05aIiwiYWRtaW4iOmZhbHNlfSwiZXhwIjoxNzM5NzM5MTM0LCJpYXQiOjE3Mzk3MzU1MzQsImlzcyI6ImZpcmViYXNlLWFkbWluc2RrLThva3lsQGNvZGVwZW4tc3RvcmUtcHJvZHVjdGlvbi5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInN1YiI6ImZpcmViYXNlLWFkbWluc2RrLThva3lsQGNvZGVwZW4tc3RvcmUtcHJvZHVjdGlvbi5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInVpZCI6IlZvRGtOWiJ9.HCjD_LPjHloFPSqHDqPKiBNQbwyMxmQ7rIWOJWyulBDRxahgSccUgmwxwEMzHinqbbu5Ljrj4JevJfeSG9WdcIBPvGZP8IlJO_ENXNqiyMlKH7PF2EDVkKlUYmp6pMy5eu1WGXQEn_xVoudI9yOZ3PJRtTVUcPo7Ql7JKExTGsxRbHy7QBq4hBe9Q2d7JLvxTxo__N7nlcMYbLaThtum7_2YAfwjsYvkvaSJpmgqbcMbOV0vwHuNsjY6yUEqk5uNm71L38d-jOxUJWIjg8nQwpNSIfi9Vx_aciIel6Y6XfRP4G8V92nHHcV2b5vJQZCVVQk-gAyc3tHuUlOpKgavpA"},"__pay_stripe_public_key":"pk_live_2GndomDfiklqpSNQn8FrGuwZSMIMzha7DkLJqlYe7IR0ihKAlKdiHg68JJc5eVPt68rzAjzAAVXcUwjySHRCsgjQQ00gtRBUFNH","__pay_braintree_env":"production","__item":"{\"id\":73199477,\"user_id\":5928893,\"html\":\"<h1>Example 9<\\/h1>\\n\\n<h1>Example 9: DOM leaks bigger than expected<\\/h1>\\n\\n<ol>\\n <li>Start memory profiling. Watch node count.<\\/li>\\n\\n <li>Create a subtree of dom nodes and save a reference to a leaf and subtree\\n route<\\/li>\\n\\n <li>Detach tree<\\/li>\\n\\n <li>Watch the detached node count<\\/li>\\n\\n <li>Remove tree reference<\\/li>\\n\\n <li>Watch the detached node count<\\/li>\\n\\n <li>Remove leaf reference<\\/li>\\n\\n <li>Watch the detached node count<\\/li>\\n<\\/ol>\\n\\n<p><button onclick=\\\"createTree()\\\">Create tree<\\/button><\\/p>\\n\\n<p><button onclick=\\\"detachTree()\\\">Detach tree<\\/button><\\/p>\\n\\n<p><button onclick=\\\"removeTreeReference()\\\">Remove tree reference<\\/button><\\/p>\\n\\n<p><button onclick=\\\"removeLeafReference()\\\">Remove leaf reference<\\/button><\\/p>\\n\\n<script>\\n 'use strict';\\n var leakedNodes = [],\\n parentDiv, leaf, counter = 0;\\n\\n function createLeaf() {\\n counter++;\\n var div = document.createElement('div');\\n div.appendChild(document.createTextNode('Leaf ' + counter));\\n div.someText = (new Array(1E6).join('x'));\\n return div;\\n }\\n\\n function createBranch(number) {\\n var div = document.createElement('div');\\n createNodesAndReturnLastLeaf(div, number - 1);\\n return div;\\n }\\n\\n function createNodesAndReturnLastLeaf(parentDiv, number) {\\n var i, lastLeaf;\\n for (i = 0; i < number; i++) {\\n parentDiv.appendChild(createBranch(number));\\n }\\n for (i = 0; i < number; i++) {\\n parentDiv.appendChild(lastLeaf = createLeaf(number, i));\\n }\\n return lastLeaf;\\n }\\n\\n function createTree() {\\n parentDiv = document.createElement('div');\\n leaf = createNodesAndReturnLastLeaf(parentDiv, 4);\\n document.body.appendChild(parentDiv);\\n }\\n\\n function detachTree() {\\n document.body.removeChild(parentDiv);\\n }\\n\\n function removeTreeReference() {\\n parentDiv = null;\\n }\\n\\n function removeLeafReference() {\\n leaf = null;\\n }\\n<\\/script>\\n\\n<hr>\\n<pre>\\n'use strict';\\n\\nvar leakedNodes = [], parentDiv, leaf, counter = 0;\\n\\nfunction createLeaf() {\\n counter++;\\n var div = document.createElement(\\\"div\\\");\\n div.appendChild(document.createTextNode(\\\"Leaf \\\" + counter));\\n div.someText = (new Array(1E6).join(\\\"x\\\"));\\n return div;\\n}\\n\\nfunction createBranch(number) {\\n var div = document.createElement(\\\"div\\\");\\n createNodesAndReturnLastLeaf(div, number - 1);\\n return div;\\n}\\n\\nfunction createNodesAndReturnLastLeaf(parentDiv, number) {\\n var i, lastLeaf;\\n for (i = 0; i < number; i++) {\\n parentDiv.appendChild(createBranch(number));\\n }\\n for (i = 0; i < number; i++) {\\n parentDiv.appendChild(lastLeaf = createLeaf(number, i));\\n }\\n return lastLeaf;\\n}\\n\\n\\n\\nfunction createTree() {\\n parentDiv = document.createElement(\\\"div\\\");\\n leaf = createNodesAndReturnLastLeaf(parentDiv, 4);\\n document.body.appendChild(parentDiv);\\n}\\n\\nfunction detachTree() {\\n document.body.removeChild(parentDiv);\\n}\\n\\nfunction removeTreeReference() {\\n parentDiv = null;\\n}\\n\\nfunction removeLeafReference() {\\n leaf = null;\\n}\\n<\\/pre>\",\"css\":\"\",\"js\":\"\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"none\",\"js_pre_processor\":\"none\",\"html_classes\":\"\",\"css_starter\":\"neither\",\"js_library\":null,\"created_at\":\"2024-02-09T15:20:43.464Z\",\"updated_at\":\"2024-02-09T15:20:48.924Z\",\"title\":\"Example 9\",\"description\":\"\",\"slug_hash\":\"LYaJvpw\",\"head\":\"\",\"private\":false,\"slug_hash_private\":\"1bb52c4df2c7b1b556b476c45225bd64\",\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"neither\",\"template\":false,\"parent_id\":0,\"comments_count\":0,\"custom_screenshot_filename\":null,\"loves_count\":0,\"pick\":false,\"popularity\":1,\"views_count\":12,\"pick_visible_at\":null,\"cpid\":\"018d8e74-eac9-76b0-aaf0-209937934201\",\"is_new_editor_pen\":false,\"access\":\"Public\",\"pen_hash\":null,\"hashid\":\"LYaJvpw\"}"}