关于 js 的错误捕获问题

2023-03-12 22:02:17 +08:00
 lisianthus

同一份 js ,在不同的浏览器运行可能会有兼容性问题,比如浏览器不支持 ES6 时使用 const 会抛出 SyntaxError: Unexpected keyword 'const'。

在 html 里引入了两个 js ,请问能否在 a.js 里做一些操作,捕获到 b.js 里发生的语法错误,方便定位问题?

<script src="a.js"></script>
<script src="b.js"></script>
864 次点击
所在节点    问与答
5 条回复
xiangyuecn
2023-03-12 22:14:52 +08:00
view-source:https://xiangyuecn.gitee.io/recorder/QuickStart.html

window.onerror=function(message, url, lineNo, columnNo, error){
//https://www.cnblogs.com/xianyulaodi/p/6201829.html
reclog('<span style="color:red"> [Uncaught Error] '+message+'<pre>'+"at:"+lineNo+":"+columnNo+" url:"+url+"\n"+(error&&error.stack||"不能获得错误堆栈")+'</pre></span>');
};

《 Recorder H5 QuickStart: 快速入门》看那个页面源码,还有 cdn 自动选择功能,jsdelivr 访问不了,就会切换到 unpkg
你的直接就在 script 之前绑定 onerror 进行处理就 oJBk 了
lisianthus
2023-03-13 14:45:42 +08:00
@xiangyuecn
我拿电视盒子试了下,大部分盒子都可以用 window.onerror 捕获到错误,但有几个盒子压根没反应😂
qianlige
2023-03-13 15:57:37 +08:00
@lisianthus 执行先后顺序有关?有可能你的 onerror 执行在报错之后了呢
lisianthus
2023-03-13 19:29:33 +08:00
@qianlige
不是的,可以肯定 onerror 在错误之前就执行了。
我觉得可能跟盒子 webview 有关,有些性能很差的盒子 webview 需要代码兼容到 IE6 、IE7 才能运行,还有些是被运营商魔改过的
qianlige
2023-03-14 10:44:08 +08:00
如果说魔改的话,可能是 onerror 事件被改写了,试着用 addEventListener 或者 attachEvent 来添加监听?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX