前端浏览器调试详解版

简介: 前端浏览器调试详解版


调试工具介绍

打开调试工具的方法

如何打开devtool?

  1. 菜单>更多工具>开发者工具

  2. 快捷键F12

打开命令菜单

命令菜单中可以输入命令修改调试工具的一些配置,如主题;或者调用调试工具自带的一些功能,如截屏、dock

切换主题

比如要修改浏览器调试工具的主题,ctrl+shift+p打开命令菜单,输入dark theme,就可与将调试工具的主题切换成黑色主题

重新F12打开调试工具或者点击Reload DevTools,可以看见主题变成了黑色

截屏

ctrl+shift+p打开命令菜单,输入screenshot,这4个截屏选项分别是区域截屏、整个页面截屏、按节点截屏、当前视窗截屏

dock切换调试工具的位置

Dock to left将调试工具切换到左边

Dock to right 将调试工具切换到右边

Undock将调试工具用一个新窗口打开

常用的tab

调试工具的使用

css调试

检查元素

右击元素,点击检查,就可以在element面板快速定位我们想要检查的元素

也可以通过element面板的dom树选择我们要审查的元素

还能通过ctrl+shift+c或者调试面板的这个按钮,选中要审查的元素

我们审查元素的时候,可以看到元素有三种不同的背景色,淡蓝色是元素本体、淡绿色是元素padding,橙色是元素的margin

pc端与移动端的预览效果切换

如果我们想切换pc端和移动端的预览效果,可以点击调试面板的这个按钮,或者ctrl+shift+m实现切换

这里可以切换移动设备的型号、更改宽高、百分比、切换设备横屏竖屏

查询DOM树

我们可以看到element这一个tab下就是我们的html代码

常规查找

如果我们想查找某一个dom结点,我们在element下ctrl+f,输入字符串,就能找到对应的dom结点

css选择器查找

我们还可以通过css选择器的方式,找到我们的dom结点,比如要查找id为s_is_result_css的

textarea,输入textarea#s_is_result_css查找即可

Xpath方式查找

如下图://代表全局范围查找,//div/h3代表全局范围查找div下的h3标签

通过console的inspect(element)的方式查找结点

比如要查找id为s_is_result_css的dom元素

console面板输入 inspect(document.getElementById(‘s_is_result_css’)),再按下回车,调试工具就会跳转到element面板对应的dom元素上

编辑css样式
更改css

选中样式,在右侧element.style内更改样式,比如修改字体颜色为red

可以看到字体颜色成功变成红色

css代码映射

我们还可以看到是项目代码哪一行定义了这个样式

点击代码的映射,就能跳转到souces面板对应的代码文件对应的行数

盒子模型

面板最下侧是一个盒子模型,可以直观的看到dom元素的宽高、border、padding、margin

伪类样式常驻

比如有一个按钮,鼠标悬停在上方的时候,按钮背景是变色的,那么如何让hover的效果常驻不变呢?

我们先选中指定的元素,然后可以看到样式面板右上角有一个:hov,点击可以看到如下选项,给:hover打勾,即可让hover样式常驻,勾选之后可以看到代码指定元素上有一个黄色小点,代表伪类样式已被固定

取消当前样式

选中元素,把样式中的勾去掉,就可取消当前样式

取消当前元素的class样式

选中元素,样式面板点击.cls,取消class类名的选中即可

复制样式

element调试面板选中需要复制样式的元素,右键选择copy~copy styles

之后选择需要粘贴样式的元素,把样式贴到element.style即可

Computed面板

Computed面板不按元素和class区分,会列出页面中所有生效的样式

比如我们搜索color,那么就会列出color相关的样式,点击箭头,就会跳转到生效样式的元素上

需要注意的是,Computed面板不会直接展示继承过来的样式,如果想展示继承的样式,可以点击Show all,即可展示所有包括继承的样式

Group可以对样式进行功能上的区分

Layout面板

Layout面板主要分为2部分,一个是Grid,一个是Flexbox,这是两个前端常用的布局方式,即网格布局和弹性布局

这个面板把页面中所有用到网格布局和弹性布局的容器全部列到了里边

Grid网格布局

首先先看网格布局,选中Grid overlays中列出的已经使用网格布局的元素,就可以在页面中看到是哪个元素使用了网格布局,并且该元素还展示了很多的辅助线

这些辅助线1代表第一列,2代表第二列…1代表第一行,2代表第二行…

-1代表倒数第一列,-2代表倒数第二列…-1代表倒数第一行,-2代表倒数第二行…

hide line labels 隐藏网格布局的辅助线

show line names显示网格布局的每一行每一列的名称

show line numbers显示网格布局的每一行每一列的编号

