<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      移動web開發調試工具AlloyLever介紹

      2016-05-10 13:27  【當耐特】  閱讀(3207)  評論(1)    收藏  舉報

      簡介

      web調試有幾個非常頻繁的剛需:看log、看error、看AJAX發包與回包。其他的如timeline和cookie以及localstorage就不是那么頻繁,但是AlloyLever都支持。如你所見:

      pv

      特征

      • 點擊alloylever按鈕之間切換顯示或隱藏工具面板
      • Console會輸出所有用戶打印的日志如console.[log/error/info/debug/debug]
      • Console會輸出所有的錯誤信息(腳本錯誤和網絡請求錯誤)
      • XHR面板會輸出所有(XMLHttpRequest)AJAX請求和服務器端返回的數據
      • Resouces面板會輸出所有的Cookie信息和LocalStorage
      • TimeLime面板會輸出頁面相關的生命周期里的時間段耗時情況

      演示

      demo

      http://alloyteam.github.io/AlloyLever/

      Install

      可以通過npm安裝:

      npm install alloylever
      

      使用

      你的頁面只需要引用一個js即可!

      <script src="alloylever.js"></script>
      

      但是需要注意的是,該js必須引用在其他腳本之前。至于為什么,看下面的原理。

      Console截獲

      window.console = {
          wc: window.console
      };
      var self = this;
      ['log', 'error', 'warn', 'debug', 'info'].forEach(function (item) {
          console[item] = function (msg) {
              this.wc[item](msg);
              self.log(msg, item);
          }
      });
      
      

      重寫了console方法,并且保存下window下真正的方法進行執行,并且注入自己的事件。

      AJAX截獲

      var XHR = window.XMLHttpRequest;
      
      window.XMLHttpRequest=function(){
          var xhr = new XHR();
          checkSuccess(xhr);
          return xhr;
      };
      
      window.XMLHttpRequest.realXHR = XHR;
      
      var self=this;
      
      function checkSuccess(xhr) {
          if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
              self.option.xhrs.push({url:xhr.responseURL, json:JSON.stringify(JSON.parse( xhr.responseText), null, "\t")})
          }else if(xhr.status>=400) {
              console.error(xhr.responseURL +' '+xhr.status+' ('+xhr.statusText+')')
          }
          else{
              window.setTimeout(function () {
                  checkSuccess(xhr);
              }, 0);
          }
      }
      

      如上面所示,重寫了XMLHttpRequest對象。用戶new的對象全部為重寫后的,返回的是真正的。這樣就可以拿到所有用戶創建的XMLHttpRequest對象的實例進行監聽。

      Error截獲

      其中error包含兩部分,第一部分是js報的錯誤,通過下面的方式截獲:

      window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
          console.error('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber
              + ' Column: ' + column + ' StackTrace: ' + errorObj);
      }
      

      這里執行的時候console已經被重寫了。所以自己的console面板也能看到錯誤。

      第二部分是資源加載失敗報的錯,通過遍歷HTML dom節點拿到所有的 js/css/img,然后再次發送請求。js和css通過XMLHttpRequest發請求,監聽狀態。,img通過new Image(),監聽onerror。具體代碼參見: https://github.com/AlloyTeam/AlloyLever/blob/master/src/component/alloy_lever/index.js

      其他

      Timeline通過timing.js獲得所有信息,timing.js基于window.performance封裝的類庫。Cookie和localStorage通過js遍歷得到。

      相關

      Github: https://github.com/AlloyTeam/AlloyLever
      Issues: https://github.com/AlloyTeam/AlloyLever/issues

      歡迎試用反饋。

      主站蜘蛛池模板: 免费av深夜在线观看| 无码免费中文字幕视频| 精品人妻伦一二三区久久aaa片| 在线精品自拍亚洲第一区| 亚洲国产欧美在线观看片| 亚洲中文字幕无码久久2017 | 极品无码国模国产在线观看| 国产亚洲精品第一综合麻豆| 亚洲国产精品日韩在线| 波多野结衣的av一区二区三区| 高清国产一区二区无遮挡| 一区二区三区国产亚洲网站| 黑巨人与欧美精品一区| 四虎影视永久在线精品| 日本道不卡一二三区视频| 潮喷失禁大喷水无码| 亚洲AV旡码高清在线观看| 久久精品国产久精国产果冻传媒| 国内精品久久久久电影院| 女人香蕉久久毛毛片精品| 一区二区中文字幕av| 高雄市| 国产精品国产三级国产an| 久久人搡人人玩人妻精品 | 四虎成人在线观看免费| 性欧美vr高清极品| 亚洲欧美综合精品成| 亚洲国产精品无码久久久| 久章草这里只有精品| 国产成AV人片久青草影院| 精品久久久久中文字幕日本| 在线成人国产天堂精品av| 亚洲国产精品人人做人人爱| 人妻系列中文字幕精品| 国产乱色国产精品免费视频| 巨熟乳波霸若妻在线播放| 99精品热在线在线观看视| 亚洲自拍偷拍激情视频| 国产愉拍91九色国产愉拍| 人妻少妇久久久久久97人妻| 亚洲香蕉视频天天爽|