zoukankan      html  css  js  c++  java
  • JS 拦截/捕捉 全局错误 全局Error onerror

     移动Web开发过程中,在真机测试时,往往会遇到一些PC调试无法重现的问题,这时候我们需要在手机上拦截错误,并有相应的输出。

    公司和网上都有类似的工具/类库,但如果纯粹一个简单的调试,或许不需要引入工具或类库,我们只需要知道全局拦截的原理。

    其实很简单,就是window.onerror

    语法:

    onerror=handleErr
    
    function handleErr(msg,url,l)
    {
    //Handle the error here
    return true or false
    }

    浏览器是否显示标准的错误消息,取决于 onerror 的返回值。如果返回值为 false,则在控制台 (JavaScript console) 中显示错误消息。反之则不会。

    实例:

    下面的例子展示如何使用 onerror 事件来捕获错误:

    <html>
    <head>
    <script type="text/javascript">
    onerror=handleErr
    var txt=""
    
    function handleErr(msg,url,l)
    {
    txt="There was an error on this page.
    
    "
    txt+="Error: " + msg + "
    "
    txt+="URL: " + url + "
    "
    txt+="Line: " + l + "
    
    "
    txt+="Click OK to continue.
    
    "
    alert(txt)
    return true
    }
    
    function message()
    {
    adddlert("Welcome guest!")
    }
    </script>
    </head>
    
    <body>
    <input type="button" value="View message" onclick="message()" />
    </body>
    
    </html>

    另外,如果我们想在chrome控制台中直接模拟这个过程,会发现,直接使用throw new Error,无法触发这个onerror,这个可能是因为控制台的环境跟页面环境不一样。

    但换一个方式,就可以触发了:

    setTimeout(function(){throw new Error}, 1000)

    :p

    真够机智

  • 相关阅读:
    hdu1089
    hdu1088
    驴妈妈
    途牛悄然上市 登陆SEC途牛前景如何
    途牛旅游网
    百度-----携程
    携程旅行网
    手机游戏
    web
    改造 改革
  • 原文地址:https://www.cnblogs.com/kenkofox/p/4572479.html
Copyright © 2011-2022 走看看