Funciones experimentales de Firefox
===================================

Para probar nuevas características, Mozilla publica una versión de prueba del navegador Firefox, Firefox Nightly, cada día. Características experimentales, por ejemplo implementaciones de estándares de plataforma Web, están disponibles. Esta página lista características que están en versiones Nightly de Firefox junto con información sobre cómo activarlas, si es necesario. Puedes probar tus sitios Web y aplicaciones antes de que se lancen las características y confirmar que todo seguirá funcionando con las últimas prestaciones de tecnología Web.

Para probar esas características experimentales, necesitas descargar Firefox Nightly o Firefox Developer Edition.

HTML
----

| Característica | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox | Preferencia |
| --- | --- | --- | --- | --- | --- |
| **`<dialog>`** Elemento dialog incluyendo APIs de DOM para interactuar con este. La implementación de diálogos modales y accesibilidad sigue faltando. | Desactivado (disponible desde 53) | Desactivado (disponible desde 53) | --- | --- | `dom.dialog_element.enabled` |

CSS
---

| Característica | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox | Preference |
| --- | --- | --- | --- | --- | --- |
| **Subgrids** | Desactivado(reconocido pero aún no implementado) | Desactivado(reconocido pero aún no implementado) | Desactivado(reconocido pero aún no implementado) | Desactivado(reconocido pero aún no implementado) | `layout.css.grid-template-subgrid-value.enabled` |
| **Display stray control characters in CSS as hex boxes** This feature renders control characters (Unicode category Cc) other than *tab* (`U+0009`), *line feed* (`U+000A`), *form feed* (`U+000C`), and *carriage return* (`U+000D`) as a hexbox when they are not expected. | 43 | 43 | No habilitado | No habilitado | `layout.css.control-characters.enabled` or `layout.css.control-characters.visible` |
| **Positioned CSS Masks** A subset of CSS Masks that includes longhand properties of CSS Masks (en-US), as well as a change in the shorthand property | 51 | 51 | 53 | No habilitado | Controlled by a compile flag (MOZ\_ENABLE\_MASK\_AS\_SHORTHAND). |
| **The** **`font-variation-settings` property** The `font-variation-settings` (en-US) provides low-level control over OpenType or TrueType font typographic features, by specifying the four letter axis names of the features you want to vary, along with their variation values. | No habilitado (disponible desde la versión 53) | No habilitado (disponible desde la versión 53) | No habilitado (disponible desde la versión 53) | No habilitado (disponible desde la versión 53) | `layout.css.font-variations.enabled` Functions only in Mac OS Sierra (and later). For the downloadable fonts on axis-praxis, you also need `gfx.downloadable_fonts.keep_variation_tables` (in Firefox 54 and later) |
| **The `touch-action` CSS property** The `touch-action` (en-US) CSS property is part of the Pointer Events specification and allows you to specify how and in what way the user is able to manipulate an object by touch. | 50 | — | — | — | `layout.css.touch_action.enabled` |
| **The `shape-outside` CSS property** The `shape-outside` (en-US) CSS property is part of the CSS Shapes Module Level 1 specification and allows you to specify a float area causing inline contents to wrap around a shape.Firefox currently implements the `<shape-box>` values (Error 1309467 en Firefox) as well as the `circle()` (Error 1311244 en Firefox), `ellipse()` (Error 1326406 en Firefox), and `polygon()` (Error 1326409 en Firefox) functions. `shape-outside` (en-US) is animatable desde la versión Firefox 57 (Error 1289049 en Firefox). | No habilitado (disponible desde la versión 53) | — | — | — | `layout.css.shape-outside.enabled` |
| **The `shape-image-threshold` CSS property** The `shape-imahge-threshold` CSS property is part of the CSS Shapes Module Level 1 specification, and allows you to specify the alpha channel threshold used to extract the shape using an image as the value for `shape-outside` (en-US). | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | `layout.css.shape-outside.enabled` |
| **La propiedad `contain` de CSS** La propiedad de CSS `contain` (en-US) es parte de la especificación CSS Containment Module Level 1 y te permite indicar que un elemento y sus contenidos son independientes del resto del documento, permitiendo a user agents (en-US) optimizar el renderizado de una página. | No habilitado (disponible desde la versión 45) | No habilitado (disponible desde la versión 45) | No habilitado (disponible desde la versión 45) | No habilitado (disponible desde la versión 45) | `layout.css.contain.enabled` |
| **The `column-span` CSS property** The `column-span` CSS property is part of the CSS Multi-column Layout Module specification and allows you to specify how many columns an element spans across.Firefox currently only parses the property (Error 1339298 en Firefox), it's not actually implemented yet (Error 616436 en Firefox). | No habilitado (recognized desde la versión 55, but not implemented yet) | — | — | — | `layout.css.column-span.enabled` |
| **The `frames()` timing function** Ver The frames() class of timing-functions (en-US) para más detalle | Habilitado | N/A | No habilitado (disponible desde la versión 55) | No habilitado (disponible desde la versión 55) | None |
| **The `::slotted` (en-US) pseudo-element** Selects elements when they are inserted into a `<slot>` in an HTML `<template>`. | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | `dom.webcomponents.customelements.enabled` and `dom.webcomponents.shadowdom.enabled` |

