Skip to content

Instantly share code, notes, and snippets.

@mirinzhang
Last active March 10, 2020 08:29
Show Gist options
  • Save mirinzhang/aeb2ef695bbb55f77a77c169c7c60725 to your computer and use it in GitHub Desktop.
Save mirinzhang/aeb2ef695bbb55f77a77c169c7c60725 to your computer and use it in GitHub Desktop.
var noop = function(){};
var errorHandler = {
callback: null,
init: function (callback) {
errorHandler.callback = callback || noop;
window.onerror = errorHandler.script;
window.addEventListener('error', errorHandler.source, true);
window.addEventListener('unhandledrejection', errorHandler.promise, true);
},
// 记录普通错误
script: function (message, source, lineno, colno) {
var stack = source + ':' + lineno + ':' + colno;
errorHandler.callback('script', message, stack);
},
// 记录资源加载错误
source: function (e) {
e.preventDefault();
var target = e.target || e.srcElement;
var isElementTarget = target instanceof HTMLScriptElement || target instanceof HTMLLinkElement || target instanceof HTMLImageElement;
// 不是资源加载错误时,直接返回
if (!isElementTarget) {
return false;
}
var url = target.src || target.href;
errorHandler.callback('source', 'Unable to load resources', url);
},
// 记录promise错误
promise: function (e) {
e.preventDefault();
var error = e.reason || {};
errorHandler.callback('promise', error.message, error.stack);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment