Chrome

摘要:
Chrome是谷歌出品的一款非常优秀的浏览器。它有一个内置的开发工具,允许我们轻松调试JavaScript代码。为了方便大家学习和使用,我将在本文中对Chrome的调试技巧进行系统总结。然而,如果后台返回未格式化的JSON数据,查看起来会非常痛苦。我们可以通过chrome控制台的复制接口格式化JSON数据。

Chrome 是 Google 出品的一款非常优秀的浏览器,其内置了开发者工具(Windows 系统中按下 F12 即可开启),可以让我们方便地对 JavaScript 代码进行调试。

为方便大家学习和使用,本文我对 Chrome 的调试技巧做个系统的总结。

一、设置断点

有两种方法可以给代码添加断点

方法1:在 Source 内容区设置

(1)找到要调试的文件,然后在内容源代码左侧的代码标记行处点击,即可打上一个断点。

(2)刷新浏览器,当页面代码运行到断点处便会暂停执行。

Chrome第1张

方法2:在 js 文件中设置

(1)我们在 js 源文件中需要执行断点操作的代码前加上 debugger。

(2)刷新浏览器,当页面代码运行到断点处会暂停执行

Chrome第2张
二、设置断点执行条件

(1)右键点击设置的断点,选择 Edit breakpoint...

(2)输入执行断点的条件表达式,当表达式为 true 时断点调试才会生效。有了条件断点,我们在调试代码的时候能够更加精确地控制代码断点的时机

Chrome第3张
三、Call Stack 调用栈

1,界面介绍

(1)当断点执行到某一程序块处停下来后,右侧调试区的 Call Stack 会显示当前断点所处的方法调用栈,从上到下由最新调用处依次往下排列。

(2)Call Stack 列表的下方是 Scope Variables 列表,可以查看此时局部变量和全局变量的值。

Chrome第4张

2,使用技巧

(1)调试时当前调用在哪里,Call Stack 列表里的箭头便会指向哪里。同时当我们点击调用栈列表上的任意一处,便会调到相应的位置,方便我们再回头去看看代码。

(2)如果想重新从某个调用方法处执行,可以右键选择 Restart Frame。断点就会跳到此处开头重新执行,同时 Scope 中的变量值也会依据代码重新更改,这样就可以方便地回退来重新调试,省得我们再重新刷新整个页面。

Chrome第5张
四、DOM 元素设置断点 

1,DOM Breakpoints 介绍

除了可以给 js 代码设置断点,我们还可以给 DOM 元素设置断点。因为我们有时候需要监听和查看某个元素的变化、赋值情况,但是并是不太关心哪一段代码对它做的修改,只想看看它的变化情况,那么可以给它来个监听事件。

2,使用说明

(1)我们右键点击需要监听的 DOM 节点,选择“Break On...”菜单项,在出现的三个选择项中任选一个便会添加断点。

Chrome第6张

(2)这三个选择项分别对应如下三种修改情况:

  • suntree modifications:子节点修改
  • attribute modifications:自身属性修改
  • node removal:自身节点被删除

(3)设置好断点后,当 DOM 元素要被修改时,代码就会在自动停留在修改处。

Chrome第7张
五、统一管理所有断点

我们可能会在不同的文件、不同的位置添加许多断点。这些都会显示在 Source 页面里的 Breakpoints、DOM Breakpoints 区域中:

  • Breakpoints:js 断点
  • DOM Breakpoints:DOM 元素断点

点击断点前面的复选框可以暂时“去掉/加上”该断点,点击断点可跳转到相应的程序代码处

Chrome第8张
六、快捷键

1,快速定位文件

使用快捷键:ctrl + p

Chrome第9张

2,快速定位文件中成员函数

使用快捷键:ctrl + shif + o

Chrome第10张
七、格式化

1,js代码格式化

为了减小体积,有时候我们发现一些 js 源码都是压缩之后的代码,我们可以点击下面的 {} 大括号按钮将代码转成可读格式。

Chrome第11张

2,格式化返回的 JSON 数据

(1)有时我们调试程序时需要查看服务端返回的数据内容,这个在 Network 选项卡中就可看到。但如果后台返回的是没有格式化的 JSON 数据,查看起来会异常痛苦

Chrome第12张

(2)我们可以通过 chrome 控制台的 copy 接口来实现 JSON 数据的格式化。

(3)首先请求项的右键菜单中选择 Copy Response 拷贝响应内容。

Chrome第13张

(4)命令行中先输入 copy(),然后将拷贝的数据粘贴到括号中

Chrome第14张

(5)回车后 copy 接口便会自动将数据进行格式化,并保存到剪贴板中。我们将其粘贴到文本编辑器中就可以看到效果:

