javascript - 调试在特定事件上触发的所有函数

标签 javascript debugging dom-events

我正在尝试查看有关窗口滚动/调整大小或任何其他窗口事件的所有触发函数。有没有办法在 Chrome 上调试这个?也许有任何插件?

注意:我不想检测事件的目标元素。我想列出为触发事件而添加的所有回调。

例如,假设我有一些这样的加载回调:

window.addEventListener( 'load' , callback_function_a );
window.addEventListener( 'load' , callback_function_b );
window.addEventListener( 'load' , callback_function_c );
window.addEventListener( 'load' , function() {
    // do something
});

现在我想列出所有与窗口上的“加载”事件绑定(bind)的回调。也许有一种方法可以调试数组或对象中的信息,例如:

{
    'callback_function_a',
    'callback_function_b',
    'callback_function_c',
    'anonymous function',
}

还是别的什么?

最佳答案

您可以使用 getEventListeners(object) :

// Works in console only
function callback_function_a() {}
function callback_function_b() {}
function callback_function_c() {}

window.addEventListener( 'load' , callback_function_a );
window.addEventListener( 'load' , callback_function_b );
window.addEventListener( 'load' , callback_function_c );
window.addEventListener( 'load' , function() {});

const listenerNames = getEventListeners(window).load.map(getListenerName);

console.log(listenerNames);

function getListenerName(entry) {
  return entry.listener.name ? entry.listener.name : 'anonymous'
}

这是一个例子:

Print all <code>load</code> event listeners

关于javascript - 调试在特定事件上触发的所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417557/

相关文章:

javascript - requestFileSystem 在 Windows XP 上抛出 SECURITY_ERR - Chrome

javascript - 如何跳过基于 IF ELSE 语句的 Cypress 测试?

javascript - 保持网页中上下文菜单的原生样式

c++ - 如何在复杂的 cpp 项目中打印 gdb 中的 Armadillo 矩阵?

php - 在编写 PHP 代码(用于调试)时如何找出变量的值?

wcf - 如何调试远程托管的 WCF Web 服务

javascript - 为什么 Webpack 5 没有 CSS 文件输出?

javascript - JavaScript 如何识别事件对象变量?

Chrome 中的 JavaScript

javascript - 在CSS class的基础上为各种元素添加onclick事件