浏览器调试技巧

news2024/11/26 7:36:44

浏览器调试技巧

文章将介绍几个 devtools 技巧。

缩放devtool ui

可能对于某些开发来说devtools 中的文本和按钮太小,使用起来不舒服。而浏览器也提供了可以缩放 devtools UI的方法。

devtools 的用户界面是使用 HTMLCSSJavaScript 构建的,这意味着它由浏览器呈现为 web 内容。因此devtoolsweb页面一样都可以通过Ctrl + +/-或者滚轮的方式来放大或缩小ui

请添加图片描述

删除烦人的覆盖层

当今网络的很大一部分都患有一种疾病,内容被无数的横幅、广告和弹出窗口覆盖,使得我们很难真正查看或执行我们最初想要做的事情。

虽然还有其他解决方案可以做到这一点(例如在某些浏览器中使用阅读器模式),但是对于我们开发来说,可以使用更合适的技巧。

单击 devtools 中的按钮(左上角的指针图标)以选择一个元素,或者按住Ctrl + Shift + c同样可以触发那个按钮。选中要删除的令人讨厌的弹出窗口或覆盖层,按下delete键即可。

示例以CSDN官网的广告为例:

请添加图片描述

获取页面上使用的字体

当我们正在浏览一个设计精美的网站,并想了解该网站使用哪种字体;或者在项目中调试字体回退问题或缺少字形问题的时候就可以使用该技巧来准确找出用于呈现内容的字体。

基于 Chromium 的浏览器(例如 ChromeEdgeBraveOpera):

  1. 选中想要查看字体的文本元素
  2. 打开元素栏中的计算样式
  3. 向下滚动到选项卡底部
  4. 显示渲染的字体

请添加图片描述
对于Firefox而言,在其检查器工具的侧栏中有一个字体选项卡,其中列出了用于呈现文本内容的字体。
在这里插入图片描述

检测未使用的代码

当今复杂的 Web 应用程序通常会加载大量代码,即使只需要其中一小部分来呈现首页。其中一个可以使网页快速加载的方式就是确保只加载它真正需要的JavaScriptCSS

在基于 Chromium 的浏览器中,可以使用覆盖率工具来识别代码的哪些部分未使用。

devtools中,使用命令菜单来作为快捷方式。

  1. 输入命令Ctrl + Shift + p打开命令输入框。
  2. 输入coverage
  3. 选择Start instrumenting coverage and reload page指令
  4. 等待页面重新加载并显示覆盖范围报告
  5. 单击任何报告的文件以在sources栏中将其打开。

在这里插入图片描述
该文件与蓝色条和红色条一起显示在工具中,分别指示一行代码是已使用还是未使用。

请添加图片描述

禁用事件侦听器

事件侦听器有时会妨碍调试网页。如果开发者正在调查特定问题,但每次移动鼠标或使用键盘时,都会触发不相关的事件侦听器,这可能会使得更难专注于调试。

禁用事件侦听器的一种简单方法是在元素工具(或 Firefox 中的检查器)中选择它适用的元素。

Firefox浏览器中,点击元素旁边的Event按钮,然后在出现的弹出窗口中取消选中要禁用的侦听器。

在这里插入图片描述

在基于 Chromium 的浏览器中,单击侧边栏面板中的事件侦听器选项卡,找到要删除的侦听器,然后单击删除

在这里插入图片描述

在 IOS 上的非 Safari 浏览器上查看控制台日志

其他浏览器上可能存在无法在 Safari 中复制的错误。调试起来可能相当棘手。虽然可以通过使用 USBIOS 设备连接到 Mac 来调试 Safari,但无法调试非 Safari 浏览器。

在使用 ·IOS· 时,有一种方法可以在 ChromeEdge(可能还有其他基于 Chromium 的浏览器)中查看控制台日志。

