手机web前端调试页面的几种方式
前言
PC端web页面调试比较容易,这里主要说几种移动端调试的方法,从简单到复杂、从模拟调试到远程调试,大概分为几部分:
1、Chrome DevTools(谷歌浏览器)的模拟手机调试
2、weinre(web inspector remote)远程调试工具
3、微信的“web开发者工具”,集成了Chrome DevTools和weinre,做的比较好
4、Chrome DevTools远程调试Android和iOS页面
5、Eruda——手机网页前端调试面板
阅读说明
本文不是小白文,需要一定前端基础才能看懂;此外,本文并不是调试教程,很多细节并没有截图或者描述的很清楚,就如我说的已经默认阅读者懂得一些基本的调试方法;
我这里主要是对几种调试方式进行汇总,方便自己也方便他人看完文章之后知道更多的调试方式;如果遇到哪一步自己看不懂可以百度或者评论区留言,谢谢!
1、Chrome DevTools模拟手机调试
直接使用谷歌浏览器的开发者工具,可以参照下图,也可以使用快捷键F12或者ctrl+shift+I;个人觉得不管是哪个浏览器,直接先按下F12,一般都可以打开开发者工具,打不开再说嘛。
这种调试方式不仅能用于模拟手机调试还是主要的PC端页面调试的方式,这里主要说用于手机调试。
打开后看到类似如下界面的开发者调试界面,Elements可以查看文档元素,Console可以在线调试js和查看输出结果,Sources可以调试JS和查看依赖资源,Network查看所有的网络请求
在浏览器地址栏输入要调试的页面地址,选择模拟设备,然后就可以选择要调试的js调试了,右侧面板中有调试操作按钮;在Application面板中可以看到应用存储的数据Cookies什么的
如果没有需要模拟的机型怎么办?当然是增加了,打开DevTools的设置面板,左图中的Setting点开会出现右图,如下:
2、weinre(web inspector remote)远程调试工具
weinre其实是在待调试的页面中嵌入了一个特定的js,这样页面才能被weinre监测到并能打开调试面板;要注意weinre的调试面板不能调试JS,也不支持打断点调试,仅能用于调试页面样式,使用场景有限;
根据自己需要来选择吧,具体的使用安装过程参考:http://blog.csdn.net/freshlover/article/details/42640253;由于我使用的较少,也并不推荐这款工具,所以只是作为介绍和了解放在这里;如果想
对weinre深入了解的自己参考链接中的内容琢磨吧。
3、微信的“web开发者工具”
微信的web开发者工具,集成了谷歌的DevTools和weinre,可以说是上面两点的集合,对于那些微信公众号里面使用的H5网页,这个是最好的选择;
这个工具调试一般性的网页就和谷歌浏览器调试一样,看到的调试面板也差不多;但是如果要调试微信相关的功能比如:JS-SDK,权限列表等就必须使用这个工具了
工具下载地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140&token=&lang=zh_CN
除了使用url模拟调试外,微信的web工具也能对安卓手机进行远程调试,目前最新版还不支持iOS远程调试,打开设备监视面板:
打开后看到如下界面,可以看到有一台华为设备已经连接,远程调试要注意两点:
1、手机和电脑使用usb连接,手机要开启usb调试模式(不同手机不一样)
2、手机上安装最新版谷歌浏览器并打开
然后点击inspect即可开始调试当前手机谷歌浏览器打开的页面,这里不细说这个了,也没必要细看,下面会详细说明
再看看微信的移动调试,iOS提供的只有普通代理测试,Android除了代理测试,还有X5 Blink内核调试;但是并不是所有手机都支持X5 Blink;所以普遍还是使用代理调试
手机的wifi网络配置好代理后,点击开始调试,出现监控界面,发现其实就是使用的weinre来实现的,不过微信对其做了改进,相比直接使用 weinre 有以下优点:
1、无须手工在页面中加入 weinre 调试脚本,这点很方便
2、可以在 weinre 的网络请求页卡Network中,看到完整的http请求log,并且没有只能看到ajax的局限
但是也有弊端,由于是微信开发的工具,移动调试只能调试微信App中打开的页面而且并不是所有能在微信中打开的网页都能调试,怀疑是工具内部做了过滤
重启微信后,在微信中访问页面,可以被监测到,然后可以调试网页样式了,在Network页卡中能看到每个请求的参数与响应结果
总之,如果调试页面是微信中的页面(一般就是公众号)使用微信提供的工具效率很高;如果是一般浏览器中的页面也可以使用微信的Chrome DevTools但最好不用weinre
4、Chrome DevTools远程调试Android和iOS页面
电脑上安装新版谷歌浏览器,然后地址栏输入chrome://inspect会打开设备监视页面,这里可以监视到iOS和Android设备,如果界面和图中不一致请安装最新版浏览器
Android:
前提:
1、手机和电脑使用usb连接,手机要开启usb调试模式(不同手机不一样)
2、手机上安装最新版谷歌浏览器并打开
会发现设备监视页面多出了一个华为设备,并且能看到当前手机上谷歌浏览器打开的网页的连接
a):可以在这里输入手机要打开的url然后open,手机上显示的当前页面就会改变
b):inspect表示开始调试当前页面,会打开调试面板(重要)
c):focus tab,表示让手机显示当前这个连接
d):reload表示重新加载页面,也就是刷新
e):close表示关闭当前手机显示的页面
接下来,点击inspect开始调试页面,注意如果google浏览器不能翻|墙的话,这个调试页面是打不开的,可以百度修改hosts文件翻|墙
然后就可以像调试PC端网页一样远程调试手机网页了
iOS(window系统上,如果是macbook系统忽略此部分):
可以参考:http://www.cnblogs.com/kelsen/p/6402477.html
前提:
1、电脑安装iTunes软件,不然苹果手机不能正常被识别,安装好后数据线连接手机和电脑
2、打开手机的设置——>Sarafi——>高级——>Web检查器——>启用(默认是关闭的,将其打开)
3、下载ios-webkit-debug-prox代理(32位或者64位),其作用就是在Chrome和Sarafi之间建立了一个代理,便于电脑的Chrome检测手机Sarafi打开的页面
4、在cmd中执行ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html,命令中-f是以谷歌内置的监视器来调试(默认使用远程的)
启动后会监听9222端口,然后看到连接上了一台名为jiba的iOS设备,括号中为设备的UDID;然后看谷歌浏览器是否检查了这个端口,右图中有9222端口即可,没有就手动添加
此时打开手机Sarafi浏览器,打开百度首页,发现浏览器能检测到,没看到就刷新这个监视界面,一般来说会在3秒内自动出现
点击inspect同样出现了调试面板,如下,发现iOS调试的面板不能看到手机屏幕在电脑上的投影,不过这并不影响调试;但是可能会遇到在调试js时断点不生效的问题,
如果很不幸遇到这个问题的话,将图中红框中的按钮连续点击两次——先禁用断点再启动即可恢复端点调试功能,不知道为什么,猜测是这个过程中恢复了断点的状态;这个问题很奇葩。
到这里使用Chrome调试iOS和Android就都完了,这种使用谷歌浏览器的方式,在Android上依赖于手机谷歌浏览器,在iOS上依赖Sarafi浏览器,受到具体软件的限制;不过可以理解,毕竟远程调试不如模拟调试简单
5、Eruda——手机网页前端调试面板
eruda是什么?正如标题所言,是用来在手机上调试页面的,注意是在手机上不是在电脑上;前面说的几种调试方式都是在电脑上模拟调试或者远程调试手机页面,但eruda是直接在手机上调试页面。
有什么好处?如果非要说好处就是能够直接在手机上打开类似PC端开发者面板一样的调试面板,主要用途是当PC端调试手机页面和手机上运行时效果不一致时可以直接在手机上调试。
示意图(手机上调试效果图):
具体资料:https://www.oschina.net/p/eruda
目前我用的比较少,但是不失为一种值得推荐的调试工具。总的来说,一般开发者都是直接在PC上调试页面(不管是PC端页面还是手机端页面),因此在开发过程中推荐使用Chrome DevTools或者微信web开发者工具来调试,
当然有同学说我用的是360浏览器,其实不管你用什么浏览器除了内核差异,调试模式基本都和Chrome DevTools差不多;这里我要说的是一般调试页面时直接使用PC端来调试就可以了,但是发现在真机上运行效果和预期不一致
则可以采用Eruda来实现真机调试进而定位并解决问题。
以上工具并不是互相独立存在的,很有可能需要多种方式联合调试来解决一个问题,毕竟我们不能把自己框死在一个工具里,应该扬长避短;
最后,由于本人是后台工程师,对前端是处于业余爱好,经验有限,肯定还有很多我不知道的优秀调试工具或者调试方式,知道的还请联系我,大家互相促进提升。
手机web前端调试页面的几种方式的更多相关文章
- 【转】手机web前端调试页面的几种方式
前言 PC端web页面调试比较容易,这里主要说几种移动端调试的方法,从简单到复杂.从模拟调试到远程调试,大概分为几部分: 1.Chrome DevTools(谷歌浏览器)的模拟手机调试 2.weinr ...
- java web前端发送请求的4种方式
表单 action, 链接href,js 绑定按钮 ajax绑定标签 <h1>通过表单提交参数</h1> <form action="/day46_v1/Ser ...
- Web 前端必备的各种跨域方式汇总
Web 前端必备的各种跨域方式汇总 跨域方式汇总 同源策略 协议相同 + 域名相同 + 端口相同 https://www.xgqfrms.xyz/index.html https://www.xgqf ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
- ORACLE SQL前端补0的三种方式。
前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00 ...
- 网络笔记01-3 socket 实现百度页面的两种方式
scoket 实现百度页面的两种方式: 1.利用系统自带 //1.创建URL NSURL *url=[NSURL URLWithString:@"http://m.baidu.com& ...
- WebView加载页面的两种方式——网络页面和本地页面
WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...
- MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式。
原文链接:https://www.muhanxue.com/essays/2015/01/8623699.html MVC web api 返回JSON的几种方式 1.在WebApiConfig的Re ...
- OneOS下调试支持的几种方式
方法论 当我们遇到问题,应该怎么办?这不仅应用于程序开发,也是我们在生活中遇到问题的时候,应该想的事儿,怎么办!趁着此次机会,我好好想了七秒钟. 先问是不是问题,如果不是就不用解决了 如果确实是问题, ...
随机推荐
- java多线程系列:Semaphore和Exchanger
本篇文章将介绍Semaphore和Exchanger这两个并发工具类. Semaphore 信号量(英语:Semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值.当 ...
- 2013年第四届蓝桥杯省赛试题(JavaA组)
1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分6分)4.结果填空 (满分13分)5.代码填空 (满分5分)6.代码填空 (满分10分)7.程序设计(满分4分)8.程序设计(满 ...
- PostgreSQL 设置主键的序列值
1. 问题的提出 PostgreSQL定义TABLE时,主键的字段类型可以设定为自增类型serial,即插入每条记录时,主键的值自动加1.但是,当插入数据的时候指定了具体的主键值,例如主键值从0到50 ...
- c#处理未捕获的异常(UnhandledException)
处理未捕获的异常,放在program类的Main函数下 1.UnhandledException 作用:接收未捕获到的异常 例: static void Main(string[] args) { A ...
- 关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧
项目中用到了对两个集合的帅选等操作,简单总结下 1.Linq操作多个Datable 可以通过AsEnumerable()方法对DataTable进行Linq操作 //获取数据表所有数据 DataTab ...
- 区块链中的密码学(-)区块链中运用最广的散列算法-SHA256算法分析与实现
在很多技术人员的眼中,区块链并不是一种新的技术,而是过去很多年计算机技术的组合运用.而在这个方方面面技术的运用上,基于密码学的加密算法可以说是区块链各种特点得以表现的根本,一旦目前使用的加密算法被证实 ...
- powershell 操作sharepoint命令集
打开SharePoint 2013 Management Shell, and then run as administrator.执行如下命令 1. 添加wsp和安装Add-SPSolution - ...
- (转)Jmeter参数化
设置参数值的方法有如下几种: 1. 用Jmeter中的函数获取参数值,__Random,__threadNum,__CSVRead,__StringFromFile,具体调用方法如下:${__Rand ...
- 浅谈python web框架django2.x
1.Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种.许多成功的网站和APP都基于Django. Django是一个开源的Web应用框架,由Python写成. ...
- [USACO08NOV]安慰奶牛Cheering up the Cow BZOJ 1232 Kruskal
Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1..N. 每一个牧场都是一 ...