最近有個頁面寫好後在 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: *
(怎樣添加?)跨域
在工做中,咱們常常遇到本地沒法重現的錯誤,咱們能夠將 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個參數看名字就能知道大概意思了。error
,Error Object (object) 表示當前錯誤對象,包含當前錯誤比較詳細的堆棧等信息,須要比較新的瀏覽器纔有這個參數。服務器
這樣咱們就能夠利用 onerror 收集用戶的 JavaScript 報錯信息了cors
完整的 JavaScript 錯誤收集系統見下面的參考連接。post
原文地址:https://uedsky.com/2016-09/catch-javascript-error/
獲取最佳閱讀體驗並參與討論,請訪問原文