Firefox 3.5 para desarrolladores
================================

Firefox 3.5 implementa nuevas funcionalidades, además de agregar y mejorar el funcionamiento de una amplia variedad de estándares web. Este artículo ofrece una extensa lista con enlaces a artículos que explican estas grandes mejoras.

Nuevas funcionalidades para desarrolladores en Firefox 3.5
----------------------------------------------------------

### Para desarrolladores de sitios y aplicaciones web

#### Funciones de HTML 5

Usar audio y video en Firefox

Firefox 3.5 implementa los elementos `audio` (en-US) y `video` de HTML 5.

Recursos sin conexión en Firefox

Firefox 3.5 implementa de forma completa la especificación para recursos sin conexión de HTML 5.

Arrastrar y soltar (Drag and drop)

La API para arrastrar y soltar de HTML 5 permite que el usuario pueda arrastrar y soltar objetos entre sitios web. También permite una API más simple para el uso por parte de las extensiones o aplicaciones basadas en la plataforma Mozilla.

#### Nuevas características de CSS implementadas

Tipografías descargables

La nueva regla `@font-face` permite a las páginas web disponer de tipografías descargables, para que los sitios web puedan ser visualizados como el autor lo pretende.

Pedidos de CSS según el medio

Firefox 3.5 implementa esta característica que permite al autor del sitio web tener más control sobre el archivo CSS que cada dispositivo va a recibir según las características del mismo.

`:before` y `:after` actualizados a CSS 2.1

Los pseudo-elementos `:before` y `:after` han sido actualizados para implementar por completo las características de CSS 2.1, añadiendo la posibilidad de usar `position`, `float`, `list-style-*` y algunas propiedades de `display`.

`opacity`

La extensión al CSS `-moz-opacity` fue eliminada para implementar la propiedad estandar `opacity`.

`text-shadow` (en-US)

La propiedad `text-shadow`, que permite especificar efectos de sombra para textos y decoraciones del texto, está implementada.

`word-wrap` (en-US)

Esta propiedad permite especificar cuando las líneas deben o no ser cortadas entre palabras para prevenir el overflow cuando una línea que no puede ser cortada es demasiado larga para entrar en una sola línea.

`-moz-box-shadow` (en-US)

`-moz-border-image` (en-US)

`-moz-column-rule` (en-US)

`-moz-column-rule-width` (en-US)

`-moz-column-rule-style` (en-US)

`-moz-column-rule-color` (en-US)

Firefox 3.5 añade la posibilidad de usar estas extensiones al CSS de Mozilla.

The `-moz-nativehyperlinktext` color value

Este nuevo valor del color representa el predefinido por el sistema del usuario para los hipervínculos.

Las nuevas propiedades `-moz-window-shadow` y `-moz-system-metric(mac-graphite-theme)`

Estas nuevas propiedades de CSS fueron añadidas para facilitar la creación de temas.

Nuevos valores para `-moz-appearance` (en-US)

Los valores `-moz-win-glass` y `-moz-mac-unified-toolbar` se agregaron a `-moz-appearance`.

Usar transformaciones CSS

Firefox 3.5 implementa las transformaciones CSS. Mirá `-moz-transform` (en-US) y `-moz-transform-origin` (en-US) para saber más detalles.

`:nth-child`

`:nth-last-child` (en-US)

`:nth-of-type` (en-US)

`:nth-last-of-type` (en-US)

`:first-of-type` (en-US)

`:last-of-type` (en-US)

`:only-of-type` (en-US)

Estos selectores pueden ser usados en Firefox 3.5.

#### Nuevas funcionalidades del DOM

localStorage (en-US)

Firefox 3.5 implementa el uso de la propiedad `localStorage` del Web Storage, que permite que las aplicaciones web guarden datos en la computadora del cliente.

Usar DOM workers (en-US)

Firefox 3.5 implementa los trabajadores (workers) del DOM lo que permite el multi-threading en las aplicaciones web.

Usar geolocalización

Firefox 3.5 implementa la API de geolocalización, que permite que las aplicaciones web obtengan información sobre la ubicación actual del usuario si unu proveedor de ese servicio está instalado y habilitado.

Usar JSON en Firefox (en-US)

Posibilidad de usar JSON (en-US) en el DOM.

Localizar elementos del DOM con selectores (en-US)

El API de selectores permite pedirle a un documento que localice los elementos que coincidan con una regla seleccionada.

El objeto `NodeIterator` (en-US)