JavaScript
----------

See also ECMAScript Next support for implemented features of ECMAScript 2016 and later, that are not experimental and thus available without preferences in Firefox Release.

| Feature | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **Additions to the `ArrayBuffer` object** Adds the `ArrayBuffer.transfer()` (en-US) that returns a new `ArrayBuffer` whose contents have been taken from the `oldBuffer`'s data (spec). | 36 | No habilitado | No habilitado | No habilitado | None |
| **TypedObject objects** (spec) | Habilitado | No habilitado | No habilitado | No habilitado | None |
| SIMD (specification and polyfill) | Habilitado | No habilitado | No habilitado | No habilitado | None |
| **ECMAScript modules** Allows you to use native ECMAScript modules, for example defining modules with `<script type="module">`, defining fallback scripts with `<script nomodule>`, and importing code features that have been exported from modules. | 59 | No habilitado | No habilitado | No habilitado | `dom.moduleScripts.enabled` |
| `Array.prototype.flatten()` (en-US) and `Array.prototype.flatMap()` | Habilitado (59) | No habilitado | No habilitado | No habilitado | None |

APIs
----

### Canvas & WebGL

| Feature | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **`WEBGL_debug_renderer_info` extension** The `WEBGL_debug_renderer_info` (en-US) extension allows you to transmit information useful to help debugging problems to the server. | 42 | 42 | No habilitado | No habilitado | `webgl.enable-debug-renderer-info` |
| **OffscreenCanvas** The `OffscreenCanvas` (en-US) interface provides a canvas that can be rendered off screen. It is available in both the window and worker contexts. | No habilitado (disponible desde la versión 44) | No habilitado (disponible desde la versión 44) | No habilitado (disponible desde la versión 44) | No habilitado (disponible desde la versión 44) | `gfx.offscreencanvas.enabled` |
| **Hit regions** Whether the mouse coordinates are within a particular area on the canvas is a common problem to solve. The hit region API allows you define an area of your canvas and provides another possibility to expose interactive content on a canvas to accessibility tools. | No habilitado (disponible desde la versión 30) | No habilitado (disponible desde la versión 30) | No habilitado (disponible desde la versión 30) | No habilitado (disponible desde la versión 30) | `canvas.hitregions.enabled` |
| **Streams API (en-US)** Allows JavaScript to programmatically access streams of data received over the network and process them as desired by the developer. | No habilitado (disponible desde la versión 57) | No habilitado (disponible desde la versión 57) | No habilitado (disponible desde la versión 57) | No habilitado (disponible desde la versión 57) | `dom.streams.enabled` and `javascript.options.streams` |
| **Custom elements** Allows the definition and registering of custom elements that can then be used in the document. | Habilitado (desde la versión 59) | No habilitado (disponible desde la versión 57) | No habilitado (disponible desde la versión 57) | No habilitado (disponible desde la versión 57) | `dom.webcomponents.enabled` and `dom.webcomponents.customelements.enabled` |
| **Shadow DOM** Allows a shadow DOM to be attached to any element, inside which markup, style, and scripting can be safely encapsulated. | No habilitado (disponible desde la versión 58) | No habilitado (disponible desde la versión 58) | No habilitado (disponible desde la versión 58) | No habilitado (disponible desde la versión 58) | `dom.webcomponents.enabled` and `dom.webcomponents.shadowdom.enabled` |