show track sizes 显示网格布局的每一个网格所占用的空间大小

show area names显示网格布局的每一个网格的名称

extend grid lines 延长网格布局的辅助线

使用网格布局,在styles面板的网格样式里,右边会有小按钮,我们可以通过这个小按钮快速切换grid布局

Flexable弹性布局

选中Flexable overlays中列出的已经使用弹性布局的元素,就可以在页面中看到是哪个元素使用了弹性布局,并且该元素还展示了很多的辅助线(更改放块颜色可以更改辅助线颜色)

弹性布局和网格布局会显现小标签

使用弹性布局,在styles面板的弹性样式里,右边会有小按钮,我们可以通过这个小按钮快速切换flex布局

Event Listeners面板

在Event Listeners面板我们可以看到当前页面中所有绑定的事件

从这里可以看出window绑定了一个load事件,然后通过remove按钮我们可以把该项的事件监听去除掉

Properties面板

这个面板可以查看当前页面所有dom结点的所有属性

其是以原型链的方式展示的,如下,snack-box是继承HTMLDivElement的,HTMLDivElement是继承HTMLElement的,HTMLElement是继承Element的,一层层往下…

Accessibility面板

Accessibility帮助我们构建一个无障碍的页面

DOM BreakPoints面板

我们选中元素,右击选择Break on,可以看到以下选项:

subtree modifications意思是以这个结点为根节点,如果它里面的子节点被修改了,js的运行就会被暂停

attribute modifications意思是这个结点的一些属性被修改了,js的运行就会被暂停

node removal意思是这个结点从文档中被删除了,js的运行就会被暂停

此时我们选择attribute modifications,选中之后,element面板对应dom的左侧会出现一个蓝点,代表这个地方打了断点,而DOM BreakPoints面板也出现了断点列表

我们点击变颜色,按钮的文字颜色是会发生改变的,那么就会触发attribute modifications,暂停js的执行,此时souces面板上就会看到js暂停执行的原因是因为attribute modifications,即dom属性的修改导致了js的暂停。

也就是蓝色的代码改变了dom的属性,从而导致js的暂停

console调试

打开console控制台快捷键

ctrl+shift+j

console控制台可以输入和执行js语句

如下,console控制台可以输入和执行js语句,控制台每一行左边箭头代表输入语句,右边箭头代表上一行执行之后的返回值

$_返回上一条语句的执行结果

如下图,输入$_,可以返回a+b的执行结果

$0返回上一个选择的dom结点

比如在element面板选择了一个dom

控制台输入$0就会返回刚刚选择的dom,$1就会返回上上次选择的dom,$2就是上上上一个,依次类推…

console.log/error/warn/table/clean/group/time/assert/trace

可以通过console.log/error/warn/table/clean/group/time/assert/trace在控制台输出信息

console.log打印信息

console.error打印错误

console.warn打印警告

console.clean清空控制台

console.group可以将多个console设为一个组

console.time可以获取代码的执行时间

console.table可以将一个数组以表格的形式打印

console信息的级别筛选

这里可以筛选console信息的级别,比如只筛选error\warn\info

观测console变量

这个眼睛按钮可以观测console变量的变化

javascript调试

debugger调试

首先看页面,这个页面点击”变颜色”按钮,会随机改变按钮的文字颜色

js代码如下

如果代码出问题,我们可以在代码中输入debugger对代码进行调试

当执行到debugger的时候,会暂停代码的继续向下执行,并展现当前代码的执行位置

右上角的黄色标签提示了是什么原因导致的代码暂停执行,此时是debugger语句暂停了代码的执行

我们可以点击step over一步一步地去调试,可以看得到在每一次点击step over调试的过程中,代码依次往下执行,而且能看到每一行代码的执行结果

断点

除了在代码中写入debugger的方式进行调试,我们还可以在调试面板上点击行号打断点的方式进行调试

如下,点击行号,出现蓝色标签,表示我们在这里打了断点,当执行到打断点的行时,会暂停代码的执行,并且右上角黄色提示提示了代码暂停执行的原因是碰到了断点

在右上角的Breakpoint可以看到断点的位置

如下图,我们代码中写入了一个debugger,并在调试面板打了两个断点,当代码遇到debugger,会暂停代码的执行,点击右上角的三角按钮,会继续执行js代码,直到碰到下一个断点或者debugger,又会暂停执行

折叠代码

有些时候我们只想观测部分代码,其他的代码不想关注,那么我们可以通过ctrl+shift+p快速打开菜单,选择enable code folding

出现小箭头,此时我们就可以对不想观测的代码进行折叠

watch监听变量

我们还可以监视变量,比如监视color变量,那么我们在右上角的watch点击+号即可添加想要监视的变量,当color的值发生变化的时候,watch面板也会相应展现color的变化情况(如果color未定义,则展示not available)

