show-js-error
Advanced tools
Comparing version
@@ -29,3 +29,13 @@ /*! show-js-error | © 2016 Denis Seleznev | MIT License */ | ||
this._onerror = function(e) { | ||
that._buffer.push(e); | ||
var error = e; | ||
if (!e.bubbles && e.target && e.target.tagName) { | ||
if (that.settings.errorLoading) { | ||
error = that._errorLoading(e); | ||
} else { | ||
return; | ||
} | ||
} | ||
that._buffer.push(error); | ||
if (that._isLast) { | ||
@@ -39,3 +49,3 @@ that._i = that._buffer.length - 1; | ||
if (window.addEventListener) { | ||
window.addEventListener('error', this._onerror, false); | ||
window.addEventListener('error', this._onerror, true); | ||
} else { | ||
@@ -346,12 +356,43 @@ var oldOnError = window.onerror; | ||
}, | ||
_errorLoading: function(e) { | ||
var tagName = (e.target.tagName || '').toLowerCase(), | ||
preparedTagName = { | ||
img: 'image', | ||
link: 'css' | ||
}[tagName]; | ||
return { | ||
title: 'Error loading', | ||
message: 'Error loading ' + (preparedTagName || tagName), | ||
filename: e.target.src || e.target.href | ||
}; | ||
}, | ||
_getDetailedMessage: function(err) { | ||
return [ | ||
'Title: ' + (err.title || this._getTitle()), | ||
'Message: ' + this._getMessage(err), | ||
'Filename: ' + this._getFilenameWithPosition(err), | ||
'Stack: ' + this._getStack(err), | ||
'Page url: ' + window.location.href, | ||
'Refferer: ' + document.referrer, | ||
'User-agent: ' + (this.settings.userAgent || navigator.userAgent) | ||
].join('\n'); | ||
var settings = this.settings, | ||
screen = typeof window.screen === 'object' ? window.screen : {}, | ||
orientation = screen.orientation || screen.mozOrientation || screen.msOrientation || '', | ||
props = [ | ||
['Title', err.title || this._getTitle()], | ||
['Message', this._getMessage(err)], | ||
['Filename', this._getFilenameWithPosition(err)], | ||
['Stack', this._getStack(err)], | ||
['Page url', window.location.href], | ||
['Refferer', document.referrer], | ||
['User-agent', settings.userAgent || navigator.userAgent], | ||
['Screen size', [screen.width, screen.height, screen.colorDepth].join('×')], | ||
['Screen orientation', typeof orientation === 'string' ? orientation : orientation.type], | ||
['Cookie enabled', navigator.cookieEnabled] | ||
]; | ||
var text = ''; | ||
for (var i = 0; i < props.length; i++) { | ||
var item = props[i]; | ||
text += item[0] + ': ' + item[1] + '\n'; | ||
} | ||
if (settings.templateDetailedMessage) { | ||
text = settings.templateDetailedMessage.replace(/\{message\}/, text); | ||
} | ||
return text; | ||
}, | ||
@@ -371,7 +412,11 @@ _getExtFilename: function(e) { | ||
_getFilenameWithPosition: function(e) { | ||
return e.filename ? | ||
e.filename + | ||
':' + this._get(e.lineno, '') + | ||
':' + this._get(e.colno, '') | ||
: ''; | ||
var text = e.filename || ''; | ||
if (typeof e.lineno !== 'undefined') { | ||
text += ':' + this._get(e.lineno, ''); | ||
if (typeof e.colno !== 'undefined') { | ||
text += ':' + this._get(e.colno, ''); | ||
} | ||
} | ||
return text; | ||
}, | ||
@@ -378,0 +423,0 @@ _getMessage: function(e) { |
@@ -29,3 +29,13 @@ /*! show-js-error | © 2016 Denis Seleznev | MIT License */ | ||
this._onerror = function(e) { | ||
that._buffer.push(e); | ||
var error = e; | ||
if (!e.bubbles && e.target && e.target.tagName) { | ||
if (that.settings.errorLoading) { | ||
error = that._errorLoading(e); | ||
} else { | ||
return; | ||
} | ||
} | ||
that._buffer.push(error); | ||
if (that._isLast) { | ||
@@ -39,3 +49,3 @@ that._i = that._buffer.length - 1; | ||
if (window.addEventListener) { | ||
window.addEventListener('error', this._onerror, false); | ||
window.addEventListener('error', this._onerror, true); | ||
} else { | ||
@@ -346,12 +356,43 @@ var oldOnError = window.onerror; | ||
}, | ||
_errorLoading: function(e) { | ||
var tagName = (e.target.tagName || '').toLowerCase(), | ||
preparedTagName = { | ||
img: 'image', | ||
link: 'css' | ||
}[tagName]; | ||
return { | ||
title: 'Error loading', | ||
message: 'Error loading ' + (preparedTagName || tagName), | ||
filename: e.target.src || e.target.href | ||
}; | ||
}, | ||
_getDetailedMessage: function(err) { | ||
return [ | ||
'Title: ' + (err.title || this._getTitle()), | ||
'Message: ' + this._getMessage(err), | ||
'Filename: ' + this._getFilenameWithPosition(err), | ||
'Stack: ' + this._getStack(err), | ||
'Page url: ' + window.location.href, | ||
'Refferer: ' + document.referrer, | ||
'User-agent: ' + (this.settings.userAgent || navigator.userAgent) | ||
].join('\n'); | ||
var settings = this.settings, | ||
screen = typeof window.screen === 'object' ? window.screen : {}, | ||
orientation = screen.orientation || screen.mozOrientation || screen.msOrientation || '', | ||
props = [ | ||
['Title', err.title || this._getTitle()], | ||
['Message', this._getMessage(err)], | ||
['Filename', this._getFilenameWithPosition(err)], | ||
['Stack', this._getStack(err)], | ||
['Page url', window.location.href], | ||
['Refferer', document.referrer], | ||
['User-agent', settings.userAgent || navigator.userAgent], | ||
['Screen size', [screen.width, screen.height, screen.colorDepth].join('×')], | ||
['Screen orientation', typeof orientation === 'string' ? orientation : orientation.type], | ||
['Cookie enabled', navigator.cookieEnabled] | ||
]; | ||
var text = ''; | ||
for (var i = 0; i < props.length; i++) { | ||
var item = props[i]; | ||
text += item[0] + ': ' + item[1] + '\n'; | ||
} | ||
if (settings.templateDetailedMessage) { | ||
text = settings.templateDetailedMessage.replace(/\{message\}/, text); | ||
} | ||
return text; | ||
}, | ||
@@ -371,7 +412,11 @@ _getExtFilename: function(e) { | ||
_getFilenameWithPosition: function(e) { | ||
return e.filename ? | ||
e.filename + | ||
':' + this._get(e.lineno, '') + | ||
':' + this._get(e.colno, '') | ||
: ''; | ||
var text = e.filename || ''; | ||
if (typeof e.lineno !== 'undefined') { | ||
text += ':' + this._get(e.lineno, ''); | ||
if (typeof e.colno !== 'undefined') { | ||
text += ':' + this._get(e.colno, ''); | ||
} | ||
} | ||
return text; | ||
}, | ||
@@ -378,0 +423,0 @@ _getMessage: function(e) { |
{ | ||
"name": "show-js-error", | ||
"description": "Show a message about a js error in any browser", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"author": { | ||
@@ -6,0 +6,0 @@ "name": "Denis Seleznev", |
33386
11.97%7
16.67%968
8.52%