--- title: Firefox 4 para desenvolvedores slug: Mozilla/Firefox/Releases/4 tags: - CSS - Firefox - Firefox 4 - Gecko - Gecko 2.0 - HTML - JavaScript - XPCOM - XUL translation_of: Mozilla/Firefox/Releases/4 original_slug: Firefox_4_para_desenvolvedores ---

Esboço
Esta página está incompleta.

O Firefox 4, o qual entrou em beta no mês de junho de 2010, melhora a performance, adiciona maior suporte ao HTML5 e outras tecnologias web envolvidas e, além disso, melhora a segurança. Este artigo proporciona informações iniciais sobre o lançamento que virá e quais funcionalidades estão disponíveis, tanto para desenvolvedores web, quanto para desenvolvedores de complementos e desenvolvedores da plataforma Gecko.

Muitas destas funcionalidades já podem ser testadas na versão Firefox 4 beta, ou, se estiver se sentindo aventureiro, em nightly trunk builds.

Observação: Este artigo é um trabalho em progresso, assim como todos os artigos linkados nesta página. Muitos nomes de artigos são espaços reservadis e alguns tópicos provavelmente serão quebrados em múltiplos artigos. Em geral, seja cuidadoso ao vincular páginas a estes artigos, por enquantoIn general, be cautious about linking to these articles for the time beingJavas.

Funcionalidades para desenvolvedores web

O Gecko agora usa o analisador HTML5 (parser HTML5), que corrige bugs, melhora a interoperabilidade e melhora a performance. Ele também permite conteúdos de SVG e MathML embutidos diretamente na marcação HTML.

HTML

Conheça o parser HTML5
Uma olhada no que o analisador HTML5 (parser HTML5) significa para você e como incorporar SVG e MathML ao seu conteúdo.
Forms no HTML5
Uma olhada às melhorias aos web forms no HTML5. Entre estas mudanças foram adicionados tipos de entrada no elemento <input> e validação de dados, dentre outros.
Seções HTML5
O Gecko agora suporta os novos elementos HTML5 relacionados a seções em um um documento: <article>, <section>, <nav>, <aside>, <hgroup>, <header> e <footer>.
Outros elementos HTML5
O Gecko agora suporta os seguintes elementos do HTML5: <mark>, <figure><figcaption>.
WebSockets
Um guia para usar a nova API de WebSockets para comunicação em tempo real entre uma aplicação web e um servidor.

Modificações HTML diversas

CSS

Transições CSS (CSS transitions)
O suporte à novas transições CSS está disponível no Firefox 4.
Valores calculados em CSS
Foi adicionado o suporte para -moz-calc. Isto permite especificar valores <length> como expressões matemáticas.
Seletor de agrupamento
Suporte a :-moz-any para agrupar seletores e fatorizar combinadores.
Suporte a sub-retângulo em imagens de fundo
A função -moz-image-rect torna possível o uso de subretângulos de imagens como uma background-image (imagem de plano de fundo).
Propriedades de toque CSS
O suporte para propriedades de toque foi adicionado. Detalhes e nomes de artigos reais, virão depois.
Using arbitrary elements as CSS backgrounds
Você pode usar a função -moz-element do CSS e a função document.mozSetImageElement() do DOM para usar elementos HTML arbitrários como planos de fundos.
Privacidade e o seletor :visited
Mudanças foram feitas ao tipo de informação que pode ser obtida sobre o estilo dos links visitados usando seletores CSS. Isto pode afetas algumas aplicações web.

Novas propriedades do CSS

Propriedade Descrição
-moz-font-feature-settings Permite características avançadas de customização em fontes OpenType.
-moz-tab-size Especifica a largura em caracteres de espaço, de um caracter tab (U+0009) na renderização de texto.
resize Permite o controle das dimensões nas quais um elemento pode ser redimensionado.

Novas pseudo-classes do CSS

Pseudo-classe Descrição
:-moz-handler-crashed Usado para estilizar elementos cujos plugins tenham quebrado.
:-moz-placeholder Aplicado ao espaço reservado de texto nos campos de formulário.
:-moz-submit-invalid Aplicado ao botão de submeter em formulários quando um ou mais dos campos do formulário não é validado.
:-moz-window-inactive Aplicado a elementos em janelas inativas.
:invalid Aplicado automaticamente para os campos <input> quando suas constantes são inválidas.
:optional Aplicado automaticamente para os campos <input> que não especifiquem o atributo required.
:required Aplicado automaticamente para os campos <input> que especifiquem o atributo required.
:valid Aplicado automaticamente para os campos <input> quando suas constantes são validadas com sucesso.

