anjia / blog

博客,积累与沉淀
107 stars 4 forks source link

DevTools #39

Open anjia opened 5 years ago

anjia commented 5 years ago

目录

  1. Elements 面板
    • DOM 和 CSS:查看、实时编辑
  2. Console 面板
    • Console API
    • Console Utilities API / Command Line API
    • 调试 JS
  3. DevTools
    • 打开方式, UI设置
    • CSS, Color Picker
  4. Network 面板
  5. Storage 和 Resources

https://developers.google.com/web/tools/chrome-devtools/

anjia commented 5 years ago

Elements 面板

Inspect(检查)、实时编辑:HTML 和 CSS

DOM 和 CSS

内容:

说明:

其它:

相关:

https://developers.google.com/web/tools/chrome-devtools/inspect-styles/

anjia commented 5 years ago

编辑 DOM

无法改到源文件,重刷页面会消失

Event Listeners:建议隐身模式下打开,因为扩展也会将自己的事件添加到 DOM 上

https://developers.google.com/web/tools/chrome-devtools/inspect-styles/edit-dom

anjia commented 5 years ago

编辑 Styles

最基础的:

挺好玩的:

新增系列:

其它:


粒度从小到大:

1 css syntax - declaration 2 css syntax - declarations block 3 css syntax - ruleset

anjia commented 5 years ago

Console 面板

用途:

界面:

其它:

anjia commented 5 years ago

Console API

向控制台打印消息,控制台日志

  1. 最基本的
    • console.log()
      • 单个'%s'
      • 单个 +
      • 多个参数-以,分隔 则会在同行输出-以空格
    • console.info()
    • console.warn()
    • console.error()
  2. 更多格式,方便看
    • console.group()console.groupEnd()
      • eg.单个函数
      • eg.亦可嵌套
    • console.groupCollapsed()console.groupEnd() 自动折叠
    • console.count(msg)console.countReset()
    • console.trace() 调用此方法的堆栈信息
  3. 更快捷的
    • console.time(sameName)console.timeEnd(sameName) 快速计时,亚ms
    • console.assert(expression, object) 省了 if-else,仅当条件是false时,显示错误信息
  4. 输出特定对象的
    • console.dir() 输出 JS 表示形式
    • console.dirxml() 输出XML表示 || JS表示
  5. 其它
    • 录制回话
      • console.profile()console.profileEnd()
      • console.timeStamp() 录制会话期间,插入一个
    • console.clear()
      • 当启用 Preserve log 时,它将被停用
      • 但是其它清空方式依然有效。eg.按钮、快捷键 ctrl+L

格式说明符

所以,可以这么玩~

  1. DOM 元素 -> JS 对象的格式
    • 常规,DOM 元素是以 HTML 的形式输出到 console 中的
    • 那么,以 JS 对象的形式输出
      • console.dir(document.body) 用快捷方式
      • console.log('%O', document.body) 用格式说明符%O
  2. 自定义控制台样式
    • console.log('%cHello World', 'color:green; font-weight:bold;') 用CSS格式说明符%c

1 dom-js 1 css-

https://developers.google.com/web/tools/chrome-devtools/console/console-reference https://developers.google.com/web/tools/chrome-devtools/console/console-write

anjia commented 5 years ago

Console Utilities API

便捷函数

另外,复制一段 HTML

  1. 右键,Edit as HTML,复制
  2. 右键,Copy - Copy Element
  3. 选中,在 console 面板,copy($0)

https://developers.google.com/web/tools/chrome-devtools/console/utilities

anjia commented 5 years ago

调试 JS

设置断点,暂停正在执行的代码

设置断点的几种方法:

  1. 代码行断点。Sources 面板
    • 效果等同于 debugger;
  2. 条件行代码断点。
    • 右键,Edit breakpoint
  3. DOM:更改/删除特定DOM节点或其子节点时
    • Subtree Modifications(子树修改):当前选中节点的
      • child 被 removed/added 时
      • child 的 contents 被 changed 时
      • 注意:
        • child 的 attribute changes / 当前选中节点的 changes 都不会触发
    • Attribute Modifications(属性修改):当前选中节点的
      • attribute 被 added/removed 时
      • attribute 的 value 有 changes 时
    • Node Removal(节点删除):当前选中节点,被 removed 时
  4. XHR:Sources 页签,XHR Breakpoints
    • 当 XHR URL 包含字符串 pattern 时
    • eg.当发现页面里有一个 incorrect URL 时,想快速定位是谁发送的
  5. 事件监听器:Sources / Event Listener Breakpoints
    • eg. Mouse / click 选中,则设置断点
  6. 异常:Sources / Pause on exceptions
    • 在抛出 caught / uncaught exception (捕获/未捕获的异常)
      • 未捕获的:点击按钮,变蓝色-启用
      • 捕获的异常:勾选
    • 适用场景:当怀疑是未捕获的异常引发了问题,但不知道异常在哪里时
  7. 函数:当指定函数被调用时
    • 在控制台输入debug(functionName)
    • 常常作为辅助手段,因为需要保证functionName在作用域内