DOM BreakPoints

我们选中元素,右击选择Break on,可以看到以下选项:

subtree modifications意思是以这个结点为根节点,如果它里面的子节点被修改了,js的运行就会被暂停

attribute modifications意思是这个结点的一些属性被修改了,js的运行就会被暂停

node removal意思是这个结点从文档中被删除了,js的运行就会被暂停

此时我们选择attribute modifications,选中之后,element面板对应dom的左侧会出现一个蓝点,代表这个地方打了断点,而DOM BreakPoints面板也出现了断点列表

我们点击变颜色,按钮的文字颜色是会发生改变的,那么就会触发attribute modifications,暂停js的执行,此时souces面板上就会看到js暂停执行的原因是因为attribute modifications,即dom属性的修改导致了js的暂停。

也就是蓝色的代码改变了dom的属性,从而导致js的暂停

Event Listener Breakpoints

Event Listener Breakpoints也是暂停js代码的一种方式之一,即监听选中的事件,当触发事件之后,js就会暂停执行。

此时我们选择监听click事件

当触发点击事件,js代码就会暂停执行,并且面板右上方会提示是因为由于事件监听导致的代码暂停执行

Add script to ignore list忽略调试代码

有些时候我们的代码是通过框架来写的,比如通过vue来写的,在vue中我们定义了一个点击按钮改变颜色的方法

此时我们依旧是选择通过Event Listener Breakpoints监听click事件

但是点击按钮之后,却跳到了一个莫名其妙的地方,这是我们在vue.js源文件里把代码中断执行了。然而我们不需要调试vue.js,我们只需要调试我们自己写的代码

点击Call Stack,选中右击Add script to ignore list,意思是将代码添加到忽略调试的list里,即我们不需要调试vue.js,那么就忽略它,将它添加到忽略调试的list里,调试的时候就不会进入到vue.js,也不会被它影响

Add script to ignore list之后,出现提示,之后我们关闭vue.js

重新调试代码,就不会再次进入vue.js了,而是进入了我们自己编写的代码里

network调试

页面所有的请求都会被列入network面板中,name是请求名称、status是服务器状态码、type是资源类型、initiator是什么东西发起的请求、size是资源大小、time是发起请求的时间、waterfall是瀑布流图形化的东西

这个按钮如果置灰,就不再监听页面发起的请求

clear清空请求记录

筛选请求的资源(ws是websocket)

preserve log,默认跳转页面的时候,上一页面的请求信息就会消失,如果想保留之前页面的请求信息,那么就勾上preserve log

throttling这里可以模拟网络速度

也可以自定义throttling

download是下行速度,upload是上行速度,latency是延迟

这个按钮可以配置更多的网络情况

user agent可以设置用户代理

user agent会携带在请求头上

这两个按钮、import HAR file和export HAR file,导入HAR file和导出HAR file

HAR file实际上就是一段json数据格式,保存了浏览器和服务器交互的数据。通常当客户访问网页的时候,碰到一些问题,可能是网络方面的原因,但我们又没法模拟客户的网络环境,这时候我们可以要求客户把这个HAR file下载下来,然后开发人员再在自己的浏览器导入这个HAR file,就可以模拟当时用户的网络请求

导入HAR file我们可以看到network面板下列出了用户的网络请求

我们还能看到下方有网络请求的信息

Application调试

这个面板我们可以看到存储在本地的一些storage\cookie\SQL\Cache

备注

梳理不易,转载请注明出处

目录
相关文章
|
2月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
177 2
|
27天前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
45 8
|
4月前
|
存储 缓存 前端开发
前端谷歌浏览器面版属性
【8月更文挑战第19天】前端谷歌浏览器面版属性
51 0
|
4月前
|
Web App开发 监控 前端开发
前端必备浏览器调试工具
【8月更文挑战第19天】前端必备浏览器调试工具
83 0
|
1月前
|
前端开发 JavaScript API
前端开发的秘密花园:这些技巧让你轻松应对各种浏览器兼容性问题!
【10月更文挑战第31天】前端开发是一个充满创意与挑战的领域,追求极致用户体验的同时,浏览器兼容性问题却时常阻碍我们前进。本文将介绍几种解决浏览器兼容性的最佳实践:使用CSS前缀、Autoprefixer工具、现代JavaScript特性与Babel转译、Polyfill与Feature Detection、响应式设计以及跨域问题处理。掌握这些技巧,助你轻松应对各种兼容性难题,创建更稳定、用户友好的网页应用。
33 3
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
111 1
|
1月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
66 1
|
2月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
596 1
|
2月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
4月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
61 1