recursal/MDN huggingface dataset:
storage.sync
============

Representa el área de almacenamiento de sincronización. Los elementos en el almacenamiento de sincronización están sincronizados por el navegador y están disponibles en todas las instancias de ese navegador en el que el usuario está conectado (por ejemplo, a través de Firefox Sync o una cuenta de Google), en diferentes dispositivos.

Para Firefox, un usuario debe tener complementos seleccionados en las opciones de "about:preferences".

Tenga en cuenta que la implementación de storage.sync en Firefox se basa en la ID del complemento. Si usa storage.sync, debe establecer una ID para su extensión usando la clave `applications` (en-US) manifest.json.

El principal caso de uso de esta API es almacenar las preferencias sobre su extensión y permitir que el usuario las sincronice con diferentes perfiles. Puede almacenar hasta 100 KB de datos utilizando esta API. Si intenta almacenar más que esto, la llamada fallará con un mensaje de error. La API se proporciona sin ninguna garantía sobre el tiempo de actividad o el rendimiento.

Metodos

El objeto de sincronización implementa los métodos definidos en el `storage.StorageArea` (en-US) ponga:

`storage.StorageArea.get()` (en-US)

Recupera uno o más elementos del área de almacenamiento.

`storage.StorageArea.getBytesInUse()` (en-US)

Obtiene la cantidad de espacio de almacenamiento (en bytes) utilizado por uno o más elementos que se almacenan en el área de almacenamiento.

`storage.StorageArea.set()` (en-US)

Almacena uno o más artículos en el área de almacenamiento. Si el artículo ya existe, su valor será actualizado.

`storage.StorageArea.remove()` (en-US)

Elimina uno o más elementos del área de almacenamiento.

`storage.StorageArea.clear()` (en-US)

Elimina todos los elementos del área de almacenamiento.

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### Example extensions

* favourite-colour

**Nota:** **Agradecimientos**

Esta API está basada en la API de Chromium's `chrome.storage` API. Esta documentación se deriva de `storage.json` en el código de Chromium.

Los datos de compatibilidad de Microsoft Edge son proporcionados por Microsoft Corporation y se incluyen aquí bajo la Licencia de Estados Unidos Creative Commons Attribution 3.0.
Notas de desarrollo de Firefox
==============================

Esta página provee enlaces a artículos de desarrolladores para Firefox X para cada versión de Firefox. Estas notas permiten ver las características añadidas y los errores eliminados en cada versión de Firefox.

1. Firefox Quantum 57 para programadores
2. Firefox 66 para desarrolladores
3. Firefox 61 for developers
4. Firefox 50 para desarrolladores
5. Firefox 30 for developers
6. Firefox 9 for developers
7. Firefox 3.5 para desarrolladores
8. Firefox 3 para desarrolladores
9. Firefox 2 para desarrolladores
10. Firefox 1.5 para Desarrolladores
Seguridad en Firefox 2
======================

Firefox 2 tiene tanto SSLv2 como la débil "exportación" de juegos de claves desactivados por defecto, en favor de SSLv3. Esto proporciona mejoras en la seguridad.

Los métodos preferidos de encriptación son `TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA` y `TLS_RSA_WITH_3DES_EDE_CBC_SHA`. Algunos sevidores se refieren a ellos como `SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA` y `SSL_RSA_WITH_3DES_EDE_CBC_SHA`.

Si el soporte SSLv2 tuviera que ser activado, puede hacerse cambiando en las preferencias de usuario el valor `security.ssl2.*` deseado a `true`.
Añadir lectores de canales a Firefox
====================================

A partir de Firefox 2, Firefox permite seleccionar diferentes lectores de canales RSS o Atom para usarlos cuando se trata de leer un canal. Este artículo proporciona información sobre cómo añadir lectores adicionales no admitidos por defecto.

Añadir un nuevo lector de canales basado en la web
--------------------------------------------------

