Hubo un error de script en esta página. Mientras los editores del sitio lo solucionan, puedes ver una parte del contenido más abajo.
{{ draft() }}
Firefox 4, que entró en beta a fines de junio del 2010, mejora el rendimiento, agrega una mayor compatibilidad para HTML5 y otras tecnologías Web en desarrollo, y otras mejoras en la seguridad. Este artículo provee información inicial sobre esta futura versión y qué características estarán disponibles para los desarrolladores Web, desarrolladores de extensiones y desarrolladores sobre la plataforma Gecko.
Muchas de estas funcionalidades pueden ser probadas actualmente en las versiones de Firefox 4 beta o, si tienes espíritu aventurero, en las versiones nocturnas.
Funcionalidades para desarrolladores web
Gecko usa ahora un parseador o analizador HTML5, que arregla algunos problemas, mejora la interoperabilidad y el rendimiento. También permite incrustar contenido en SVG y MathML directamente en el marcado HTML.
HTML
- Conoce el analizador de HTML5
- Una mirada a lo que significa para ti el analizador HTML5 y cómo incrustar SVG y MathML dentro de tu contenido.
- Formularios en HTML5
- Una mirada a las mejoras en los formularios web en HTML5. Entre los cambios se encuentran los tipos de entrada agregados en el elemento
<input>
, validación de datos y muchos más. - Secciones y esquema de un documento HTML5
- Gecko ya admite los nuevos elementos de HTML5 relacionados a secciones en un documento: {{ HTMLElement("article") }}, {{ HTMLElement("section") }}, {{ HTMLElement("nav") }}, {{ HTMLElement("aside") }}, {{ HTMLElement("hgroup") }}, {{ HTMLElement("header") }} y {{ HTMLElement("footer") }}.
- Atributo hidden de HTML5
- Este atributo, común a todos los elementos, se utiliza para ocultar contenido de una página web que no es relevante actualmente para el usuario.
- Otros elementos de HTML5
- Gecko ya admite el uso de los siguientes nuevos elementos en HTML5: {{ HTMLElement("mark") }}, {{ HTMLElement("figure") }} y {{ HTMLElement("figcaption") }}.
- WebSockets
- Una guía para usar la nueva API de WebSockets para comunicación en tiempo real entre una aplicación web y un servidor.
Diversos cambios en HTML
- Los elementos {{ HTMLElement("textarea") }} ahora son de tamaño variable por defecto; puedes usar la propiedad CSS {{ cssxref("resize") }} para desabilitarlos.
canvas.getContext
ycanvas.toDataURL
no lanzan una excepción cuando se invocan con argumentos no reconocidos.- El elemento
<canvas>
ya admite el método específico de MozillamozGetAsFile()
, que te permite obtener un archivo basado en memoria que contiene una imagen de los contenidos de canvas. ConsultaHTMLCanvasElement
si deseas tener más detalles. canvas2dcontext.lineCap
ycanvas2dcontext.lineJoin
ya no lanzan una excepción cuando se les asigna una valor no reconocido.canvas2dcontext.globalCompositeOperation
no lanza una excepción cuando se les asigna un valor no reconocido ni tampoco admite el valor no estándardarker.
- Se ha eliminado la compatibilidad para el elemento obsoleto
<spacer>
, que estaba ausente en el resto de navegadores. - El elemento
<isindex>
es creado como un elemento simple sin propiedades ni métodos cuando se invoca adocument.createElement(),
. - Gecko ya admite invocar a
click()
en elementos<input>
para abrir el selector de archivos. Mira el ejemplo del artículo Usar archivos desde aplicaciones web. - El elemento
<input>
admite un nuevo atributomozactionhint
, que te permite especificar la etiqueta para la tecla enter de los teclados virtuales. - Los elementos
<script>
dentro de los elementos<iframe>
,<noembed>
y<noframe>
ahora se ejecutan, lo que en anteriores versiones de Firefox no hacían. Esto cumple con la especificación y coincide con el comportamiento de otros navegadores.
CSS
- Transiciones CSS
- Está disponible en Firefox 4 una nueva compatibilidad para las transiciones CSS.
- Valores calculados en CSS
- Se ha agregado la compatibilidad para
-moz-calc
, lo que te permite especificar valores<length>
como expresiones matemáticas.
- Agrupación de selectores
- Compatibilidad para {{ cssxref(":-moz-any") }} para agrupar selectores y descomponer elementos de combinación en factores.
- Compatibilidad background image subrectangle
- La función {{ cssxref("-moz-image-rect") }} hace que sea posible utilizar subrectángulos de imágenes como
background-image
(imágenes de fondo). - Propiedades CSS touch
- Se agrega la compatibilidad para propiedades touch. Más adelante se aportarán más detalles y nombres reales de los artículos.
- Uso de elementos arbitrarios como fondos CSS
- Puedes utilizar la función CSS {{ cssxref("-moz-element") }} y la función DOM domxref {{ domxref("document.mozSetImageElement()") }} para usar elementos HTML arbitrarios como fondo.
- Se han hecho cambios en la información que se puede obtener sobre el estilo de los enlaces visitados usando selectores CSS, lo puede afectar a algunas aplicaciones web.
Nuevas propiedades CSS
Propiedad | Descripción |
{{ cssxref("-moz-font-feature-settings") }} | Te permite personalizar las funciones avanzadas de las fuentes OpenType. |
{{ cssxref("-moz-tab-size") }} | Especifica el ancho en caracteres de espacio de un carácter de tabulación (U 0009) al representar el texto. |
{{ cssxref("resize") }} | Te permite controlar las dimensiones a las que se puede adaptar un elemento. |
Nuevas seudoclases CSS
Seudoclase | Descripción |
{{ cssxref(":-moz-handler-crashed") }} | Se utiliza para aplicar estilo a los elementos cuyos plugins se han caído. |
{{ cssxref(":-moz-placeholder") }} | Aplicado al texto de marcador de posición en los campos de formulario. |
{{ cssxref(":-moz-submit-invalid") }} | Aplicado al botón de enviar de los formularios cuando uno o más de los campos del formulario no se valida. |
{{ cssxref(":-moz-window-inactive") }} | Aplicado a los elementos de las ventanas inactivas. |
{{ cssxref(":invalid") }} | Aplicado de manera automática a los campos {{ HTMLElement("input") }} cuando su contenido no es válido. |
{{ cssxref(":optional") }} | Aplicado automáticamente a los campos{{ HTMLElement("input") }} que no especifican el atributo required . |
{{ cssxref(":required") }} | Aplicado automáticamente a los campos{{ HTMLElement("input") }} que especifican el atributo required . |
{{ cssxref(":valid") }} | Aplicado de manera automática a los campos {{ HTMLElement("input") }} cuando su contenido se valida con éxito. |
Nuevos seudoselectores CSS
Seudoselector | Descripción |
{{ cssxref(":-moz-focusring") }} | Te permite especificar el aspecto de un elemento cuando Gecko cree que debería tener representada una indicación del foco . |
Nuevas funciones CSS
Función | Descripción |
{{ cssxref(":-moz-any") }} | Te permite agrupar selectores y descomponer en factores los elementos de combinación. |
{{ cssxref("-moz-calc") }} | Te permite especificar valores {{cssxref("<length>")}} como expresiones matemáticas. |
{{ cssxref("-moz-element") }} | Te permite utilizar un elemento arbitrario como fondo de {{ cssxref ("background-image") }} y {{ cssxref("background") }}. |
{{ cssxref("-moz-image-rect") }} | Te permite utilizar un subrectángulo de una imagen como {{ cssxref ("background-image") }} o {{ cssxref("background") }}. |
Propiedades CSS renombradas
Nombre anterior | Nuevo nombre | Notas |
-moz-background-size |
{{ cssxref("background-size") }} | El nombre -moz-background-size ya no es compatible. |
-moz-border-radius |
{{ cssxref("border-radius") }} | El nombre anterior es admitido por un tiempo limitado para que puedas actualizar tus sitios. Los cambios de representación también se han hecho para que coincida con la última versión de la especificación. |
-moz-box-shadow |
{{ cssxref("box-shadow") }} |
Varios cambios en CSS
- La propiedad {{ cssxref ("text-shadow") }} ahora limita el radio de desenfoque a 300px por razones de integridad y rendimiento.
- La propiedad {{ cssxref("overflow") }} ya no se aplica a los elementos agrupados en tablas (
<thead>
,<tbody>
y<tfoot>
). - La propiedad {{ cssxref("-moz-appearance") }} ahora es compatible con el valor
-moz-win-borderless-glass
, que aplica a un elemento un aspecto sin márgenes Aero Glass. - Se ha agregado la función multimedia
-moz-device-pixel-ratio
, que permite que se usen los píxeles del dispositivo por ratio de píxel CSS para las Consultas a medios . - El control de Gecko sobre las unidades CSS ha sido revisado para adaptarse mejor a otros navegadores y para traducir con mayor precisión las longitudes absolutas en cálculos de píxeles de pantalla basados en los ppp del dispositivo.
Gráficos y video
- WebGL
- El estándar WebGL en desarrollo ya es admitido por Firefox.
- Optimizar el rendimiento de los gráficos
- Consejos y trucos para sacarle el máximo partido a los gráficos y al rendimiento del video en Firefox 4.
- Compatibilidad para video WebM
- El nuevo formato de video abierto WebM es compatible con Gecko 2.0.
- Animación SVG con SMIL
- La compatibilidad para la animación SMIL de SVG ya está disponible.
- Utilizar SVG como imágenes y como fondos CSS
- Ahora puedes utilizar SVG con el elemento {{ htmlelement("img") }}, así como un {{ cssxref("background-image") }} CSS.
- Compatibilidad con el atributo multimedia
buffered
- El atributo
buffered
de los elementos {{ HTMLElement("video") }} y {{ HTMLElement("audio") }} es admitido ya, lo que te permite determinar qué rangos de un archivo multimedia se han almacenado en el búfer. La interfaz DOM {{ domxref("TimeRanges") }} ha sido implementada para admitirlo. - Atributo multimedia
preload
- Se ha implementado el atributo
preload
de la especificación HTML 5, en sustitución del atributoautobuffer
, que se aplicaba anteriormente y que ya no se admite. Esto afecta a los elementos {{ HTMLElement ("video") }} y {{ HTMLElement ("audio") }}, así como a la interfaz de {{ interface("nsIDOMHTMLMediaElement") }}. - Mejoras SVG en la posición de texto
- Ahora puedes especificar listas para los valores de las propiedades
x
,y
,dx
ydy
en elementos {{ SVGElement ("text") }} y {{ SVGElement ("tspan") }} SVG. Esto te permite controlar de forma individual la posición de cada carácter en una cadena.
DOM
- Matrices de tipo JavaScript
- Se ha añadido la compatibilidad para las matrices de tipo JavaScript, lo que te permite manipular los búferes que contienen datos sin procesar utilizando tipos de datos nativos. Varias APIs hacen uso de ello, incluyendo la API de archivos , WebGL y WebSockets .
- Obtener rectángulos límite para rangos
- El objeto {{ domxref ("Range") }} ahora tiene los métodos {{ domxref("range.getClientRects()") }} y {{ domxref("range.getBoundingClientRect()") }}.
- Capturar eventos del ratón sobre elementos arbitrarios
- Se ha agregado la compatibilidad para las APIs de Internet Explorer
setCapture()
yreleaseCapture
()
. Mira {{ bug(503943) }}. - Manipular el historial del navegador
- El objeto historial del documento existente, disponible a través del objeto {{ domxref ("window.history") }}, ahora es compatible con los nuevos métodos HTML5
pushState()
yreplaceState()
. - Animaciones con MozBeforePaint
- Un nuevo evento se ha añadido que, en concertación con el método {{ domxref("window.mozRequestAnimationFrame()") }} y la propiedad {{ domxref("window.mozAnimationStartTime") }}, proporciona una manera de crear animaciones que se sincronizan entre sí.
- Eventos touch y multi-touch
- Se ha añadido la compatibilidad para los eventos touch y multi-touch.
Han cambiado las interfaces DOM de los elementos HTML
Varios elementos HTML han incorporado cambios en sus interfaces DOM para adaptarlas a los requisitos de la especificación de HTML 5, como se muestra a continuación.
Interfaz de Firefox 3.6 | Interfaz en Firefox 4 | Elemento HTML |
HTMLSpanElementHTMLSpanElement |
HTMLElement |
{{ HTMLElement("abbr") }}, {{ HTMLElement("acronym") }}, {{ HTMLElement("address") }}, {{ HTMLElement("b") }}, {{ HTMLElement("bdo") }}, {{ HTMLElement("big") }}, {{ HTMLElement("blink") }}, {{ HTMLElement("center") }}, {{ HTMLElement("cite") }}, {{ HTMLElement("code") }}, {{ HTMLElement("dd") }}, {{ HTMLElement("dfn") }}, {{ HTMLElement("dt") }}, {{ HTMLElement("em") }}, {{ HTMLElement("i") }}, {{ HTMLElement("kbd") }}, {{ HTMLElement("listing") }}, {{ HTMLElement("nobr") }}, {{ HTMLElement("plaintext") }}, {{ HTMLElement("s") }}, {{ HTMLElement("samp") }}, {{ HTMLElement("small") }}, {{ HTMLElement("strike") }}, {{ HTMLElement("strong") }}, {{ HTMLElement("sub") }}, {{ HTMLElement("sup") }}, , {{ HTMLElement("tt") }}, {{ HTMLElement("u") }}, {{ HTMLElement("var") }}, {{ HTMLElement("xmp") }} |
HTMLDivElement |
HTMLElement |
{{ HTMLElement("noembed") }}, {{ HTMLElement("noframes") }}, {{ HTMLElement("noscript") }} |
HTMLWBRElement |
HTMLElement |
{{ HTMLElement("wbr") }} |
Varios cambios DOM
- El ajuste de un elemento {{ HTMLElement ("textarea") }} ahora se puede controlar a través del DOM, gracias al atributo DOM
wrap
. {{ bug(41464) }} - Los elementos {{ HTMLElement ("script") }} creados por medio de {{ domxref("document.createElement()") }} e insertados en un documento ahora se comportan por defecto de acuerdo a la especificación HTML 5. Las secuencias de comandos con el atributo
src
se ejecutan en cuanto están disponibles (sin guardar el orden) y las secuencias de comandos sin el atributosrc
se ejecutan de forma sincrónica. Para insertar scripts dentro de otros scripts que ejecuten el atributosrc
en el orden de inserción, ajusta en ellos.async=false
. - Los objetos DOM {{ domxref("file") }} ahora ofrecen una propiedad
url
. - Compatibilidad de FormData para XMLHttpRequest.
- Se ha implementado la propiedad {{ domxref ("element.isContentEditable") }}.
- La propiedad {{ domxref ("document.currentScript") }} le permite determinar qué script del elemento {{ HTMLElement ("script") }} se está ejecutando actualmente. Los nuevos eventos {{ domxref ("element.onbeforescriptexecute") }} y {{ domxref ("element.onafterscriptexecute") }} se activan antes y después de que se ejecute un elemento script.
- Se agregó la propiedad
mozSourceNode
al objetoDragTransfer
. - Se agregó el método
selection.modify()
para el objeto {{ domxref("Selection") }}, lo que te permite modificar fácilmente la selección de texto o la posición actual del cursor en una ventana del navegador. - Se ha eliminado la compatibilidad para el objeto
window.directories
y la funcióndirectories
para {{ domxref("window.open") }}, que no son compatibles con ningún otro navegador. Utilizapersonalbar
en su lugar. {{ bug (474058) }} - Se ha añadido la propiedad {{ domxref ("event.mozInputSource") }} a los eventos DOM de interfaz de usuario. Esta propiedad no estándar te permite determinar el tipo de dispositivo que generó un evento.
- Se ha implementado el evento {{ domxref ("document.onreadystatechange") }}.
- El método {{ domxref ("document.createElement") }} ya no acepta en modo "quirks"
<
y>
alrededor del nombre de la etiqueta. - Se han agregado los métodos {{ domxref("element.setCapture()") }} y {{ domxref("document.releaseCapture()") }}, que permiten a los elementos que continúen el seguimiento de los eventos del ratón, incluso cuando el ratón está fuera de su zona normal de seguimiento después de que haya ocurrido un evento
mousedown
. - Se ha agregado la propiedad {{ domxref ("window.mozPaintCount") }}, que te permite determinar cuántas veces ha sido pintado un documento. Esto puede ser útil cuando se esté comprobando el rendimiento de tu aplicación web.
- El token de idioma se ha quitado de {{ domxref ("window.navigator.appVersion") }} y {{ domxref ("window.navigator.userAgent ") }}. Usa {{ domxref ("window.navigator.language") }} o el encabezado Accept-Language en su lugar. {{ Bug (572656) }}
- El objeto XMLHttpRequest ahora expone la respuesta como una matriz de tipo JavaScript, así como una cadena, usando la propiedad específica de Gecko
mozResponseArrayBuffer
. - Los eventos del ratón ahora incluyen una propiedad
mozPressure
que indica la cantidad de presión sobre los dispositivos de entrada sensibles a la presión compatibles. - Los métodos {{ domxref("window.URL.createObjectURL()") }} y {{ domxref("window.URL.revokeObjectURL()") }} te permiten crear URLs objeto que hacen referencia a archivos locales.
- El método {{ domxref("DOMImplementation.createHTMLDocument()") }} te permite crear un nuevo documento HTML.
- {{ domxref("Node.mozMatchesSelector()") }} ahora lanza una excepción
SYNTAX_ERR
si la cadena de selector especificada no es válida, en lugar de devolver incorrectamentefalse
. - Ahora puedes establecer los valores de las propiedades SVG de un elemento utilizando la sintaxis abreviada lo mismo que con CSS. Por ejemplo,
element.style.fill = 'lime'
. Consulta {{ domxref ("element.style") }} para tener más detalles. - La raíz del documento tiene ahora un atributo
privatebrowsingmode
que describe el estado del modo de navegación privada, incluyendo una indicación sobre si la navegación privada es temporal o permanente para la sesión. - El segundo parámetro del método {{ domxref("window.getComputedStyle()") }} ahora es opcional, como lo es en todos los navegadores importantes.
- El objeto DOM
StorageEvent
coincide ahora con la última versión de la especificación. - El retraso mínimo permitido para el método {{ domxref("window.setTimeout()") }} es ahora una preferencia,
dom.min_timeout_value
. - El evento
MozAfterPaint
ya no se envía de forma predeterminada, debido a un problema de seguridad potencial. Se puede volver a habilitar mediante el establecimiento de una preferencia.
Seguridad
- Política de Seguridad sobre Contenidos (Content Security Policy, CSP)
- La Política de Seguridad sobre Contenidos (CSP) es una propuesta de Mozilla diseñada para ayudar a los diseñadores y administradores de servidores a especificar cómo interactúa el contenido de sus sitios web. El objetivo es ayudar a detectar y mitigar ataques como secuencias de comandos entre sitios e inyección de datos.
- Seguridad Estricta de Transporte HTTP
- La Seguridad Estricta de Transporte HTTP es una característica de seguridad que permite a un sitio web decirle a los navegadores que sólo deben comunicarse por medio de HTTPS, en lugar de HTTP.
- El encabezado de respuesta X-FRAME-OPTIONS
- El encabezado de respuesta HTTP X-FRAME-OPTIONS introducido en Internet Explorer 8 ya es compatible con Firefox. Esto permite que los sitios indiquen si sus páginas se pueden o no utilizar en los marcos y, de ser así, restringirlo o no al mismo origen.
- Cambios en la cadena del agente de usuario
- Como medio para reducir la cantidad de datos enviados y la entropía en las peticiones HTTP (ver {{ bug ("572650 ") }}), los tokens de idioma y de intensidad criptográficos han sido eliminados de la cadena del agente de usuario.
JavaScript
Para una visión general de los cambios implementados en JavaScript 1.8.5, consulta Novedades en JavaScript 1.8.5 . JavaScript en Firefox 4 tendrá la adhesión adicional al estándar ECMAScript 5.
Herramientas para desarrolladores
- Uso de la Consola Web
- La herramienta Consola Web es una ayuda de depuración útil para los desarrolladores web y desarrolladores de extensiones por igual.
{{ gecko_callout_heading ("2.0") }}
La Consola de errores está desactivada por defecto a partir de Firefox 4. Puedes volver a habilitarla cambiando la preferencia devtools.errorconsole.enabled
a true
y reiniciando el navegador.
Cambios para desarrolladores de Mozilla y de complementos/agregados
Para obtener consejos útiles sobre la actualización de las extensiones existentes para Firefox 4, puedes ver Actualizar extensiones para Firefox 4 . Hay varios cambios claves que rompen la compatibilidad con los complementos existentes, así que asegúrate de leer este artículo.
Si eres un desarrollador de temas, es aconsejable que leas Cambios en los temas de Firefox 4 para entender algunos cambios fundamentales que tendrás que tener en cuenta.
Módulos de código JavaScript
- Medición del rendimiento con el módulo de código PerfMeasurement.jsm
- El módulo de código
PerfMeasurement.jsm
proporciona una API para medir los datos del rendimiento a nivel de la CPU en código JavaScript.
Distintos cambios en módulos de código
- El
NetUtil.jsm
módulo de código ofrece ahora el métodoreadInputStreamToString()
, que te permite leer bytes arbitrarios de una secuencia en una cadena, incluso si la secuencia incluye ceros.
Cambios en DOM
- {{ domxref("ChromeWorker") }}
- Un nuevo tipo de worker para código privilegiado, lo que te permite utilizar cosas como js-ctypes de workers en las extensiones y en el código de aplicación.
- Eventos touch
- Se ha añadido la compatibilidad para eventos touch (no estándar), los cuales permiten realizar el seguimiento de varios dedos en movimiento sobre una pantalla táctil al mismo tiempo.
XUL
Cambios en el elemento tabbrowser
Se hicieron varios cambios en el elemento {{ XULElem("tabbrowser") }} que afectan directamente a las extensiones que interactúan con pestañas. Además de ser compatibles con las pestañas de aplicaciones, estos cambios también transforman la barra de pestañas en una barra de herramientas estándar, lo cual permite al usuario arrastrar botones de la barra de herramientas hasta la misma.
- Los eventos TabClose, TabSelect y TabOpen ya no se propagarán al elemento {{ XULElem("tabbrowser") }} (
gBrowser
). Es recomendable que los detectores de eventos para dichos eventos se agreguen agBrowser.tabContainer
en lugar degBrowser
directamente. - El menú contextual de pestañas ha dejado de ser un niño anónimo de {{ XULElem("tabbrowser") }}. Por lo tanto, pueden ser superpuestos directamente con superposiciones XUL . También se puede acceder de forma más directa en JavaScript a través de
gBrowser.tabContextMenu
. Puedes ver esta entrada de blog para tener más detalles. - Se ha agregado la nueva propiedad {{ XULProp ("visibleTabs") }}, que te permite obtener una matriz de las pestañas actualmente visibles y, por tanto, determinar qué pestañas son visibles en el conjunto de pestañas actual. Esto es utilizado por Firefox Panorama, por ejemplo.
- Añadido el nuevo método {{ XULMeth2 ("showOnlyTheseTabs") }}, utilizado por Firefox Panorama.
- Añadido el nuevo método {{ XULMeth2 ("getIcon") }}, que te permite obtener el favicon de una pestaña sin tener que tirar del elemento {{ XULElem ("browser") }}.
- Añadida la nueva propiedad {{ XULProp ("tabbrowser.tabs") }}, que te permite fácilmente obtener una lista de las pestañas en un elemento {{ XULElem ("tabbrowser") }}.
- Los nuevos métodos {{ XULMeth2 ("pinTab") }} y {{ XULMeth2 ("unpinTab") }} permiten fijar y eliminar pestañas fijas (es decir, intercambiarlas entre las pestañas de aplicaciones y las pestañas normales).
- Añadidos el método {{ XULMeth2("getTabModalPromptBox") }} y el atributo {{ XULAttr("tabmodalPromptShowing") }} para admitir alertas modales sobre pestañas.
Cambios en elementos emergentes
- El elemento {{ xulelem ("popup") }} ha dejado de ser compatible, así que se recomienda usar {{ xulelem ("menupopup") }} en su lugar. (Si continúas utilizando
popup
, te encontrarás con problemas técnicos, ya que el elemento no tiene ningún significado especial. Por ejemplo, {{ xulelem ("menuseparator") }} puede aparecer transparente cuando se utiliza en un {{ xulelem("popup") }}.) - El elemento XUL {{ XULElem("menupopup") }}tiene ahora una propiedad {{ XULProp("triggerNode") }}, que indica el nodo en el que ocurrió el evento que hizo que el elemento emergente se abriera. Esto también requiere agregar un parámetro de evento desencadenante al método {{ XULMeth2 ("openPopup") }}. Se ha agregado, además, la propiedad {{ XULProp ("anchorNode") }}, que devuelve el anclaje que se especificó cuando se creó el elemento emergente.
- El elemento {{ XULElem ("panel") }} ofrece ahora los atributos {{ XULAttr ("fade") }} y {{ XULAttr ("flip") }}, que se utilizan para configurar el comportamiento de los nuevos paneles de notificación en estilo "flecha".
Compatibilidad de XUL remotos eliminada
XUL remotos ya no es compatible, lo que afecta a los documentos XUL que se sirven a través de HTTP. Del mismo modo, ya no se pueden cargar documentos XUL con file://
URLs a menos que se cree la preferencia dom.allow_XUL_XBL_for_file
y se establezca en true
. Hay, sin embargo, una característica de la lista blanca que se puede utilizar para permitir a dominios específicos para cargar XUL remotos. La extensión Administrador de XUL remotos te permite administrar esta lista blanca.
Distintos cambios en XUL
- El atributo {{ xulattr("readonly") }} ahora funciona correctamente para los campos.
- El elemento {{ xulelem("resizer") }} ahora te permite utilizar el atributo {{ xulattr("element") }} especificar un elemento para cambiar el tamaño, en lugar de cambiar el tamaño de la ventana.
- El elemento {{ xulelem ("resizer") }} tiene ahora un atributo {{ xulattr("resizer.type", "type") }} que te permite especificar que el cambio de tamaño es para una ventana en vez de un elemento, para evitar así que el cambio de tamaño de la ventana se dibuje dos veces.
- El atributo "activo" ya no se establece en ventanas XUL activas. En su lugar, puede utilizar la nueva pseudoclase {{ cssxref(":-moz-window-inactive") }} con el fin de asignar distintos estilos a las ventanas de fondo.
- El atributo {{ xulattr("emptytext") }} se considera obsoleto, así que se debería usar {{ xulattr("placeholder") }} en su lugar.
- El elemento {{ xulelem("window") }} ahora ofrece un atributo {{ xulattr("accelerated") }} que cuando se establece en true, permite al administrador de capas de hardware acelerar la ventana.
- El elemento {{ xulelem("stack") }} ahora es compatible con los atributos {{ xulattr("bottom") }} y {{ xulattr("right") }}.
- Los eventos son ahora lanzados durante la personalización {{ xulelem("toolbox") }}, lo que te permite detectar cambios en las barras de herramientas .
- El atributo {{ xulattr("alternatingbackground") }} para los elementos {{ xulelem("tree") }} ya no se admite. Se puede usar la seudoclase {{ cssxref(":-moz-tree-row") }} en su lugar.
- El botón de desbordamiento de la Barra de marcadores con chevronPopup anonid ya no es anónimo, sino que tiene un id. del cliente de "PlacesChevron".
- El elemento {{ xulelem("tabs") }} tiene ahora una propiedad {{ xulprop ("tabbox") }}, en sustitución de la antigua
_tabbox
, que ha quedado obsoleta (y nunca fue documentada). - Los elementos XUL {{ xulelem("window") }} ahora tienen el atributo {{ xulattr("drawintitlebar") }}. Si está establecido en
true
, el área de contenido de la ventana incluye la barra de título, lo que permite dibujar en ella. - Nuevos eventos
TabPinned
yTabUnpinned
están disponibles, lo que te permite detectar cuándo se fijan o se eliminan las pestñas fijas . - El nuevo evento
TabAttrModified
es enviado cuando cambian los atributos de una pestaña {{ xulattr("label") }}, {{ xulattr("crop") }}, {{ xulattr("busy") }}, {{ xulattr("image") }}, o {{ xulattr("selected") }}. - Los elementos {{ xulelem("tab") }} ahora tienen un atributo {{ xulattr("pinned") }}, lo que te permite determinar si una pestaña se encuentra fija actualmente.
- La clase
setDirectionIndicator
en los elementos {{ xulelem("tree") }} no ha hecho nada desde hace algún tiempo, por lo que ha dejado de usarse. - El elemento {{ XULElem("window") }} tiene ahora un atributo {{ XULAttr("chromemargin") }} que te permite establecer el margen entre chrome y contenido en cada lado de una ventana. Se puede utilizar para dibujar en la barra de título, por ejemplo.
- El elemento {{ XULElem("window") }} tiene ahora un atributo {{ XULAttr("disablechrome") }} que se utiliza para ocultar la mayor parte del cromo en una ventana cuando éste se está utilizando para mostrar la interfaz de usuario en el navegador, como
about:addons
. - El elemento {{ XULElem("window") }} tiene ahora un atributo {{ XULAttr("disablefastfind") }}, que te permite desactivar la barra de búsqueda en una ventana cuando el contenido no lo admite. Se utiliza, por ejemplo, por el panel de complementos/agregados.
- Las barras de herramientas ahora pueden ser externas a la caja de herramientas, sin dejar de ser considerada un miembro del {{ XULElem("toolbox") }}, estableciendo la propiedad {{ XULProp("toolboxid") }} del {{ XULElem("toolbox") }}. Además, el elemento {{ XULElem("toolbox") }} tiene ahora una propiedad {{ XULProp("externalToolbars") }}, que enumera todas las barras de herramientas que se consideran miembros de la caja de herramientas.
- Se ha añadido la compatibilidad para el registro de plantillas de XUL para fines de depuración.
Cambios en la IU que afectan a los desarrolladores
- La barra de complementos/agregados
- La barra de estado ha sido eliminada en favor de la barra de complementos/agregados. Tienes que actualizar tu extensión para usarla si has agregado anteriormente la IU a la barra de estado.
Almacenamiento
Distintos cambios en la API de almacenamiento
- La interfaz de {{ interface("mozIStorageBindingParamsArray") }} ahora tiene un atributo de longitud que indica el número de objetos {{ interface("mozIStorageBindingParams") }} de la matriz.
- {{ ifmethod ("mozIStorageStatement", "bindParameters") }} ahora devuelven un error si está vacía la {{ interface("mozIStorageBindingParamsArray") }} especificada.
- Se ha añadido el método {{ ifmethod ("mozIStorageConnection", "clon") }}, que permite clonar una conexión de base de datos existente.
- Se ha añadido el método {{ ifmethod ("mozIStorageConnection", "asyncClose") }}, que te permite cerrar una conexión de base de datos de forma asincrónica. Especificas que se notifique una devolución de llamada cuando la operación de cierre se ha completado.
- Se ha añadido el método {{ ifmethod ("mozIStorageConnection", "setGrowthIncrement") }} , que permite especificar cuánto se amplía un archivo de base de datos a la vez, con el fin de ayudar a que SQLite reduzca la fragmentación.
- Ahora se informa sobre el error
SQLITE_CONSTRAINT
comoNS_ERROR_STORAGE_CONSTRAINT
en lugar de comoNS_ERROR_FAILURE
.
XPCOM
Además de los cambios específicos a los que se hace referencia a continuación, es importante tener en cuenta que ya no hay ninguna interfaz inmovilizada. Ninguna de las interfaces está inmovilizada, sin importar lo que la documentación puede decir. Vamos a ir actualizando la documentación con el tiempo.
- Cambios XPCOM en Gecko 2.0
- Detalles sobre los cambios en XPCOM que afectan a la compatibilidad en Firefox 4.
- Components.utils.getGlobalForObject ()
- Este nuevo método devuelve el objeto global con el que se asocia un objeto, lo que sustituye a un caso de uso común del ahora eliminado
__parent__
.
Lugares
- Los resultados de las consultas sobre lugares ahora pueden ser vistos por varios observadores y las consultas se pueden ejecutar de forma asincrónica. Esto significa que ha habido algunos cambios en las interfaces {{ interface("nsINavHistoryResult") }}, {{ interface("nsINavHistoryQueryOptions") }} y {{ interface("nsINavHistoryContainerResultNode") }} De manera más significativa, la interfaz de {{ interface("nsINavHistoryResultViewer") }} ha cambiado el nombre a {{ interface("nsINavHistoryResultObserver") }}.
- Algunas notificaciones nuevas se han agregado para permitir que el navegador realice de manera más fiable el seguimiento del proceso de cierre del servicio Lugares. De estos, la mayoría son para uso interno, pero la notificación
places-connection-closed
está disponible para conocer cuándo el servicio de Lugares ha completado su proceso de cierre. - El parámetro de salida del tamaño de la matriz ahora es opcional en varios métodos de Lugares.
- La compatibilidad para
<menupopup type="places">
se ha eliminado. En su lugar, es necesario crear y rellenar de forma manual un menú con información de Lugares. Véase Visualización de información de Lugares a través de las vistas: vista de los menús para obtener más detalles.
Cambios en la interfaz
- Las interfaces {{ interface("nsIDocShell") }} and {{ interface("nsIWebBrowser") }} tienen ahora un nuevo atributo
isActive
, que se utiliza para permitir la optimización de las rutas de código para los documentos que actualmente no están visibles. - El método {{ interface("nsIMemory") }} {{ ifmethod("nsIMemory","isLowMemory") }} ha quedado obsoleto. Se recomienda usar en su lugar las notificaciones de "presión de memoria" para observar las situaciones de baja memoria.
- La API para controlar redirecciones en los canales HTTP ha cambiado para dejar que se procesen de forma asincrónica. Cualquier código que implemente el control de redirecciones a través de {{ ifmethod("nsIChannelEventSink", "onChannelRedirect") }} debe actualizarse y utilizar {{ ifmethod ("nsIChannelEventSink", "asyncOnChannelRedirect") }} en su lugar. Éste acepta un controlador de devolución de llamada que se debe llamar cuando una redirección se completa con éxito.
- Se ha añadido el método {{ ifmethod("nsINavHistoryResultObserver", "batching") }}, proporcionando una forma de agrupar en lotes las operaciones de Lugares, reduciendo el número de notificaciones de actualización emitidas, lo cual puede mejorar el rendimiento cuando los observadores están realizando tareas relacionadas (como recargar vistas).
- La interfaz {{ interface("nsIPref") }}, que hace tiempo quedó obsoleta, ha sido finalmente eliminada. Si aún no has cambiado a {{ interface("nsIPrefService") }}, ahora es el momento.
- Las interfaces {{ interface("nsISessionStore") }} y {{ interface("nsISessionStartup") }} han experimentado cambios para admitir el restablecimiento de sesión a petición. Consulta el método {{ ifmethod("nsISessionStore", "restoreLastSession") }}.
- Los métodos {{ interface("nsIPrincipal") }} {{ ifmethod("nsIPrincipal", "subsumes") }} y {{ ifmethod("nsIPrincipal", "checkMayLoad") }}, así como su
origin
,csp
, y los atributosURI
, que anteriormente sólo estaban disponibles a partir de código nativo, ya lo están desde script. - La interfaz {{ interface("nsIPrompt") }} es ahora compatible con las alertas modales sobre pestañas. Puedes ver Uso de los indicadores modales sobre pestañas si quieres tener más detalles.
Administración de la memoria
- Asignación de memoria infalible
- Mozilla proporciona ahora asignadores de memoria infalibles que están garantizados para no devolver null. Es recomendable leer este artículo para saber cómo funcionan y cómo solicitar explícitamente la asignación de memoria falible frente a infalible.
Otros cambios
- La mayor parte de los recursos contenidos dentro de Firefox se han combinado en un único archivo JAR,
omni.jar
, lo que mejora el rendimiento de inicio mediante la reducción de E / S. Para obtener más información, lee Acerca de omni.jar. - La preferencia
accessibility.disablecache
ya no es compatible. Se expuso sólo para fines de depuración y ya no se utiliza. - Los complementos/agregados cuyo GUID (Identificador Exclusivo Global) cambia de una versión a otra ya se pueden actualizar correctamente.
- Como efecto secundario de la eliminación de directorios específicos de la plataforma en los paquetes de complementos/agregados, ya no se pueden ofrecer diferentes preferencias por defecto para cada plataforma.
- De manera predeterminada, las extensiones ya no se desempaquetan al ser instaladas, sino que se ejecutan directamente desde el archivo XPI. Pueden usar la propiedad unpack del install manifest para elegir el comportamiento anterior. Asimismo, las extensiones que usan componentes binarios, DLLs cargadas con ctypes, plugins de búsqueda, diccionarios e iconos de ventana deben especificar que tienen que ser desempaquetadas.
Otros cambios
- Eliminada la compatibilidad para Gopher
- El protocolo Gopher ya no se admite de forma nativa. Con la extensión OverbiteFF podrás continuar la compatibilidad.
- Control de eventos de proceso de contenido
- A fin de hacer compatibles los plugins fuera de proceso y otras funciones de procesos múltiples, se ha introducido una nueva API para admitir el envío de mensajes a través de los procesos.
- Extensiones de arranque
- Ahora puedes crear extensiones que pueden instalarse, desinstalarse y actualizarse (o instalar la versión anterior) sin necesidad de reiniciar el explorador.
- Eliminado el plugin predeterminado
- Se ha eliminado el plugin por defecto. Asimismo, se ha eliminado de manera predeterminada la carpeta de plugins de aplicaciones. La carpeta de plugins de aplicaciones también ha sido eliminada por defecto, sin embargo la compatibilidad para la instalación de plugins a través de esta carpeta continúa. Mira {{ bug("533891") }}.
- El Administrador de complementos/agregados sustituye al Administrador de extensiones
- {{ interface("nsIExtensionManager") }} ha sido sustituido por AddonManager .
- Ya no se utilizan los HWNDs secundarios
- Firefox ya no crea HWNDs secundarios para su uso interno en Windows. Si has escrito una extensión que utiliza código nativo para manipular estos HWNDs, no te funcionará en Firefox 4. Tendrás que dejar de usar HWNDs o ajustar el código que se basa en HWNDs a un plugin NPAPI. Eso es mucho trabajo, por lo que si puedes evitar el uso de HWNDs directamente, hazlo.
- Cambios de gestos
- Los tres gestos de pasar los dedos por los trackpads se han sustituido, de manera predeterminada, por abrir y cerrar la vista Firefox Panorama (TabCandy). Para volver a cambiar a los comandos anteriores de desplazamiento hacia arriba y desplazamiento hacia abajo, abre about: config y ajusta
browser.gesture.swipe.down
acmd_scrollBottom
ybrowser.gesture.swipe.up
acmd_scrollTop
.
Consulta también
- Firefox 3.6 para desarrolladores
- Firefox 3.5 para desarrolladores
- Firefox 3 para desarrolladores
- Firefox 2 para desarrolladores
- Firefox 1.5 para desarrolladores
{{ languages( { "en":"en/Firefox_4_for_developers", "de": "de/Firefox_4_für_Entwickler", "ja": "ja/Firefox_4_for_developers", "zh-tw": "zh_tw/Firefox_4_for_developers"} ) }}