上一篇
f12js调试
- 行业动态
- 2025-05-03
- 2
F12键可开启浏览器开发者工具,支持JS断点调试、变量监控、网络分析及错误定位,助
元素检查与修改
核心功能:
- 实时查看HTML结构:右键点击页面元素选择“检查”可快速定位DOM节点。
- 动态修改样式:在
Styles
面板中双击CSS属性值可直接编辑,支持实时预览效果。 - 事件监听断点:在
Event Listeners
标签页可筛选特定事件(如click
)并设置断点。
示例操作:
修改按钮文本颜色为红色:
- 选中按钮元素
- 展开
Styles
面板 - 添加
color: red;
规则 - 观察页面实时变化
网络请求分析
关键数据列:
列名 | 作用 |
---|---|
Name | 请求地址与资源名称 |
Protocol | 协议类型(HTTP/HTTPS) |
Status | 响应状态码(200/404/500等) |
Type | 资源类型(doc/js/css/img等) |
Size | 文件大小 |
Time | 请求耗时(瀑布图分析) |
Initiator | 发起请求的脚本/事件源 |
典型场景:
- 排查404错误:点击状态码列筛选非200响应
- 分析第三方脚本:通过
Initiator
追踪广告/统计代码 - 优化加载:按
Size
排序查找大文件进行压缩
控制台高级用法
常用命令:
console.log()
:输出变量值(支持对象展开)$0
:代表最近选中的DOM元素(如$0.style.background = 'yellow'
)copy()
:复制日志内容到剪贴板monitor(expression)
:持续监控表达式变化(如monitor(performance.memory)
)
调试技巧:
- 使用
%c
格式化输出:console.log('%c警告','color:red;font-weight:bold;')
- 异常捕获:在
Sources
面板设置uncaught exception
断点 - 网络日志:输入
networkLog
查看历史请求(需先开启Preserve log
)
断点调试实战
断点类型对比:
类型 | 适用场景 | 触发时机 |
---|---|---|
行内断点 | 单步跟踪代码执行 | 代码运行到该行时暂停 |
条件断点 | 仅在满足条件时触发 | 设置条件表达式(如i>5 ) |
XHR断点 | 拦截所有XMLHttpRequest请求 | 发送请求前暂停 |
事件断点 | 捕获指定事件(如resize ) | 事件触发时暂停 |
调试循环引用:
// 在console输入检测闭包引用 function checkCycle(obj) { console.assert(obj !== window, '存在全局变量引用'); }
性能分析工具
关键指标:
- FPS(帧率):60fps以上为流畅,低于30fps出现卡顿
- CPU占用:持续高于50%需优化算法
- 内存泄漏:通过
Heap Snapshot
对比两次快照差异 - Long Task:超过50ms的任务会被标记为长任务
优化案例:
- 发现
requestAnimationFrame
回调耗时过长:- 在
Performance
面板录制动画 - 分析火焰图中的红色区域(耗时函数)
- 替换
canvas
绘制算法为WebGL加速
- 在
移动端模拟测试
设备参数配置表:
参数 | iPhone X | Pixel 2 XL | Custom Device |
---|---|---|---|
分辨率 | 1125×2436 | 1440×2960 | 720×1280 |
用户代理 | 自动匹配 | 手动输入 | Mozilla/5.0 (Linux; Android 10) |
触摸事件 | 支持多点触控 | 支持手势模拟 | 需启用Touch 选项 |
网络环境 | 4G/WiFi可选 | 自定义延迟 | 设置上行/下行带宽限制 |
地理定位模拟:
在Application
面板的Manually set location
输入经纬度(如7749,-122.4194
模拟旧金山)
常见问题与解决方案
Q1:如何定位跨域请求被阻止的问题?
A:
- 在
Network
面板过滤blocked
类型请求 - 检查请求头中的
Origin
与服务器允许的域名是否匹配 - 使用
Credentials
设置为include
以发送Cookies - 确认服务器端已设置
Access-Control-Allow-Origin
响应头
Q2:为什么修改CSS后样式未生效?
A:
| 原因 | 解决方案 |
|———————–|———————————-|
| 选择器优先级不足 | 添加!important
或提高权重 |
| 样式被其他文件覆盖 | 在Styles
面板禁用冲突的CSS规则 |
| 伪类/伪元素未匹配 | 检查:hover
/::before
等状态 |
| 浏览器缓存导致 | 清除缓存(Ctrl+F5)或禁用