事件侦听器未删除,因为 Ionic 4 & Angular 与 BugSnag addEventListener / removeEventListener 冲突
event listeners not removed as Ionic 4 & Angular conflicts with 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);
}
- Bugsnag 拦截了
addEventListener
和 removeEventListener
方法,并且出于某种原因 removeEventListener
调用(至少对于 click
处理程序)无效。 bugsnag beginning of eventListener handling interception code (仅供参考,我相信冲突在其他地方,方法很长):
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
处理程序,并且复选框单击处理程序无法正常工作(即不可能进行多次更改)
我相信处理程序中存在一些冲突 registering/deregistering 代码但不确定如何继续 - 可能需要在 Ionic 或 Bugsnag 中进行一些修复。
刚刚发现将 @bugsnag/js
更新到版本 6.4.3
解决了问题。
正在尝试解决我的 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);
}
- Bugsnag 拦截了
addEventListener
和removeEventListener
方法,并且出于某种原因removeEventListener
调用(至少对于click
处理程序)无效。 bugsnag beginning of eventListener handling interception code (仅供参考,我相信冲突在其他地方,方法很长):
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
处理程序,并且复选框单击处理程序无法正常工作(即不可能进行多次更改)
我相信处理程序中存在一些冲突 registering/deregistering 代码但不确定如何继续 - 可能需要在 Ionic 或 Bugsnag 中进行一些修复。
刚刚发现将 @bugsnag/js
更新到版本 6.4.3
解决了问题。