同一份 js ,在不同的浏览器运行可能会有兼容性问题,比如浏览器不支持 ES6 时使用 const 会抛出 SyntaxError: Unexpected keyword 'const'。
在 html 里引入了两个 js ,请问能否在 a.js 里做一些操作,捕获到 b.js 里发生的语法错误,方便定位问题?
<script src="a.js"></script>
<script src="b.js"></script>
1
xiangyuecn 2023-03-12 22:14:52 +08:00 1
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 了 |
2
lisianthus OP @xiangyuecn
我拿电视盒子试了下,大部分盒子都可以用 window.onerror 捕获到错误,但有几个盒子压根没反应😂 |
3
qianlige 2023-03-13 15:57:37 +08:00
@lisianthus 执行先后顺序有关?有可能你的 onerror 执行在报错之后了呢
|
4
lisianthus OP @qianlige
不是的,可以肯定 onerror 在错误之前就执行了。 我觉得可能跟盒子 webview 有关,有些性能很差的盒子 webview 需要代码兼容到 IE6 、IE7 才能运行,还有些是被运营商魔改过的 |
5
qianlige 2023-03-14 10:44:08 +08:00
如果说魔改的话,可能是 onerror 事件被改写了,试着用 addEventListener 或者 attachEvent 来添加监听?
|