Para añadir un nuevo lector de canales basado en la web, todo lo que tiene que hacer es añadir tres nuevas preferencias:

`browser.contentHandlers.types.número.title`

El nombre del lector de canales.

`browser.contentHandlers.types.número.type`

Para un lector de canales, en este caso sería "application/vnd.mozilla.maybe.feed".

`browser.contentHandlers.types.número.uri`

La URI del lector de canales. Utilice "%s" donde se deba insertar la URL del canal.

`número` debe ser reemplazado con el siguiente número único más alto que no haya sido usado aún. Por ejemplo, si desea añadir un nuevo lector de canales llamado "Lector Sencillo", y ya están definidos manejadores de contenido con los números 0 al 4, debe sustituir `número` por 5, como sigue:

* `browser.contentHandlers.types.5.title`: Lector Sencillo
* `browser.contentHandlers.types.5.type`: application/vnd.mozilla.maybe.feed
* `browser.contentHandlers.types.5.uri`: `http://www.urllectorsencillo.com?feed=%s`

Puede añadir estas preferencias manualmente, visitando about:config, o puede programarlo, si una extensión desea instalar un nuevo lector de canales.

### Añadir un lector de canales desde una aplicación web

El código JavaScript en la web puede añadir un lector de canales fácilmente, usando la función `navigator.registerContentHandler()`, de esta manera:
```

navigator.registerContentHandler("application/vnd.mozilla.maybe.feed",
                                 "http://www.urllectorsencillo.com?feed=%s",
                                 "Lector Sencillo");
```

Añadir una nueva aplicación lectora de canales
----------------------------------------------

La manera más sencilla de hacer esto es simplemente usar la interfaz de usuario disponible, usando el panel Canales en la ventana de preferencias (u opciones, dependiendo de su plataforma).

También se puede hacer programáticamente mediante una extensión, lo cual se hace estableciendo el valor de la opción `browser.feeds.handlers.application` a la ruta de la aplicación a usar para leer los canales.
Mejoras SVG en Firefox 3
========================

Firefox 3 ofrece una mejor implementación de Gráficos Vectoriales Escalables (SVG) en comparación con versiones anteriores de Firefox. Aunque estas características están documentadas en otros sitios, este artículo puede servir como una lista que indique fácilmente qué características se han añadido en Firefox 3.

* Se ha implementado el elemento `foreignObject` (Error 326966 en Firefox). Vea la especificación o este artículo para más detalles.
* Implementado el elemento `pattern` (especificación).
* Implementado el elemento `mask` (especificación).
* Implementados nuevos filtros (especificación):
    + `filter`
    + `feDistantLight`
    + `fePointLight`
    + `feSpotLight`
    + `feBlend`
    + `feColorMatrix`
    + `feConvolveMatrix`
    + `feComponentTransfer`, `feFuncR`, `feFuncG`, `feFuncB`, `feFuncA`
    + `feComposite`
    + `feConvolveMatrix`
    + `feDiffuseLighting`
    + `feDistantLight`
    + `feFlood`
    + `feGaussianBlur`
    + `feMerge`, `feMergeNode`
    + `feMorphology`
    + `feOffset`
    + `fePointLight`
    + `feSpecularLighting`
    + `feTurbulence`
    + `feTile`
* Se han arreglado varios fallos en la manipulación del elemento `<a>` en SVG; ver Error 267664 en Firefox, Error 268135 en Firefox, Error 316248 en Firefox, Error 317270 en Firefox y Error 320724 en Firefox.
* Se han implementado los métodos de DOM en SVG `getNumberOfChars()`, `getComputedTextLength()`, `getSubStringLength()`, `getStartPositionOfChar()`, `getEndPositionOfChar()`, `getRotationOfChar()` y `getCharNumAtPosition()`.
* Implementación del atributo `xml:space` (especificación).
* Se ha implementado el comportamiento por defecto de `fill`/`stroke` (especificación).
* Se implementan ya las unidades `em` y `ex` para indicar longitudes (Error 305859 en Firefox).
### Vea también

