有没有在Chrome控制台中为文件设置“断点”之类的选项(一种快捷方式,在文件的每一行代码上设置断点)?
当尝试理解第三方脚本时非常有用,您知道它们被执行,但不知道从哪个部分和从哪里执行。
我的当前示例用例:我下载了一个脚本(表单验证),但它不能按预期工作。解决问题的最快方法是在JS运行时进入此文件时随时暂停执行,并从那里开始探索。
有没有在Chrome控制台中为文件设置“断点”之类的选项(一种快捷方式,在文件的每一行代码上设置断点)?
当尝试理解第三方脚本时非常有用,您知道它们被执行,但不知道从哪个部分和从哪里执行。
我的当前示例用例:我下载了一个脚本(表单验证),但它不能按预期工作。解决问题的最快方法是在JS运行时进入此文件时随时暂停执行,并从那里开始探索。
我认为这对你会有用。最近我一直在使用Matt Zeunert创建的JavaScript Breakpoint Collection Chrome Extension进行编程工作,它允许您在运行时注入断点-包括在属性访问/修改、函数、滚动事件等方面进行中断。您可以使用控制台API在任意对象上进行中断,以及预定义的对象。
在这里查看该项目。
如果您可以公开列举第三方脚本公开的函数(例如,它们全部是对象属性或具有一定的命名规则),那么您可以编写另一个脚本,动态替换所有这些函数并强制中断:
thirdpartfunc = (function () {
var oldfunc = thirdpartfunc;
return function () {
debugger;
oldfunc.call(null, arguments);
}());
如果您知道正在调用的函数,可以使用function breakpoints。
debug(function);
function(...args);
[function0, function1].map(debug)
@Tibos在另一个帖子中的答案很好,如果有一种类似于Babel转换的方法可以自动在每个函数的开头插入debugger;
,而不是手动插入它,则会更好。
function [^{]*{
$0 debugger;
function [^{]*\{
你不能在感兴趣的文件中每个函数的第一行设置断点吗?