让你惊奇的前端调试技巧

2,121 阅读2分钟

一、部分快捷操作

1、控制台:保存堆栈信息( Stack trace )

image.png

2、使用命令Command面板

image.png

2.1、分析代码的覆盖率:

打开Command面板,如下图搜索“覆盖”,分析首次页面加载过程中哪些代码执行了,那些没有执行,输出一个报告。

image.png 选择文件可进一步查看代码的使用分析,红色 = 尚未执行,灰色 = 至少执行了一次。

image.png

2.2、元素截图:

输出指定元素的截图,包含隐藏滚动的内容,这个功能挺好用的。

通过Command面板:搜索“截图”,全屏截图、指定节点截图。

元素面板中,选中元素》右键菜单》“捕获节点屏幕截图”。

image.png

3、复制元素

快速访问当前元素$0$0代表在元素面板中选中元素,$1是上一个,支持到$4

image.png

 copy($0) 控制台中代码复制当前选素

image.png

4、快速隐藏、显示该元素

选中元素,按下h快速隐藏、显示该元素。

image.png

5、console对象

关于console对象,提供了很丰富的API

image.png

6、keys/values

见名知意。功能类似于Object.keysObject.values

image.png

二、DOM调试技巧

当DOM中某个元素移除或者元素属性发生变化的时候我需要打一个断点,但是我不知道是代码里哪一个地方导致它发生变化,或者代码中有多个地方导致它发生变化,我不知道具体是哪一行代码导致它发生变化时,这个时候就需要用上DOM调试了

2.1、使用方法

在开发者工具面板元素/Element中选中元素,鼠标右击调出面板,点击发生中断的条件/Break on,会出现3个选项

  • 子树修改/subtree modifications 当子元素变更时会在导致子元素变更的代码处打上断点
  • 属性修改/attribute modifications 当该元素自身属性变更时,会在属性变更出打上断点
  • 移除节点/node removal 当该元素自身被移除时,会在移除的代码处打上断点

image.png

以促销活动管理卡片为例:

首先给要发生变化的dom节点打上断点

image.png 点击“增加行”后,触发断点,此时可能会在框架底层操作dom的时候打上断点,但是我们可以在函数调用栈中往上寻找,知道我们代码中调用的地方。

image.png

2.2、查询dom树

·查询方式:文本查询/css选择器/XPath(XML路径语言(XML Path Language),它是一种用于在XML文档中定位和选择节点的语言。)

image.png

XPath的的使用示例:

  1. 选择所有名称为title的节点://title
  2. 选择ID为navdiv标签下的第一个ul标签下的所有li标签://div[@id='nav']/ul[1]/li

2.3、使用inspect()

可以帮助快速定位并检查DOM中的元素

image.png

三、监听

3.1、监听函数

如果某个元素被绑定了事件,但点击时无反应,就可以用monitorEvents来简单判断一下绑定的事件是否触发

image.png

3.2、监听变量:活动表达式

当自己需要反复监测一个变量的值时,非常省事且好使

image.png

表达式支持以下类型的值:

  1. 变量:

    • 可以是全局变量或局部作用域内的变量
  2. 表达式:

    • 任何有效的JavaScript表达式都可以被监视
    • 函数调用或方法返回的结果。例如,Date.now() 将返回当前的时间戳,并且这个值会随时间实时更新。
  3. DOM相关:

    • document.activeElement:实时跟踪当前文档中获得焦点的元素。
    • document.querySelector(selector):通过CSS选择器高亮任意节点。
    • $0:高亮当前所选中的节点。
    • $0.parentElement:高亮当前所选中的节点的父节点。

3.3、使用事件监听器断点

当接手一个陌生的功能,需要修改其中的事件逻辑时,我们可以在事件监听器里给修改的事件打上断点,然后忽略掉框架文件,此时手动点击或者双击元素就可以找到代码里的方法名

image.png

四、断点调试

image.png

4.1、断点错误调试

以打开结算单查看界面报错为例:

image.png

打开控制台,选中“在遇到异常时暂停”按钮,并将框架报错文件进行“向忽略列表添加脚本”操作,控制代码运行到报错处

image.png

image.png

在调用堆栈面板,可以看到比报错信息里更详细的的调用栈,在其中找到调用的入口,进行错误分析

image.png

4.2、条件调试

给重复执行超多次的代码的触发加上一个条件,这样可以避免干扰

image.png

4.3、日志断点

可以让我们少写 console.log

image.png

image.png

五、调试样式

当你在页面中使用Grid或Flex布局时,可以在布局面板进行各种操作,方便调试:

  1. 可视化编辑:当选中一个使用Grid或Flex布局的元素时,可以在样式面板中看到Grid或Flex布局的可视化编辑器。通过拖动和调整编辑器中的线条和区域,可以实时修改Grid的布局和对齐方式。
  2. 属性编辑:除了可视化编辑外,还可以直接编辑Grid或Flex布局的相关属性,如grid-template-rowsgrid-template-columnsgrid-gapflex-directionjustify-contentalign-items等等。修改这些属性后,布局会实时更新。

image.png

image.png

image.png

image.png