捕获程序异常之onerror
問題描述:html5頁面在電腦上打開,功能正常,沒有報錯,一旦嵌進微信或者APP,頁面就卡住了,不好排查js問題。
預期結果:手機微信頁面功能失效時,開發人員在console面板能明確看到出錯信息,出錯鏈接,出錯行號。
解決方案1:window.onerror
探索過程:
一、寫一個公用的捕獲js錯誤的autoException.js文件
window.onerror = function(errorMessage, scriptURI, lineNumber,columnNumber,errorObj) {
console.log("errorMessage:"+ errorMessage);
console.log("scriptURI:"+ scriptURI);
console.log("lineNumber:"+ lineNumber);
console.log("columnNumber:"+ columnNumber);
console.log("errorObj:"+ errorObj);
}
首先,在html5頁面引入index.js和autoException.js,接著,在index.js中故意引用一個未定義的變量,刷新頁面,這時會在console面板看到”Script error“報錯。為什么報錯信息是”Script error“,不是我們想看到的出錯信息呢?因為頁面的域名是m.aiyingshi.com,而靜態資源的域名是static.anhouse.com,存在跨域問題,因此先解決資源跨域問題。
二、解決跨域資源共享的問題Cross-Origin Resource Sharing (CORS)
1、在服務端
1 Access-Control-Allow-Origin:* 2 Access-Control-Allow-Credentials:true
2、在前端頁面的script標簽增加crossorigin="anonymous"屬性。anonymous意味著,不需要證件,就可以訪問文件,相當于匿名CORS;如果使用 crossorigin=“use-credentials”,則相當于帶認證的 CORS。
解決方案2:抽象語法樹
使用babel插件對Javascript源代碼生成的AST(抽象語法樹)進行轉換,最終對所有的函數生成try catch包裹代碼。http://foio.github.io/babel-try-catch/
總結
以上是生活随笔為你收集整理的捕获程序异常之onerror的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Annotation 注解
- 下一篇: 021_supervise进行管理利器