事件侦听器未删除,因为 Ionic 4 和 Angular 与 BugSnag addEventListener / removeEventListener 冲突



试图解决我的Angular/Ionic 4应用程序中无法工作的多选ion-select的问题。我发现这是我使用的BugSnag和ion-select实现的组合:

  • ion-alert(用于显示ion-select(click处理程序触发HostElement.forceUpdate,并且在更新期间click侦听器被移除并重新添加。@ionic/angular点击处理程序删除代码片段:
function (elm, eventName, cb, opts) {
elm.removeEventListener(eventName, cb, opts);
}
  • Bugsnack拦截addEventListenerremoveEventListener方法,并且由于某些原因,removeEventListener调用(至少对于click处理程序(没有效果。eventListener处理拦截代码的bug开始(仅供参考,我认为冲突在其他地方,方法很长(:
function __traceOriginalScript(fn, callbackAccessor) {
return function () {
var args = Array.prototype.slice.call(arguments);
var cba = callbackAccessor(args);
var cb = cba.get();
if (typeof cb !== 'function') return fn.apply(this, args);
  • 因此,每次单击后,每个按钮都会添加新的重复click处理程序,并且复选框单击处理程序无法正常工作(即不可能进行多个更改(

我认为在注册/注销代码的处理程序中存在一些冲突,但不确定如何继续-可能需要在Ionic或Bugstuck中进行一些修复。

刚刚发现将@bugsnag/js更新到版本6.4.3解决了这个问题。

最新更新