我正在做一个项目,在这个项目中,jQuery中的许多遗留代码在许多不同的地方创建了onChange和onClick处理程序。当运行这个应用程序时,我看到了所有奇怪的功能,然后我花了一段时间来逆转英语。查找操作的位置(&F)。
有没有一种简单的方法来设置断点并捕获所有或某些特定的jquery.on('...
函数?
更新:主要的问题是,处理程序一直在添加和删除。有时选择器并不是那么微不足道(例如,特定类下tr
的第三个孩子)。我确实知道如何使用dev-tools,我在寻找一种聪明的方法来缩短逆向工程的方式,并在调用堆栈中找到处理程序创建/添加的正确位置。
发布于 2019-05-10 14:44:19
您可以使用截获事件处理程序注册的函数、包含debugger
语句的函数以及对事件处理程序的调用来覆盖on
函数。如下所示:
const oldOn = jQuery.fn.on;
jQuery.fn.extend({
on(...args) {
const f = args.pop();
oldOn.call(this, ...args, function(...args) {
debugger;
f.call(this, ...args);
});
}
});
jQuery( "#box" ).on( "click", function() {
console.log( 'clicked' );
});
#box {
position: relative;
height: 100px;
width: 100px;
background: skyblue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="box"></div>
注意:debugger
在SO上不起作用,但在jsfiddle:https://jsfiddle.net/7kr5y2d8/2/上起作用。
https://stackoverflow.com/questions/56079703
复制相似问题