美文网首页
2020-07-02 js 错误监听方法

2020-07-02 js 错误监听方法

作者: 忙于未来的民工 | 来源:发表于2020-07-02 17:41 被阅读0次

    错误监听过程大概分为两部分,静态资源加载错误和js文本执行错误

    1:静态资源加载错误的捕获方法

    方法一:

    借助于error事件,这个事件既可以静态资源加载出错,也可以监听js执行过程中的错误。具体错误的类型可以根据srcElement属性进行区分,如果监测js执行过程中的错误,注意静态资源的跨域问题。

    跨域解决方法:后端设置方法与跨域携带cookie方法一致,前端需要在script标签上添加crossorigin="use-credentials"

    window.addEventListener('error',  args => {

    console.log('error event:', args);

    return true;

    }, true)

    方法二:

    手动创建script(其他资源创建其他标签)标签,利用script标签的onerror以及 onload事件

    onerror:当资源请求不到时,执行。注意 当js文件执行过程中报错,监听不到,用别的方法

    onload:当资源请求成功时,执行。

    2:监听js执行错误

    可以借助于上面方法监听,也可以使用onerror事件。解决跨域资源文件方法与上面一致

    window.onerror = function(message, source, lineno, colno, error) {

    console.log(message, source, lineno, colno, error, '----')

    }

    3:Promise异常捕获

    使用unhandledrejection事件即可

    window.addEventListener("unhandledrejection", e => {

      throw e.reason

    });

    vue项目处理方法:

    js的加载过程错误监听与上面一致,js的执行错误只需要借助vue的机制即可

    Vue.config.errorHandler = (err, vm, info) => {

    }

    如果使用了vue的错误监听,error事件将不再生效。同时vue的错误监听也能监听promise的异常

    JS:

    window.onerror = function(message, source, lineno, colno, error) {

    console.log(message, source, lineno, colno, error)

    }

    window.addEventListener('error', args => {

    if(args.target.tagName == 'SCRIPT') {

    console.log('script:', args.target.src);

    } else if(args.target.tagName == 'LINK') {

    console.log('link:', args.target.href);

    } else if(args.target.tagName == 'IMG') {

    console.log('img:', args.target.src);

    }

    return true;

    },true )

    // 动态创建dom

    let script= document.createElement('link');

    script.href= "https://seals.fangxin.c/ipri/js/sck.c2901f63b6857ee13f1a.js"; // 没有这个脚本

    script.rel = 'stylesheet';

    document.body.append(script);

    script.onerror = function(err) {

    console.log("Error loading ", err); // Error loading https://example.com/404.js

    };

    script.onload = function() {

    console.log("Error loading "); // Error loading https://example.com/404.js

    };

    相关文章

      网友评论

          本文标题:2020-07-02 js 错误监听方法

          本文链接:https://www.haomeiwen.com/subject/beerqktx.html