能否列出所有创建的自定义事件?

17

我知道在JavaScript中可以像这样为自定义事件添加事件侦听器:

window.addEventListener("MyCustomEvent", myFunction, false);

但是...是否有可能列出任何时候存在的所有自定义事件?

上述代码行添加一个事件监听器,无论该事件是否存在,因此我无法指示事件是否存在。


5
不,这是不可能的。浏览器中的控制台应该能够列出它们,Chrome有getEventListeners等函数,但它只能在控制台中使用,在你的脚本中无法列出添加的事件监听器。 - adeneo
谢谢adeneo。我实际上正在尝试通过控制台进行调试,但是在调试模式下似乎上述命令不起作用...让我进一步解释一下-我必须使用JQuery事件触发器来创建我的自定义事件,因为在Android本机浏览器中不支持通过Javascript创建它们...我宁愿不使用JQuery CustomEvents,所以一直在努力弄清楚JQuery本身如何创建这些事件,但是检查JQuery代码可能会有点混乱..! - Oli C
1个回答

13

通常这是一个不好的主意,但如果你确实需要这样做,你可以像这样覆盖addEventListener函数来跟踪添加的事件:

var events = {};
var original = window.addEventListener;

window.addEventListener = function(type, listener, useCapture) {
    events[type] = true;
    return original(type, listener, useCapture);
};

function hasEventBeenAdded(type) {
    return type in events;
}

请注意,这仅适用于在包含此代码片段后添加事件侦听器的代码。


嗨Overv,感谢您的回复,尽管我可能没有表达清楚-我上面的评论更好地解释了我需要什么-我正在调试以找出JQuery如何创建自定义事件,以便我可以将该代码实现在Javascript中。 - Oli C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接