7 ms·
For an extension to be entirely declarative, it must package all the scripts to inject anywhere, the scripting.registerContentScript API doesn't allow injecting
by gorhill 3y ago
For an extension to be entirely declarative, it must package all the scripts to inject anywhere, the scripting.registerContentScript API doesn't allow injecting code as string[1], the content scripts must be part of the package.[2]
There is userScripts API which allows injecting code as string, but it's impractical as in Chromium-based browsers this requires extra steps by the user to enable the API.[3] In Firefox, the documentation for this API has the following note[4]:
> When using Manifest V3 or higher, use scripting.registerContentScripts() to register scripts
* * *
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/registerContentScripts https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
[2] https://github.com/uBlockOrigin/uBOL-home/tree/main/chromium/rulesets/scripting https://github.com/uBlockOrigin/uBOL-home/tree/main/chromium...
[3] https://developer.chrome.com/docs/extensions/reference/userScripts/#concepts-and-usage https://developer.chrome.com/docs/extensions/reference/userS... ("Availability Pending")
[4] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/userScripts https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...