Last active
March 10, 2020 08:29
-
-
Save mirinzhang/aeb2ef695bbb55f77a77c169c7c60725 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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