Firefox 9 for developers
Firefox 9 se lanzó para Windows el 20 de diciembre de 2011. El 21 de diciembre de 2011 se lanzó la versión 9.0.1 para Mac y Linux, que corrigió un error de bloqueo descubierto en el último minuto.
Cambios para desarrolladores web
HTML
- El atributo
value
de<li>
ahora puede ser negativo. Los valores negativos anteriores se convertian a 0. - Ahora puede especificar la hora de inicio y finalización de los medios en la URI de los medios cuando usa los elementos
<audio>
y<video>
. - Los elementos
<input>
y<textarea>
ahora respetan el valor del atributolang
al invocar el corrector ortográfico. - Firefox en Android ahora permite a los usuarios tomar fotos con la cámara de su teléfono sin salir del navegador cuando se usa el elemento
<input>
contype="file"
yaccept="image/*"
. - Las imágenes PNG ICO de estilo Windows Vista ahora son compatibles.
- Dibujar imagenes que usan el atributo
crossorigin
para solicitar acceso CORS ya no contaminan el lienzo cuando se otorga CORS. - El valor del atributo
rowspan
ahora puede ser tan grande como 65 534, en lugar de 8190.
CSS
- La propiedad
font-stretch
ahora es compatible. - La propiedad
columns
ahora es compatible, con el prefijo-moz
. Esta es una forma abreviada de las siguientes propiedades:column-width
ycolumn-count
. - Cuando una hoja de estilo incluida usando el elemento
<link>
ha sido completamente cargada y analizada (pero aún no aplicada al documento), un eventoload
ahora se activa. Además, si se produce un error al procesar una hoja de estilo, se activa un evento deerror
. - Ahora puede especificar configuraciones de desbordamiento para los bordes izquierdo y derecho del contenido usando una nueva sintaxis de dos valores para
text-overflow
.
JavaScript
Ningún cambio.
DOM
- Uso del modo de pantalla completa
-
La nueva API de pantalla completa proporciona una forma de presentar contenido utilizando toda la pantalla, sin interfaz de navegador. Esto es genial para video y juegos. Esta API es actualmente experimental y prefijada.
- El método
Node.contains()
ahora está implementado; esto le permite determinar si un nodo dado es descendiente de otro nodo. - Se implementó el atributo
Node.parentElement
; esto devuelve el padreElement
de un nodo DOM, onull
si el padre no es un elemento. - Los eventos de composición de DOM Nivel 3 ahora son compatibles.
- Se implementó el atributo
Document.scripts
; esto devuelve unHTMLCollection
de todos los elementos<script>
del documento. - Se implementó el método
Document.queryCommandSupported()
. - El conjunto de eventos que se pueden escuchar en los elementos
<body>
se ha revisado para que coincida con el último borrador de la especificación HTML5. La lista de eventos en la referencia de eventos DOM refleja qué eventos se pueden detectar en<body>
. - El evento
readystatechange
ahora solo se activa enDocument
, según lo previsto. - Los manejadores de eventos ahora se implementan como interfaces IDL estándar. En la mayoría de los casos, esto no afectará el contenido, pero hay excepciones.
- Se ha agregado un nuevo tipo de respuesta, "
moz-json
", aXMLHttpRequest
, lo que permite queXMLHttpRequest
analice automáticamente cadenas JSON; cuando solicita este tipo, se analiza una cadena JSON devuelta, de modo que el valor de la propiedadresponse
es el objeto JavaScript resultante. - Eventos de "progreso"
XMLHttpRequest
ahora se envían de manera confiable para cada fragmento de datos recibido; en el pasado, era posible que la última parte de los datos recibidos no activará un evento de "progreso". Ahora puede realizar un seguimiento del progreso siguiendo solo los eventos de "progreso", en lugar de tener que monitorear también los eventos de "carga" para detectar la recepción de la última porción de datos. - En el pasado, llamar a
addEventListener()
con un detectornull
generaba una excepción. Ahora devuelve sin error y sin efecto. - La nueva propiedad
navigator.doNotTrack
permite que su contenido determine fácilmente si el usuario ha habilitado o no su preferencia de no rastrear; si este valor es "sí", no debe rastrear al usuario. - Los objetos
Range
ySelection
ahora se comportan según sus especificaciones cuandosplitText()
ynormalize()
son llamados. - El valor de
Node.ownerDocument
para los nodos doctype ahora es el documento en el que se llamó acreateDocumentType()
para crear el nodo, en lugar denull
. - Se ha eliminado
window.navigator.taintEnabled
; no ha sido compatible en muchos años.
Workers
- Los workers implementados en las URL de blob se rompieron en Firefox 8 y volvieron a funcionar a partir de Firefox 9.
WebGL
- Los atributos de contexto WebGL
drawingBufferWidth
ydrawingBufferHeight
ahora son compatibles.
MathML
- Se eliminó el valor
restyle
no estándar para el atributoactiontype
en los elementos<maction>
. - Si bien aún no es compatible, el uso del elemento
mlabeledtr
ya no interrumpe el renderizado por completo. Consulte el error 689641, en Firefox para ver el progreso en el soporte real de este elemento.
Redes
- Ahora puede enviar el contenido de matrices tipadas en JavaScript (es decir, el contenido de un
ArrayBuffer
) usando XMLHttpRequest. - Las conexiones WebSocket ahora permiten que no se reciban caracteres en marcos de datos UTF-8 válidos, en lugar de fallar.
- La cabecera HTTP
Accept
para solicitudes XSLT se ha cambiado a "*/*" para simplificar. Dado que recuperar XSLT siempre ha vuelto a "*/*", tenía sentido simplificar la solicitud inicial. - Los intentos por parte de un servidor de usar los códigos de respuesta
301 Moved Permanently
(Movido permanentemente) o307 Temporary Redirect
(Redirección temporal) para redirigir al usuario a un URIjavascript:
ahora resultan en un error de "mala conexión" en lugar de redirigir. Esto evita ciertos tipos de ataques de secuencias de comandos entre sitios. - El contenido entregado con un
Content-Disposition
se trataba previamente como si elContent-Disposition
fuera un "archivo adjunto"; esto no siempre funcionó como se esperaba. Ahora se manejan como siContent-Disposition
estuviera "en línea". - El tamaño máximo predeterminado de un elemento en la memoria caché del disco se ha aumentado a 50 MB; anteriormente, solo se almacenaban en caché los elementos de hasta 5 MB.
Herramientas de desarrollador
- La consola web ahora admite sustituciones de cadenas básicas en sus métodos de registro.
- Ahora puede crear bloques de salida anidados visualmente en la consola web, para ayudar a que sea más fácil de leer.
Cambios para Mozilla y desarrolladores de complementos
Consulte Actualización de complementos para Firefox 9 para obtener una descripción general de los cambios que puede necesitar realizar para que sus complementos funcionen en Firefox 9.
XUL
- El elemento
<xul:tab>
ahora tiene un elementopending
atributo, cuyo valor estrue
, cuando la pestaña está en proceso de ser restaurada por el servicio de almacenamiento de sesiones. Esto se puede usar para diseñar la pestaña en los temas. El atributo no está presente en las pestañas que no están pendientes. - El elemento
<xul:tab>
ahora tiene un elementounread
atributo, cuyo valor estrue
, cuando la pestaña ha cambiado desde la última vez que fue la pestaña activa o si no se ha seleccionado desde que comenzó la sesión actual. El atributo no está presente en las pestañas que no están sin leer. - Ahora puede usar un
<xul:panel>
como una imagen de arrastre para las operaciones de arrastrar y soltar del DOM. Esto le permite usar la API estándar de arrastrar y soltar para arrastrar y soltar contenido XUL. - El método
appendNotification
del elemento<xul:notificationbox>
ahora permite especificar una devolución de llamada que se llama para eventos interesantes relacionados con el cuadro de notificación. Actualmente, el único evento es "eliminado", que le indica que el cuadro se eliminó de su ventana.
Cambios en el módulo de código JavaScript
FileUtils.jsm
ahora tiene un constructorFile
que devuelve un objetonsIFile
que representa un archivo especificado por su nombre de ruta.
Cambios de servicios
- El servicio de preferencias de contenido ahora maneja la navegación en modo privado (vea error 679784, en Firefox).
NSPR
- NSPR ahora tiene un módulo "agregar", que le permite agregar nuevos datos al final de un registro existente.
Cambios de interfaz
Interfaces eliminadas
nsIGlobalHistory3
se eliminó durante la simplificación del código de Places y DocShell.
Varios cambios en la interfaz
- La interfaz
nsISound
tiene una nueva constante,EVENT_EDITOR_MAX_LEN
. Permite reproducir el sonido del sistema cuando se escriben más caracteres que el máximo permitido en un campo de texto. Actualmente, esto solo se usa en Windows. - La interfaz
nsIScriptError2
tiene nuevas propiedadestimeStamp
einnerWindowID
; además, el métodoinitWithWindowID()
ahora toma una ID de ventana interna en lugar de una ID de ventana externa. - Se agregó el atributo
nsIBidiKeyboard.haveBidiKeyboards
; esto le permite determinar si el sistema tiene al menos un teclado instalado para cada dirección: de izquierda a derecha y de derecha a izquierda. - El nuevo atributo
nsIEditor.isSelectionEditable
le permite determinar si el ancla de selección actual es editable. Esto ayuda a respaldar los casos en los que solo se pueden editar partes del documento, al permitirle ver si la selección actual está en una sección editable. - Los métodos
nsIBrowserHistory.registerOpenPage()
ynsIBrowserHistory.unregisterOpenPage()
se han eliminado como parte de una revisión de rendimiento en el sistema de Lugares. Puede usar los métodos correspondientes enmozIPlacesAutoComplete
en su lugar. - Se agregó el método
nsIDOMWindowUtils.wrapDOMFile()
; esto devuelve un objeto DOMFile
para unnsIFile
dado. - Se agregó el método
nsIChromeFrameMessageManager.removeDelayedFrameScript()
para admitir la eliminación de código de carga retrasada. Los complementos con arranque deben usar esto, al apagar, para eliminar cualquier código que haya cargado usandonsIChromeFrameMessageManager.loadFrameScript()
con el indicador de carga retrasada establecido. Esto está expuesto a complementos comobrowser.messageManager.removeDelayedFrameScript()
. - La interfaz
nsIAppStartup
tiene un nuevo atributointerrupted
, que le permite saber si el proceso de inicio se interrumpió en algún momento mediante un aviso interactivo. Esto puede ser útil, por ejemplo, cuando se cronometran los inicios durante la evaluación del rendimiento, para poder eliminar los números de las sesiones que se interrumpieron. - La interfaz
nsIEditorSpellCheck
se ha revisado para admitir la selección por sitio de diccionarios del corrector ortográfico.
Analizador IDL
El analizador IDL ya no incluye soporte para la noción nunca completamente implementada de punteros únicos.
Cambios en el sistema de compilación
- Se eliminó la opción
--enable-application=standalone
para construir un XPConnect independiente; no ha funcionado desde 2007 de todos modos. - Se eliminó la compatibilidad con la creación independiente de Necko y Transformiix XSLT; ya no puede usar
--enable-application=network
o--enable-application=content/xslt
. - El sistema de compilación ahora busca
.mozconfig
en$topsrcdir/.mozconfig
o$topsrcdir/mozconfig
, y en ningún otro lugar, a menos que anule la ruta.mozconfig
usando la variable de entornoMOZCONFIG
. - Se ha sustituido la utilidad
xpidl
en el SDK por pyxpidl.
Otros cambios
- El corrector ortográfico ya no tiene un límite arbitrario de longitud de palabra de 130 caracteres en la longitud de las palabras que intentará revisar. Este límite se estableció anteriormente para evitar bloqueos que ocurrían en el corrector ortográfico, pero los errores subyacentes se han solucionado desde entonces.
- Ahora puede registrar componentes para agregar funciones al objeto
window.navigator
mediante la categoría "JavaScript-navigator-property". Vea Agregar APIs al objeto navegador para detalles y ejemplos.