Firefox访问about:addons时webNavigation.onBeforeNavigate监听器触发两次求解
这是Firefox内置about:系列特权页面的特殊加载逻辑导致的,和你的扩展代码没有关联,具体原因如下:
- 第一次触发
webNavigation.onBeforeNavigate是你输入地址发起导航后,Firefox先触发了顶层文档(frameId=0)的初始化导航请求,用来分配页面对应的进程、权限上下文,准备加载内置页面的基础容器。 - 第二次触发相同参数的事件,是因为Firefox的
about:addons这类内置页面本质是打包在浏览器安装包内的特权前端页面,基础容器初始化完成后,浏览器会发起第二次同URL的顶层导航,用来加载实际的页面逻辑、渲染内容,两次导航的标签、窗口、帧参数完全一致,仅时间戳存在差异。
普通公开网页没有这种内置特权页面的二次容器初始化逻辑,所以只会触发一次onBeforeNavigate事件。
如果你需要避免重复触发,可以在监听器里加简单的去重逻辑:同一个tabId+frameId+url组合在500ms内的重复事件直接过滤即可。
内容的提问来源于stack exchange,提问作者Manu8170
相关产品推荐
相关产品推荐

