移动端网页开发调试神器Eruda的介绍与使用技巧


Posted in Javascript onOctober 30, 2017

前言

众所周知,我们在做移动端Web开发的一大痛点就是,在真机运行下无法查看console.log日志和其他信息如网络请求、显示本地存储等信息。如果网页是运行在手机浏览器中还算好,可以把网址在电脑上打开查看console信息,但是如果是做APP的内嵌H5页面,那就只能靠开发阶段在浏览器模拟环境中尽量没有Bug,但是,一旦H5上线后报错那就比较麻烦了,而且还依赖APP环境才能跑的网页,更加难以查找问题。如果让移动端也拥有类似Chrome DevTools工具那岂不是很愉快么?

vConsole便是这样一款很棒的移动端DevTools工具,由大厂企鹅出品。但本文把他定位为男二号,今天的主角男一号是:Eruda!vConsole的同类。如果你不知道怎么在移动端调试网页,那么本篇文章对你很有帮助,如果你是vConsole的用户,那么你也可尝试一下Eruda,如果你是移动端网页开发骨灰级玩家,那么可以选择低调的忽略本文。

Eruda是谁?

大家好,给大家介绍一下,这是我的.....。Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、显示性能指标、捕获XHR请求、显示本地存储和 Cookie 信息、浏览器特性检测等等。

GitHub地址为:https://github.com/liriliri/eruda (本地下载),颜值和技能都很棒的Erdua:

移动端网页开发调试神器Eruda的介绍与使用技巧

详细介绍可以戳这里产看,我就不赘述了

使用技巧

这才是本文重点。Eruda的基本使用方法推荐使用CDN和可配置参数的形式,在页面引入如下代码:

;(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();里面可以传入要初始化哪些面板,默认加载所有。

这样使用方式没有错,但是如果Eruda要跟着发布到线上的话,那我们要删除这段代码?因为这样会不管你需不需要调试Eruda都会立即加载,在页面出现Eruda的图标。我的目标是,Eruda可以保留在页面里,无论什么环境,只要我们想呼唤它出现的时候它才出现,不需要它的时候它只是一段不会生效的普通代码。

我想到的办法是:首先把上述引入代码的src放到if里,同时把localStorage改为sessionStorage,active-eruda参数也可以改个更短的名字,改后的代码如下:

;(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中有参数eruda=true或者sessionStorage中eruda的值为true才加载Eruda。这样的好处是,我们需要调试的时候可以在网页URL后面加个参数即可,不需要调试的它不会加载。

然而,这在开发阶段可以这样做比较好,但是在线上环境可能要加URL参数比较麻烦。于是我想到了在页面中点击某个元素10次再加载Eruda,点击10次或者更多次,然后在sessionStorage中写入eruda=true,然后刷新当前页。相反,再点击10次关闭Eruda。用这样比较隐藏的方式开启或关闭Eruda,这样线上环境也可以自由开启或关闭Eruda了。

例子:假如有这样的一个页面,里有一个标题文字

<h2>——规则详情——</h2>
<div>
.....
</div>

那么我们可以在h2标签上绑定一个click事件,加入方法名叫showEruda

<h2 onclick="showEruda">——规则详情——</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>

这样点击规则详情10次就可以唤起Eruda了,再点击10次就关闭Eruda,反正我觉得这样挺好的。

不知道大家都是怎么用的呢?

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript基础的动画教程,直观易懂
Jan 10 Javascript
在chrome中window.onload事件的一些问题
Mar 01 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
jqgrid 编辑添加功能详细解析
Nov 08 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
详解vue嵌套路由-params传递参数
May 23 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
Aug 02 Javascript
ES6 javascript的异步操作实例详解
Oct 30 #Javascript
React Native 搭建开发环境的方法步骤
Oct 30 #Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
Oct 30 #Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 #Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 #Javascript
原生JS与jQuery编写简单选项卡
Oct 30 #jQuery
简单实现jQuery弹窗效果
Oct 30 #jQuery
You might like
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php无限遍历目录示例
2014/02/21 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python如何实现文本转语音
2016/08/08 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
党员干部公开承诺书
2014/03/26 职场文书
财务情况说明书范文
2014/05/06 职场文书
房屋授权委托书范本
2014/10/07 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js