* SVG
* SVG en Firefox
* Firefox 3 para desarrolladores
Mejoras DOM en Firefox 3
========================

Firefox 3 ofrece una serie de mejoras sobre el Modelo de Objetos del Documento (DOM), especialmente en lo que se refiere a la implementación de extensiones de DOM añadidas por otros navegadores. Este artículo proporciona una lista de estas mejoras, además de enlaces a documentación más detallada.

* Ahora se implementan las extensiones de DOM `clientTop` y `clientLeft` de Internet Explorer.
* La propiedad `window.fullScreen` ahora es siempre exacta, sin importar donde sea leída, incluso en el contenido. Previamente devolvía `false` erróneamente (Error 127013 en Firefox).
* Ahora se implementan las extensiones de DOM `getClientRects` y `getBoundingClientRect` (Error 174397 en Firefox).
* Se implementa la extensión de DOM `elementFromPoint` de Internet Explorer (Error 199692 en Firefox).
* Ahora se implementan las extensiones de DOM `oncut`, `oncopy`, `onpaste`, `onbeforecut`, `onbeforecopy` y `onbeforepaste` de Internet Explorer (Error 280959 en Firefox).
* Se han añadido capturadores para `Node.nodePrincipal`, `Node.baseURIObject`, y `document.documentURIObject` sólo para código con privilegios. El código Chrome no debe tocar (recuperar o fijar) estas propiedades en objetos de contenido sin envoltorios (por ejemplo, sobre un `wrappedJSObject` de un `XPCNativeWrapper`), ver Error 324464 en Firefox para más detalles.
### Ver también

* Firefox 3 para desarrolladores
* Mejoras CSS en Firefox 3
* DOM
Plantillas en Firefox 3
=======================

Las plantillas se han mejorado enormemente en Firefox 3. La mejora más importante permite el uso de procesador de consultas personalizado para manejar otro tipo de fuentes de datos además de RDF. Esto es posible gracias a la nueva sintaxis de consultas. También se incluyen soporte para SQL (mozStorage) y fuentes de datos XML. Ya está disponible una descripción completa de las nuevas características para plantillas. (Error 285631 en Firefox)

### Otras mejoras

* Se han añadido condiciones relacionales para que los resultados encontrados cumplan la norma con una mayor exactitud. Esto permite, por ejemplo, que se encuentren resultados que empiecen o terminen con determinados hilos, o que son antes o después otros valores.
* Se ha incluido una bandera, `dont-recurse`, para evitar que se repitan resultados generados tan solo a un nivel.
* Se han añadido APIs al editor de plantillas para recuperar un objeto de resultado que representa un dato externo.
* Se ha mejorado el servicio tipo XUL sorts clasificando mejor tanto el árbol de contenido como el de sin contenido. También permite clasificar contenidos de plantillas no editables. (Error 335122 en Firefox)
### Véase también

* Firefox 3 para desarrolladores
Bugs importantes solucionados en Firefox 3
==========================================

Este artículo es una lista de correcciones importantes de errores en Firefox 3 que no resultan obvios en la documentación.

