Global variable Bookmarklet
logs all global variables in the console with options to include or exclude various popular libraries
by rdillman
HTML
<a href="javascript: (function () { if (!document.getElementById('__globals')) { function getPropertyDescriptors(object) { var props = {}; for (var prop in object) { props[prop] = { type: typeof object[prop], value: object[prop] } } return props; } function getCleanWindow() { var elIframe = document.createElement('iframe'); elIframe.style.display = 'none'; document.body.appendChild(elIframe); elIframe.src = 'about:blank'; return elIframe.contentWindow; } function appendControl(el, name) { var elCheckbox = document.createElement('input'); elCheckbox.type = 'checkbox'; elCheckbox.checked = true; elCheckbox.id = '__' + name; var elLabel = document.createElement('label'); elLabel.htmlFor = '__' + name; elLabel.innerHTML = 'Exclude ' + name + '?'; elLabel.style.cssText = 'margin-left:0.5em; color:#eee;'; var elWrapper = document.createElement('p'); elWrapper.appendChild(elCheckbox); elWrapper.appendChild(elLabel); el.appendChild(elWrapper); } function appendAnalyze(el) { var elAnalyze = document.createElement('button'); elAnalyze.id = '__analyze'; elAnalyze.innerHTML = 'Analyze'; elAnalyze.style.cssText = 'margin:1em 25%;color:black;width:50%;border-radius:5px;'; el.appendChild(elAnalyze); } function appendCancel(el) { var elCancel = document.createElement('a'); elCancel.href = '#'; elCancel.innerHTML = '✇'; elCancel.style.cssText = 'color:#EEE;position:absolute;top:10px;right:10px;text-decoration:none;'; elCancel.onclick = function () { el.parentNode.removeChild(el); return false; }; el.appendChild(elCancel); } function appendDisclaimer(el) { var elDisclaimer = document.createElement('div'); elDisclaimer.style.cssText = 'font-size:10px;text-align:center;'; elDisclaimer.innerHTML = '(results available in the console)'; el.appendChild(elDisclaimer); } function initConfigPopup() { var el = document.createElement('div'); el.id = '__globals'; el.style.cssText =...