Chrome第15张
八、使用 Snippets 编写代码片段

1,Snippets 介绍

(1)在 Souces 页面下的 Snippets 栏目中,我们可以随时进行 JS 代码的编写,运行结果会打印到控制台。

(2)代码是全局保存的,我们在任何页面,包括新建标签页,都可以查看或运行这些代码。我们不再需要为了运行一小段 JS 代码而新建一个 HTML 页面。

(3)Snippets 的方便之处在于,我们只需要打开 Chrome 就可以编写一份任意页面都可以运行的JS代码

2,使用样例

(1)点击“New Snippet”按钮,创建一个新的片段文件

Chrome第16张

(2)在代码区域输入 js 代码

Chrome第17张

(3)按下“Ctrl + Enter”或者点击右下方的按钮执行代码,可以看到代码执行成功且反应到当前页面上了。

Chrome第18张
九、Async 调试

  Chrome 调试器的 Async 模式是为调试异步函数所设计一个功能

1,测试代码

下面是一段使用 Promise 的代码:

//做饭
function cook(){
    console.log('开始做饭。');
    var p = new Promise(function(resolve, reject){  //做一些异步操作
        setTimeout(function(){
            console.log('做饭完毕!');
            resolve('鸡蛋炒饭');
        }, 1000);
    });
    return p;
}
 
//吃饭
function eat(data){
    console.log('开始吃饭:' + data);
    var p = new Promise(function(resolve, reject){ //做一些异步操作
        setTimeout(function(){
            console.log('吃饭完毕!');
            resolve('用过的碗和筷子');
        }, 2000);
    });
    return p;
}
 
cook()
.then(eat)
.then(function(data){
    console.log(data);
});

2,代码调试

(1)我们都知道 Promise 的回调是异步执行的,默认情况下调用栈只记录到回调函数本身,我们无法找到代码执行的顺序,这给我们调试带来巨大的困难。

Chrome第19张

(2)开启 Async 模式后,异步函数之前的调用栈都会被记录下来,而且调用栈中代码执行状态也得到了保留。

Chrome第20张

免责声明:文章转载自《Chrome》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EEPROM工作原理透彻详解SQL Server 数据库资源占用分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VC中用到的几种调试输出TRACE的方法及其区别

最近一段陆续用了几种调试VC程序的方法。一般程序也肯定会使用到这几种方法。 现在总结如下: 1.在VC里面debug版本用TRACE自己打印trace到调试窗口。 局限就是,不能脱离了vc的环境进行调试。使用者只能是程序编写者来进行调试。 2。利用微软的调试工具Dbgview.exe,来看trace的输出,可以脱离vc的环境。 此方法与第一种的不同是,可以...

gdb命令调试技巧

gdb命令调试技巧 一、信息显示1、显示gdb版本 (gdb) show version2、显示gdb版权 (gdb) show version or show warranty3、启动时不显示提示信息gdb -q exe 或者.bashrc 添加alias gdb="gdb -q",重启shell4、退出时不显示提示信息(gdb) set confirm...

Vim 和 Gdb 学习笔记

Vim 和 Gdb 学习笔记 本文学习自 cbianchengrunoob 并有部分内容直接复制,甚至是转载? Warning:本文由于输入法原因,有可能会把‘的’误打为‘到’ Vim ![vi-vim-cheat-sheet-sch](/home/hs-black/ 脚本/vi-vim-cheat-sheet-sch.gif) 命令模式 命令模式大部分命...

chrome扩展程序开发之在目标页面运行自己的JS

如何在页面中嵌入自己写的Javascript脚本呢?下面分别介绍一下在Chrome和Firefox两种浏览器上的操作步骤: Chrome: 1. 打开chrome扩展程序页 – chrome://extensions 2. 将刚才的自定义脚本保存为以user.js为后缀的 .js文件,例如test.user.js,拖入扩展程序页。 3. 重启浏览器。 4....

Selenium+Python:下载文件(Firefox 和 Chrome)

引自  https://blog.csdn.net/Momorrine/article/details/79794146 1.      环境 操作系统 Win10 IDE Eclipse (Oxygen 4.7)+ PyDev 5.9.2 (JDK1.8) Python 3.5 Selenium selenium-3.9.0-py2.py...

CodeBlocks(17.12) 代码调试基础方法&快捷方式

1       printf输出代码关键字查找bug 这个是最简单最容易想到的方法,一般初期开始接触c语言,并用其从事简单代码编辑的时候都会很容易就习惯上这种调试方法,对一些特殊情况的实用率可能是最高的(比如结构难以想象的复杂数据结构之类的) 2       用软件自带的Split view来查看   在CodeBlocks的编辑界面右键找到Split...