我的目标是动态跟踪 JavaScript 中事件处理程序的所有注册,包括但不限于文档和窗口对象。一段代码应该在网站的其余部分执行(onLoad)之前运行,并且应该报告哪些函数注册了事件。我想包装addEventListener
,等onmouseclick
,onmessage
但我不想单独为每个对象执行此操作。
我正在研究修改Object.constructor
在构造函数中执行自检的行为。代码应该很简单,大致如下所示:
var toWrap = [ "addEventListener", "onclick", "..." ];
for ( var x in toWrap ) {
if ( toWrap[x] in this ) {
this[toWrap[x]] = wrap(toWrap[x], this[toWrap[x]]);
}
}
...但是插入代码的正确位置是什么?
纯 JavaScript 解决方案将优于 jQuery 等,我在 PhantomJS 中实现。
更新:
阅读此内容后,我想出了以下代码。它似乎工作正常 - 有任何异议吗?
Object = ( function ( ) {
this.wrap = function(e) {
// ....
}
this.wrap();
});