移動(dòng)端網(wǎng)頁(yè)開(kāi)發(fā)調(diào)試神器Eruda的介紹與使用技巧
前言
眾所周知,我們?cè)谧鲆苿?dòng)端Web開(kāi)發(fā)的一大痛點(diǎn)就是,在真機(jī)運(yùn)行下無(wú)法查看console.log日志和其他信息如網(wǎng)絡(luò)請(qǐng)求、顯示本地存儲(chǔ)等信息。如果網(wǎng)頁(yè)是運(yùn)行在手機(jī)瀏覽器中還算好,可以把網(wǎng)址在電腦上打開(kāi)查看console信息,但是如果是做APP的內(nèi)嵌H5頁(yè)面,那就只能靠開(kāi)發(fā)階段在瀏覽器模擬環(huán)境中盡量沒(méi)有Bug,但是,一旦H5上線(xiàn)后報(bào)錯(cuò)那就比較麻煩了,而且還依賴(lài)APP環(huán)境才能跑的網(wǎng)頁(yè),更加難以查找問(wèn)題。如果讓移動(dòng)端也擁有類(lèi)似Chrome DevTools工具那豈不是很愉快么?
vConsole便是這樣一款很棒的移動(dòng)端DevTools工具,由大廠(chǎng)企鵝出品。但本文把他定位為男二號(hào),今天的主角男一號(hào)是:Eruda!vConsole的同類(lèi)。如果你不知道怎么在移動(dòng)端調(diào)試網(wǎng)頁(yè),那么本篇文章對(duì)你很有幫助,如果你是vConsole的用戶(hù),那么你也可嘗試一下Eruda,如果你是移動(dòng)端網(wǎng)頁(yè)開(kāi)發(fā)骨灰級(jí)玩家,那么可以選擇低調(diào)的忽略本文。
Eruda是誰(shuí)?
大家好,給大家介紹一下,這是我的.....。Eruda 是一個(gè)專(zhuān)為手機(jī)網(wǎng)頁(yè)前端設(shè)計(jì)的調(diào)試面板,類(lèi)似 DevTools 的迷你版,其主要功能包括:捕獲 console 日志、檢查元素狀態(tài)、顯示性能指標(biāo)、捕獲XHR請(qǐng)求、顯示本地存儲(chǔ)和 Cookie 信息、瀏覽器特性檢測(cè)等等。
GitHub地址為:https://github.com/liriliri/eruda (本地下載),顏值和技能都很棒的Erdua:
詳細(xì)介紹可以戳這里產(chǎn)看,我就不贅述了
使用技巧
這才是本文重點(diǎn)。Eruda的基本使用方法推薦使用CDN和可配置參數(shù)的形式,在頁(yè)面引入如下代碼:
;(function () { var src = '//cdn.bootcss.com/eruda/1.2.4/eruda.min.js'; if (!/eruda=true/.test(window.location) && localStorage.getItem('active-eruda') !== 'true') return; document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>'); document.write('<scr' + 'ipt>eruda.init();</scr' + 'ipt>'); })();
eruda.init();
里面可以傳入要初始化哪些面板,默認(rèn)加載所有。
這樣使用方式?jīng)]有錯(cuò),但是如果Eruda要跟著發(fā)布到線(xiàn)上的話(huà),那我們要?jiǎng)h除這段代碼?因?yàn)檫@樣會(huì)不管你需不需要調(diào)試Eruda都會(huì)立即加載,在頁(yè)面出現(xiàn)Eruda的圖標(biāo)。我的目標(biāo)是,Eruda可以保留在頁(yè)面里,無(wú)論什么環(huán)境,只要我們想呼喚它出現(xiàn)的時(shí)候它才出現(xiàn),不需要它的時(shí)候它只是一段不會(huì)生效的普通代碼。
我想到的辦法是:首先把上述引入代碼的src放到if里,同時(shí)把localStorage改為sessionStorage,active-eruda參數(shù)也可以改個(gè)更短的名字,改后的代碼如下:
;(function () { if (!/eruda=true/.test(window.location) || sessionStorage.getItem('eruda') !== 'true') return; var src = '//cdn.bootcss.com/eruda/1.2.4/eruda.min.js'; document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>'); document.write('<scr' + 'ipt>eruda.init();</scr' + 'ipt>'); })();
這段代碼的意思是如果URL中有參數(shù)eruda=true
或者sessionStorage中eruda的值為true才加載Eruda。這樣的好處是,我們需要調(diào)試的時(shí)候可以在網(wǎng)頁(yè)URL后面加個(gè)參數(shù)即可,不需要調(diào)試的它不會(huì)加載。
然而,這在開(kāi)發(fā)階段可以這樣做比較好,但是在線(xiàn)上環(huán)境可能要加URL參數(shù)比較麻煩。于是我想到了在頁(yè)面中點(diǎn)擊某個(gè)元素10次再加載Eruda,點(diǎn)擊10次或者更多次,然后在sessionStorage中寫(xiě)入eruda=true
,然后刷新當(dāng)前頁(yè)。相反,再點(diǎn)擊10次關(guān)閉Eruda。用這樣比較隱藏的方式開(kāi)啟或關(guān)閉Eruda,這樣線(xiàn)上環(huán)境也可以自由開(kāi)啟或關(guān)閉Eruda了。
例子:假如有這樣的一個(gè)頁(yè)面,里有一個(gè)標(biāo)題文字
<h2>——規(guī)則詳情——</h2> <div> ..... </div>
那么我們可以在h2標(biāo)簽上綁定一個(gè)click事件,加入方法名叫showEruda
<h2 onclick="showEruda">——規(guī)則詳情——</h2> <div> ..... </div> <script> var count = 0; function showEruda () { if (count >= 10) { var erdua = sessionStorage.getItem('erdua'); if (!erdua || erdua === 'false'){ sessionStorage.setItem('eruda', 'true') } else { sessionStorage.setItem('eruda', 'false') } location.reload() } count++ } </script>
這樣點(diǎn)擊規(guī)則詳情10次就可以喚起Eruda了,再點(diǎn)擊10次就關(guān)閉Eruda,反正我覺(jué)得這樣挺好的。
不知道大家都是怎么用的呢?
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
詳解PHP中pathinfo()函數(shù)導(dǎo)致的安全問(wèn)題
這篇文章主要給大家介紹了PHP中pathinfo()函數(shù)導(dǎo)致的安全問(wèn)題,文中給出了詳細(xì)的介紹與示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下,下面來(lái)一起看看吧。2017-01-01微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12form表單中去掉默認(rèn)的enter鍵提交并綁定js方法實(shí)現(xiàn)代碼
form表單中默認(rèn)的enter提交是不是讓你已經(jīng)很耐煩了吧,本文主要講解一下如何去掉默認(rèn)的enter鍵提交同時(shí)綁定js方法,感興趣的朋友可以參考下哈2013-04-04JavaScript遍歷查找數(shù)組中最大值與最小值的方法示例
這篇文章主要介紹了JavaScript遍歷查找數(shù)組中最大值與最小值的方法,結(jié)合實(shí)例形式分析了javascript基于數(shù)組遍歷、判斷實(shí)現(xiàn)最大值與最小值計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下2019-05-058個(gè)開(kāi)發(fā)者必須知道的JavaScript深層概念(推薦)
JavaScript有一個(gè)名為“調(diào)用堆?!保–all Stack)的簡(jiǎn)單列表,它逐一管理任務(wù)(堆棧算法),但是當(dāng)異步任務(wù)被傳遞時(shí),JavaScript會(huì)把它彈出到web API,瀏覽器就會(huì)處理它,這篇文章主要介紹了8個(gè)開(kāi)發(fā)者必須知道的JavaScript深層概念,需要的朋友可以參考下2022-10-10js中document.getElementById(id)的具體用法
本文主要介紹了js中document.getElementById(id)的具體用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04