爬虫 -- JS调试

摘要:
它用于在不实际删除现有断点的情况下恢复完整的执行。再次单击以重新激活断点范围。当脚本中断时,“范围”窗格将在当前时间显示所有当前定义的属性调用堆栈。侧边栏顶部附近是CallStack窗格。当代码在断点处暂停时,CallStack窗格将显示执行路径。按照相反的时间顺序,代码将被带到断点。这有助于理解它现在在哪里执行,以及它是如何到达这里的,这是调试中的一个重要因素

开发者工具(F12)

其中常用的有Elements(元素面板)、Console(控制台面板)、Sources(源代码面板)、Network(网络面板)

爬虫 -- JS调试第1张


找 JS 文件的几种方法

1、找发起地址

爬虫 -- JS调试第2张

2、设置事件触发断点 Event Listener Breakpoint

  • 使用Sources面板上的Event Listener Breakpoints(事件侦听器断点)
  • 当某事件(例如,click(单击))或事件类别(例如,任何mouse(鼠标)事件)被触发时
  • 会自动打开触发对应事件的JS文件

爬虫 -- JS调试第3张
爬虫 -- JS调试第4张

3、监测DOM树变化的断点

  • 在HTML元素上右键单击,然后选择Break on,节点左侧的蓝色圆点,表示在该节点上设置了DOM断点
  • 当设置的断点被触发时,自动打开对应的 JS 文件
  • subtree modifications(子树修改)
    • 当当前选定节点的子节点被删除、添加或子节点的内容发生更改时触发
    • 当子节点属性改变时,或当前选择的节点发生任何改变,都不会触发该类型的断点
  • attributes modifications(属性修改)
    • 当在当前选定的节点上添加或删除属性时,或当属性值改变时触发
  • node removal(节点删除)
    • 当当前选定的节点被删除时触发

爬虫 -- JS调试第5张

4、抓包

  • 在抓包工具里分析为出需要的值在哪个具体的JS文件
  • 然后直接到Sources打开对应的JS文件,搜索到对应的值进行断点


设置断点

  • 在特定的代码行上手动添加一个断点
  • 使用断点来暂停JS代码,审查变量的值和在特定时刻所调用的堆栈

爬虫 -- JS调试第6张


常用调试按钮

爬虫 -- JS调试第7张

  • 1(Resume):恢复执行,直到下一个断点。如果没有遇到断点,则恢复正常执行
  • 2(Step Over):执行下一行中发生的任何操作,并跳转到下一行
  • 3(Step Into):如果下一行包含一个函数调用,Step Into将跳转到该函数并在该函数的第一行暂停
  • 4(Step Out):执行当前函数的剩余部分,然后在函数调用后的下一个语句处暂停
  • 5(Deactivate Breakpoints):暂时禁用所有断点。用于恢复完整的执行,而不实际删除已有的断点。再次单击可以重新激活断点


作用域

当脚本中断的时候,Scope(作用域)窗格将显示当前时刻所有当前定义的属性

爬虫 -- JS调试第8张


调用堆栈

靠近边栏顶部的是Call Stack(调用堆栈)窗格

当代码在断点处暂停时,Call Stack(调用堆栈)窗格显示执行路径,按时间逆序,将代码带到该断点

这有助于理解现在执行到哪里,它是如何到达这里的,是调试的一个重要因素

爬虫 -- JS调试第9张




免责声明:文章转载自《爬虫 -- JS调试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android模糊查询gstreamer元件状态下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

可执行二进制文件的形成过程与简单调试

1) 预处理:主要对源码预编译语句(如宏定义define)和文件包含进行处理。即对宏指令替换和包含文件放置到需要编译的文件中,完成后会生成完整的C程序源文件。 2) 编译:对预处理以后文件进行编译,生成.s后缀的汇编语言文件,即该文件里是汇编语言的代码,汇编是一种更底层的语言,直接对硬盘进行操作。 3) 汇编:对汇编语言文件进行汇编,主要调用汇编处理程序来...

js常用API方法

String对象常用的API:API指应用程序编程接口,实际上就是一些提前预设好的方法。 charAt() 方法可返回指定位置的字符。 stringObject.charAt(index) indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 stringObject.indexOf(searchvalue, fromindex) s...

js scroll动画

知识点 1、window.scrollTo (x,y):可以把内容滚动到指定位置  scroll  scroll:卷动意思(书卷)  从上到下移动   1、window.onscroll 窗口滚动事件(必须有滚动条才可以触发) body{height: 5000px;} window.onscroll=function () {...

js原型和原型链(用代码理解代码)

众所周知js原型及原型链是很多开发者的一个疼点(我也不例外),我也曾多次被问起,也问过不少其他人,如果在自己没有真正的去实践和理解过;那么突然之间要去用最简单的话语进行概述还真不是一件容易的事情;其实工作中看似神秘的js原型也并不是那么难以理解,最终其目的无非是为了达到方法、属性共享代码重用的目的;在我所了解的编程语言中都会用到object这个最顶层对象,...

原生js版分页插件

之前我在自己的博客里发表了一篇用angularJs自定义指令实现的分页插件,今天简单改造了一下,改成了原生JavaScript版本的分页插件,可以自定义一些简单配置,特此记录下来。如有不足之处,欢迎指出。  需要购买阿里云产品和服务的,点击此链接领取优惠券红包,优惠购买哦,领取后一个月内有效: https://promotion.aliyun.com/nt...

(转)高性能JavaScript:加载和运行(动态加载JS代码)

浏览器是如何加载JS的 当浏览器遇到一个<script>标签时,浏览器首先根据标签src属性下载JavaScript代码,然后运行JavaScript代码,继而继续解析和翻译页面。如果需要加载的js文件很多很大,则会让人感觉页面加载很慢,影响页面的交互。浏览器在遇到<body>之前,不会渲染页面的任何部分,如果此时<head...