前端 JavaScript 錯誤收集

前言

最近有個頁面寫好後在 Chrome devtools 裏運行正常,可是手機上運行時卻出了問題,就想着在代碼裏添加下面的內容,到手機上顯示錯誤消息javascript

window.onerror = function (msg, url, lineNo, columnNo, error) {
  alert('Error: ' + msg + ' Script: ' + url + '\nPosition: ' + lineNo + ' / ' + columnNo
   + '\nStackTrace: ' +  error);
  return false;
};

但是到手機上一看,錯誤信息並無打印出來,而是 Error: Script error
只好放狗 (Google) 一查,原來是跨域問題html

<!--more-->前端

解決跨域問題

  • script 添加 crossorigin 屬性java

    <script crossorigin src="...">
  • 而後爲 js 文件添加跨域 header Access-Control-Allow-Origin: *怎樣添加?跨域

收集 JavaScript 錯誤

在工做中,咱們常常遇到本地沒法重現的錯誤,咱們能夠將 onerror 捕獲的錯誤信息提交到服務器,這樣咱們就知道用戶在訪問咱們的網頁時的 js 錯誤,方便 BUG 定位等。瀏覽器

window.onerror = function (msg, url, lineNo, columnNo, error) {
  var errorData = {
    msg: msg,
    url: url,
    lineNo: lineNo,
    columnNo: columnNo,
    error: error,
    ua: navigator.userAgent // 須要的調試的其它信息也能夠收集,好比已登陸的用戶id
  };
  $.post('/js-logger', errorData);
  return false;
};

參數解析

msg, url, lineNo, columnNo, 這4個參數看名字就能知道大概意思了。
errorError Object (object) 表示當前錯誤對象,包含當前錯誤比較詳細的堆棧等信息,須要比較新的瀏覽器纔有這個參數。服務器

總結

這樣咱們就能夠利用 onerror 收集用戶的 JavaScript 報錯信息了cors

完整的 JavaScript 錯誤收集系統見下面的參考連接。post

參考連接

原文地址:https://uedsky.com/2016-09/catch-javascript-error/
獲取最佳閱讀體驗並參與討論,請訪問原文

相關文章
相關標籤/搜索