如何运用浏览器进行各种调试?(网络、内存、控制台等调试用法)

目录

如图所示我们今天讲的就是浏览器内置调试工具的用法

​编辑

1.无代码理论讲解:

1. 控制台 (Console) 面板

功能:

场景:

操作:

2. 元素 (Elements) 面板

功能:

场景:

操作:

3. 源代码 (Sources) 面板

功能:

场景:

操作:

4. 网络 (Network) 面板

功能:

场景:

操作:

5. 性能 (Performance) 面板

功能:

场景:

操作:

6. 内存 (Memory) 面板

功能:

场景:

操作:

7. 应用 (Application) 面板

功能:

场景:

操作:

8. 安全 (Security) 面板

功能:

场景:

操作:

9. Lighthouse 面板

功能:

场景:

操作:

2.场景带入和代码实操

1. 控制台 (Console) 面板

场景:查看 JavaScript 错误和日志输出

操作:

2. 元素 (Elements) 面板

场景:查看并修改页面布局

操作:

3. 源代码 (Sources) 面板

场景:设置断点调试 JavaScript 代码

操作:

4. 网络 (Network) 面板

场景:查看 API 请求和响应

操作:

5. 性能 (Performance) 面板

场景:分析页面的加载性能

操作:

6. 内存 (Memory) 面板

场景:检测内存泄漏

操作:

7. 应用 (Application) 面板

场景:查看和管理浏览器存储

操作:


如图所示我们今天讲的就是浏览器内置调试工具的用法

1.无代码理论讲解:

1. 控制台 (Console) 面板

功能

显示 JavaScript 错误、警告和日志信息。

场景
  • 场景:在开发过程中,你可能会遇到某个功能没有按照预期工作,比如点击按钮后没有反应,或者某个值未正确传递。你可以使用 console.log() 来输出变量值,检查数据是否正确传递。

操作
  • 打开开发者工具,切换到 Console 面板。

  • 在代码中插入 console.log() 来查看变量的值,或者在控制台查看是否有 JavaScript 错误。

调试问题

  • 错误信息:假如你点击一个按钮,但页面没有反应,打开 Console 面板查看是否有报错信息,比如 TypeError: undefined is not a function,然后根据报错信息定位问题,解决该错误。


2. 元素 (Elements) 面板

功能

查看和编辑 HTML 结构及 CSS 样式。

场景
  • 场景:你正在开发一个响应式网站,但在不同设备上页面布局存在问题。你可以使用 Elements 面板查看和修改 HTML 结构和 CSS 样式,实时调整布局。

操作
  • 打开开发者工具,切换到 Elements 面板,右键点击页面元素,选择 Inspect(检查)。

  • 在右侧的 Styles 面板中修改 CSS 样式,查看页面的实时效果。

调试问题

  • 布局错乱:假设页面的布局错乱,打开 Elements 面板,检查 CSS 样式,可能发现某个元素的 position 被设置为 absolute 导致错位,修改为 relative 后页面恢复正常。


3. 源代码 (Sources) 面板

功能

调试 JavaScript 代码,查看调用堆栈,设置断点。

场景
  • 场景:你在开发一个表单,点击提交按钮后,表单数据没有发送到服务器。你怀疑是 JavaScript 代码出了问题,可以在 Sources 面板设置断点,逐步调试代码,查看变量值。

操作
  • 打开开发者工具,切换到 Sources 面板,找到相关的 JavaScript 文件。

  • 点击行号设置断点,刷新页面并执行相关操作,查看代码执行过程中的变量值和堆栈信息。

调试问题

  • 逻辑错误:假设表单的提交按钮没有响应,可能是 JavaScript 中的函数没有正确调用。通过 Sources 面板设置断点,逐步调试,查看哪个函数没有被正确触发,找到问题后修复。


4. 网络 (Network) 面板

功能

查看网络请求,分析页面加载的资源、API 请求等。

场景
  • 场景:你开发了一个电商网站,页面加载较慢,或者用户在提交订单时,订单数据没有成功发送到服务器。你可以通过 Network 面板查看 API 请求和响应,定位请求问题。

操作
  • 打开开发者工具,切换到 Network 面板,刷新页面,查看所有的网络请求。

  • 查看请求的状态码,分析失败的请求,查看响应数据。

调试问题

  • API 请求失败:假设你提交表单时,API 请求返回 404 错误,打开 Network 面板,查看请求的 URL 是否正确。检查请求路径,是否拼写错误,或者是否有缺少必要的参数。


5. 性能 (Performance) 面板

功能

分析网页的运行时性能,识别性能瓶颈。

