2

我的目标是动态跟踪 JavaScript 中事件处理程序的所有注册,包括但不限于文档和窗口对象。一段代码应该在网站的其余部分执行(onLoad)之前运行,并且应该报告哪些函数注册了事件。我想包装addEventListener,等onmouseclickonmessage但我不想单独为每个对象执行此操作。

我正在研究修改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();
});
4

0 回答 0