Novos pseudo-seletores do CSS

Pseudo-seletor Descrição
:-moz-focusring Permite especificar a aparência de um elemento quando o Gecko acredita que ele deve ter uma indicação de foco renderizada.

Novas funções do CSS

Função Descrição
:-moz-any Permite agrupar seletores e fatorizar combinações.
-moz-calc Permite a especificação de valores <length> como expressões matemáticas.
-moz-element Permite o uso de um elemento arbitrário como imagem de fundo para background-image e background.
-moz-image-rect Permite o uso de um sub-retângulo de uma imagem como um background-image ou background.

Propriedades do CSS renomeadas

Old Name New Name Notes
-moz-background-size background-size O nome -moz-background-size não é mais suportado.
-moz-border-radius border-radius O antigo nome é suportado por tempo limitado para permitir a atualização de seus sites. Mudanças de renderização também foram feitas para conseguir a compatibilidade com a última versão.
-moz-box-shadow box-shadow

Modificações CSS diversas

Modificações CSS diversas

Gráficos e vídeo

WebGL
O padrão de desenvolvimento WebGL é agora suportado pelo Firefox.
Otimização da performance gráfica
Dicas e truques para conseguir a melhor performance gráfica e de vídeo no Firefox 4.
Suporte a vídeos WebM
O novo formato aberto de vídeo WebM é suportado pelo Gecko 2.0; o suporte está incluído em nightlies desde 9 de junho.
Animação SVG com SMIL
O suporte a animações SMIL do SVG está agora disponível.
Usando SVG como imagens e como fundos de tela CSS
Você pode agora usar o SVG com o elemento <img>, assim como com a propriedade background-image do CSS.
Suporte ao atributo de mídia buffered
O atributo buffered nos elementos <video> e <audio> é agora suportado, permitindo a determinação de quais faixas de um arquivo de mídia foram carregadas. A interface TimeRanges do DOM foi implementada para suportar isto.
Atributo de mídia preload
O atributo preload da especificação do HTML5 foi implementado, substituindo o atributo anteriormente implementado (e não mais suportado) autobuffer. Isto afeta os elementos <video> e <audio>, assim como a interface nsIDOMHTMLMediaElement.
Melhoramentos no posicionamento de texto SVG
Agora é possível especificar listas para os valores das propriedades x, y, dx e dy nos elementos <text> e <tspan> do SVG. Isto permite controlar o posicionamento de cada caractere individualmente em uma string.

DOM

Arrays com tipos JavaScript
Foi adicionado suporte para os arrays com tipos JavaScript; eles permitem a manipulação de buffers contendo dados em raw usando tipos de dados nativos. Muitas API fazem uso disto, incluindo File API, WebGL, e WebSockets.
Obtenção de limites de retângulos para ranges
O objeto Range agora possui os métodos range.getClientRects() e range.getBoundingClientRect().
Captura de eventos de mouse em elementos arbitrários
O suporte para as APIs setCapture() e releaseCapture() originadas do Internet Explorer foram adicionadas. Veja bug 503943.
Manipulação do histórico do navegador
O objeto de histórico de documento existente, disponível através do objeto window.history agora suporta os novos métodos pushState() e replaceState() do HTML5.
Animações usando o MozBeforePaint
Um novo evento foi adicionado, o qual combinado com o método window.mozRequestAnimationFrame() e a propriedade window.mozAnimationStartTime, proporciona uma maneira de criar animações sincronizadas uma com a outra.
Eventos de toque e multi-toque
Foi adicionado suporte ao evetos de toque e multi-toque.

A interface DOM dos elementos HTML mudou

Muitos elementos do HTML tiveram suas interfaces DOM mudadas para aquelas requisitadas pela especificação do HTML5, como mostrado abaixo.

Interface no Firefox 3.6 Interface no Firefox 4 Elemento HTML
HTMLSpanElement HTMLElement <abbr>, <acronym>, <address>, <b>, <bdo>, <big>, <blink>, <center>, <cite>, <code>, <dd>, <dfn>, <dt>, <em>, <i>, <kbd>, <listing>, <nobr>, <plaintext>, <s>, <samp>, <small>, <strike>, <strong>, <sub>, <sup>, , <tt>, <u>, <var>, <xmp>
HTMLDivElement HTMLElement <noembed>, <noframes>, <noscript>
HTMLWBRElement HTMLElement <wbr>