调试小操作:

调试过程中,才会显示的:

JS Debugging

https://developers.google.com/web/tools/chrome-devtools/javascript

anjia commented 5 years ago

DevTools

Chrome DevTools, a set of web developer tools

open Elements panel to inspect the DOM or CSS Get Started with HTML and the DOM

打开 DevTools 的四种方式:

  1. right-click 元素,然后选中 Inspect
  2. 快捷键
    • cmd+option+I 打开上次开的面板 就够了
    • cmd+option+C 打开 Elements
    • cmd+option+J 打开 Console
    • 其它
      • Control+Shift (Windows,Linux,Chrome OS)
  3. 浏览器菜单三个点,更多工具 - 开发者工具
  4. 从命令行打开

命令菜单,支持模糊搜索:

选择元素的四种方式:

  1. 视口中,右键,选择“检查”
  2. Elements,选中吸取模式,单击视口中的元素
  3. Elements,单击 DOM 树中的元素
  4. Console,用API查询document.querySelector('p'),然后右键单击结果,在元素中显示

查看 CSS

  1. Styles 里,显示适用于元素的所有规则。包括已被覆盖的声明
  2. Computed 里,可以过滤,只看实际应用到元素的 CSS
    • 继承的,灰色显示
  3. Filter,可搜索特定的属性/值,很好用
  4. 以打印模式查看页面
    • 命令菜单 > Drawer Showing Rendering
    • 两种媒体查询:print + screen styles
  5. Coverage 选项卡:查看已使用/未使用的 CSS
    • 命令菜单 > Drawer Show Coverage
    • 浏览器加载的每个文件使用的 CSS 情况:绿色-使用,红色-未使用
      • 单击,Sources 面板可看每行
  6. 添加样式表规则
    • 还可以选择文件~,单击+按住
    • 到特定位置
  7. hover到规则上,更多操作,很方便

Color Picker 拾色器

  1. 点击预览的小色块,即可打开
  2. UI上的每个元素
    • Shades
    • Eyedropper 滴管/吸管
    • Copy To Clipboard 取决于4里的值
    • 颜色值,RGBA, HSLA, Hex
    • Color Palette,调色板
    • Hue 色调, 色彩, 颜色
    • Opacity 不透明度
    • Display Value Switcher
    • Color Palette Switcher
  3. 颜色的
    • Hue 色相
    • Saturation 饱和度
    • lightness/Brightness 亮度/明度
    • Shade 色度(颜色/色彩等的渐变)
    • Tone 色调
    • Tint 色彩
css-color

其它

DevTools 的 UI

chrome://chrome-urls

Sources Panel

anjia commented 5 years ago

Network 面板

  1. 最常用的设置
    • 禁用缓存,模拟用户首次查看页面
    • 节流,选不同的网络环境
    • 保留log,跨页面加载保存请求
  2. 其它
    • 捕获屏幕截图,摄像机 ico
      • 单击,查看在截图时间之前发生的请求
      • 双击,放大图片,可预览。左右方向键可以翻页
    • 网络概况,Overview。两条线
      • DOMContentLoaded
      • Load
    • Waterfall,可 hover
  3. 常见的网络问题
    • 单个域上同时发送的请求太多
      • HTTP 1.0/1.1 则域分片
      • HTTP2 则域不分片
      • 关键请求提前下载
    • TTFB 慢
    • 内容下载慢
  4. 其它
    • 重播 XHR 请求
    • 右键,清除浏览器 Cache/Cookies
    • Filter Request

Requests Table

可查看更多信息:

查看 WebSocket Connection:

anjia commented 5 years ago

Storage 和 Resources

查看站点的资源情况

其它

cookie, localStorage, sessionStorage #43