El objeto `NodeIterator` permite recorrer la lista de nodos en un árbol del DOM.

El evento MozAfterPaint

Este nuevo evento del DOM es lanzado después de actualizar partes de una ventana.

El evento MozMousePixelScroll

Este nuevo evento del DOM permite detectar el desplazamiento con la rueda del ratón/mouse en lugar de los eventos basados en la línea de desplazamiento.

#### Nuevas funcionalidades JavaScript

Nuevo en JavaScript 1.8.1

Una introducción a todos los cambios de JavaScript 1.8.1.

`Object.getPrototypeOf()` (en-US)

Este nuevo método retorna el prototipo de un objeto especificado.

Uso de JSON nativo (en-US)

Firefox 3.5 tiene soporte para JSON (en-US) nativo.

Nuevos métodos trim en el objeto String

El objeto `String` (en-US) tiene ahora los métodos `trim()` (en-US), `trimLeft()` (en-US), y `trimRight()` (en-US) .

#### Networking

Controles de acceso cross-site para HTTP (en-US)

En Firefox 3.5, es ahora posible en las peticiones HTTP, incluyendo aquellas hechas por `XMLHttpRequest`, trabajar entre dominios si el servidor lo permite.

Eventos de progreso para`XMLHttpRequest`

Ahora se ofrecen eventos de progreso para que las extensiones puedan monitorizar el progreso de las peticiones.

Soporte `XMLHttpRequest` síncrono mejorado

DOM Timeout y Input Events son ahora soportados durante un `XMLHttpRequest` síncrono.

Control de prefetch de DNS (en-US)

Firefox 3.5 ofrece prefetch de DNS, por el que resuelve nombres de dominio con anticipación para links incluidos en la página actual, para ahorrar tiempo cuando los enlaces son realmente clickados. Este artículo describe cómo puedes optimizar tu sitio web para desactivar el prefetch, o ajustar cómo opera el prefetch.

#### Nuevas funcionalidades Canvas

API de texto HTML 5 para elementos `canvas`

Los elementos Canvas ahora soportan la API de texto HTML 5.

Efectos de sombra en un `canvas`

Los efectos de sombra de Canvas son ahora soportados.

`createImageData()` (en-US)

El método canvas `createImageData()` es ahora soportado, permitiendo al código crear específicamente un objeto `ImageData` en lugar de necesitar que sea hecho automáticamente. Esto puede mejorar el rendimiento de otros métodos `ImageData` evitando que deban crear el objeto.

Atributo `moz-opaque`

Añadido el atributo DOM `moz-opaque`, que permite al canvas saber si la translucencia será un factor. Si el canvas sabe que no hay translucencia, el rendimiento de pintado puede ser optimizado.

#### Nuevas funcionalidades SVG

Aplicar efectos SVG al contenido HTML

Ahora puedes aplicar efectos SVG a contenido HTML y XHTML; este artículo describe cómo.

#### Otras nuevas funcionalidades

Corrección de color ICC en Firefox (en-US)

Firefox 3.5 ahora soporta corrección de color ICC para imágenes etiquetadas.

El atributo `defer` es ahora soportado en elementos `script` (en-US)

Este atributo indica al navegador que *puede* escoger continuar parseando y renderizando la página sin esperar a que el script termine de ejecutarse.

### Otras mejoras

* La propiedad de los nodosde texto `wholeText` (en-US) y el método `replaceWholeText()` (en-US) han sido implementados.
* La propiedad `element.children` (en-US) ha sido añadida. Retorna una *colección* de elementos hijo del elemento dado.
* La propiedad `element.contentEditable` es ahora soportada, para soportar elementos editables.
* La API Element Traversal es ahora soportada por el objeto DOM Element.
* Los nodos de documento HTML pueden ser ahora clonados usando `cloneNode()` (en-US).
* El método no estándar `getBoxObjectFor()` ha sido eliminado. Deberías usar `getBoundingClientRect()` en su lugar.
* Los eventos DOM ya despachados pueden ser ahora re-despachados. Esto hace que Firefox 3.5 pase el test 30 de Acid 3.
* Se han hecho mejoras en el manejo de rango DOM 2.
* En ámbito no-chrome, los objetos capturados en excepciones son ahora el objeto realmente lanzado en lugar de un wrapper XPConnect que contiene el objeto lanzado.
* Las referencias ID de SVG ahora son vivas.
* Los filtros SVG ahora funcionan para `foreignObject`.
* El método `GetSVGDocument()` ha sido añadido a los elementos `object` (en-US) y `iframe` por compatibilidad.
* El setting implícito de propiedades en inicializadores de objeto y array ya no ejecuta los setters JavaScript. Ver el post Object and array initializers should not invoke setters when evaluated para más detalles.
* La variable `gDownloadLastDir.path` ha sido renombrada a `gDownloadLastDir.file` porque se refiere a un `nsIFile`, no a una ruta.
* La variable `gDownloadLastDirPath` ha sido renombrada a `gDownloadLastDirFile` porque se refiere a un `nsIFile`, not a una ruta.
* A partir de Firefox 3.5, no puedes usar `data:` bindings en los chrome packages que tienen automatización `XPCNativeWrapper`.
### For XUL and add-on developers