* Si ocurre un error mientras se analiza un overlay, el overlay no se aplica. Los errores del análisis se registran en la consola de errores. (Error 335755 en Firefox)
* Error corregido en el que los elementos '`<menupopup>`' pueden colocarse dentro de un contenedor cuando se adjuntan en un elemento menú o de tipo menú. (Error 345896 en Firefox)
* La propiedad '`dlgType`' de botones funciona correctamente. (Error 308591 en Firefox)
* El argumento '`canBubble`' de event.initEvent funciona correctamente de manera que los eventos pueden ser llamados sin que se hagan recurrentes. (Error 330190 en Firefox)
* El evento '`DOMAttrModified`' maneja correctamente atributos con nombres con espacio. (Error 362391 en Firefox)
* Las instrucciones de procesamiento XML, tal como '`<?xml-stylesheet ?>`', se han agregado al DOM de documentos XUL. Lo que significa que no está garantizado que document.firstChild sea el elemento raíz, en su lugar utiliza document.documentElement. Por otro lado las instrucciones de procesamiento '`<?xml-stylesheet ?>`' y '`<?xul-overlay ?>`' ya no tienen efecto fuera del prólogo del documento. (Error 319654 en Firefox)
* Las funciones '`getElementsByAttributeNS()`' se han añadido a los elementos y documentos XUL. (Error 239976 en Firefox)
* Los escuchadores de eventos se mantienen cuando se mueve o se quita un elemento de un documento XUL. (Error 286619 en Firefox)
* Los eventos de mutación se disparan para documentos no mostrados. (Error 201236 en Firefox)
* Corregidos varios problemas con elementos de dibujo en orden equivocado. (Error 317375 en Firefox)
* Se ha corregido `getElementsByTagName()` para que funcione correctamente en sub-árboles que tienen elementos con prefijos en los nombres de las etiquetas. (Error 206053 en Firefox).
* Los eventos '`DOMNodeInserted`' y '`DOMNodeRemoved`' se aplican correctamente a los nodos apropiados (Error 367164 en Firefox).
* La expresión '`\d`', uno de los caracteres especiales usados en expresiones regulares, ha sido corregida para que concuerde sólo con dígitos del alfabeto latino (equivalente a `[0-9]`). (Error 378738 en Firefox)
* La categoría 'image-sniffing-services' permite que un descodificador de imágenes implementado como una extensión, descodifique correctamente imágenes enviadas con un tipo MIME incorrecto. (Error 391667 en Firefox)
### Ver también

* Firefox 3 para desarrolladores
Zoom a página completa
======================

El zoom a página completa (o sólo zoom completo) es una nueva característica que probablemente estará con Firefox 3. Puedes verla en funcionamiento en las actuales "trunk builds" desde Gecko 1.9a7. Mientras no exista aún UI puedes usar JavaScript y la interface XPCOM nsIMarkupDocumentViewer.

### Ejemplo (xul:browser)

El siguiente ejemplo demuestra su uso para la ventana de navegación que posea actualmente el foco. Este es el típico uso para una extensión de Firefox.
```

var zoom = 1.5;
var docViewer = getBrowser().mCurrentBrowser.markupDocumentViewer;
docViewer.fullZoom = zoom;
```

### Ejemplo (xul:iframe)

Puedes usar la característica de zoom completo incluso para un xul:iframe. Sin embargo, dado que un iframe no posee ninguna propiedad markupDocumentViewer, debemos primero obtenerla:
```

var zoom = 1.5;
var iframe = document.getElementById("authorFrame");
var contViewer = iframe.docShell.contentViewer;
var docViewer = contViewer.QueryInterface(Components.interfaces.nsIMarkupDocumentViewer);
docViewer.fullZoom = zoom;
```

### Referencías

* Extensión Page zoom de Ted Mielczarek fullpagezoom.xpi para los últimos releases nocturnos de Firefox 3.0
* El bug en bugzilla sobre zoom completo (fullZoom).
* La documentación de la interface nsIMarkupDocumentViewer (actualmente no menciona zoom completo).
Herramientas para desarrolladores de juegos
===========================================

En esta pagina puedes encontrar enlaces a nuestros articulos de desarrollo de juegos, que enventualmente apuenta a cubrir frameworks, compiladores y herramientas de depuracion.

* asm.js
    + (AOT) para un mejor rendimiento que el rendimiento tipico de JavaScript. Este es, por supuesto, bueno para juegos.
* Emscripten
    + : Un compilador *LLVM* a JavaScript; con Emscripten, tu puedes compilar C++ y otros lenguajes que se pueden compilar a *LLVM* y luego a JavaScript de alto rendimiento. Es una buena herramiente para portar aplicaciones a la Web! Aqui hay un util tutorial sobre Emscripten disponible en la wiki. Estamos mirando cubrir Emscripten en su propia seccion de MDN.