场景
  • 场景:你发现某个页面加载缓慢,可能是由于某些操作导致页面卡顿。你可以使用 Performance 面板来录制页面的加载过程,分析性能瓶颈。

操作
  • 打开开发者工具,切换到 Performance 面板,点击录制按钮,刷新页面。

  • 停止录制后,查看分析报告,识别哪些操作花费了最多时间。

调试问题

  • 页面卡顿:假设你开发的页面出现了卡顿现象,点击按钮时界面卡住,使用 Performance 面板录制性能数据,发现某个 JavaScript 函数执行时占用了大量时间。你可以优化该函数,减少计算量,提升性能。


6. 内存 (Memory) 面板

功能

分析内存使用情况,帮助发现内存泄漏。

场景
  • 场景:你发现页面在使用一段时间后变得越来越慢,可能是内存泄漏导致的。你可以使用 Memory 面板查看内存的使用情况,找出泄漏的源头。

操作
  • 打开开发者工具,切换到 Memory 面板,选择“快照”或“分配时间轴”。

  • 分析内存分配情况,检查是否存在未清理的对象。

调试问题

  • 内存泄漏:假设页面长时间使用后出现性能下降,可以通过 Memory 面板查看是否有对象未被正确回收。可能是某些事件监听器未被移除,导致内存泄漏。通过面板可以追踪到这些对象并手动清理。


7. 应用 (Application) 面板

功能

管理本地存储、会话存储、缓存资源等。

场景
  • 场景:你开发了一个带有用户认证功能的应用,当用户登录后,页面没有记住用户的登录状态。你可以使用 Application 面板检查是否正确存储了用户的登录信息。

操作
  • 打开开发者工具,切换到 Application 面板,查看 Local StorageSession Storage

  • 检查是否存储了登录的凭证或 token。

调试问题

  • 用户登录信息丢失:假设用户登录后刷新页面,登录信息丢失,可以通过 Application 面板查看 Local Storage,检查是否存在存储的 token。如果没有,可能是 JavaScript 中存储步骤出现问题。


8. 安全 (Security) 面板

功能

检查页面的安全性,如证书信息、混合内容等。

场景
  • 场景:你正在开发一个网站,但发现浏览器显示“不安全”的警告,可能是证书问题或加载了 HTTP 内容。你可以使用 Security 面板查看 SSL 证书是否有效,检查页面的安全性。

操作
  • 打开开发者工具,切换到 Security 面板,查看页面的 SSL/TLS 证书。

  • 检查是否有混合内容(HTTP 和 HTTPS 混用)。

调试问题

  • 证书错误:假设网站显示“连接不安全”,你可以在 Security 面板查看证书信息,检查是否证书过期,或者是否使用了不安全的协议。


9. Lighthouse 面板

功能

自动化生成网页的性能、无障碍、SEO 等各方面的报告。

场景
  • 场景:你开发的网站需要通过 SEO 检查,并且需要优化页面性能。你可以使用 Lighthouse 面板生成一份综合报告,获取优化建议。

操作
  • 打开开发者工具,切换到 Lighthouse 面板,选择要检查的项目(如性能、SEO、无障碍等)。

  • 点击“生成报告”按钮,Lighthouse 会自动生成并显示优化建议。

调试问题

  • 性能优化:假设页面加载很慢,可以使用 Lighthouse 面板生成性能报告,查看哪些方面需要优化,如图片压缩、资源合并、减少重排等。

2.场景带入和代码实操

1. 控制台 (Console) 面板

场景:查看 JavaScript 错误和日志输出

问题:按钮点击后没有任何反应。我们通过 console.log() 来查看变量和函数调用情况。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Console Debug Example</title>
</head>
<body>
  <button id="clickButton">Click Me!</button>
  <script>
    document.getElementById('clickButton').addEventListener('click', function() {
      // 没有任何输出
      console.log(message); // Error: message is not defined
    });
  </script>
</body>
</html>
操作
  • 打开浏览器开发者工具,切换到 Console 面板。

  • 点击按钮,你会在控制台看到 ReferenceError: message is not defined 错误信息。

  • 修复方法:定义 message 变量,解决错误。

let message = "Button Clicked!";
console.log(message);

2. 元素 (Elements) 面板

场景:查看并修改页面布局

问题:页面的 div 元素不居中。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Elements Debug Example</title>
  <style>
    #box {
      width: 300px;
      height: 300px;
      background-color: lightblue;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <div id="box"></div>