Modificações DOM diversas

Segurança

Política de Segurança de Conteúdo (CSP)
A Política de Segurança de Conteúdo (Content Security Policy - CSP) é uma proposta da Mozilla desenvolvida para ajudar web designers e administradores de servidores a especificar como o conteúdo em seus sites interage. A meta é ajudar a detectar e abrandar ataques, incluindo cross-site scripting e ataques de injeção de dados.
Segurança de Transporte do HTTP Estrito (HTTP Strict Transport Security)
A Segurança de Transporte de HTTP Estrito é uma característica que permite a um website dizer ao navegador que ele deve ser comunicado somente usando HTTPS, ao invés de HTTP.
O cabeçalho de resposta (The X-FRAME-OPTIONS response header)
O cabeçalho de resposta HTTP, X-FRAME-OPTIONS, introduzido no Internet Explorer 8 é agora suportado pelo Firefox. Isto permite a sites indicar quando suas páginas devem ou não ser usadas em quadros (frames), e, em caso afirmativo, se deve ou não restringir isto à mesma origem.
Mudanças na string de Agente de Usuário (User Agent string) changes
Como um meio para reduzir a quantidade de dados e entropia descartada em requisições HTTP (veja bug 572650) a força da criptografia e tokens de linguagem foram removidos pela string do agente de usuário.

JavaScript

Para uma visão geral das mudanças implementadas em JavaScript 1.8.5, veja Novidades no JavaScript 1.8.5. O JavaScript no Firefox 4 terá aderência adicional ao padrão ECMAScript 5.

Ferramentas para desenvolvedores

Usando o Web Console
A ferramenta Web Console é um depurador útil para ajudar desenvolvedores web, assim como, desenvolvedores de extensões.
Gecko 2.0 note
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

O Console de Erros está inicialmente desabilitado por padrão no Firefox 4. Você pode reabilitá-lo mudando a preferência devtools.errorconsole.enabled para true e reiniciando seu navegador.

Mudanças para desenvolvedores Mozilla e de complementos

Para dicas úteis sobre a atualização de extensões existentes para o Firefox 4, veja Atualizando extensões para o Firefox 4. Existem muitas mudanças de chaves que quebram a compatibilidade com complementos existentes, então certifique-se de ler este artigo.

Se você é um desenvolvedor de temas, você deve ler Mudanças nos temas do Firefox 4 (en) para entender algumas mudanças críticas, às quais é necessário estar ciente.

Módulos de codificação JavaScript

Services.jsm
O módulo de código Services.jsm fornece "getters" que tornam mais fácil a obtenção de referências a serviços comumente usados, como o serviço de preferências ou o mediador de janelas, entre outros.
JS-ctypes API
A API JS-ctypes torna possível chamar funções de fora da biblioteca compatível com C, sem precisar usar o XPCOM.
Gerenciador de Complementos
O Gerenciador de Complementos fornece informações sobre complementos instalados, suporte à gerência dos mesmos e fornece maneiras para instalar e remover complementos.
PopupNotifications.jsm
O novo módulo de notificações popup torna fácil apresentar notificações atrativas, não modais para o usuário. Você pode ver como usar esta API em Usando notificações de popup (en).
Carregando módulos de código a partir de URL chrome: (en)
Você pode agora carregar módulos JavaScript usando URL chrome:, mesmo dentro de arquivos JAR.
DownloadLastDir.jsm
O módulo de código DownloadLastDir.jsm fornece a variável global, a qual contém uma string que pode ser usada para aprender o caminho do diretório no qual ocorreu o último download. Este módulo lida com questões relacionadas a privacidade de navegação do usuário.
Medindo a performance usando o módulo de código PerfMeasurement.jsm (en)
O módulo de código PerfMeasurement.jsm proporciona uma API para mensurar a performance dos dados a nível de CPU no código JavaScript.

Mudanças diversas aos módulos de código

Mudanças no DOM