* Gecko profiler
    + : *Gecko profiler* es una extension que te permite perfilar tu codigo para ayudar donde tienes errores de rendimiento, asi puedes hacer que tu juego corra a velocidad maxima.
* Motores de juegos y herramientas
    + : Una lista de motores, plantillas y tecnologias utiles para los desarrolladores de juegos.
* Shumway
    + : *Shumway* es un renderizador para Adobe Flash construido completamente con JavaScript, WebGL, entre otros, haciendo una brecha entre Flash y los estandares Web. Este articulo muestra como hacer uso de Shumway y como contribuir arreglos y errores al proyecto.
* Cadena de herramientas para desarrollar y depurar juegos
    + , pero aqui te vamos a proveer una cadena de herramientas practicas para depurar juegos con links a las cosas de Will:
        - Basic tools overview
        - Shader editor (en-US)
        - Performance tools (still in production, estimated early 2014)
Introducción al desarrollo de juegos HTML5 (resumen)
====================================================

Ventajas
--------

1. Los juegos hechos con HTML5 funcionan en smartphones, tabletas, PCs y Smart TVs.
2. Anuncia y promociona tu juego en toda la web, así como en otros medios.
3. Pagos. Carga lo que quieras y usa el servicio de procesamiento de pagos que desees.
4. Actualiza tu juego cuando quieras.
5. ¡Colecciona tus propios análisis!
6. Conécta con tus clientes más de cerca.
7. Los jugadores pueden jugar el juego en cualquier lugar, en cualquier momento.
Tecnologías Web
---------------

| Funcionalidad | Tecnología |
| --- | --- |
| Audio | Web Audio API |
| Graphics | WebGL (OpenGL ES 2.0) |
| Input | Touch events, Gamepad API (en-US), sensores del dispositivo, WebRTC (en-US), Full Screen API (en-US), Pointer Lock API |
| Language | JavaScript (o C/C++ usando Emscripten para compilar a JavaScript) |
| Networking | WebRTC (en-US) y/o WebSockets (en-US) |
| Storage | IndexedDB (en-US) o la "nube" |
| Web | HTML, CSS, SVG, Social API (¡y muchos más!) |

* Full Screen API (en-US)
    + : Juego de pantalla completa.
* Gamepad API (en-US)
    + : Utiliza gamepads u otros controladores de juego.
* HTML y CSS
    + : Crea, diseña y diseña la interfaz de usuario de tu juego.
* HTML audio (en-US)
    + : Juega fácilmente efectos de sonido simples y música.
* IndexedDB (en-US)
    + : Almacena los datos del usuario en tu propio ordenador o dispositivo.
* JavaScript
    + Asm.js
* Pointer Lock API
    + : Bloquea el ratón u otro dispositivo señalador dentro de la interfaz de tu juego.
* SVG (Scalable Vector Graphics)
    + : Cree gráficos vectoriales que se escalan sin problemas, independientemente del tamaño o la resolución de la pantalla del usuario.
* Typed Arrays (en-US)
    + : Accede a datos binarios sin procesar desde JavaScript; Manipula texturas GL, datos de juegos, o cualquier otra cosa.
* Web Audio API
    + : Controla la reproducción, síntesis y manipulación del audio en tiempo real.
* WebGL
    + 2.0.
* WebRTC (en-US)
    + : Las comunicaciones en tiempo real para controlar los datos de audio y video, incluidas las teleconferencias y la transmisión de datos de otras aplicaciones entre dos usuarios, como el chat.
* WebSockets (en-US)
    + : Conecte tu aplicación o sitio a un servidor para transmitir datos de un lado a otro en tiempo real. Perfecto para la acción de juegos multijugador, servicios de chat, etc.