流程:

  1. IOS 设备上打开 ChromeEdge 并转到特殊about:inspect(会自动跳转到chrome://inspect /edge://inspect)页面
  2. 单击开始记录
  3. 保持此选项卡打开,然后打开另一个选项卡。
  4. 在新选项卡中,转到您要调试的页面。
  5. 返回上一个选项卡。就会显示控制台日志
    在这里插入图片描述

在这里插入图片描述

复制元素样式

提取整个元素的html代码是非常简单的,右键单击该元素并选择复制复制外部 HTML。但是想要提取元素的样式就比较困难了,因为它涉及到检查适用于该元素的所有 CSS 规则。

ChromeEdge 和其他基于 Chromium 的浏览器使此步骤更快:

  1. 在元素栏中,选择要从中复制样式的元素。
  2. 右键单击所选元素。
  3. 单击复制复制样式

在这里插入图片描述

下载页面上的所有图像

如果要下载网页上的所有图像,打开devtools,粘贴以下代码,点击enter即可:

$$('img').forEach(async (img) => {
 try {
   const src = img.src;
   const fetchResponse = await fetch(src);
   const blob = await fetchResponse.blob();
   const mimeType = blob.type;
   const start = src.lastIndexOf('/') + 1;
   const end = src.indexOf('.', start);
   let name = src.substring(start, end === -1 ? undefined : end);
   name = name.replace(/[^a-zA-Z0-9]+/g, '-');
   name += '.' + mimeType.substring(mimeType.lastIndexOf('/') + 1);
   // Download the blob using a <a> element.
   const a = document.createElement('a');
   a.setAttribute('href', URL.createObjectURL(blob));
   a.setAttribute('download', name);
   a.click();
 } catch (e) {}
});

当然上面的代码不一定能下载图片:网页上的 CSP 策略可能会导致某些图像无法下载。

禁用滥用调试器语句

js代码中存在debugger语句时,只要打开了devtools,就会暂停网站的主线程,只有关闭了devtools,这个语句才没有效果。

当遇到这种情况,可以通过以下步骤来解决:

  1. 打开sources栏(在 Firefox 中称为调试器)。
  2. 找到调试器语句所在的行。这应该不难,因为调试器当前暂停在那里,所以它应该立即可见。
  3. 右键单击该行旁边的行号。
  4. 在上下文菜单中,选择从不在此暂停。
  5. 刷新页面。

在这里插入图片描述

编辑并重新发送网络请求

在处理服务器端逻辑或接口时,可能会一遍遍刷新页面用于重新请求,这样非常烦躁且效率低。FirefoxEdge提供了一种方式可以编辑和重新发送请求。

  1. 打开网络栏。
  2. 右键单击要编辑的网络请求,然后单击编辑并重新发送
  3. 将打开一个新的侧边栏面板,您可以在其中更改 URL、方法、请求参数甚至正文等内容。
  4. 更改您需要的任何内容,然后单击“发送”。

Firefox:
在这里插入图片描述

Edge:
在这里插入图片描述

模拟设备

devtoolds模拟设备,使用的仍然是相同的浏览器渲染引擎,例如,当使用 Firefox 的响应式设计模式模拟 iPhone时,页面仍然由 Firefox 的渲染引擎 Gecko 渲染,而不是 Safari 的渲染引擎 WebKit 渲染。

不过在 devtools 中模拟设备对于测试布局在不同屏幕尺寸和设备像素比下的工作方式非常有用。甚至可以使用它来模拟触摸输入和其他用户代理字符串。

以下是模拟每个浏览器的设备的最简单方法:

ChromeEdgeFirefox 中,首先打开 devtools,然后按Ctrl + Shift + M,或单击设备工具栏图标。

更改视频的播放速率

通常,当视频出现在网页上时,显示该视频的视频播放器还会提供控制其播放的按钮,包括加快或减慢播放速度的方法。当然有些网页上的视频并未提供这些按钮时,也可以JavaScript控制。

  1. 打开devtools
  2. 在元素栏(在 Firefox 中称为“检查器”)中选择<video>元素。
  3. 打开控制台工具。
  4. 键入以下内容:$0.playbackRate = 2;,并按Enter

$0表达式是一个快捷方式,引用当前在 devtools 中选择的任何元素;在本例中,它指的是<video>元素。

通过使用video元素的playbackRate属性,可以加快或减慢视频速度。当然还可以使用任何其他属性或方法,例如:

  • $0.pause():暂停视频;
  • $0.play():继续播放视频;
  • $0.loop = true:循环重复播放视频;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国地图数据可视化制作,python的pyecharts模块读取excel中国着色地图可视化

数据格式如下&#xff1a; import pandas as pd from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.globals import ChartType# 读取Excel数据 data pd.read_excel(C:\\Users\\Administrator\\Desktop\\国内数据.xlsx)# 创建地图实例 m…

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台 北京海特伟业科技有限公司发布于2023年7月13日 文/任洪卓 一、大学英语四六级考点听力广播系统用户需求 内蒙古民族大学位于内蒙古东部通辽市&#xff0c;是一所综合型民族大学&#xff0c;为内蒙古自…

电子水尺——实时监测、高精度测量

法国作家雨果说过&#xff1a;一个城市的良心是下水道。当洪水四溢时&#xff0c;城市的下水道让滔滔之水悄然排淌&#xff0c;城市回归安详。 往期&#xff0c;水位监测总是“被动”执行&#xff0c;这样的做法不仅效率低下&#xff0c;还难以做到及时调度和合理应对。 山东…

2023.7.13-输入一个整数n,输出从1开始累加到n的求和

从1累加到n的计算公式为S(1n)n/2。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a1;int i 0;int sum 0;printf("整数n的值:");scanf("%d",&a);for (i 0; i < a; i){sum i;}printf("从…

opencv 05 彩色RGB像素值操作

opencv 05 彩色RGB像素值操作 RGB 模式的彩色图像在读入 OpenCV 内进行处理时&#xff0c;会按照行方向依次读取该 RGB 图像的 B 通道、G 通道、R 通道的像素点&#xff0c;并将像素点以行为单位存储在 ndarray 的列中。例如&#xff0c; 有一幅大小为 R 行C 列的原始 RGB 图像…

用户案例 | Apache DolphinScheduler 离线调度在自如多业务场景下的应用与实践

用户案例 | 自如 随着自如业务的快速发展&#xff0c;不断增长的调度任务和历史逾万的存量任务对平台稳定性提出了更高的要求。同时&#xff0c;众多非专业开发人员也需要一种更为“亲民”的调度平台使用体验。 如何满足这些日渐凸显的需求对自如大数据平台的开发团队来说&am…

重复值--Pandas

1. 删除重复行&#xff1a;drop_duplicate() 1.1 函数功能 返回去除重复行的DataFrame&#xff0c;不考虑索引。 1.2 函数语法 DataFrame.drop_duplicates(subsetNone, *, keepfirst, inplaceFalse, ignore_indexFalse)1.3 函数参数 参数含义subset列标签或列标签组成的列…

操作系统第四篇

C语言 第四章 C语言4.1 gcc简介4.2 C语言基础4.3 GNU Binutils 简介4.4 8086 汇编与 C 语言混合编程4.4.1 混合编程的几个问题4.4.2 混合编程的一个实例 第四章 C语言 前面章节用 x86 汇编语言写了引导记录 mbr.bin&#xff0c;并让 BIOS 引导到内存 0x07c00 处执行成功。然后用…

Git 工具出现克隆库失败详解

Git 工具出现克隆库失败详解 现象 错误字符串&#xff1a;git unable to access xxx: Encountered end of 原因 总体来说出现这个原因通常是因为网络连接的问题。具体的有以下几个方面 远程仓库不存在&#xff1a;检查所指定的远程仓库是否存在&#xff0c;确保仓库名称、U…

嵌套虚拟机-监控嵌套虚拟机-libvmi-volatility

接上回&#xff1a; libvmi监控-使用examples cd ~ git clone https://github.com/libvmi/libvmi.git cd libvmi mkdir build cd build # 注意&#xff0c;由于我们是vmi的虚拟机&#xff0c;所以cmake编译时需要加上该编译选项&#xff08;参考libvmi github上的readme&…

积分图像、图像分割、Harris角点检测

目录 1、积分图像 2、图像分割--漫水填充 3、图像分割--分水岭法 4、Harris角点检测 1、积分图像 //积分图像 int test1() {//创建一个1616全为1的矩阵,因为2561616Mat img Mat::ones(16, 16, CV_32FC1);//在图像中加入随机噪声RNG rng(10086);for (int y 0; y < img.r…

路径规划算法:基于法医调查优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于法医调查优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于法医调查优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

听GPT 讲K8s源代码--pkg(二)

在 Kubernetes&#xff08;K8s&#xff09;项目中&#xff0c;pkg/controller 目录是用于存放控制器&#xff08;Controller&#xff09;相关的代码的目录。控制器是 Kubernetes 的核心组件之一&#xff0c;用于管理和控制集群中的资源对象的状态和行为。 pkg/controller 目录的…

RTCP/SRTCP介绍

RFC 4585 - Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF) RFC 5124 - Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF) 译文&#xff1a; http://www.gpssoft…

