开发Chrome扩展时MutationObserver在多类站点触发异常问题咨询
Chrome扩展MutationObserver触发异常问题
功能实现背景
正在开发一款Chrome扩展,计划通过content script中的MutationObserver回调,自动移除Cookie授权弹窗、页面干扰元素,核心实现逻辑如下:
start(); function start() { console.log('start'); scanner.observer = new MutationObserver(function(mutations) { console.log('MutationObserver callback', mutations); scanner.run(); }); scanner.observer.observe(document.documentElement, { attributes: true, characterData: false, childList: true, subtree: true, attributeOldValue: false, characterDataOldValue: false }); }
注:上述
start函数的调用时机包含两个场景:一是content script注入时直接执行,二是用户每次点击扩展popup按钮时触发。
现有运行表现
多数站点功能可正常运行,但部分站点存在异常,具体观测结果如下:
谷歌系站点的差异化异常
- 部分站点功能正常:translate.google.com、keep.google.com 运行时回调、日志输出均符合预期
- 部分站点出现回调异常:
- google.com:正常模式下执行搜索时功能正常,可输出正确的回调日志;但无痕模式下仅能输出
start日志,完全无MutationObserver回调触发 - developer.chrome.com:正常、无痕模式下均无回调触发
- chrome.webstore.com:连
start日志都无法输出(chrome://extensions等内置页面无反应属于浏览器预期限制)
- google.com:正常模式下执行搜索时功能正常,可输出正确的回调日志;但无痕模式下仅能输出
非谷歌站点的偶发延迟/无触发异常
- stackoverflow.com、stackexchange.com 偶发MutationObserver不触发,或回调延迟10-20秒才执行,触发时机通常对应页面补充资源、图片加载完成并更新DOM的节点
待解答问题
上述异常行为未在公开技术文档中找到对应说明,需要明确这类异常背后的底层技术原因。
内容的提问来源于stack exchange,提问作者Axel Productions 86
相关产品推荐
相关产品推荐