* Web Workers (en-US)
    + : Genere hilos de fondo ejecutando tu propio código JavaScript para procesadores multi-core.
* XMLHttpRequest (en-US) y File API
    + : Envía y recibe cualquier tipo de información que desees desde un servidor web, como descargar nuevos niveles de juego y material gráfico para transmitir información de estado del juego en tiempo no real.
Publicación de juegos
=====================

Los juegos desarrollados en HTML5 tienen una gran ventaja sobre los nativos en términos de publicación y distribución: tienen la libertad de distribución, promoción y monetización de su juego en la Web, en lugar de que cada versión esté restringida a una única tienda controlada por una empresa. Pueden, beneficiándose de la web, ser verdaderamente multiplataforma. Esta serie de artículos analiza las opciones que tienes a la hora de publicar y distribuir tu juego, y ganar algo con él mientras esperas que se haga famoso.

Distribución
------------

Así que has seguido un tutorial (en-US) o dos (en-US) y has creado un juego HTML5. ¡Genial! La distribución de juegos proporciona todo lo que se necesita saber sobre las formas en que puede distribuir su juego recién creado, incluido hospedarlo en línea, enviarlo a mercados abiertos y enviarlo a sitios cerrados como GooglePlay o iOS App Store.

Promoción
---------

Desarrollar y terminar el juego no es suficiente. Tienes que hacerle saber al mundo que has hecho disponible algo interesante, que la gente disfrutará jugando. Existen muchas técnicas de promoción de juegos (en-US) , muchas de ellas gratuitas, por lo que incluso si estás luchando por ganarte la vida como un desarrollador independiente con presupuesto limitado, aún puedes hacer mucho para que la gente sepa acerca de tu nuevo juego. Promocionar el juego también ayuda a monetizarlo más tarde, por lo que es importante hacerlo con eficacia.

Monetización
------------

Cuando dedicas tiempo a desarrollar, publicar y promocionar un juego, llega un punto en el que considerarás ganar dinero con él. La monetización del juego es esencial para cualquier persona que considere que su trabajo de desarrollo es un esfuerzo serio en el camino de convertirse en un desarrollador independiente capaz de ganarse la vida, así que siga leyendo y vea cuáles son sus opciones. La tecnología es lo suficientemente madura; Es solo cuestión de elegir el enfoque correcto.
Tutoriales
==========

Esta página contiene una serie de tutoriales donde se destacan diferentes flujos de trabajo para crear de forma eficaz diferentes tipos de juegos web.

Famoso juego 2D usando JavaScript puro

En este tutorial paso a paso implementarás un clon simple del juego breakout utilizando JavaScript puro. Por el camino aprenderás los conceptos básicos en el uso del elemento `<canvas>` para implementar mecánicas de juego fundamentales como la renderización y el movimiento de imágenes, la detección de colisiones, los mecanismos de control y los estados de victoria y derrota.

Juego breakout en 2D usando Phaser

En este tutorial paso a paso implementarás el mismo clon de breakout que en la serie de tutoriales anterior, excepto que esta vez lo harás usando el framework para juegos HTML phaser. La idea aquí es enseñar algunos de los fundamentos y ventajas de trabajar con frameworks, junto con la mecánica fundamental del juego.

Introducción al Desarrollo de Juegos en HTML5 con Phaser y la API de Orientación a Dispositivos

Este tutorial muestra cómo crear un juego de laberinto en 2D utilizando HTML, incorporando fundamentos como la detección de colisiones y la colocación de sprites en un `<canvas>`. Este es un juego para dispositivos móviles que utiliza la orientación del dispositivo y la API vibración para mejorar el modo de juego. Además, está construido utilizando el framework Phaser

Juego de plataformas 2D con Phaser

Esta serie de tutoriales muestra como crear un juego de plataformas simple utilizando Phaser, cubriendo aspectos fundamentales como sprites, colisiones, físicas, coleccionables y mucho más.