FireFox [附加组件管理器] 标签页使用 Chrome 的 favIconUrl


场景

吾辈最近开发了一个 标签页快速切换插件,原本准备在 Chrome Store 先行上架的,不过由于 Chrome 的 开发者注册 需要 Visa 信用卡付费,所以不得已暂缓了下来。
于是,去看了一下 Firefox 的插件开发者中心,发现其并不需要收费,所以便想要兼容一下 Firefox,但吾辈却由此发现了奇怪的事情。

首先是 firefox 报的一个错误

安全错误:位于 moz-extension://b0d38f9f-eca1-4163-870e-64aedabf5f20/popup.html 的内容不可以载入或者链接至 chrome://mozapps/skin/extensions/extension.svg。

当然,吾辈看到这个错误的第一时间是很懵逼的,因为吾辈未曾引用过 chrome://mozapps/skin/extensions/extension.svg 这个 svg 图片啊,为什么会提示不可以载入呢?

原因

于是吾辈去看了 browser.tabs.query 所查询到的数据,结果。。。

arr = await browser.tabs.query({})
arr.find(
  (tab) => (tab.favIconUrl = 'chrome://mozapps/skin/extensions/extension.svg'),
)

查询到的 tab

为什么 Firefox 的附加组件管理器标签页会使用 Chrome 的图标啊?难道是 Firefox 的开发团队复制 Chrome 源码的时候忘记替换了么?
抱着好玩的想法,吾辈将这个错误分享到了某个 Telegram 前端群中,有人提出了完全不同的解释:这是 Firefox 历史的遗产 – 遠古的 XUL 留下來的 scheme,甚至在 Chrome 浏览器出现之前就已经存在了。

参考:

复现步骤

如果有人想要复现这个问题玩一下的话,具体流程如下:

graph TB;
打开附加组件管理器 --> 调试附加组件 --> 选择一个扩展点击检查按钮 --> 输入上面的代码

流程示意图

总结

真相只有一个:Firefox 58 之后虽然号称重构了这个浏览器,但 UI 层并未抛弃掉老旧的 XUL,同时 Firefox 主要推动的 web extension api 则并未注意到这个问题(这里或许能从侧面说明 Firefox 的插件生态并不繁荣,这种问题都没有人遇到过。。。),导致了这种 自相冲突 的奇葩问题。


文章作者: rxliuli
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 rxliuli !
 上一篇
博客已添加离线支持 博客已添加离线支持
博客已使用 service-worker 技术对网站添加离线支持功能,具体实现不过是使用了 hexo-offline 插件,之后所有第一次访问过的页面之后便离线可用了,同时即便在线浏览仍然能更快的展示页面。想要使用它的主要原因是吾辈的博客是
2020-05-17 rxliuli
下一篇 
Android 上最好的浏览器 Kiwi browser Android 上最好的浏览器 Kiwi browser
场景 官网 或许对于现在很多人来说,浏览器是一个很少使用的 App,因为所有功能都可以在 App 做,不需要使用浏览器。一方面,是由于国内的大环境就是把用户当成傻瓜(事实上,即便是吾辈目前所在的公司,在 UI/UX 设计方面也倾向于将用户
2020-05-01 rxliuli
  目录