### DOM

| Característica | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **Gamepad extensions** The Gamepad Extensions provide access to additional functionality such as pose information in the case of WebVR controllers, and haptic actuator control (e.g. controller vibration hardware). | Habilitado | Habilitado | Habilitado | No habilitado | `dom.gamepad-extensions.enabled` |
| **`HTMLMediaElement.seekToNextFrame()`** Part of an experimentation process around support non-real-time access to media for tasks including filtering, editing, and so forth, the `HTMLMediaElement.seekToNextFrame()` (en-US) advances the the current play position to the next frame in the media. | 49 (Fundamental update in version 50) | 49 (Fundamental update in version 50) | No habilitado | No habilitado | `media.seekToNextFrame.enabled` |
| **`GeometryUtils.getBoxQuads()`** (Error 917755 en Firefox) | 31 | 31 | No habilitado | No habilitado | `layout.css.getBoxQuads.enabled` |
| **`GeometryUtils.convertPointFromNode()`**, **`GeometryUtils.RectFromNode()`**, y **`GeometryUtils.convertQuadFromNode()`** (Error 918189 en Firefox) | 31 | 31 | No habilitado | No habilitado | `layout.css.convertFromNode.enabled` |
| **`Node.rootNode`** The `Node.rootNode` (en-US) property returns a `Node` object representing the topmost node in the tree, or the current node if it's the topmost node in the tree. *This feature is kept experimental as its naming poses Web compatibility problems. It will be renamed in the future.* | 48 | 48 | No habilitado | No habilitado | `dom.node.rootNode.enabled` |
| **WebVTT Regions API** WebVTT (en-US) regions are parts of the video viewport that provide a rendering area for WebVTT cues. The `VTTRegion` (en-US) is the interface exposing the WebVTT cues. *This interface is considered to be in flux and isn't therefore activated in any version by default.* | No habilitado (Experimental implementation desde la versión version 30) | No habilitado | No habilitado | No habilitado | `media.webvtt.regions.enabled` |
| **Support for audio and video tracks** Implementa `HTMLMediaElement.audioTracks` (en-US) y `HTMLMediaElement.videoTracks` (en-US). *Firefox no soporta pistas de audio o vídeo múltiples, evitando que los usos más comunes de estas propiedades funcionen correctamente. Es por ello que estas propiedades no están activadas por defecto en ninguna versión.* | No habilitado (Implementación experimental desde la versión 33) | No habilitado | No habilitado | No habilitado | `media.track.enabled` |
| **Better value for `Event.timestamp`** The property `Event.timestamp` (en-US) is returning a `DOMHighResTimeStamp` (en-US), which is now relative to the Unix epoch. | 32 (Windows) 43 (Linux) | 32 (Windows) 43 (Linux) | No habilitado | No habilitado | `media.track.enabled` |
| **Pointer Events** | 59 | 59 (todavía no habilitado en Firefox para Android) | 59 (todavía no habilitado en Firefox para Android) | 59 (todavía no habilitado en Firefox para Android) | `dom.w3c_pointer_events.enabled` |
| **Intersection Observer API** The `Intersection Observer API` allows you to configure a callback that is called whenever one item, called a target, intersects either the device viewport or a specified element called. | No habilitado (disponible desde la versión 53) | — | — | — | `dom.IntersectionObserver.enabled` |
| **Web Animations API: KeyframeEffect and KeyframeEffectReadOnly (en-US)** The `KeyframeEffectReadOnly.KeyframeEffectReadOnly()` and `KeyframeEffect.KeyframeEffect()` (en-US) constructors can be used to clone existing `KeyframeEffectReadOnly` (en-US) object instances by being given the object to clone as their only parameter (see Error 1273784 en Firefox.) | 52 | 52 | No habilitado | No habilitado | None |
| **`PromiseRejectionEvent` (en-US) and related features** Providing a way to monitor and more finely control the rejection of Promises. | No habilitado (disponible desde la versión 55) | No habilitado | No habilitado | No habilitado | `dom.promise_rejection_events.enabled` |
| **Payment Request API** Provides a web API for handling web-based payments. | No habilitado (disponible desde la versión 55) | No habilitado (disponible desde la versión 55) | No habilitado (disponible desde la versión 55) | No habilitado (disponible desde la versión 55) | `dom.payments.request.enabled` |
| **Basic Card Payment API** Provides dictionaries that define data structures describing card payment types and payment responses for use in the Payment Request API. See `BasicCardRequest` and `BasicCardResponse`. | No habilitado (disponible desde la versión 56) | No habilitado (disponible desde la versión 56) | No habilitado (disponible desde la versión 56) | No habilitado (disponible desde la versión 56) | `dom.payments.request.enabled` |
| **Window.content only available to Chrome code** The proprietary `Window.content` (en-US) property is now only available to chrome (privileged) code, and not available to the web anymore (Error 864845 en Firefox). | Habilitado (desde la versión 57) | No habilitado | No habilitado | No habilitado |  |
| **Disabling `Navigator.registerContentHandler()`** This API is associated with a number of issues., and in addition we are the only browser that implements it. We are intending to remove it completely in the future, but for the moment we are disabling it in non-release versions to see if we get any significant web compat reports back. | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | Habilitado | `dom.registerContentHandler.enabled` |

