Chrome 开发工具指南
Posted ァ颏餶こ铭訫の
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome 开发工具指南相关的知识,希望对你有一定的参考价值。
Chrome 开发工具指南
谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具。开发者工具允许网页开发者深入浏览器和网页应用程序的内部。该工具可以有效地追踪布局问题,设置 javascript 断点并可深入理解代码的最优化策略。
适用人群
这篇教程将会带你从头开始使用学习如何利用 Google 提供的组件进行 Chrome 上的相关开发调试工作. 通过本教程,你将学会如何使用这些工具,并且学会如何通过它来分析调试提供的 Demo 。
学习前提
在你继续本教程之前,你必须对简单的术语有一定的了解,比如源码,文档等等。因为在你的组织下处理各级软件项目,如果你有软件工作的知识在软件开发和软件测试流程那是最好的。
谷歌浏览器开发工具综述
谷歌开发工具(以下用开发者工具简称),是基于谷歌浏览器内含的一套网页制作和调试工具。开发者工具允许网页开发者深入浏览器和网页应用程序的内部。该工具可以有效地追踪布局问题,设置 JavaScript 断点并可深入理解代码的最优化策略。
注意:如果你是一个网页开发者同时想要获得最新版本的开发工具,那么你应该使用谷歌浏览器(金丝雀)Canary 版。
使用开发工具
要使用开发工具,直接打开一个网页或者谷歌浏览器的一个网页应用。另一种方式:
-
选择浏览器位于浏览器窗口右上方的菜单栏的工具目录,选择开发者工具选项。
- 右击页面任何位置并选择审查元素。
开发工具将会在浏览器的下方打开。
有一些快捷键也可以用来打开开发工具: Ctrl
+ Shift
+ I
( 或在 Mac 上使用 Cmd
+ Opt
+ I
)。
Ctrl
+ Shift
+ J
( 或在 Mac 上使用 Cmd
+ Opt
+ J
) 打开开发者工具同时集中焦点于控制台。
Ctrl
+ Shift
+ C
(或在 Mac 上使用 Cmd
+ Shift
+ C
) 在审查模式下打开开发者工具或是在开发者工具已经打开的情况下开启查阅选项。
学习使用快捷键可以为你每天的工作流节省时间。
开发者工具窗口
开发者工具窗口的顶部工具栏中排列着任务相关的组。每个工具栏项目和相应的面板让你能够使用网页或应用程序的特定信息来工作,包括 DOM 元素,资源,和源。
图为开发者工具中的颜色选择器。
总体而言,有八个主要的工具可供查看开发工具:
你可以使用 Ctrl
+ [
和 Ctrl
+ ]
快捷键在面板之间移动。
查阅 DOM 和格式
元素面板让你看到一个 DOM 树的全部相关信息,并允许你检查以及在传输过程中编辑 DOM 元素。当你需要确认页面某些方面的 html 代码段时,你会经常访问元素标签。例如,你对图像的 HTML id 属性和值是什么感到好奇的时候。
在 DOM 中查看标题元素。
利用控制台进行工作
JavaScript 控制台为开发者提供了测试 Web 页面和应用程序两个主要功能,其中包括:
-
在开发过程中记录诊断信息。
- 一个可与文档和工具交互的 shell 提示符。
您可以使用控制台编程接口提供的方法来记录诊断信息。如 console.log() 或 console.profile()。
您可以直接在控制台中评估表达式,并使用命令行提供的方法。这些包括使用 $() 命令选择元素或通过 profile() 方法启动 CPU 分析器命令。
在 JS 控制台上评估一些命令。
JavaScript 的调试
由于 JavaScript 应用程序复杂性的增加,开发商需要强大的调试工具来帮助开发者快速发现问题的原因和并找出有效的解决方法。Chrome 开发工具包含了一些有用的工具来使得调试 JavaScript 更加轻松。
一个在控制台输出日志的条件断点。
提高网络性能
网络面板提供了有关已经下载和加载过的资源的详细分析。在优化页面的基本过程中,确定和找到那些请求通常要比预计的时间更长。
网络请求的上下文菜单。
审计
审计面板可以像加载页面时那样分析一个页面。然后提供关于减少页面加载时间的建议和优化,以此提高感知(和真实)的响应。要进一步的了解该功能,我们推荐使用 pagespeed 。
提高渲染性能
在加载和使用你的网页应用程序或网页时,时间轴面板给你关于时间开销的完整概述。包括从加载资源到解析 JavaScript,以及计算方式在内的所有事件,都会重新绘制在一个时间表中。
一个有着多种时间的时间轴示例。
JavaScript 和 CSS 的性能
配置面板允许您为网络应用程序或页面配置执行时间和内存使用量。这些有助于你理解资源的消耗,以帮助你优化你的代码。提供的分析器有:
- CPU 分析器会显示你页面上的 JavaScript 函数的执行时间
- 堆内存分配器 显示页面的 JavaScript 对象和 DOM 节点。
- JavaScript 配置文件会显示脚本的执行时间。
堆快照的示例。
监视存储
资源面板允许你监视页面中加载的资源。它可以让你使用 HTML5 的本地存储,数据库,缓存,appcache,等。
Web Starter Kit 的 JavaScript 文件会显示在资源面板中。
进一步阅读
还有一些其他的开发工具文档内容,这些内容会有对你有用的东西。具体包括:
更多资源
获得更多
您也可以在 @chromiumdev 上寻求我们的帮助或使用论坛问个问题。
在控制台中的样式输出。
确定在 Google+ 上检查谷歌浏览器开发页面。
参与
提交一个 bug 错误或工具的特征请求,请在 http://crbug.com 使用问题追踪。请同时提到“工具”的错误总结中。
crbug.com 的错误报告类选择器。
请直接回馈给我们以让开发者工具变得更好。
调试扩展
想使用工具来调试 Chrome 扩展插件?观看开发和调试扩展插件。该教程也可以用于调试。
开发工作流程
开发者工作流程一般来说就是需要通过一些步骤来达到一个目标。当作者拥有了开发者工具,这就可以优化工作流程以较少的时间来完成常规任务,比如锁定文件或者函数,持续编写脚本或者样式表,保存经常使用的片段或者仅仅是重新布置一下布局,让其更贴合你得需求。
在这一节中,我们将讲解一些小技巧,让你在使用 DevTools 时的工作流程变得更加高效。
Dock-To-Right 提供了垂直编辑
你可能发现开发者工具在底部时,提供了一些水平空间,可是垂直方向上留下的空间很少。右边的锚点允许你将开发者工具放到窗口右边。这样你就可以在左边窗口可以查看当前的页面,而将测试的东西放在了屏幕的右侧。
这样的好处在于:
- 你可能在一个宽屏的显示器上工作,而且你希望可以最大化空间去检查和测试你的代码
- 你可以改变并分开你的布局,使其小于 400 px(当前 Chrom 的最小尺寸)并测试调整后的布局。
- 比较长脚本使用垂直空间更方便调试
导航到一个你想要排错的 URL 然后按住位于开发者工具左手边底部布局的按钮。在 dock-to-right 和 dock-to-window 之间切换,
注意:开发者工具将会记住你最后一次的选项,所以你可以自己在两种方式间切换。
这将调整屏幕以显示可用的布局选项。一旦你已经选中了一个偏好,布局将会立刻改变来响应这个更改。
注意:每一个选项卡都有它自己相应的布局形式。这就意味着可能某个选项卡工具是在屏幕右侧而另外一个选项卡则在窗口底部。
搜索,导航和过滤
过滤一个脚本,样式表或者根据文件名过滤一个片段
对于一个开发者的工作流程来说,能够快速定位一个特殊的文件是非常有必要的。通过使用下面的快捷键,开发者工具可以使你搜索全部的脚本,样式表和文件片段:
Ctrl
+o
(windows,Linux)Cmd
+o
(Mac OS X)
这个工具与当前正在使用的控制台无关。对于Todo app,使用下面这些快捷键中的某一个将会带我们进入 Sources 面板并且提供一个列出所有可检查文件的搜索框。
在这里,我们可以过滤出特定的文件(例:文件命中包含script)或者选中一个文件,预览或者编辑。
注意:在所有的对话中,我们均提供驼峰匹配。比如:打开FooBarScript.js,你可以只写 FBaSc,这样可以节省时间。
当前文件中的文本搜索
在当前的文件中搜索一个特殊的字符串可以使用以下的快捷键:
Ctrl
+F
(Windows,Linux)Cmd
+F
(Mac OS X)
一旦已经输入了一个关键字到搜索框中,点击回车会调转到第一个匹配的结果。继续点击回车将会在结果中进行跳转,或者你也可以点击搜索框旁边的 up
和 down
箭头按钮来进行跳转。
在当前的文件中进行文字替换
开发者工具支持当前文件中定位文字,此外也同样支持用新的值来替换替换单个或者所有文字。选中 “Relpace” 将会出现第二个输入区域来填写用于替换的文本。
在所有文件中搜索文字
如果你希望在所有加载的文件中搜索特定的文字,你可以用下面的快捷键来加载搜索框界面:
Ctrl
+Shift
+F
(Windows,Linux)Cmd
+Opt
+F
(Mac OS X)
这里同时提供了正则表达式和敏感大小写的搜索方式。
使用正则表达式搜索
使用正则表达式进行搜索,就是在搜索处填入表达式,然后选中 Regular Expression
最后点击回车。
在上面的图中我们可以看见如何搜索所有匹配
在文件中过滤一个函数或者是一个选择器
你应该还想要更多功能,这样就可以在一个文件中导航到(或者搜索到)特殊的 JavaScript 函数或者是 CSS 规则文件。
要导航到你选中的文件,进入源面板。然后你就可以使用下面的快捷键来打开一个对应函数/特定选择器的一个选择框:
Ctrl
+Shitf
+O
(Windows,Linux)Cmd
+Shitf
+O
(Mac OS X)
基于选中文件的类型,你将会看见所有的 JavaScript 或者是 CSS 样式定义。开始输入你要搜索的函数名称或者是 CSS 定义时就会过滤出一个列表的结果,或者是直接选择一个结果,进入到定义这个内容的文件中。
跳转到指定行号
开发者工具同时也可以在编辑器中直接跳转到指定行号。要启动行号输入框,只需要选中你要查找的文件,然后使用下面的快捷键来启动:
Ctrl
+L
(Windows)Cmd
+L
(Mac OS X)Ctrl
+G
(Linux)
实时编辑脚本和样式
开发工具支持实时编辑脚本和样式,不需要重新加载页面就可以看到效果。这对于测试设计的更改,原生 JavaScript 函数或者代码块很有帮助。
脚本
JavaScript 可以直接在 Sources
面板中进行编辑。打开指定的脚本进行编辑,或者:
-
在元素面板的视图中点击相应脚本的链接(例:\)
- 或者从
Scources
子面板中选择脚本的文件名:
这会在右边的面板上显示一个新的标签,里面的源文件将会是语法高亮的。
对于脚本的更改只会在评估时间执行,也就是说对代码的修改不是在页面加载后进行的话,将不会产生效果。修改后的代码会在下一个阶段执行,比如鼠标滑过监听或者点击事件的回调更改后可以快速进行测试。
获取更多有关 JavaScript 在 Sources
面板进行调试的信息,请关联阅读在 JavaScript 排错 文档。同时也可以查看 在线编辑器上的短屏幕截取和断点排错。
提示:工作空间对于本地文件的持续编辑也是支持的。查看更多
样式
下面有一个和编辑样式类似的工作流。打开开发者工具,选择元素面板。在右边,一些子面板将会被显示出来,其中就包括样式面板。检查在页面上的某个元素将会在风格面板上显示一组已经被应用到当前节点的属性,并且会按选择器进行排序。
在 "element.style" 部分会显示在页面标记中通过样式属性设置的相关属性。
下一个部分是 ”Matched CSS Rules“,这里会显示匹配相应节点的选择器,他们的属性和值,甚至是其源文件名,以及读取该样式的行号。选择器匹配的节点将会被设置为黑色,其他的将会显示成灰色。这么做最大的好处就是在于我们在阅读时可以更好的区分选择器筛选出来的东西。
在一个子面板中改变任何 CSS 属性,比如一个元素的边界和尺寸,将会将会立刻生效并且在主显示窗口中显示。
返回 ”Matched CSS Rules“ 面板,点击在规则旁边的样式表的链接也可以引导你进入 "Sources" 面板。这会显示完整的样式表并且会直接定位到相关的 CSS 规则的行号处。
在这里,你可以向使用常规编辑器那样更改文件,并且浏览器会实时显示更改后的效果。
另存为
如果你对于做出的更改感到满意,你可以保存文件。
为此,首先要确认你是否源面板下的文本编辑视图中做出的更改:
或者是在 ”Element->Style panle“(for SASS/CSS)中点击文件名称(例如:style.css)。
接下来,右键点击文件名或者直接点击文本编辑器内任意位置,然后选择"Save As"。这将弹出一个允许你保存的菜单。
之后提交的更改(在同样的菜单中保存的或者是使用 Ctrl
/Cmd
+ S
快捷键)都会保存到同一个位置中。
本地修改
开发工具同样维护了所有对本地文件做出的历史修改。如果你已经编辑了一段脚本或者样式表并且使用了开发工具进行保存,你可以在 Sources 右键一个文件名(或者在 source 区域)然后选择 ”Local modifications“ 来查看历史记录。
一个本地修改面板将会显示:
- 不同的更改
- 更改文件的时间
- 被修改文件所在的域名
此外还有一些链接。revert 会将文件上所有的更改回复到它原始的状态,并且移除更改历史。
Apply original content 将有效地重复同一操作,但是会维护视图中的修改历史,以免你希望回溯到某个特定更改后。
最终,apply version content 将会应用全部更改,并提供时间集上的特定修改记录。
自定义 JavaScript 片段
有时候你想能够保存小的脚本,书签和实用的工具好让这些工具可以让你在调试的时候可以用的上。Snippets 是一个新的可以在这个开发流程中使用的开发者工具,它允许你在源面板中创建,存储和执行 JavaScript。现在可以在Chrome Canary 中获取。
以下是 Snippets 比较有用的情况:
- 书签 所有你的书签可以作为片段进行存储,特别是那些你可能想编辑的。
- 实用工具 调试工具可以和当前页面进行交互,并且可以保存和调试。一个社区企划的列表已经被提供。
- Debugging Snippets 提供了一个语法高亮显示并且可持续的多行控制台,这样使得调试代码比单行要更加便捷。
- Monkey-patching code 你想要在运行时修复的代码可以通过 Snipptes 来完成,尽管多数时候你可能只是在源面板中实时编辑代码。
Brian Grinstead 提供了一个存放有用 Snippets 给开发者的地方,就在 bgrins.github.io/devtools-snippets
开始
用 Snippets 开始,导航到 Sources 面板。如果你没有做出任何改动,你将会看到默认的布局,就像下面一样:
点击在上面左边角落的切换键可以显示展开后的面板。这里你应该已经看见了 Sources,Content scripts 和一个新的标签,Snippets。点击它然后进入 Snippets。
创建 Snippets
Snippets 通过两个面板来工作。左侧的面板(与 Sources 相似)是文件列表,选择一个 snippets 文件将会在右边的编辑器中打开它。这和你在源面板中选中脚本或者样式表是类似的。
在文件列表中右键点击并选择 "New" 会创建一个新的 snippet 文件。
Snippet 文件名称
Snippet 文件名称是被自动创建的,但是当 snippets 文件创建之后,你同样也可以自行更改文件名。
这之后只要想再次更改文件名,只需在文件列表中再次右键,选中 “Rename”。如果你需要的话也可以选择 “Remove” 。
编辑和执行 Snippets
从文件列表中选择一个 Snippets 文件,然后在你的右侧的编辑器中打开。这里你可以写或者粘贴任何 JavaScript 代码(换句话说就是你的 Snippet),包括函数和表达式。
如果一个文件名以 * 结尾,那么就意味着这个文件已经被修改,但是没有保存。
要执行这个 Snippet,在文件列表上右键在该文件,然后选择 ”Run“。或者你可以点击 *Run(>)* 按钮。
如果这个 snippet 会有控制台输出,编辑器下的控制台会输出相关内容。
注意:使用键盘快捷键也可以执行一个 snippet-选中你的 snippet ,之后使用
Ctr
/Cmd
+Enter
来运行它。这和使用 Run(>)按钮的行为是一样的-当前仅仅在 Source 控制台,但是之后将会跳转到到 debugger 控制台。
如果你想在控制台中,执行 snippet 的一些特殊行中的代码,你可以在编辑器中选中这些代码,然后右键,选择 "Evaluate in Console" 选项来进行执行。键盘上的快捷键是 Ctrl
+ Shift
+ E
。
选中 Run 后,输出的表达式将会在编辑器下方的控制台中输出。
本地修改
对于每一个 Source,Snippet 也支持浏览本地更改并回滚到一个特定时间点的更改。
保存更改后在编辑器中右键,然后选择 “Local modifications” 就可以使用该功能。
断点,观察表达式以及更多功能
其他你在 Sources 面板中使用的功能,比如添加观察表达式,断点,收起变量和保存文件同样也可以在 Snippet 中使用。
请阅读 Sources 面板这一章来了解更多关于这些功能的更多内容。
保存 Snippets
Snippets 可以被保存并且之后依旧能够通过开发者工具中的 Snippets 选项卡来使用,或者直接导出一个新的文件。在文本编辑中右键打开编辑菜单以获取 Snippet 的保存选项。
Save 会将变更保存到已有的 Snippets 文件中,而 Save As 将会允许你将这个 Snippets 保存到新的文件路径中。
注意:Snippets 保存在开发者工具的本地存储中。当使用 Sava/Save As的时候,你可以将这个 Snippets 绑定到任何位置的文件中,就像保存其他脚本一样。
Snippets 导航
就像在 Sources 中的脚本和样式表一样,Snippets 也可以使用我们之前提到的相应的键盘快捷键,比如导航到特定的 Snippets 文件,函数,或者行号。
使用控制台
利用控制台可以让你:
- 日志诊断信息可以帮你分析 web 页面或者应用上的错误
- 输入命令来与文档以及 Chrome 开发者工具进行交互
你可能也会自己评估一般的 JavaScript 表达式。这个文档提供了一个控制台的预览和常规使用的概述。你可以浏览 Console API 和 Conmmand Line API 引用材料来理解更多的功能。
基础操作
打开控制台
Javascript 控制台可以在两个地方打开。控制台面板是主要的进入点。它同样也可以在其他任何面板中通过使用抽屉来打开。打开控制面板,用下面的选择下面提供的一种方式:
- 使用键盘快捷键
Command
+Option
+J
(Mac) 或者Control
+Shitf
+J
(Windows/Linux)。 - 选择 > More Tools > JavaScript Console.
一个干净的控制台界面
要打开抽屉式控制台,你需要在键盘上按下 Esc
键或者点击开发者工具窗口右上角的 Show Drawer 按钮。
在元素面板上的抽屉式控制台
清除控制台历史信息
要清除控制台历史信息,你需要这么做:
- 在控制台中右键或者按住 Ctrl 点击然后从上下文菜单中选择 Clear Console
- shell 提示符中输入 clear() 命令行 API。
- 在 Javascript 中执行 console.clear() 调用控制台 API。
- 使用键盘快捷键
Cmd
+K
,^
+L
(Mac)Ctrl
+L
( Linux 和 Windows )。
信息栈
控制台会将以栈的形式持续输出相同的信息。这使得提供给你的信息会尽可能的简短。
禁止时间戳(默认) | 允许时间戳 |
---|---|
两种栈状态的例子
测试控制台模式的简单代码
msgs = [‘hello‘, ‘world‘, ‘there‘];
for (i = 0; i < 20; i++) console.log(msgs[Math.floor((i/3)%3)])
选择帧
控制台可以在页面的不同帧中运行。主页是文档的最外层帧。以 iframe 元素为例,它将会创造出它自己的上下文框架。你也可以通过使用在过滤按钮旁边的下拉框来指定这个帧。
选择一个次要的帧
这张图片展示了窗口源在顶级帧和选中的次要帧中改变。
使用控制台 API
控制台 API 是一组方法的集合,它由开发者工具定义的全局 console
对象提供。API 的其中一个主要目的就是在你的应用运行的时候输出日志信息到控制台中。你也可以在控制台中为输出信息分组,以减少视觉混乱。
向控制台输出
console.log() 方法会使用一个或者多个表达式来作为参数,之后会将他们当前的值输出到控制台中。
一个简单的向控制台输出的例子:
var a = document.createElement(‘p‘);
a.appendChild(document.createTextNode(‘foo‘));
a.appendChild(document.createTextNode(‘bar‘));
console.log("Node count: " + a.childNodes.length);
一个在控制台中输出的例子
多个参数会串联到有限行中。
多个参数的 console.log()
console.log("Node count:", a.childNodes.length, "and the current time is:", Date.now());
多重参数的 console.log() 的输出。
错误和警告
错误和警告就跟一般的日志信息的显示一样。不同的地方在于 error() 和 warn() 通过它们自己样式来吸引注意力。console.error() 方法展示的是一个红色的图标并且伴有红色的信息文字。console.warn() 方法展示的是黄色的图标和黄色的信息文字。
使用控制台 warn 和 error 方法。
使用 error() 方法。
function connectToServer() {
console.error("Error: %s (%i)", "Server is not responding",500);
}
connectToServer();
connectToServer() 如何在控制台中显示。
使用 warn() 方法
if(a.childNodes.length < 3 ) {
console.warn(‘Warning! Too few nodes (%d)‘, a.childNodes.length);
}
警告输出的例子。
断言
console.assert() 方法仅仅只当它的第一个参数为 false 时才显示一个错误信息字符串(它的第二个参数)
一个简单的断言并且如何展示的例子。
在下面的代码中,如果在列表中的子节点的数量超过 500,将会在控制台中引起错误信息。
console.assert(list.childNodes.length < 500, "Node count is > 500");
一个失败断言如何在控制台中显示。
过滤控制台的输出
你可以通过过滤器选项中的安全级别来过滤控制台的输出。通过控制面板的左上角的过滤器图标来激活过滤器。下面的过滤器选项是可以选择的:
ALL | 显示所有控制台输出 |
---|---|
Errors | 只显示 console.error() 输出的信息 |
Warnings | 只显示 console.warn() 输出的信息 |
Info | 只显示 console.info() 输出的信息 |
Logs | 只显示 console.log() 输出的信息 |
Debug | 只显示 console.timeEnd() 和 console.debug() 输出的信息 |
过滤器只显示错误级别的信息。
输出分组
你可以通过分组命令把相关联的输出信息分在一起。group 命令通过一个字符串的参数来给你的组命名。控制台将会把所有所有的输出信息组合到一块。要结束分组,你只需要调用 groupEnd 即可。
一个分组的例子
示例代码:
var user = "jsmith", authenticated = false;
console.group("Authentication phase");
console.log("Authenticating user ‘%s‘", user);
// authentication code here...
if (!authenticated) {
console.log("User ‘%s‘ not authenticated.", user)
}
console.groupEnd();
示例输出
日志信息的分组可能还会相互嵌套,这对于在一个狭小空间一次性看大量信息来说非常有用。
这个示例代码展示了一个登录程序中验证阶段的日志分组。
代码如下:
var user = "jsmith", authenticated = true, authorized = true;
// Top-level group
console.group("Authenticating user ‘%s‘", user);
if (authenticated) {
console.log("User ‘%s‘ was authenticated", user);
// Start nested group
console.group("Authorizing user ‘%s‘", user);
if (authorized) {
console.log("User ‘%s‘ was authorized.", user);
}
// End nested group
console.groupEnd();
}
// End top-level group
console.groupEnd();
console.log("A group-less log trace.");
控制台中的嵌套分组输出信息。
当你对输出信息进行多次分组以后,你就不用直接看到全部的输出信息了,这是非常有用的。你可以通过调用 groupCollapsed(),代替之前使用的 group() 来自动为信息分组。
console.groupCollapsed() 的使用方式
示例代码:
console.groupCollapsed("Authenticating user ‘%s‘", user);
if (authenticated) {
...
}
console.groupEnd();
groupCollapsed() 输出信息
浏览结构化数据
table() 方法提供一个简单的方法来查看相似数据对象。这将给一个数据提供属性并且创建一个头。行数据将会从每一个索引属性值中获取。
控制台中一个使用 2 个数组的示例的显示。
示例代码:
console.table([{a:1, b:2, c:3}, {a:"foo", b:false, c:undefined}]);
console.table([[1,2,3], [2,3,4]]);
输出的示例代码的结果:
table() 中的第二个参数是可选项。你可以定义任何你想显示的属性字符串数组。
一个使用了对象集合的控制台输出表。
示例代码:
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
var family = {};
family.mother = new Person("Susan", "Doyle", 32);
family.father = new Person("John", "Doyle", 33);
family.daughter = new Person("Lily", "Doyle", 5);
family.son = new Person("Mike", "Doyle", 8);
console.table(family, ["firstName", "lastName", "age"]);
示例代码的输出:
字符串的替换和格式化
任何日志方法的第一个参数可能都会包含一个或者多个格式说明符。一个说明符由一个 % 符号和后面跟着的字符组成,这个字符用来定义用于格式化的值。这个参数跟随的字符串就是占位符中所要显示的。
下面的例子使用了字符串和数字格式来插入要输出的字符串。你将会看到在控制台中 Sam 有 100 个点。
console.log("%s has %d points", "Sam", 100);
完整的格式化说明符如下:
%s | 格式化成 string |
---|---|
%i 或者 %d | 格式化成 integer |
%f | 格式化成一个浮点类型 |
%o | 格式化成一个可扩展的 DOM 元素。就跟在元素面板中看到的一样 |
%o | 格式化成一个可扩展的 JavaScript |
%c | 通过第二个参数来申请一个 CSS 风格的输出字符串 |
这个例子使用了数字占位符来格式化 document.childNodes.length 的值。它也同样使用了浮点类型的占位符来格式化 Date.now();
代码如下:
console.log("%s has %d points", "Sam", 100);
示例替代的输出
示例代码的输出预览
将 DOM 元素格式化成 JavaScript 对象
当你想要在控制台中记录一个 DOM 元素,就显示成了 XML 格式。在元素面板中也会是同样的显示。要显示 JavaScript 格式的信息,你可以使用 dir() 方法或者是在 log() 中使用占位符来替换成你的 JavaScript。
两种不同显示的区别:
log() 视图 | dir() 视图 |
---|---|
使用 CSS 样式来更改控制台输出形式
CSS 格式说明符可以修改在控制台中输出的样式。以你要修饰的文字配上占位符开始,然后在第二个参数中写上你要展示的风格。
更改日志样式
示例代码:
console.log("%cThis will be formatted with large, blue text", "color: blue; font-size: x-large");
示例代码的输出结果。
计算时间开销
通过 time() 方法可以启动一个计时器。你必须输入一个字符串来识别时间的标记。当你要结束计算的时候,使用 timeEnd() 方法,并且传递一个相同的字符串给构造器。控制台会在 timeEnd() 方法结束的时候,记录下标签以及时间的花销。
关于 JavaScript 执行时间的示例代码以及输出:
示例代码:
console.time("Array initialize");
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {
array[i] = new Object();
};
console.timeEnd("Array initialize");
在控制台上的输出结果:
当 time()
方法正在执行期间,将会生成一个 时间轴 记录并为其做出注解。这对于追踪应用的使用以及其来源非常有用。
time() 执行时间轴上的注解是如何显示的。
制作时间轴
时间轴面板提供了关于引擎时间开销的完整概述。你可以在控制台中调用 timeStamp()
添加一个标记到时间轴中。这是将你的应用的事件和其他事件相关联的一个简单的办法。
注意:只有在时间轴记录正在运行的时候
timeStamp()
方法才能使用。
timeStamp()
在下面的地方给时间轴做注解:
- 在时间轴的总结和详细视图中的黄色垂线处
- 在事件列表中添加了一个记录
示例代码如下:
function AddResult(name, result) {
console.timeStamp("Adding result");
var text = name + ‘: ‘ + result;
var results = document.getElementById("results");
results.innerHTML += (text + "<br>");
}
时间轴中的时间戳
在 JavaScript 中设置断点
调试器 声明将会开启一个调试会话。这就相当于在这一行中的脚本上设置一个断点。
使用 brightness() 开启调试会话。
示例代码:
brightness : function() {
debugger;
var r = Math.floor(this.red*255);
var g = Math.floor(this.green*255);
var b = Math.floor(this.blue*255);
return (r * 77 + g * 150 + b * 29) >> 8;
}
示例代码的输出:
记录语句的执行
count() 方法将会记录提供的字符串以及该字符串在一段时间内的出现次数。这个字符串可能含有动态的内容。当已经传给 count() 一个完全相同的字符串时,计数就会增加。
使用动态内容的 count() 例子:
示例代码:
function login(user) {
console.count("Login called for user " + user);
}
users = [ // by last name since we have too many Pauls.
‘Irish‘,
‘Bakaus‘,
‘Kinlan‘
];
users.forEach(function(element, index, array) {
login(element);
});
login(users[0]);
示例代码使出的内容:
使用命令行 API
命令行比一个简单的日志输出目录要强大的多。它在当前网页中,同样是一个全终端的提示。命令行 API有以下的一些特征:
- 方便选择 DOM 元素的函数
- 用来控制 CPU 检测的函数
- 一些控制台 API 的匿名方法
- 显示器事件
- 给一个物体注册视图事件的监听
计算表达式
当你按下 Enter
的时候,控制台将会计算任何你提供的 JavaScript 表达式。有两种完成方式,一种是全自动,一种是使用tab。只要你输入一个表达式,就会提供名称提示。如果有多个匹配的选项,使用 ↑
和 ↓
来在它们之间循环。按下 →
将会选择当前的选项。如果只有一个选项,按下 Tab
键也会选中当前的选项。
一些示例表达式在控制台的显示
选择元素
有一些选择元素的快捷键。相比普通的使用方式,这些快捷键为你节省了大量时间。
$() | 返回第一个匹配 CSS 选择器的元素。这也是 document.quertSelector() 的快捷方式 |
---|---|
$$() | 返回包含所有匹配 CSS 选择器的一个数组。这是 document.querySelectorAll() 的一个别名。 |
$x() | 返回一个匹配特定 XPath 的数组 |
目标选择的例子:
$(‘code‘) // Returns the first code element in the document.
$$(‘figure‘) // Returns an array of all figure elements in the document.
$x(‘html/body/p‘) // Returns an array of all paragraphs in the document body.
检查 DOM 元素和 JavaScript 堆对象
inspect()函数可以让 DOM 元素或者是 JavaScript 引用作为一个参数。如果你提供一个 DOM 元素,开发者工具将会跳转到元素面板并且显示那个元素。如果你提供一个 JavaScript 引用,那么将会转到概述面板。
当这段代码在你的页面上执行,它将会抓取数字,然后将其显示在元素面板。这是采取了 $_ 属性的优点来估算这个输出的表达式。
$(‘[data-target="inspecting-dom-elements-example"]‘)
inspect($_)
使用最近选择的元素和对象
控制台存储了最近的 5 个元素和对象。一旦你在元素面板中选中了元素,或者是在概述面板中选中了一个对象,就会被记录在历史栈中。$x 提供了一个进入历史栈的入口。要注意的是计算机是从 0 开始计数的。这就意味着最先选中的是 $0,而最后选中的是 $4。
监听事件
monitorEvents() 方法让开发者工具记录特定目标的日志信息。第一个参数是监听的对象。如果第二个参数没有提供参数,则所有事件都返回。为了具体说明你要监听的事件,你需要提供一个字符串或者一个字符串数组作为第二个参数。
在页面的 body 上监听点击时间。
monitorEvents(document.body, "click");
如果开发者工具支持的某个事件类型映射到了标准事件名称上,那么该类型的时间会被监听。控制台 API 有一个完整的从事件到事件类型上的映射。
停止对 body 对象的监听,可以调用 unmonitorEvents() 方法并且告诉它要停止监听的对象。
停止对 body 对象的监听
unmonitorEvents(document.body);
控制 CPU 检测
profile() 函数会开启 JavaScript CPU 检测。你也可以通过输入一个字符串来为检测命名。要停止检测就调用 profileEnd() 方法。
创建一个没有命名的检测。
profile()
profileEnd()
示例检测:
如果你提供了一个标签,该标签会被当做标题。如果你创建了多个配置文件,并且它们用的是同一个标签,那么它们将会被分到统一组下。
示例代码:
profile("init")
profileEnd("init")
profile("init")
profileEnd("init")
在配置面板上的结果:
多个 CPU 配置文件可以同时操作。并且,
以上是关于Chrome 开发工具指南的主要内容,如果未能解决你的问题,请参考以下文章
markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段