!function(name, context){ var Keen = context[name], logger; Keen.on('client', function(client, config){ if (config.js_reporter) { logger = client; init(); } }); /* Browsers supporting window.onerror ----------------------------------- Chrome 13+ Firefox 6.0+ Internet Explorer 5.5+ Opera 11.60+ Safari 5.1+ */ function init(){ // Set up error listener if (window.addEventListener) { window.addEventListener("error", handleException, false); } else if (window.attachEvent) { window.attachEvent('onpropertychange', function(e) { if (e.propertyName == "error") { handleException.apply(this, arguments); } }); } else { window.onerror = function(message, url, line, col, ref) { handleException({ message: message, url: url, line_no: line, col_no: (col) ? col : null, stack: (ref && ref.stack) ? ref.stack : null }); }; } } function handleException(error) { //console.log(error); var message, report = { bubbles: ("boolean" == typeof(error.bubbles)) ? String(error.bubbles) : "", message: error.message, line_no: (error.lineno || ""), col_no: (error.colno || ""), filename: (error.filename || ""), stack: (error.stack || ""), type: (error.type || ""), page: { title: document.title, host: document.location.host, href: document.location.href, path: document.location.pathname, protocol: document.location.protocol.replace(/:/g, ""), query: document.location.search }, visitor: { ip_address: "${keen.ip}", user_agent: "${keen.user_agent}", referrer: document.referrer, }, keen: { timestamp: new Date().toISOString(), addons: [ { name:"keen:ip_to_geo", input: { ip:"visitor.ip_address" }, output:"visitor.geo" }, { name:"keen:ua_parser", input: { ua_string:"visitor.user_agent" }, output:"visitor.tech" } ] } }; console.log('report', report); logger.addEvent("js_error", report) return; } }('Keen', this);