ChromeWorker
Um novo tipo de worker para código privilegiado; ele permite o uso de coisas como js-ctypes de workers em extensões e código de aplicações.
Eventos de toque
Suporte para eventos de toque (não padrões) foi adicionado; isto permite detectar o movimento de múltiplos dedos movendo-se em uma tela ao mesmo tempo.

XUL

Mudanças no elemento tabbrowser

Várias mudanças foram feitas ao elemento <xul:tabbrowser> que causam impactos nas extensões que interagem com as abas. Adicionalmente para suportar abas aplicativos, estas mudanças também mudam a barra de abas para uma barra de ferramentas padrão, a qual permite que o usário arraste botões da barra de ferramentas para ela.

Mudanças para popups

Suporte remoto ao XUL removido

XUL remoto não é mais suportado; isto afeta os documentos XUL servidos através de HTTP; além disso, não é mais possível carregar documentos XUL usando URLs file:// a menos que você configure a preferência dom.allowXULXBL_for_file para true. Há, entretanto, um recurso de whitelist que pode ser usado para permitir domínios específicos a carregarem o XUL remotamente. O Remote XUL Manager extension permite o gerenciamento desta whitelist.

Mudanças diversas no XUL

Mudanças na IU que afetam os desenvolvedores

A barra de complementos
O estado da barra foi removido em favor de uma nova barra de complementos. Será necessário atualizar sua extensão para usar isto se você já adicionou a IU à barra de estado no passado.

Armazenamento

Mudanças diversas na API storage (de armazenamento)

XPCOM

Em adição à mudanças específicas referenciadas abaixo, é importante notar que não existem mais interfaces estáticas. Todas as interfaces são dinâmicas, independente do que a documentação pode dizer. Atualizaremos a documentação com o tempo.

Mudanças no XPCOM no Gecko 2.0
Detalhes sobre as mudanças para o XPCOM que causam algum impacto na compatibilidade do Firefox 4.
Components.utils.getGlobalForObject()
Este novo método retorna o objeto global com o qual um objeto é associado; ele substitui um caso de uso comum do agora removido __parent__.

Places

Mudanças na interface

Gerenciamento de memória

Alocação de memória infalível
A Mozilla, agora proporciona alocadores de memória infalíveis que são garantem que não haverá um retorno null. Você deve ler este artigo para aprender como eles trabalham e como solicitar explicitamente a alocação de memória falível versus invalível.

Outras mudanças

Outras mudanças

Somente o arquivo chrome.manifest raiz é carregado
Agora somente o arquivo chrome.manifest raiz é carregado; se você necessitar de um arquivo de manifesto secundário para ser carregado, você pode usar o comando manifest no seu  chrome.manifest raiz para carregá-lo.
Removido o suporte ao Gopher
O protocolo Gopher não é mais suportado nativamente. O suporte continuado está disponível pela extensão OverbiteFF.
Processamento de eventos de manipulação de conteúdo
Com o objetivo de suportar plugins fora do processo e outra características de multi processamento, uma nova API foi introduzida para suportar o envio de mensagens através de processos.
Extensões Bootstrapped (en)
Agora é possível criar extensões que podem ser instaladas, desinstaladas e atualizadas (ou desatualizadas) sem a necessidade de reiniciar o navegador.
Plugin padrão removido
O plugin padrão foi removido. A pasta de aplicações plugin também foi removida por padrão, entretanto o suporte para a instalação de plugins através desta pasta ainda existe. Veja bug 533891.
Gerenciador de Extensões substituido pelo Gerenciador de Complementos
O nsIExtensionManager  foi substituido pelo Gerenciador de Complementos (en).
Os filhos HWND não são mais usados
O Firefox não cria mais filhos HWND para seu uso interno no Windows. Se você escreveu uma extensão que usa código nativo para manipular estas HWND, a sua extensão não funcionará no Firefox 4. Você precisará ou parar de usar HWND ou empacotar seu código dependente de HWND em um plugin NPAPI. Isto dará um grande trabalho, então se for possível não fazer uso do HWND diretamente, é recomendado evitá-lo.
Mudanças nos gestos
A rolagem com três dedos para cima ou para baixo em trackpads foi alterada para, por padrão, abrir e fechar a visão do Firefox Panorama (criado como TabCandy). Para voltar aos comando anteriores de rolagem para cima e para baixo, abra about:config e configure browser.gesture.swipe.down para cmd_scrollBottom e browser.gesture.swipe.up para cmd_scrollTop.

Veja também