整体路子是对的,但这套代码直接上线的两个最大丢数据点是:跨域脚本只能拿到 `Script error.`,以及同步错误会被 `onerror` 和捕获阶段的 `error` 监听器重复上报两遍。另外你这篇结尾停在 `reason inst`,看起来被截断了,记得补完。

先解决重复问题:`window.addEventListener('error', fn, true)` 在捕获阶段其实同时收到同步错误的 `ErrorEvent` 和资源错误事件,所以加了它之后 `window.onerror` 就是冗余的,两边都报会翻倍。建议只留一个捕获监听,进去先判 `e instanceof ErrorEvent` 走同步逻辑,否则走资源逻辑,别只靠