1. 程式人生 > >app混合開發之新增除錯控制檯vconsole

app混合開發之新增除錯控制檯vconsole

當內嵌在app內的h5頁面出現錯誤時,無法像在電腦一樣按f12除錯,檢視報錯資訊,這時候就可以用上vconsole

簡單的用法是:
下載 vConsole 的最新版本或者使用 npm 安裝:npm install vconsole

/*index.html */

<!-- src是vconsole.min.js的檔案位置 -->   
<script src="static/vconsole.min.js"></script>   
<script>
  // 初始化
  var vConsole = new VConsole();
  console.log('Hello world'
);
</script>

但其實這樣,會一直顯示著,如果一不小心待到生產環境就不好了,這便需要觸發時顯示更友好,當這時候就要介紹下AlloyLever,用法是如下:

/*index.html */

<body>
   <!-- id為entry是觸發顯示vconsole的div -->
    <div id="entry" style="position: absolute;top: 0;right: 0;z-index:999;width: 30px;height: 40px;background: transparent"></div>
   <!-- 這是顯示的內容 -->
<div id="app-box"></div> </body> <!-- src是alloy-lever.js的檔案位置 --> <script src="static/alloy-lever.js"></script> <script> AlloyLever.config({ cdn:'//s.url.cn/qqun/qun/qqweb/m/qun/confession/js/vconsole.min.js', //vconsole CDN address
reportUrl: "//a.qq.com", //Error reporting address reportPrefix: 'qun', //An error reporting msg prefix is generally used to differentiate business types reportKey: 'msg', //Error reporting msg prefix key, user reporting system receives storage msg otherReport: { //Other information to be reported uin: 491862102 }, entry:"#entry" //請點選這個DOM元素召喚vConsole 6次。 您可以使用AlloyLever.entry(# entry2)新增更多的條目}) }) console.log('this is log content')
</script>

但為了防止使用者誤操作點選觸發了,便給了AlloyLever點選間隔時間,在檔案alloy-lever.js找到AlloyLever.entry = function(selector){}

 AlloyLever.entry = function(selector) {
        // 自己加的
        var firstTime = 0;      //第一次點選時間
        var secondTime = 0;     //第二次點選時間
        var timeBucket = 0;     //兩次點選時間差
        var flag = true;        //判斷是第幾次點選的狀態

        var count = 0,
            entry = document.querySelector(selector)
        if(entry) {
            entry.addEventListener('click', function () {
                var date = new Date();                                  //點選後首先獲取當前時間
                var seconds = date.getTime();                           //獲取毫秒數
                if(flag){                                               //前次點選
                    firstTime = seconds;                                //前次點選時間
                    flag = false;
                }else{
                    secondTime = seconds;                               //時間賦給後次點選
                    flag = true;
                }
        
                timeBucket = Math.abs(secondTime - firstTime);          //時間差
                // console.log(firstTime);
                // console.log(secondTime);
        
                if(secondTime == 0){                                    //如果是第一次點選,則執行以下程式碼
                    count++;
                }else{
                    if(timeBucket > 1000){                                //如果兩次點選間隔大於5秒時;
                        count = 0;                                        //正常有效執行加1
                        console.log("點太慢了,請重新點選!");
                    }else{                                                //如果兩次點選間隔小於1秒,則執行以下程式碼
                        count++
                        if (count > 10) {
                            count = -10000
                            AlloyLever.vConsole(true)
                        }
                        console.log("已經點了" + count + '下' );
                    }
                }

                // count++
                // if (count > 5) {
                //     count = -10000
                //     AlloyLever.vConsole(true)
                // }
            })
        }
    }

最後給一個在非app端開啟h5頁面時,需要跳到下載app的魔窗連結,這個魔窗功能是其他同事實現的,等有時間研究下,再寫關於魔窗的用法