Web 调试技术 | 青训营笔记

50 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 8 天

浏览器调试

Chrome DevTools

以如下代码为例进行调试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            border: 2px solid black;
            width: 50px;
            height: 50px;
        }
        .box:hover{
            box-shadow: 10px 5px 5px gray;
        }
        .small{
            width: 100px;
            height: 100px;
        }
        .big{
            width: 200px;
            height: 200px;
        }

        .red{
            background-color: red;
        }
        .green{
            background-color: green;
        }
        .radius{
            border-radius: 10px;
        }
    </style>
</head>
<body>
    <div class="box small red"></div>
    <div class="box big green"></div>
</body>
</html>

Elements面板

展示网页元素,页面会显示鼠标悬浮的相应的结点

  1. styles: 显示元素的样式,内容、边框、内边距、外边距的大小等。
  • 点击.cls来动态修改类选择器
  • 调试伪类:强制元素处于某一种状态
    • 方法一:在elements面板中选中该元素->右键->Force state->选择想要的状态 image.png
    • 方法二:在style面板中点击状态 image.png
  1. computed: 输入样式名,搜索指定的样式 image.png
    CSS中有声明的样式鼠标悬浮在其上时会有个小箭头,点击该箭头会跳转到styles面板中对应的CSS规则

Console面板

左侧可以选择等级,对日志进行分类查看

  • console.log
    打印日志信息
    image.png
    注意控制台输出字符串的颜色和数字的不同,白色是字符串,紫色的是数字
    image.png
  • console.warn 打印警告信息
    image.png
  • console.error 打印错误信息
    image.png
  • console.debug 打印调试信息
    image.png
  • console.info
    image.png
  • consile.table 具像化地展示JSON和数组数据,看起来更清晰 image.png
  • console.dir 通过类似文件树的方式展示对象的属性
    image.png
  • console.time
    你可以启动一个计时器来跟踪某一个操作的占用时长。每一个计时器必须拥有唯一的名字,页面中最多能同时运行 10,000 个计时器。当以此计时器名字为参数调用 console.timeEnd() 时,浏览器将以毫秒为单位,输出对应计时器所经过的时间。
  • 占位符 给日志添加样式,可以突出重要的信息 %s:字符串占位符;%o: 对象占位符;%c: 样式占位符;%d: 数字占位符 image.png

Source面板

image.png 浏览器中打断点的方式

  1. 在源代码中添加debugger
  2. 点击源代码的行号 image.png
  3. 鼠标移入相应的变量,就会显示当前值 image.png
  4. Source右侧面板中的Watch可显示当前断点的值 image.png
    • Scope: 展开Scope可以查看作用域列表(包含闭包)
    • Call Stack可以查看当前JavaScript代码的调用栈 问题1:如果通过检查中的Source面板就能看到当前页面的源代码,这样是否安全?如何解决该问题?
      答:网站上线之前JavaScript代码通常会被压缩,压缩后的代码只有一行,变量使用‘a’、‘b’替换,整体变得不可阅读。
      问题2:压缩后的代码如何调试?
      image.png
      思考题答案:上线前删除Source Map文件,将其上传到另一个平台

Network面板

image.png 显示整个站点在加载过程中请求的所有资源 image.png
上图表示可以模拟不同的网络来分析该站点的弱网适配情况