### WebRTC

| Feature | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **TCP ICE candidates** ICE candidates that use TCP rather than UDP are considered during ICE negotiation. | No habilitado 41Habilitado 54 | No habilitado 41 | No habilitado 41 | No habilitado 41 | `media.peerconnection.ice.tcp` |

Developer Tools
---------------

| Feature | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **Debugger rewrite in HTML** | 52 | 52 | No habilitado | No habilitado | `devtools.debugger.new-debugger-frontend` |
| **Console rewrite in HTML** | 52 | No habilitado | No habilitado | No habilitado | `devtools.webconsole.new-frontend-Habilitado` |
| **Experimental Performance tool options** Enables options in the UI for JIT optimizations, memory, etc. | 41 | No habilitado | No habilitado | No habilitado | `devtools.performance.ui.experimental` |
| **Layout side panel** The Layout side panel allows to inspect and manage different CSS layout types like CSS Grid Layout. | No habilitado (disponible desde la versión 52) | No habilitado (disponible desde la versión 52) | No habilitado (disponible desde la versión 52) | No habilitado (disponible desde la versión 52) | `devtools.layoutview.enabled` |

Security
--------

| Feature | Firefox Nightly | Firefox Developer Edition | Firefox Beta | Firefox Release | Preference |
| --- | --- | --- | --- | --- | --- |
| **TLS 1.3** | Habilitado | Habilitado | No habilitado | No habilitado | `security.tls.version.max` to `4` |
| **Block plain text requests from Flash plugins on encrypted pages** A pref has been added to treat mixed OBJECT\_SUBREQUESTS as active content to mitigate MitM attacks due to plugins loading "risky" content. See Error 1190623 en Firefox for more details. | Habilitado (disponible desde la versión 59) | Habilitado (disponible desde la versión 59) | Habilitado (disponible desde la versión 59) | No habilitado | `security.mixed_content.block_object_subrequest` to `true` |
| **`SecurityPolicyViolationEvent` (en-US), and the `securitypolicyviolation` event** Allows developers to programmatically respond to CSP violations. | Habilitado (disponible desde la versión 59) | Habilitado (disponible desde la versión 59) | Habilitado (disponible desde la versión 59) | No habilitado | `security.csp.enable_violation_events` |
| **"Insecure connection" icon display for non-HTTPS sites** Firefox 59 has two new preferences, No habilitado by default, which when Habilitado cause a lock with a strike-through to appear in the address bar when a non-HTTPS site is loaded. This work is part of the preparation for moving to a completely HTTPS web, the idea being that in the near future insecure sites will be specially indicated, rather than secure sites. | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | No habilitado (disponible desde la versión 59) | `security.insecure_connection_icon.enabled` for non-private browsing`security.insecure_connection_icon.pbmode.enabled` for private browsing |
| **`Origin` header sent for non-CORS requests** To mitigate CSRF attacks, the `Origin` header should be sent with non-CORS requests unless they are `GET` or `HEAD` (en-US) (Error 446344 en Firefox). We currently only send `Origin` on CORS requests. | No habilitado | No habilitado | No habilitado | No habilitado | `network.http.sendOriginHeader` |

Consultar también
-----------------

* Notas de desarrollo de Firefox para desarrolladores
* Firefox Nightly
* Firefox Developer Edition