</body>
</html>
操作
  • 打开浏览器开发者工具,切换到 Elements 面板。

  • 右键点击 #box 元素,选择“检查”。

  • Styles 面板中查看 CSS,调整 marginposition 来修改布局。

调试方法

  • 问题#box 元素不居中。

  • 解决方法:在 Elements 面板中修改 #box 的 CSS 样式,将 margin 修改为 auto,或者使用 display: flex 来居中。

#box {
  margin: 0 auto;
  display: flex;
  justify-content: center;
  align-items: center;
}

3. 源代码 (Sources) 面板

场景:设置断点调试 JavaScript 代码

问题:点击按钮后没有触发预期的操作。你可以通过断点来调试代码,检查哪里出了问题。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Source Debug Example</title>
</head>
<body>
  <button id="clickButton">Click Me!</button>
  <script>
    document.getElementById('clickButton').addEventListener('click', function() {
      // 假设你调试此处,代码不生效
      console.log("Button clicked!");
      alert("Button was clicked!");
    });
  </script>
</body>
</html>
操作
  • 打开 Sources 面板,在 JavaScript 代码中点击行号设置断点。

  • 点击按钮,代码将暂停在断点处,你可以查看变量的值和堆栈信息。

  • 调试方法:通过逐步执行代码,查看是否触发了预期的函数。

修复:假设某个条件判断未正确设置,可以在调试过程中修改代码来修复。


4. 网络 (Network) 面板

场景:查看 API 请求和响应

问题:页面加载慢,API 请求没有成功。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Network Debug Example</title>
</head>
<body>
  <button id="loadData">Load Data</button>
  <div id="result"></div>
  <script>
    document.getElementById('loadData').addEventListener('click', function() {
      fetch('https://jsonplaceholder.typicode.com/invalidEndpoint')  // Invalid API endpoint
        .then(response => response.json())
        .then(data => document.getElementById('result').textContent = data.title)
        .catch(err => console.error("API Error:", err));
    });
  </script>
</body>
</html>
操作
  • 打开 Network 面板,点击“Load Data”按钮。

  • 观察请求是否成功,查看请求的响应状态。

  • 调试方法:你会看到一个 404 错误(请求的 API 地址不存在),你可以检查 API 请求的 URL 并修正。

修复:更新 API 地址为有效的地址。

fetch('https://jsonplaceholder.typicode.com/posts/1')

5. 性能 (Performance) 面板

场景:分析页面的加载性能

问题:页面加载速度慢,用户体验差。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Performance Debug Example</title>
</head>
<body>
  <button id="loadData">Load Data</button>
  <div id="content"></div>
  <script>
    document.getElementById('loadData').addEventListener('click', function() {
      let i = 0;
      while (i < 10000000) { // 这将阻塞 UI 线程
        i++;
      }
      document.getElementById('content').textContent = "Data Loaded!";
    });
  </script>
</body>
</html>
操作
  • 打开 Performance 面板,点击录制按钮,点击“Load Data”按钮。

  • 停止录制,查看分析报告,识别出 UI 卡顿的原因。

  • 调试方法:在性能分析报告中,发现主线程被阻塞,可以优化 while 循环,改用异步方法(如 setTimeoutrequestIdleCallback)。


6. 内存 (Memory) 面板

场景:检测内存泄漏

问题:页面长时间运行后,性能逐渐下降,内存占用过高。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Memory Debug Example</title>
</head>
<body>
  <button id="addItem">Add Item</button>
  <div id="items"></div>
  <script>
    const items = [];
    document.getElementById('addItem').addEventListener('click', function() {
      const newItem = { name: "Item" + (items.length + 1) };
      items.push(newItem);  // 模拟内存泄漏
    });
  </script>
</body>
</html>
操作
  • 打开 Memory 面板,点击 "Heap snapshot"。

  • 点击“Add Item”按钮多次,生成多个对象。

  • 调试方法:分析内存快照,查看是否存在内存泄漏(即对象未被正确释放)。解决方法是确保对象不被无意义地存储,及时清理不再使用的对象。


7. 应用 (Application) 面板

场景:查看和管理浏览器存储

问题:用户登录信息未正确存储。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Application Debug Example</title>
</head>
<body>
  <button id="saveLogin">Save Login</button>
  <script>
    document.getElementById('saveLogin').addEventListener('click', function() {
      localStorage.setItem('user', JSON.stringify({ name: 'John', loggedIn: true }));
    });
  </script>
</body>
</html>
操作
  • 打开 Application 面板,查看 Local Storage,检查是否存储了正确的用户信息。

  • 调试方法:如果数据没有正确存储,可以通过修改代码修复问题,确保数据存储格式正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值