Incompatibilidades con Chrome
WebExtensions está diseñado para ser compatible con las extensiones de Chrome y Opera: en la medida de lo posible, las extensiones escritas para esos navegadores deberían ejecutarse en Firefox con cambios mínimos.
Sin embargo, Firefox cuenta actualmente con soporte para sólo un conjunto limitado de funciones y API compatibles con Chrome y Opera. Estamos trabajando en agregar más soporte, pero muchas características aún no son compatibles, y es posible que nunca admitamos algunas.
En este artículo se enumeran todas las características y API que se admiten total o parcialmente en Firefox. Cuando una característica está parcialmente soportada, hemos indicado cuáles son las lagunas.
Es seguro asumir que las funciones y las API que no se enumeran aquí en absoluto aún no son compatibles.
Funciones de manifest.json
>Claves completamente compatibles
Claves parcialmente admitidas
Datos de fondo
Firefox no admite la propiedad "persistent". Los scripts de fondo permanecen cargados todo el tiempo.
Scripts de contenido
Firefox no admite actualmente:
include_globsexclude_globsmatch_about_blank
Permisos
Firefox aún no admite los siguientes permisos:
activeTabbackgroundclipboardReadclipboardWritegeolocationnativeMessagingunlimitedStorage
Obviamente, también no admite permisos para las APIs que no son compatibles.
APIs JavaScript
>APIs completamente soportadas
- alarmas
- Menú contextual
- pageAction
- Las URL relativas pasadas a
setPopup()se resuelven en relación con el documento de la persona que llama, en lugar de con la raíz de la extensión .
- Las URL relativas pasadas a
APIs parcialmente soportadas
marcadores
-
Firefox no admite:
getRecent()search()removeTree()(removetambién elimina carpetas no vacías)onCreatedonRemovedonChangedonMovedonChildrenReorderedonImportBeganonImportEnded- BookmarkTreeNodeUnmodifiable
-
Firefox tiene marcadores especiales como "Marcado recientemente" o "Visitado recientemente"
browserAction
-
Firefox no admite:
enable()odisable().
-
Las URL relativas pasadas a
setPopup()se resuelven en relación con el documento de la persona que llama, en lugar de con la raíz de la extensión .
cookies
- eventos onChanged pueden ser subtely diferentes
- Creación de cookies de sesión
setpodría fallar getAllCookieStoressiempre devuelve un almacén predeterminado y sin pestañas- el acceso a las cookies desde pestañas privadas es imposible
extension
- Firefox sólo soporta :
getBackgroundPage()getURL()inIncognitoContexten los scripts de contenido
i18n
- En la API JavaScript API, Firefox solo soporta
getMessage(). - Firefox solo soporta los mensajes predefinidos
@@extension_idy@@ui_locale. - Firefox no localiza archivos CSS.
- Las cadenas para ser localizadas deben consistir enteramente de
__MSG_foo__con el fin de realizar una sustitución al crearlas.
notifications
-
Las únicas opciones de notificación admitidas son :
iconUrltitlemessage.
-
Los únicos métodos soportados son :
create()clear()getAll().
-
El único evento soportado es
onClosed. -
Firefox no proporciona
byUserdatos.
Tiempo de ejecución
- Firefox sólo admite:
onStartup()getManifest()getURL()idsendMessage()onMessageonConnect
Almacenamiento
- El único área de almacenamiento que soporta Firefox es
local. - Firefox no soporta
getBytesInUse()oclear)).
tabs
- Firefox does not support:
getCurrent()sendRequest()getSelected()duplicate()highlight()move()detectLanguage()captureVisibleTab()getZoom()setZoom()getZoomSettings()setZoomSettings()
Firefox treats highlighted and active as the same since Firefox cannot select multiple tabs.
Firefox doesn't yet support the callback argument to executeScript().
webNavigation
- Firefox does not support:
getFrame()getAllFrames()onCreatedNavigationTargetonHistoryStateUpdated- transition types and qualifiers
- Filtering
onReferenceFragmentUpdated also triggers for pushState.
webRequest
-
Firefox does not support:
handlerBehaviorChanged()onAuthRequiredonBeforeRedirectonErrorOccurred
-
Requests can be:
- canceled only in
onBeforeRequest - modified/redirected only in
onBeforeSendHeaders
- canceled only in
-
Responses can be modified only in
onHeadersReceived. -
Filtering by
windowIdandtabIdis not supported. -
The
"requestBody"instruction inopt_extraInfoSpecis not supported. -
Redirection is not allowed in
onBeforeRequestoronHeadersReceived, but is allowed inonBeforeSendHeaders. -
requestIdis not included in the argument passed to the listener.
windows
onFocusChangedwill trigger multiple times for a given focus change.create()does not support thefocused,type, orstateoptions.update()only supports thefocusedoption.
Planned APIs
We don't yet support the following APIs, but plan to, soon:
CSS
Localized String Interpolation
We currently do not support interpolation of localized strings __MSG_ tokens in extension CSS files: Error 1209184 en Firefox.
Relative URLs
We resolve URLs in injected CSS files relative to the CSS file itself, rather than to the page it's injected into.
Miscellaneous incompatibilities
- Chrome allows any optional arguments to be omitted, even if followed by other arguments. Firefox currently supports this only under specific circumetances. We recommend only omitting optional arguments at the end of the arguments list, and using
nullfor all other cases. - Firefox currently does not allow the
orletstatement in ordinary web pages or Web Extensions. While it is possible to enable support for Firefox's variant of the statement using a specialconst<script>tag, this is not recommended. Instead, if your extension code usesletorconststatements, we recommend that you transpile them using Babel until support is turned on globally.