我希望能够在每个页面上使用像 vimium 和颜色逆变器这样的扩展,包括像chrome://settings
或这样的内置命令about:newtab
。
Firefox 和 Chromium 都不允许扩展修改内置页面。
这种行为可以改变吗?我对任何浏览器都没有特别的偏好,我只是需要它能在其中一个浏览器上运行。我很乐意摆弄源代码并在必要时重新编译。
答案1
WebExtensions 无法修改about:
或chrome://
页面,因此您提到的行为无法更改。这是 Firefox 和 Chrome 都支持的唯一扩展 API,因为前者已经不再支持 XUL 扩展。
扩展程序可以通过 将内容脚本注入与 URL 模式匹配的选项卡或特定选项卡tabs.executeScript()
。这两种方法都采用以 开头的目标页面的“匹配模式”,<scheme>
必须是http[s]
、file
、ftp
或app
(对于 Firefox),因此无法访问chrome://
或about:
URL。CSS 注入 APItabs.insertCSS()
也使用匹配模式,不能用于修改受保护的页面。
扩展程序还可以具有无法访问网页的后台脚本,并且必须通过内容脚本间接修改它们,因此它们受到相同的限制。
由于 Firefox 和 Chromium 的源代码都是可用的,您当然可以进行必要的更改以授予扩展额外的权限,但没有像编译时开关这样简单的事情。
通过后台脚本注册的键盘快捷键在所有页面上都有效,但目前尚不存在真正任意组合键所需的 API。如果您正在设计 Firefox,您可能能够about:
通过修改来影响页面userChrome.css
。
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Match_patterns https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Tabs/executeScript https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/insertCSS https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts