(function() { var c = { init: function() { c.log('init'); chrome.extension.sendRequest({ id: 'analyze', subject: { html: document.documentElement.outerHTML } }); c.getEnvironmentVars(); }, log: function(message) { chrome.extension.sendRequest({ id: 'log', message: '[ content.js ] ' + message }); }, getEnvironmentVars: function() { c.log('getEnvironmentVars'); if ( typeof document.documentElement.innerHTML === 'undefined' ) { return; } try { var container = document.createElement('wappalyzerData'); container.setAttribute('id', 'wappalyzerData'); container.setAttribute('style', 'display: none'); var script = document.createElement('script'); script.setAttribute('id', 'wappalyzerEnvDetection'); script.innerHTML = '(function() {' + 'try {' + 'var i, environmentVars, event = document.createEvent("Events");' + 'event.initEvent("wappalyzerEvent", true, false);' + 'for ( i in window ) { environmentVars += i + " "; }' + 'document.getElementById("wappalyzerData").appendChild(document.createComment(environmentVars));' + 'document.getElementById("wappalyzerData").dispatchEvent(event);' + '}' + 'catch(e) { }' + '})();'; container.addEventListener('wappalyzerEvent', (function(event) { var environmentVars = event.target.childNodes[0].nodeValue; document.documentElement.removeChild(container); document.documentElement.removeChild(script); c.log('getEnvironmentVars: ' + environmentVars); environmentVars = environmentVars.split(' '); chrome.extension.sendRequest({ id: 'analyze', subject: { env: environmentVars } }); }), true); document.documentElement.appendChild(container); document.documentElement.appendChild(script); } catch(e) { c.log('Error: ' + e); } } } c.init(); })();