善用浏览器的一些调试技巧

这篇具有很好参考价值的文章主要介绍了善用浏览器的一些调试技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

$0 和 __vue__

$0 是指当鼠标点击 Element 面板的某个 dom 元素后,console 里 $0 变量会自动指向该 dom 元素对象

__vue__ 是指 vue 框架会往 vue 组件 $mount 挂载的 dom 元素对象上添加一个 __vue__ 变量来指向当前 vue 组件

善用浏览器的一些调试技巧

善用浏览器的一些调试技巧

这意味我们可以直接在 console 面板里拿到任意 vue 组件实例对象:

  • 可以查看对象内部任意属性
  • 也可以直接操作对象内部的属性来达到预期的调试效果
  • 甚至可以用来查看三方库的 api,比如 element-ui 的某个组件内部的 api

或许你会疑问,这不是安装 chrome 插件(vue devtools)就可以搞定的事吗,插件还是个可视化界面操作,更直观便捷

没错!插件当然更方便,但没准插件内部实现原理就是这样的呢,掌握这个技巧,也可以在一些插件无法覆盖的场景下来调试页面,比如:

  • 生产环境的页面
  • 内网部署且无法代理到本地的页面
  • 非 chrome 浏览器
  • 等等

举一反三:

  • 很多开源库框架其实都会往绑定的 dom 或者 window 上挂载一些变量上去,善于在 console 利用这些变量,可以方便我们进行很多非本地开发场景下的调试
  • 我们日常封装一些复杂业务、复杂组件时,也可以参考这种思路,给自己开一个非本地开发场景下的调试入口,但注意别内存泄漏了
  • window 上挂实例对象变量容易导致内存泄漏,所以建议挂一些全局作用域的对象;实例对象尽量挂与他生命周期绑定的 dom 对象

接口数据搜索定位

善用浏览器的一些调试技巧

网络面板支持多个维度的搜索功能:

  • 根据内容关键词定位接口
    • 常用于看见界面某个文案或者只知道某个关键词,但想定位它是哪个接口返回时的场景
  • 在接口返回的内容里定位关键词
  • 根据 url 过滤接口

源码定位

jquery 时代的网页源码直接原原本本在浏览器上,调试和阅读都非常方便;

前端工程化后,混淆和压缩已经是标配,当出现生产故障时,首先考虑的应该是本地复现或者是将生成环境页面代理至本地的思路来解决;
但总会有某些场景,由于各种受限,只剩下浏览器直接操作的手段,因此,掌握一些源码定位和调试的方式技巧还是有必要的

全局搜索

善用浏览器的一些调试技巧

字符串、对象属性字段名这些不会被混淆,可以借助这类场景的关键词来搜索定位源码位置
通常界面也是第一看到的东西,尽量找个界面上看着不像通用类的文案全局搜索下,基本都能定位到对应组件源码

也可以审查元素,在 Element 面板里找到对应 dom 上比较唯一的 class 或 id 等来全局搜索

接口调用栈

善用浏览器的一些调试技巧

接口也是逻辑分析的入口点之一,比如找到某个页面呈现数据的请求接口,跟着调用栈走下去基本能梳理界面从拿到数据到呈现做了什么事
但要注意过滤掉三方库(如 axios, vue 等)对接口的封装,找到真实属于逻辑源码的调用栈

console 面板的函数源码跳转

善用浏览器的一些调试技巧

console 面板上的 log 日志,或者通过 log 输出一个函数,都支持点击跳转到对应源码位置
借助 $0 和 __vue__ 变量,找到对应组件的某个方法入口,通过 log 输出方法再跳转至源码位置,就能针对性的梳理某个逻辑源码

事件监听事件跳转

善用浏览器的一些调试技巧

对于某些按钮等组件的点击之类的事件,可以直接通过审查元素的 Element 面板的 EventListeners(事件监听器)这边查看到该按钮各类事件的监听器
过滤掉三方库的统一事件监听器,找到自己逻辑源码的事件监听器入口,也能针对性梳理该事件处理逻辑源码

源码调试

断点

善用浏览器的一些调试技巧

代码里加入 debugger 可以触发断点,但前提是本地开发调试模式
也可以直接浏览器上操作断点,除了常规的直接点击源码断点之外,也可以使用一些具体场景的断点,比如定时器触发时进入断点、异步请求响应时断点,DOM 变更时断点等等

overrides(覆盖)

善用浏览器的一些调试技巧

如果想在浏览器上修改源码并生效的话,需要使用到 overrides(覆盖|替换)功能,如上图
先在 Source(源代码/来源) 面板启用 overrides(替换) 功能,然后找到要编辑的源码文件,右键,点击替换内容(Save for override)
接下去就可以直接浏览器上修改源码,刷新后会加载这份修改后的代码文件

当你发现网络面板有个感汗号警告时,就意味着你启用了本地替换的功能,指定的源码文件不会从网络上加载,而是加载本地临时替换修改过的文件
这样就可以达到直接在源码调试的效果

实操场景说明

以上是个人日常比较常用的一些操作,每个技巧都不是割裂开的,经常是组合交叉使用

