久久www免费人成看片老司机_母亲4在线观看完整版 百度_波多野结衣久久_亚洲午夜成人片_天美传媒国产精品果冻

 
您現(xiàn)在的位置:首頁 ? 新聞動態(tài) ? 公司新聞 公司新聞
如何做一個App里的web調(diào)試小工具
發(fā)布日期:2016-10-07

       我們知道現(xiàn)在hybrid app非常流行,在這樣的app里,h5頁面是應(yīng)用非常廣泛的。相對于以往在pc端開發(fā)的網(wǎng)頁,放在app里的網(wǎng)頁由于無法直接使用桌面瀏覽器的開發(fā)者工具,導(dǎo)致我們在有時候在調(diào)試的時候不知道到底報了什么錯。所以我們需要一個能夠在調(diào)試app內(nèi)h5的調(diào)試工具,方便我們定位bug。

       現(xiàn)在市面上已經(jīng)有很多比較成熟的工具可以用,例如jsconsole、weinre,都是平常會用到的。但是我自己還是想做一個debug工具,一方面是這些調(diào)試工具有一定學(xué)習(xí)成本,我們能不能就引入一個js就能開始調(diào)試呢?另一方面這些工具只能在開發(fā)階段使用,那么我想在讓線上的網(wǎng)頁直接上報bug到服務(wù)器,方便我們內(nèi)部直接獲取呢?

web前端報錯都有哪些?

       要做這樣一個工具,我們首先得知道前端的報錯里面都有哪些:

JavaScript運行時錯誤

try,catch時主動拋出的錯誤

資源(img、script、link等)下載時的錯誤

ajax請求時的錯誤

……

如果獲取這些錯誤信息?

錯誤類型 觸發(fā)機(jī)制 錯誤類型

1.JavaScript運行時錯誤 通過監(jiān)聽window的error事件獲取 ErrorEvent

2.try,catch時主動拋出的錯誤 通過catch(e)的參數(shù)e獲取 Error

3.資源下載時的錯誤 通過監(jiān)聽元素的error事件獲取 Event的error類型

4.ajax請求時的錯誤 通過監(jiān)聽window的error事件獲取 ErrorEvent

try,catch

try { throw new Error;}catch (err) { callback(err) // err為Error的實例 }

window.onerror

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

element.onerror

element.onerror = function(event) { ... }

相關(guān)的屬性

      在上面的幾種錯誤類型里,Error的prototype上有一些屬性可供實例訪問獲得,而ErrorEvent繼承自Event,但ErrorEvent本身增加了一些類似Error的屬性可供獲取,所以我們可以通過一樣的屬性獲取相關(guān)字段信息。而Event的error類型則不同,我們下文再詳述。

Error的屬性

屬性 描述

Error.prototype.constructor Error實例原型的構(gòu)造函數(shù)

Error.prototype.message 錯誤信息描述

Error.prototype.stack 發(fā)生錯誤的堆棧跟蹤

ErrorEvent的屬性

屬性 描述

ErrorEvent.prototype.constructor ErrorEvent實例原型的構(gòu)造函數(shù)

ErrorEvent.prototype.message 錯誤信息描述

ErrorEvent.prototype.filename 發(fā)生錯誤的腳本文件的文件名

ErrorEvent.prototype.lineno 錯誤發(fā)生時所在的行號

ErrorEvent.prototype.lineno 錯誤發(fā)生時所在的列號

ErrorEvent.prototype.error 發(fā)生錯誤時所拋出的 Error 對象

      可以看到ErrorEvent對象里的error屬性是一個Error的實例,因此我們可以獲得這兩個錯誤類型的堆棧跟蹤,從而獲取出錯的代碼位置。

      而Event的error類型無法獲取錯誤的相關(guān)堆棧,因此我們只能通過event.target去獲取觸發(fā)這一事件的元素是誰。

      小工具debuggerjs

      通過上面的總結(jié),我們已經(jīng)知道前端會出現(xiàn)的一些常見錯誤情況,根據(jù)上面的思路,我自己寫了一個小工具debuggerjs,奉上github地址:https://github.com/zyf394/debuggerjs,歡迎吐槽,如果可以的話幫忙點個star哦~

       TODOList

      增加打log時上報服務(wù)器的邏輯

      處理代碼壓縮后獲取的報錯信息可讀性弱的問題

      其他說明

       如果使用zepto或者jQuery,在error回調(diào)里獲取的error參數(shù)只是一個XHR對象,無法獲取對應(yīng)的error對象(why?)

  • 1.公司登記注冊于2003年1月27日,清遠(yuǎn)市桑達(dá)電子網(wǎng)絡(luò)媒體有限公司
    2.公司2006年起成為清遠(yuǎn)市政府定點協(xié)議供貨商,電子采購供貨商
    3.公司2007年被清遠(yuǎn)市相關(guān)政府部門評為安防行業(yè)狀元
    4.公司2007年起成為長城電腦清遠(yuǎn)如意服務(wù)站(SP368)
    5.公司2007年承建清遠(yuǎn)市橫河路口電子警察工程,開創(chuàng)清遠(yuǎn)電子警察先河。
  • 6.公司2007年起成為IBM合作伙伴、公司2010年底成為金蝶軟件清遠(yuǎn)金牌代理(伙伴編號:30030013)
    7.公司組團(tuán)隊參加南方都市報組織的創(chuàng)富評選,獲廣東80強(qiáng)。公司申請多項軟件著作權(quán)、專利權(quán)
    8.2016年起公司成為粵東西北地區(qū)為數(shù)不多的雙軟企業(yè),確立“讓軟件驅(qū)動世界,讓智能改變生活!"企業(yè)理想
    9.2016-01-29更名為廣東互動電子網(wǎng)絡(luò)媒體有限公司
    10.2021-01-13更名為廣東互動電子有限公司
  • 投資合作咨詢熱線電話:0763-3391888 3323588
  • 做一個負(fù)責(zé)任的百年企業(yè)! 天行健,君子以自強(qiáng)不息;地勢坤,君子以厚德載物;
    為用戶創(chuàng)造價值! 讓軟件驅(qū)動世界; 讓智能改變生活; 超越顧客期望,幫助顧客成功;
    對客戶負(fù)責(zé),對員工負(fù)責(zé),對企業(yè)命運負(fù)責(zé)!幫助支持公司的客戶成功;幫助忠誠于公司的員工成功!
  • 聯(lián)系電話:0763-3391888 3323588 3318977
    服務(wù)熱線:18023314222 QQ:529623964
  • 工作QQ:2501204690 商務(wù)QQ: 602045550
    投資及業(yè)務(wù)投訴QQ: 529623964
    微信:小米哥 微信號:qysed3391888
    騰訊微博:桑達(dá)網(wǎng)絡(luò)-基石與起點
  • E-MAIL:222#QYSED.CN ok3391888#163.com (請用@替換#)
在線客服
  • 系統(tǒng)集成咨詢
    點擊這里給我發(fā)消息
  • 網(wǎng)站\微信\軟件咨詢
    點擊這里給我發(fā)消息
  • 售后服務(wù)
    點擊這里給我發(fā)消息
  • 投資合作
    點擊這里給我發(fā)消息