修补Element.prototype.addEventListener会破坏任何Angular 2应用程序

时间:2018-02-07 11:07:31

标签: javascript angularjs monkeypatching zonejs

我有一个Angular 2应用https://github.com/DanWahlin/Angular-JumpStart。我试图为我的一些用例修补Element.prototype.addEventListener。

这是补丁:

var origLis = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(type, handler, useCapture) {
    console.log("Added");
    return origLis.apply(this, arguments);
}

如果我修补 Element.prototype.addEventListener ,它会破坏Angular 2应用。应用中没有发送资源/ XHR。我在许多Angular 2应用程序上试过这个。但是,同样的结果。控制台中没有错误

有人知道为什么会发生这种情况吗?有解决办法吗?

PS:我不想修补 EventTarget.prototype.addEventListener ,如此处所述

Angular 2 application breaks when HTMLElement.prototype.addEventListener is modified

1 个答案:

答案 0 :(得分:1)

如果你尝试使用补丁addEventListener,不要在Element.prototype上执行,你可以在EventTarget.prototype上执行。在Angular中,zone.js monkey-patch EventTarget.prototype.addEventListener使更改检测工作,因此如果修改Element.prototype将破坏角度默认行为。