Firefox Quantum 57 para programadores
Este artículo proporciona información sobre los cambios incluidos en Firefox 57 (también conocido como Firefox Quantum) que conciernen a los desarrolladores. Firefox 57 se disponibilizó al público el 14 de noviembre de 2017.
Firefox 57 === Firefox Quantum
Hemos bautizado a Firefox 57 como Quantum por el proyecto de ingeniería Firefox Quantum, cuyo objetivo ha sido el de reconstruir Firefox desde cero para darle un rendimiento y una estabilidad excelentes, así como mejorar su apariencia visual. Esta es la primera versión de Firefox en incluir algunos de estos cambios, así que quisimos conmemorar el acontecimiento.
Nota: Para obtener más información sobre las funciones de Quantum incluidas en esta versión, consúltese el artículo «Firefox Quantum Developer Edition: el Firefox más rápido, con IU Photon y mejores herramientas», escrito por Dan Callahan.
El nuevo procesador de CSS en paralelo de Firefox ―también denominado Quantum CSS o Stylo― está activado de manera predeterminada en Firefox 57 para escritorio; las versiones para móviles darán el salto en el futuro. Los programadores no deberían notar ninguna diferencia importante, aparte de la amplia gama de mejoras de rendimiento. Sin embargo, existen algunas diferencias menores de funcionalidad en Stylo, las cuales se han implementado para corregir comportamientos no estándares de Gecko que habrían de desaparecer. Informaremos de esas diferencias en las páginas de referencia y en las notas de publicación según proceda (véanse Notas sobre Quantum CSS).
Cambios para programadores web
Herramientas de desarrollo
No hay ningún cambio.
HTML
- Los tipos «date» y «time» de
<input>
ya están activados en todas las compilaciones (Error 1399036 en Firefox).
CSS
- Ahora admitimos los valores
minimal-ui
ystandalone
de la consultadisplay-mode
(Error 1369815 en Firefox). Consúltese también el campo de manifiesto de aplicación webdisplay
. - Se corrigió un problema que causaba que la notación abreviada de la cuadrícula quedara restablecida al utilizar
grid-row-gap
ygrid-column-gap
(Error 1387410 en Firefox). - Se ha eliminado la preferencia
layout.css.clip-path-shapes.enabled
, que permitía activar o desactivar la compatibilidad de<basic-shape>
conclip-path
(Error 1399767 en Firefox).
Notas sobre Quantum CSS
- Los valores de degradados radiales tales como
radial-gradient(circle gold,red)
funcionan en el sistema de estilos de Gecko anterior, pero no debería por la coma faltante entrecircle
ygold
(Error 1383323 en Firefox). Quantum corrige este defecto. - Cuando se da animación a un elemento ubicado fuera de la pantalla y se establece un tiempo de retardo, Gecko no actualiza la visualización correctamente en algunas plataformas, como Windows (Error 1383239 en Firefox). Esto ha quedado corregido en Quantum.
- En Gecko, no es posible desplegar de manera predeterminada los elementos
<details>
mediante el atributoopen
si tienen una propiedadanimation
activa (Error 1382124 en Firefox). Quantum corrige este problema. - En Gecko, los efectos
transitions
no funcionan si se transiciona desde untext-shadow
con un color especificado a untext-shadow
sin ningún color (Error 726550 en Firefox). Este comportamiento se ha corregido en Quantum. - En Gecko, cancelar una animación de relleno (p. ej., con
animation-fill-mode: forwards
definido) puede desencadenar un conjunto de transiciones en el mismo elemento, aunque únicamente una vez (véase el Error 1192592 en Firefox y estas pruebas para más información). Por lo general, las animaciones declaratorias no deberían desencadenar animaciones. Esto se ha corregido en Quantum. - En Gecko, las animaciones que utilizan ems como unidad no reciben las modificaciones realizadas en
font-size
en el elemento padre del elemento animado, aunque deberían (Error 1254424 en Firefox). Quantum CSS corrige esto. - Gecko además maneja la herencia de
font-size
de manera diferente a la de Quantum CSS, por lo que para algunas configuraciones de idioma, los tamaños de letra heredados quedaban más pequeños de lo esperado (véase Error 1391341 en Firefox). Quantum corrige esto. - Gecko reutiliza el mismo mecanismo empleado al analizar una ficha de URL durante el análisis de las funciones
domain()
ourl-prefix()
para la regla@-moz-document
. Quantum CSS no utiliza el mismo mecanismo y no considera las fichas como no válidas cuando contienen paréntesis o comillas (Error 1362333 en Firefox). - En Gecko, cuando se define un tipo de letra del sistema como el valor del
tipo de letra
de algún contexto del lienzo 2D (p. ej.,menu
), la obtención del valor del tipo de letra no devuelve el resultado correcto (no devuelve nada). Este problema quedó solucionado en Quantum. (Error 1374885 en Firefox). - En Gecko, cuando se crea un subárbol desligado (p. ej., un
<div>
creado a través decreateElement()
que todavía no se inserta en el DOM), el elemento raíz del subárbol se define como un elemento de nivel bloque. En Quantum CSS, el elemento se define como alineado, tal como se define en la especificación (Error 1374994 en Firefox). - Gecko rechaza las expresiones
calc()
―lo que invalida el valor― cuando se utilizan como el componente radial de una funciónradial-gradient
(Error 1376019 en Firefox). Quantum CSS lo resuelve. - En Gecko,
calc(1*2*3)
no es analizado debidamente; Quantum CSS soluciona el problema (Error 1379467 en Firefox). - En Quantum CSS,
calc()
se admite en todos los sitios que la especificación indica (Error 1350857 en Firefox). En Gecko, este no es el caso. - Gecko contiene un defecto que provoca que los pseudoelementos
::before
y::after
se generen aun si el valor de la propiedadcontent
se define comonormal
onone
. Este comportamiento es contrario a la especificación (Error 1387931 en Firefox) y se ha corregido en Quantum. - Otro defecto de Gecko provoca que la propiedad
background-position
no pueda transicionarse entre dos valores que contengan números diferentes de valores<position>
, por ejemplo,background-position: 10px 10px;
ybackground-position: 20px 20px, 30px 30px;
(véase Error 1390446 en Firefox). Quantum resuelve el error.
SVG
No hay ningún cambio.
JavaScript
- El bucle no estándar
for each...in
(E4X) fue eliminado. En su lugar, utilícesefor...of
y consúltese Atención: los bucles de JavaScript 1.6 «for-each-in» son obsoletos para obtener ayuda en la migración. (Error 1083470 en Firefox). - Se marcaron como obsoletos los métodos
Object.prototype.watch()
yunwatch()
. Se emitirá una alerta si se utilizan y serán eliminados en el futuro próximo (Error 934669 en Firefox). - Se eliminaron los objetos
Iterator
yStopIteration
y el protocolo de iteración heredado (Error 1098412 en Firefox).
API
API nuevas
- Se ha activado de manera predeterminada la API
PerformanceObserver
(Error 1386021 en Firefox). - Añadimos las interfaces
AbortController
yAbortSignal
(conocidas como la API «Abort»), que permiten interrumpir las solicitudes del DOM (como las de recuperación) si así se desea (Error 1378342 en Firefox).
DOM
- Se ha implementado la propiedad
Selection.type
de la API Selection (Error 1359157 en Firefox). - Se admite
Document.createEvent('FocusEvent')
ahora (Error 1388069 en Firefox). - La propiedad
files
de la interfazHTMLInputElement
puede definirse ahora (Error 1384030 en Firefox). - El método
HTMLDocument.getSelection()
se ha trasladado a la interfazDocument
para que quede disponible para los documentos XML (Error 718711 en Firefox). - Hemos implementado el suceso
messageerror
, el cual puede ejecutar código tras su desencadenamiento por parte de manejadores de sucesos utilizados en destinos de mensajes. VéaseMessagePort.onmessageerror
,DedicatedWorkerGlobalScope.onmessageerror
,Worker.onmessageerror
,BroadcastChannel.onmessageerror
yWindow.onmessageerror
(Error 1359017 en Firefox). - Cuando se emplea la iteración en valores
Headers
, estos quedarán organizados en orden lexicográfico y se combinarán los valores de los nombres de cabeceras duplicados (Error 1396848 en Firefox).
Sucesos de DOM
No hay ningún cambio.
Multimedia y WebRTC
-
Ahora se admiten mensajes de cualquier tamaño (hasta 1 GiB, aunque 256 kiB es más interoperativo) en
RTCDataChannel
por medio del uso de la opción «end-of-record» (EOR) en los mensajes de SCTP. Consúltese Understanding message size limits para obtener más información (Error 979417 en Firefox).Nota: Como Firefox aún no admite el protocolo ndata de SCTP, que permite intercalar mensajes de SCTP de varias fuentes, enviar objetos de datos grandes puede causar retardos importantes en el resto del tránsito SCTP. Véase el Error 1381145 en Firefox para estar al tanto de la implementación de ndata en Firefox.
-
El método
RTCDataChannel.send()
ahora puede emitir una excepciónTypeError
si el tamaño del mensaje que se intenta enviar no es compatible con el agente de usuario de destino (esto se implementó como parte del Error 979417 en Firefox). -
La API MediaStream Recording se ha actualizado de modo que los sucesos
error
que se envíen para notificar problemas acaecidos durante la grabación son ahora del tipoMediaRecorderErrorEvent
en lugar de sucesos genéricos. -
Se actualizó la documentación concerniente a
OfflineAudioContext
, dado que sus entradas de constructores pueden especificarse ahora dentro de un objeto en lugar de una lista de parámetros (Error 1388591 en Firefox).
Seguridad
- Los URL
resource://
ya no filtran información (Error 863246 en Firefox) - Los URI de datos ahora se manipulan como orígenes opacos únicos, en vez de heredar el origen del objeto de configuración responsable de la navegación (Error 1324406 en Firefox).
Plugins
No hay ningún cambio.
Otros
- El valor
fullscreen
del campodisplay
del manifiesto de aplicación web ahora funciona en Firefox para Android 57 (Error 1126479 en Firefox). - La modalidad sin periféricos de Firefox ahora incluye el parámetro
-screenshot
, que permite a los usuarios tomar capturas de pantalla de sitios web directamente desde la consola (Error 1378010 en Firefox).
Eliminaciones de la plataforma web
HTML
<link rel="preload">
(véase Precargar contenido con rel="preload") fue desactivado en Firefox 57 a causa de varios problemas de compatibilidad con la web (p. ej., Error 1405761 en Firefox). Se espera que para Firefox 58 quede lista la versión de reemplazo, la cual funcionará para recursos no almacenables en la antememoria.
API
- La API Social, privativa de Mozilla, se ha eliminado completamente (Error 1388902 en Firefox).
SVG
No hay ningún cambio.
Cambios relativos a los complementos y los programadores de Mozilla
Nota: A partir de Firefox 57, se ha eliminado por completo la compatibilidad con los complementos basados en la tecnología XPCOM. Todas las extensiones deben convertirse para emplear la tecnología nueva, conocida como WebExtensions, o de lo contrario dejarán de funcionar.
WebExtensions
Se añadieron o ampliaron las API siguientes:
-
- compatibilidad con separadores mediante
bookmarks.BookmarkTreeNodeType
- compatibilidad con separadores mediante
-
- propiedad
theme_icons
para iconos claros u oscuros en función del tema
- propiedad
-
onCreated
onRemoved
onUpdated
colorCode
yiconUrl
encontextualIdentitities.ContextualIdentity
-
- opción
incognito
endownloads.download()
- propiedad
estimatedEndTime
endownloads.DownloadItem
- opción
-
FindProxyForURL()
puede devolver un objeto ahora
-
runtime.openOptionsPage()
funciona en Android
-
- opción
loadReplace
entabs.update()
- propiedad
discarded
entabs.Tab
,tabs.onUpdated
ytabs.query()
tabs.create()
puede abrir URL con «view-source:»- propiedad
openerTabId
entabs.Tab
,tabs.create()
,tabs.query()
ytabs.update()
- opción
-
colors.toolbar
colors.toolbar_field
colors.toolbar_field_text
colors.toolbar_text
-
- opción
windowId
paratheme.update()
- opción
-
filterResponseData()
- propiedad
proxyInfo
en sucesoswebRequest
-
- opción
allowScriptsToClose
enwindows.create()
- opción
Versiones anteriores
- Firefox 56 for developers
- Firefox 55 for developers
- Firefox 54 for developers
- Firefox 53 for developers
- Firefox 52 for developers
- Firefox 51 for developers
- Firefox 50 for developers
- Firefox 49 for developers
- Firefox 48 for developers
- Firefox 47 for developers
- Firefox 46 for developers
- Firefox 45 for developers
- Firefox 44 for developers
- Firefox 43 for developers
- Firefox 42 for developers
- Firefox 41 for developers
- Firefox 40 for developers
- Firefox 39 for developers
- Firefox 38 for developers
- Firefox 37 for developers
- Firefox 36 for developers
- Firefox 35 for developers
- Firefox 34 for developers
- Firefox 33 for developers
- Firefox 32 for developers
- Firefox 31 for developers
- Firefox 30 for developers
- Firefox 29 for developers
- Firefox 28 for developers
- Firefox 27 for developers
- Firefox 26 for developers