这里我假设你用的是Chrome浏览器,若是刚好你作web开发,或者是比较好奇网页中的一些渲染效果而且喜欢折腾,那么你必定知道Chrome的开发者工具了。其实其余浏览器也有相似工具,好比Firefox下的firebug。本文将会详细讲述如何使用Chrome开发者工具,但愿里面有些让你感到惊艳的东西!即便你不用Chrome,那么文中的某些内容也会至关有用。javascript
首先啰嗦一下如何打开开发者工具吧。能够直接在页面上点击右键,而后选择审查元素;或者是打开Tools--Developer Tools;或者是用快捷键 Command Option + I 打开。打开后咱们看到的界面大概以下:css
Google Chrome一共提供了8大组工具:html
强大的Chrome开发者工具提供了很棒的提示功能,当咱们把鼠标悬停在某些项时,会显示一些颇有用的提示信息,有时候咱们能够获得意想不到的收获。此外,开发者工具还提供了Emulation功能,作移动开发时特别有用。下面先详细研究一下8大工具的使用方法。html5
Elements工具像一把手术刀同样“解剖”了当前页面,咱们看到的Elements页面通常像这样子:java
图中标记为1的红色区块为页面HTML文件,HTML中的每一个元素好比<body>、<p>
都是一个DOM节点,全部的DOM节点组成了DOM树。咱们彻底能够把红色区块1当作是DOM树,把HTML元素标签看作DOM节点。git
当咱们在这里选中某一DOM对象时,网页中相应元素也会被阴影覆盖。咱们能够对DOM对象进行修改,修改后结果会在页面实时显示出来。此外,还能够用 Command + f 搜索DOM树中指定的内容,或者是以HTML形式更改页面元素,以下图:github
选中DOM对象以后右键便可以看到一些辅助的功能,如图中标记为2的区块所示:web
Force Element State
强制元素状态,便于调试,以下图:图中被标记为3的蓝色区块显示当前标签的路径:从html开始一直到当前位置,咱们单击路径中任何一个标签,便可以跳转到相应标签内容中去。chrome
图中标记为4的蓝色区块实时显示当前选中标签的CSS样式、属性等,一共有如下5小部分:shell
实际应用中咱们常常会用到Styles,以下图:
图中标记为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所示。下面动态图给出了盒子模型的一个示例:
有时候咱们的网页加载的很慢,而相同网速下,其余网页加载速度并不慢。这时候就得考虑优化网页,优化前咱们必须知道加载速度的瓶颈在哪里,这个时候能够考虑使用Network工具。下图为个人博客首页加载时的Network状况:
请求的每一个资源在Network表格中显示为一行,每一个资源都有许多列的内容(如红色区块1),不过默认状况下不是全部列都显示出来。
Initiator解释请求是怎么发起的,有四种可能的值:
可视化瀑布流
,鼠标悬停在某一个时间线上,能够显示整个请求各部分花费的时间。以上是默认显示的列,不过咱们能够在瀑布流的顶部右键,这样就能够选择显示或者隐藏更多的列,好比Cache-Control, Connection, Cookies, Domain等。
咱们能够按照上面任意一项来给资源请求排序,只须要单击相应的名字便可。Timeline排序比较复杂,单击Timeline后,须要选择根据Start Time、Response Time、End Time、Duration、Latency中的一项来排序。
红色区块2中,一共有6个小功能:
选择Filter后,就会出现如红色区块3所显示的过滤条件,当咱们点击某一内容类型(能够是Documents, Stylesheets, Images, Scripts, XHR, Fonts, WebSockets, Other)后,只显示该特定类型的资源。在XHR请求中,能够在一个请求上右键选择“Replay XHR”来从新运行一个XHR请求。
有时候咱们须要把Network里面内容传给别人,这时候能够在资源请求行的空白处右键而后选择Save as HAR with Content
保存为一个HAR文件。而后能够在一些第三方工具网站,好比这里重现网络请求信息。
选定某一资源后,咱们还能够Copy as cURL
,也就是复制网络请求做为curl命令的参数,详细内容看 Copying requests as cURL commands
此外,咱们还能够查看网络请求的请求头,响应头,已经返回的内容等信息,以下图:
资源的详细内容有如下几个:
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中经过元素和属性进行导航。好比在图2中,
<a href="https://github.com/NUKnightLab/TimelineJS">这里</a>
这里a标签的Xpath为:/html/body/div[2]/p[1]/a
,解读为:html里面body标签的第二个div标签的第一个p标签下的a标签。
HTML DOM容许咱们在某一事件发生时执行特定的JavaScript脚本,这里的事件能够是:
这里事件发生时执行的javascript脚本就是事件监听器。
DOM 断点(DOM Breakpoints)能够监听某个 DOM 被修改状况,在Elements中某个元素上右键能够设置三种不一样状况的断点:
设置后 DOM Breakpoints 列表中就会出现该 DOM 断点。
一旦监听的DOM被修改时,断点就会定位到执行修改操做的代码,这对于绑定了多个事件的 DOM 调试有很大的帮助。
XMLHttpRequest是一个浏览器接口,使得Javascript能够进行HTTP(S)通讯。XMLHttpRequest 对象用于在后台与服务器交换数据,这样就能够
更多关于XHR的内容能够看阮一峰老师的XMLHttpRequest Level 2 使用指南。
WebSocket规范定义了一种 API,可在网络浏览器和服务器之间创建“套接字”链接。简单地说:客户端和服务器之间存在持久的链接,并且双方均可以随时开始发送数据。这样就解决了长期以来只能由客户端发起请求才能从服务器获取信息这一问题。