比如某生产环境来了个故障,本地无法复现,无法代理,还是个内网,只能远程客户设备直接在浏览器界面上调试定位

首先,我们要定位到大概源码,然后分析、断点、调试

怎么定位源码呢:

  • 字符串是不会被混淆的,所以可以全局搜索方式来尝试
  • 如果匹配点太多,那也可以先定位到某个关键接口,然后根据接口定位到源码
  • 如果还是没有定位到,对象的属性是不会被混淆的,所以也可以通过 $0 和 __vue__ 来根据某个 vue 组件的方法来定位源码

定位到源码后,断点还分析不出问题时,就可以继续利用 overrides 覆盖功能来直接修改浏览器源码进行调试文章来源地址https://www.toymoban.com/news/detail-760576.html

到了这里,关于善用浏览器的一些调试技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用浏览器调试方法

    # 1 调试是什么? # 1.1 调试是什么? **Bug的起源**:当时人们还在使用第一代真空计算机(马克二型),这种计算机是依靠控制电流来改变开关,从而实现控制,但是它会发出大量的热和光。 1949年9月9日,天气非常炎热,有一只娥死在了70号继电器里面,造成电路不通,机器死

    2024年02月14日
    浏览(33)
  • Chrome 浏览器远程调试

    打开浏览器的远程调试 Chrome浏览器的快捷方式,右键选择“属性”,在目标一栏加上 --remote-debugging-port=9222 ,后面的端口可以自己定义,完成之后启动浏览器。 我们拿另外一个浏览器测试下 打开新版的edge浏览器,地址栏输入 edge://inspect/#devices ,如果是chrome则需要输入 chr

    2024年02月13日
    浏览(38)
  • 安卓手机浏览器:远程调试

    简介 :有时我们需要调试手机浏览器网页信息,这时除了使用fiddler抓包拦截篡改,还可以通过USB连接,通过PC远程调试手机上的浏览器信息,进行映射。 历史攻略: adb:安卓手机USB调试模式 前置准备: 网页内容在移动设备上的体验可能和电脑上完全不同。Chrome DevTools 提供

    2024年02月09日
    浏览(32)
  • Selenium:浏览器及鼠标、键盘事件

    目录 一、控制浏览器 二、鼠标事件 三、键盘事件 一、控制浏览器 webdriver主要提供操作页面上各种元素的方法,但它也提供操作浏览器的一些方法,例如控制浏览器大小、前进和后退等。 1、控制浏览器窗口大小 2、全屏显示 webdriver提供了maximize_window()方法使打开的浏览器全

    2024年02月02日
    浏览(29)
  • 电脑技巧:Microsoft Edge浏览器技巧介绍

    目录 1、导入浏览器数据 2、Edge边栏 3、实用的扩展功能 4、创建集锦列表 4.1 集锦的作用 4.2 使用方法 5、查找优惠券 6、Edge效率省电模式 Microsoft Edge是Windows10操作系统预装的一款非常棒的浏览器和之前的IE不同,采用了谷歌浏览器内核,相比之前的版本好用了很多,今天给大

    2024年02月05日
    浏览(44)
  • web浏览器脚本的调试

    水一贴。 在浏览器中按F12 点击\\\"source\\\"或者\\\"源程序\\\" 点击html、js、css等源码文件所在的窗口的左边,此时点击处显示为蓝色光标,表示断点中断已经设置完毕。 配合窗口右上角的\\\"继续\\\" “下一步” \\\"跳过\\\"等控制按钮,即可完成对网页源码的调试。

    2024年02月14日
    浏览(41)
  • 谷歌浏览器调试vue项目

    前言          众所周知,在项目过程中我们常常遇到的一个问题就是本地调试的时候没问题但是发布到线上的时候就不行了。在时间充裕的情况下,我们当然可以慢慢调试,但是那是不可能的。在线上遇到问题时,难免会倍感压力和焦虑,这个时候就有必要强化前端的调试能力了

    2024年02月03日
    浏览(34)
  • 前端进阶之———浏览器调试巧技

            有幸的参加了一次腾讯的面试,被面试官问到了JS能不能在浏览器上import依赖已经遇到一个错误函数应该怎么解决。之前的经验是做一些简单的html,css样式调试以及他的报错信息,忽略了浏览器js调试的强大功能。觉得还是非常有必要的,很好的帮助我们以解决后

    2024年02月10日
    浏览(37)
  • JS一些常用判断(包括判断是否是苹果(ios)/安卓(Android)、是否是Safari浏览器、检测浏览器语言等等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 参考链接 JS判断客户端是否是iOS或者Android:http://caibaojian.com/browser-ios-or-android.html

    2024年02月04日
    浏览(61)
  • 打开谷歌浏览器远程调试功能

    谷歌浏览器远程调试功能 首先我们来启动Chrome的远程调试端口。你需要找到Chrome的安装位置,在Chrome的地址栏输入 chrome://version 就能找到Chrome的安装路径 开启远程控制命令 开启后的样子(注意要关闭其他谷歌浏览器的窗口) 记住其中的 webSocketDebuggerUrl 后面的地址。这就是我们

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包