[SAM]A Comprehensive Survey on Segment Anything Model for Vision and Beyond

A Comprehensive Survey on Segment Anything Model for Vision and Beyond Abstract 本文是SAM的第一篇综述 讲述了SAM的发展历史、进展、在不同任务、不同数据类型下的应用 首先介绍专有名词和背景知识 其次介绍SAM再图像处理等应用中的优点和局限 以及SAM未来展望 git链接…

C# Linq 详解一

目录 一、概述 二、Where 三、Select 四、GroupBy 五、First / FirstOrDefault 六、Last / LastOrDefault​​​​​​​ 一、概述 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串&#xff0c;没有编译时类型…

Exceptional C++读书笔记——泛型程序设计与C++标准库

更新中——上次更新&#xff08;2023.07.13-23:07&#xff09; 迭代器&#xff08;iterator&#xff09; #include <iostream> #include <vector> #include <iterator> #include <algorithm>int main() { std::vector<int> e; std::copy(…

第二章编程模型(Cortex-M7 Processor Programmers Model)

第二章编程模型 本章描述了程序员模型。它包含以下部分: 关于2-2页的程序员模型。2-3页的操作和执行方式。指令集摘要见第2-4页。系统地址映射在2-5页。2-8页的独家监视器。处理器核心寄存器在第2-9页。例外情况见第2-10页。 2.1关于编程模型 本章概述了描述实现定义选项的…

力扣题目解析:生成奇数个字符的字符串的巧妙方法

本篇博客会讲解力扣“1374. 生成每种字符都是奇数个的字符串”的解题思路&#xff0c;这是题目链接。 这道题的解题思路很巧妙&#xff0c;它利用了字符串长度n的奇偶性&#xff1a; 如果n是奇数&#xff0c;那么就把字符串全部填充为’a’&#xff0c;这样每种字符都是奇数个…

posix ipc之共享内存

note 1.shm_open的pathname不能带路径名&#xff0c;shm_open的创建目录为/dev/shm 2.使用ftruncate设置内核共享内存实例的大小 3.使用mmap进行有名映射(实例反应在文件系统的一个文件) code #include <sys/mman.h> #include <sys/stat.h> #include <fcntl…