If you're an extension developer, you should start by reading Updating extensions for Firefox 3.5 (en-US), which offers a helpful overview of what changes may affect your extension.

#### New components and functionality

Supporting private browsing mode

Firefox 3.5 offers Private Browsing mode, which doesn't record the user's activities. Extensions may support private browsing following the guidelines offered by this article.

Security changes in Firefox 3.5 (en-US)

This article covers security-related changes in Firefox 3.5.

Theme changes in Firefox 3.5

This article covers theme-related changes in Firefox 3.5.

Monitoring WiFi access points

Code with UniversalXPConnect privileges can now monitor the list of available access points, getting information on their SSIDs, MAC addresses, and signal strength. This can be used in tandem with Geolocation to offer WiFi-based location service.

#### Notable changes and improvements

* The XUL `textbox` widget now offers a `search` type, for use as search fields.
* In order to support dragging and dropping tabs between windows, the `browser` widget now has a `swapDocShells()` method.
* Added the `level` attribute to the `panel` element; this specifies whether panels appear on top of other applications, or just on top of the window the panel is contained within.
* XUL elements now support the `clientXXX` and `scrollXXX` properties.
* `keyset`s now include a `disabled` attribute.
* In addition, `keyset`s can now be removed using the node's `removeChild()` (en-US) method.
* `mozIStorageStatement` had the `initialize()` method removed; consumers should use the `createStatement()` method instead to get a new statement object.
* The Storage API now offers support for asynchronous requests.
* The `nsICookie2` interface now exposes the time at which cookies were created in its new `creationTime` attribute.
* Added a flag to `nsIProtocolHandler` (`URI_IS_LOCAL_RESOURCE`) that is checked during chrome registration to make sure a protocol is allowed to be registered.
* Firefox now looks for plugins in `/usr/lib/mozilla/plugins` on Linux, as well as the previously supported locations.
* The plugin API has been updated to include support for private browsing mode; you may now use `NPN_GetValue()` to query the state of private browsing mode using the variable `NPNVprivateModeBool`.
New features for end users
--------------------------

### User experience

Location aware browsing

If you choose, you may allow Firefox 3.5 to share information about your current location with web sites. Firefox 3.5 can use information about the network you're connected to to share your location. Of course, it asks for your permission before doing so, to ensure your privacy.

Open audio and video support

Firefox 3.5 supports embedded video and audio using the open Ogg format, as well as WAV for audio. No plugins, no confusing error messages about needing to install something or other that turns out not to be available on your platform anyway.

Local data storage

Web applications can now use Web Storage's local storage capabilities to store data on your computer. This is great for anything from site preferences to more complex data.

### Security and privacy

Private Browsing

Need to use someone else's computer? Switch on Private Browsing mode and nothing will be recorded about your session, including cookies, history, and any other potentially private information.

Better privacy controls

The Privacy preference pane has been completely redesigned to offer users more control over their private information. Users can choose to retain or discard anything including history information, cookies, downloads, and form field information. In addition, users can specify whether or not to include history and/or bookmarks in the location bar's automated suggestions, so you can keep private web addresses from popping up unexpectedly while typing in the location bar.

### Performance

Faster JavaScript performance

JavaScript, the "J" in "AJAX," is sped up dramatically in Firefox 3.5 with the new TraceMonkey JavaScript engine. Web applications are much faster than in Firefox 3.

Faster page rendering

Web content draws faster in Firefox 3.5, thanks to technologies such as "speculative parsing." Your users don't need to know what it means, other than "it makes things draw faster."

See also
--------

* Firefox 3 for developers (en-US)
* Firefox 2 for developers (en-US)
* Firefox 1.5 for developers (en-US)