浏览器开发者工具到底是什么?
其实简单的说 , 浏览器开发者工具就是给专业的web应用和网站开发人员使用的工具,当然只要你有兴趣想要了解 , 只要你对这个世界充满这好奇,什么东西你都可以了解 。
开发者工具到底有什么用?
它的作用在于,帮助开发人员对网页进行布局,比如HTML+CSS,帮助前端工程师更好的调试脚本(JavaScript、jQuery)之类的,还可以使用工具查看网页加载过程 , 获取网页请求(这个过程也叫做抓包),抓包是非常有意思的过程 , 而每一个浏览器厂商生产出来的浏览器都会有自己的杀手锏,也就是功能上的差别 , 那么这个时候你就找一个最适合自己的浏览器使用就可以,接下来就是介绍我常用的三个浏览器 。
chrom浏览器打开-开发人员工具-方式如下:
文章插图
手动打开开发者工具的方法
当然 , 也可使用快捷方式,最为简便:打开方式有两种:第一“按F12”,第二:shift+ctrl+i
文章插图
开发人员工具的界面
下面 , 为大家介绍下几个功能的使用方法:
ElementsElements工具像一把手术刀一样“解剖”了当前页面 , 我们看到的Elements页面一般像这样子:
文章插图
图中标记为1的红色区块为页面HTML文件,HTML中的每个元素比如
<body>、<p>
都是一个DOM节点 , 所有的DOM节点组成了DOM树 。我们完全可以把红色区块1当做是DOM树,把HTML元素标签看做DOM节点 。当我们在这里选中某一DOM对象时,网页中相应元素也会被阴影覆盖 。我们可以对DOM对象进行修改,修改后结果会在页面实时显示出来 。此外,还可以用 Command + f 搜索DOM树中指定的内容,或者是以HTML形式更改页面元素,如下图:
文章插图
选中DOM对象之后右键即可以看到一些辅助的功能,如图中标记为2的区块所示:
- Add Attribute: 在标签中增加新的属性;
- Force Element State: 有时候我们为页面元素添加一些动态的样式,比如当鼠标悬停在元素上时的样式,这种动态样式很难调试 。我们可以使用
Force Element State
强制元素状态,便于调试,如下图:![图4. 强制元素状态][4] - Edit as HTML: 以HTML形式更改页面元素;
- Copy XPath: 复制XPath;
- Delete Node: 删除DOM节点;
- Break On: 设置DOM 断点 。
图中标记为4的蓝色区块实时显示当前选中标签的CSS样式、属性等 , 一共有以下5小部分:
- Styles: 显示用户定义的样式,比如请求的default.css中的样式 , 和通过Javasript生成的样式,还有开发者工具添加的样式;
- Computed: 显示开发者工具计算好的元素样式;
- Event Listeners: 显示当前HTML DOM节点和其祖先节点的所有JavaScript事件监听器 , 这里的监听脚本可以来自Chrome的插件 。可以点击右边小漏斗形状(filter)选择只显示当前节点的事件监听器 。
- DOM Breakpoints: 列出所有的DOM 断点;
- Properties: 超级全面地列出当前选中内容的属性,不过基本很少用到 。
文章插图
图中标记为1的+号为
New style rule
, 可以为当前标签添加新的选择器 , 新建立的样式为inspector-stylesheet 。此外 , 也可以直接在原有的样式上增加、修改、禁用样式属性,如图中标记2显示 。在New style rule右边为
Toggle Element State
,选择后会出现标记3显示的选择框,如果选中:hover
后,即可以看到鼠标悬停在页面元素上时的CSS样式了,作用类似于前面的Force Element Satte,更多内容可以看:hover state in Chrome Developer Tools。更强大的是,开发者工具以直观的图形展示了盒子模型的margin、border、padding部分,如标记5所示 。下面动态图给出了盒子模型的一个示例:
文章插图
ConsoleConsole可以查看网页运行后提示的消息,错误或者警告以及输出内容等 , 网页后台可以使用Console.debug(“输出内容”);来在Console输出显示,可以做到调试的作用吧,不过一般真正调试不是拿Console 。console.debug(“Console使用介绍”);console是小写形式,不然提示没有Console
文章插图
文章插图
ResourcesResources里可以查看web程序跑起来后所加载的一些资源(Resources),包括图片或者其他“值”,以及Cookies
文章插图
Network有时候我们的网页加载的很慢,而相同网速下,其他网页加载速度并不慢 。这时候就得考虑优化网页 , 优化前我们必须知道加载速度的瓶颈在哪里,这个时候可以考虑使用Network工具 。下图为我的博客首页加载时的Network情况:
文章插图
请求的每个资源在Network表格中显示为一行,每个资源都有许多列的内容(如红色区块1),不过默认情况下不是所有列都显示出来 。
- Name/Path: 资源名称以及URL路径;
- Method: HTTP请求方法;
- Status/Text: HTTP状态码/文字解释;
- Type: 请求资源的MIME类型;
- Initiator解释请求是怎么发起的,有四种可能的值:
- Parser:请求是由页面的HTML解析时发送的;
- Redirect:请求是由页面重定向发送的;
- Script:请求是由script脚本处理发送的;
- Other:请求是由其他过程发送的,比如页面里的link链接点击,在地址栏输入URL地址 。
- Size/Content: Size是响应头部和响应体结合起来的大?。?Content是请求内容解码后的大小 。进一步了解可以看这里Chrome Dev Tools – “Size” vs “Content”;
- Time/Latency: Time是从请求开始到接收到最后一个字节的总时长,Latency是从请求开始到接收到第一个字节的时间;
- Timeline: 显示网络请求的
可视化瀑布流
,鼠标悬停在某一个时间线上,可以显示整个请求各部分花费的时间 。
我们可以按照上面任意一项来给资源请求排序,只需要单击相应的名字即可 。Timeline排序比较复杂,单击Timeline后 , 需要选择根据Start Time、Response Time、End Time、Duration、Latency中的一项来排序 。
红色区块2中 , 一共有6个小功能:
- Record Network Log: 红色表示此时正在记录资源请求信息;
- Clear: 清空所有的资源请求信息;
- Filter: 过滤资源请求信息;
- Use small resource raws: 每一行显示更少的内容;
- Perserve Log: 再次记录请求的信息时不擦出之前的资源信息;
- Disable cache: 不允许缓存的话 , 所有资源均重新加载 。
有时候我们需要把Network里面内容传给别人,这时候可以在资源请求行的空白处右键然后选择
Save as HAR with Content
保存为一个HAR文件 。然后可以在一些第三方工具网站,比如这里重现网络请求信息 。选定某一资源后,我们还可以
Copy as cURL
,也就是复制网络请求作为curl命令的参数,详细内容看 Copying requests as cURL commands此外,我们还可以查看网络请求的请求头,响应头,已经返回的内容等信息,如下图:
文章插图
资源的详细内容有以下几个:
- HTTP request and response headers
- Resource preview: 可行时进行资源预览;
- HTTP response: 未处理过的资源内容;
- Cookie names and values: HTTP请求以及返回中传输的所有Cookies;
- WebSocket messages: 通过WebSocket发送和接收到的信息;
- Resource network timing: 图形化显示资源加载过程中各阶段花费的时间
文章插图
Sources功能面板是资源面板,他主要分为四个部分,四个部分并不是独立的,他们互相关联,互动共同实现一个重要的功能:监控js在执行期的活动 。简单来说就是断点啦 。
首先我们来看区域1,它的功能有些类似于Resources面板 , 主要是显示网页加载的脚本文件:例如css , js等资源文件(它不包含cookie,img等静态资源文件) 。
文章插图
区域1的导航条上有三个tab切换选项,他们都存有不同域名和环境下的js和css文件,我们首先来说明Sources(资源)选项的作用:
Sources: 包含该项目的静态资源文件 。双击选中文件,该文件内容会在区域2中显示 , 如果你选中的是js文件,那么你可以在区域2种单击行号进行断点调试,只要js执行到了你所标记的这一行,它会停止向下执行并且等待你的命令:
文章插图
从上图可以看到js执行到断点处时各个区域的变化 , 首先是区域3中的Breakpoints记录信息会变高亮,然后是区域4中Scope 选项中列出了断点处私有和公有的变量信息,这样 , 我可以很直观地知道,此时此刻js的执行状态 。同样的,你可以把鼠标放到区域2种的某个变量上,浏览器会弹出一个小框框,框框里面则是你悬浮其上的变量所有信息:
文章插图
然后,你可以按F10跟着js执行的路径一步一步地走下去,如果你遇到了一个函数包含着另外一个函数,那么你可以按F11进入到个函数中去观察它的代码执行活动 。你也可以通过点击区域1底部的各个图标对js代码进行跟踪 。不过我建议你使用快捷键,故名思义,因为它比较快捷方便 。不过怎么用完全按照个人习惯来吧 。下图是各个按钮的作用功能 。
文章插图
在上图蓝色圆圈中数字 , 它们分别代表:
1、停止断点调试
2、不跳入函数中去,继续执行下一行代码(F10)
3、跳入函数中去(F11)
4、从执行的函数中跳出
5、禁用所有的断点 , 不做任何调试
6、程序运行时遇到异常时是否中断的开关
接下来在区域4种切换到Watch Expressions 选项,它的作用是为目前断点添加表达式,使得每次断点往下走一步都会执行你写下的js代码 。需要注意的是这个功能必须谨慎使用,因为这可能会导致你写下的监控代码段会不断地被执行 。
文章插图
为了避免你的调试代码重复执行 , 我们可以在调试时直接在console控制台上一次性地输出当前断点处的信息(推荐这样做) 。为了验证我们在console面板中拥有的是当前断点环境 , 我门可以对比断点执行前后的this值变化 。
文章插图
文章插图
如果你觉得在断点的时候为了看一个变量必须借用console面板输出的方式来查看会比较麻烦 , 那么你可以更新最新版的Chrome , 它已经为我们解决了这个烦恼 。为了方便开发者调试,在这一点上谷歌已经做到了极致,就在前几天更新过Chrome以后,卤煮意外地发现了断点时监控环境变量的另外一种方式 , 这种方式极为清晰,在断点调试的时候 , 区域2中会自动显示每个变量的值,每次代码往下走的时候这个值都回时时更新 。这让开发者对当前环境变量几乎可以说是一目了然 。(此功能有一个小缺陷,那就是无法查看数组或者对象的具体索引和值,不过我相信google会改进它的 。)
文章插图
当你的项目已经线上,出现了一个bug,你修复了之后无法看到它真正在线上的效果,那么你可以在打开线上的项目,直接在浏览器中修改代码然后看到效果 。这样的效果往往是最直接的,这种方法也能帮你省去频繁验证发布的麻烦,毕竟身为前端码农的你也一定会听到过后台(通常情况下是后台发布)大哥的抱怨:“XXX,测试通过了没,不要出现了哈,发布一次很麻烦的!” 。而在Chrome里面,只需要在区域2种直接修改,你就可以验证你的代码在线上是否可行 。卤煮在此处只是指出该功能的用法之一 。其他的就凭诸位的聪明才智去想了 。
文章插图
文章插图
即使在断点时,你也可以编辑代码,按ctrl+S保存之后,你会看到区域2的背景由白色变为浅色,而断点会重新开始执行 。
回到区域1,Content script 选项开里面包含着一些第三方插件或者浏览器自身的js代码,经常它是被忽略的,实际上它的作用很少 。我们可以更多关注一下Snippets选项 。还记得基础篇里面介绍的style吗?在里面我们可以编辑界面的css代码并且即时看到它们的映射效果,同样地,在Sinppets中,我们也 可以编辑(重写)js代码片段 。这些片段实际上就相当于你的js文件一样,不同的是本地的js文件在编辑器里面编辑的,而此处,你是在浏览器中编写的 。这些代码片段在浏览器刷新的时候既不会消失 , 也不会执行 , 除非是你手动执行它 。它可以存在你的本地浏览器中,即使关闭浏览器,再次打开时它依然还在那里 。它的主要作用可以使得我们编写一些项目的测试代码时提供便捷,你知道,如果你在编辑器上编写这些代码,在发布时你必须为它们添加注释符号或者手动删除它们,而在浏览器上编写就不需要这样繁琐了 。
在Snippets选项的空白处右键后选择弹出的new选项,建立一个你自己的新的文件,然后在区域2种编辑它 。
文章插图
Snippets 的非常功能强大,它的许多隐藏功能还有待发掘 。目前卤煮使用它是在记住调试片段、单元测试、少量的功能代码编写功能上 。
最后我们看看js中时间丰富的监控功能,同上篇文章介绍的一样,Sources面板和Elements面板一样有监控事件的功能,而且Sources中功能更加丰富,也更加强大 。它的这部分功能集中在区域3中 。我以下图为例 , 观察其作用 。
文章插图
从上到下,紫色圈内的数字的意义:
1、断点处的债堆栈,就是从该函数起 , 逐级追寻调用到他的函数名 。例如:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
functiona(){
b();
}
functionb(){
c();
}
functionc(){
//在该处断点 , 查看call stack
}
a->b->c.
call stack从上到下的顺序就是
c
b
a
2、在区域2中你的断点调试信息 。当某个断点在执行的时候对应的信息会高亮,双击该处信息可以在区域2中快速定位 。
3、添加的Dom监控信息 。
4、击+ 并输入 URL 包含的字符串即可监听该 URL 的 Ajax 请求,输入内容就相当于 URL 的过滤器 。如果什么都不填,那么就监听所有 XHR 请求 。一旦 XHR 调用触发时就会在 request.send() 的地方中断 。
5、为网页添加各种类型的断点信息 。如选中了Mouse中的某一项(click),当你在网页上出发这个动作(单击网页任意地方),你浏览器就是立刻断点监控该事件 。
适配调试移动网页现在是移动时代,当然各种HTML5移动应用非常多 , 如何用浏览器调试呢 , 只要按如下图的这个按钮,即可适配移动网页
文章插图
【浏览器开发模式功能设置 网页开发者模式怎么打开】
文章插图
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 360极速浏览器壁纸保存方法
- APP开发常用工具推荐
- 如何优化星愿浏览器下载提示功能
- 如何个性化设置火狐浏览器主题
- 如何在Word中关闭只读模式并保护文档安全
- 如何在不同设备上打开浏览器设置
- 如何更改浏览器下载路径/位置
- 如何正确修改360浏览器的主页
- 如何在360浏览器中允许所有网站运行 JavaScript
- 文件只读模式解除方法