大约两个月前,我们开始使用Rollbar来通知我们Web应用程序中的各种错误。从那以后,我们偶尔会遇到一些错误:
超出ResizeObserver循环限制
让我困惑的是,我们没有使用ResizeObserver,我已经调查了唯一的插件,我认为可能是罪魁祸首,即:
奥蕾莉亚调整大小
但它似乎也没有使用ResizeObserver。
同样令人困惑的是,这些错误消息从1月份就开始出现,但ResizeObserver支持最近才添加到Chrome 65。
给出这个错误的浏览器版本是:
Chrome: 63.0.3239 (ResizeObserver循环限制超过)
Chrome: 64.0.3282 (ResizeObserver循环限制超过)
Edge: 14.14393 (SecurityError)
Edge: 15.15063 (SecurityError)
所以我想知道这是否可能是浏览器漏洞?或者可能是一个实际上与ResizeObserver无关的错误?
https://github1s.com/chromium/chromium/blob/master/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc#L44-L45
https://github1s.com/chromium/chromium/blob/master/third_party/blink/renderer/core/frame/local_frame_view.cc#L2211-L2212
在查看源代码后,在我的案例中,问题似乎是在调用NotifyResizeObservers函数时出现的,并且没有注册的观察者。
GatherObservations函数将返回min_depth为4096,在没有观察者的情况下,在这种情况下,我们将得到“ResizeObserver循环limit exceeded”错误。
我解决这个问题的方法是在页面的整个生命周期中设置一个观察者。
https://github1s.com/chromium/chromium/blob/master/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc#L44-L45
https://github1s.com/chromium/chromium/blob/master/third_party/blink/renderer/core/frame/local_frame_view.cc#L2211-L2212
在查看源代码后,在我的案例中,问题似乎是在调用NotifyResizeObservers函数时出现的,并且没有注册的观察者。
GatherObservations函数将返回min_depth为4096,在没有观察者的情况下,在这种情况下,我们将得到“ResizeObserver循环limit exceeded”错误。
我解决这个问题的方法是在页面的整个生命周期中设置一个观察者。