// <log errors to server> window.onerror = function (messageOrEvent, source, lineno, colno, error) { try { console.log({ //error message(string).Available as event (sic!) in HTML onerror = "" handler. messageOrEvent: messageOrEvent, //URL of the script where the error was raised(string) source: source, //Line number where error was raised(number) lineno: lineno, //Column number for the line where the error occurred(number) colno: colno, //Error Object(object) error: error }); //placeholder array for request parameters var params = [], //saves a unique id to prevent creating a new script tags for each error ___guid = window.onerror___guid || (window.onerror___guid = (new Date().getTime() + '-' + new Date().getTime())), //a guidto for the error script element id //create a new function if none exists with the unique id ___logError = function (___url) { ___domScript = document.getElementById(___guid); if (!___domScript) { var ___head = document.head || document.getElementsByTagName('head')[0], ___domScript = document.createElement('script'); ___domScript.id = ___guid; ___domScript.dataType = 'json'; ___domScript.async = 'async'; ___head.insertBefore(___domScript, ___head.firstChild); } ___domScript.src = ___url; }; params.push('browser=' + encodeURIComponent(((navigator.userAgent + '|' + navigator.vendor + '|' + navigator.platform + '|' + navigator.platform) || '').toString())); params.push('lineNumber=' + encodeURIComponent((lineno || '').toString())); params.push('colNumber=' + encodeURIComponent((colno || '').toString())); params.push('source=' + encodeURIComponent((source || '').toString())); params.push('error=' + encodeURIComponent((error || '').toString())); params.push('messageOrEvent=' + encodeURIComponent((messageOrEvent || '').toString())); params.push('url=' + encodeURIComponent((window.location.href || '').toString())); // `/JavascriptError` is your servers endpoint ___logError('/url_on_your_server.php?action=report_js_error&' + params.join('&')); } catch (e) { // squelch, because we don’t want to prevent method from returning true console.log(e); } //When the function returns true, this prevents the firing of the default event handler. return false; }; // </log errors to server>