lisianthus
V2EX  ›  问与答

关于 js 的错误捕获问题

  •  
  •   lisianthus · Mar 12, 2023 · 1875 views
    This topic created in 1171 days ago, the information mentioned may be changed or developed.

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

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

    <script src="a.js"></script>
    <script src="b.js"></script>
    
    5 replies    2023-03-14 10:44:08 +08:00
    xiangyuecn
        1
    xiangyuecn  
       Mar 12, 2023   ❤️ 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 了
    lisianthus
        2
    lisianthus  
    OP
       Mar 13, 2023
    @xiangyuecn
    我拿电视盒子试了下,大部分盒子都可以用 window.onerror 捕获到错误,但有几个盒子压根没反应😂
    qianlige
        3
    qianlige  
       Mar 13, 2023
    @lisianthus 执行先后顺序有关?有可能你的 onerror 执行在报错之后了呢
    lisianthus
        4
    lisianthus  
    OP
       Mar 13, 2023
    @qianlige
    不是的,可以肯定 onerror 在错误之前就执行了。
    我觉得可能跟盒子 webview 有关,有些性能很差的盒子 webview 需要代码兼容到 IE6 、IE7 才能运行,还有些是被运营商魔改过的
    qianlige
        5
    qianlige  
       Mar 14, 2023
    如果说魔改的话,可能是 onerror 事件被改写了,试着用 addEventListener 或者 attachEvent 来添加监听?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5349 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:58 · PVG 14:58 · LAX 23:58 · JFK 02:58
    ♥ Do have faith in what you're doing.