60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
// simple error report by baidu tongji
|
|
|
|
var _hmt = _hmt || [];
|
|
|
|
var er3eport = {};
|
|
er3eport.start = (new Date().getTime());
|
|
er3eport.codetime = function () {
|
|
return (new Date().getTime()) - er3eport.start;
|
|
};
|
|
er3eport.dodnt = function () {
|
|
window.dnt = 1; if (typeof window.dodnt === 'function') window.dodnt();
|
|
};
|
|
er3eport.jqdefined = function () {
|
|
_hmt.push(['_setCustomVar', 2, 'JSERROR', 'jQueryDefined' + ' # ' + er3eport.codetime(), 3]);
|
|
er3eport.dodnt();
|
|
};
|
|
er3eport.listener = function (msg) {
|
|
|
|
var logstr = false;
|
|
var errtype = 'JSERROR';
|
|
if (typeof msg === 'string') {
|
|
logstr = msg;
|
|
|
|
} else {
|
|
if (msg.error) logstr = msg.error.stack;
|
|
else if (msg.message) logstr = msg.message;
|
|
|
|
var src;
|
|
if (msg.srcElement && msg.srcElement.src) src = msg.srcElement.src;
|
|
else if (msg.target && msg.target.src) src = msg.target.src;
|
|
|
|
if (! logstr) {
|
|
if (src) {
|
|
logstr = 'FileError: ' + src;
|
|
errtype = 'FILEERROR';
|
|
} else if (msg.type) {
|
|
logstr = msg.type;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (typeof logstr !== 'string') {
|
|
logstr = 'empty_error_string'
|
|
} else {
|
|
logstr = logstr.replace(/\n/g, '').replace(/\s+/g, ' ');
|
|
}
|
|
|
|
_hmt.push(['_trackEvent', errtype, window.location.pathname, logstr + ' #UA# ' + navigator.userAgent + ' # ' + er3eport.codetime()]);
|
|
|
|
return true;
|
|
}
|
|
|
|
if (typeof jQuery === 'function') er3eport.jqdefined();
|
|
if (Object.defineProperty) Object.defineProperty(window, 'jQuery', {set: er3eport.jqdefined});
|
|
|
|
if (window.addEventListener) {
|
|
window.addEventListener('error', er3eport.listener, true);
|
|
} else if (window.attachEvent) {
|
|
window.attachEvent('onerror', er3eport.listener);
|
|
} |