Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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

  • Os elementos <textarea> são agora redimensionáveis por padrão; você pode usar a propriedade resize do CSS para desabilitar isto.
  • canvas.getContext e canvas.toDataURL não adicionam mais exceções quando chamados com argumentos não reconhecidos.
  • O elemento <canvas> agora suporta o método específico da Mozilla mozGetAsFile(), o qual permite a obtenção de um arquivo baseado na memória contendo uma imagem dos conteúdos do canvas. Veja HTMLCanvasElement para detalhes.
  • canvas2dcontext.globalCompositeOperation, canvas2dcontext.lineCap e canvas2dcontext.lineJoin não adicionam mais exceções quando configurados para valores desconhecidos.
  • canvas2dcontext.globalCompositeOperation não adiciona mais exceções quando configurado para um valor desconhecido e não suporta mais o valor não padrão darker.
  • Foi removido o suporte para o elemento obsoleto <spacer>, o qual não existe em nenhum outro navegador.
  • O elemento <isindex>, quandro criado pela chamada de document.createElement(), é agora criado como um elemento simples sem propriedades ou métodos.
  • O Gecko agora suporte a chamada click() em elementos <input> para abrir o seletor de arquivos. Veja o exemplo no artigo Using files from web applications.
  • Os elementos <script> internos aos elementos <iframe>, <noembed> e <noframes> agora são executados, ao contrário de versões anteriores do Firefox. Isto está de acordo com a especificação e corresponde com o comportamento de outros navegadores.

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

  • A propriedade text-shadow agora permite raio de desfoque de até 300px, por razões de sanidade e performance.
  • A propriedade overflow não se aplica mais para elementos do grupo "table" (<thead>, <tbody> e <tfoot>).
  • A propriedade -moz-appearance agora suporta o valor -moz-win-borderless-glass, que aplica uma aparência Aero Glass a um elemento.
  • A funcionalidade de mídia -moz-device-pixel-ratio foi adicionada, permitindo o uso de pixels do dispositivo pela taxa de pixels CSS a ser usada em Consultas de Mídia.
  • A maneira com que o Gecko lida com o CSS units foi revisada para melhorar a compatibilidade com outros navegadores e para traduzir comprimentos absolutos mais acuradamente na contagem de pixels da tela baseado na DPI do dispositivo.

Modificações CSS diversas

  • -moz-border-radius foi renomeado para border-radius.
    • -moz-border-radius é suportado como um apelido para um período de transição
    • A manipulação de valores percentuais foi alterada para ficar compatível com a última especificação
    • Cantos arredondados agora arredondam também conteúdo e imagens (a menos que seja especificado overflow:visible)
  • A propriedade -moz-box-shadow foi renomeada para box-shadow.
  • A propriedade text-shadow agora permite raio de desfoque de até 300px, por razões de sanidade e performance.
  • A pseudoclasse :-moz-window-inactive foi implementada.
  • A propriedade -moz-tab-size permite a especificação da largura de um caracter de tab (U+0009) em caracteres de espaço, quando na renderização de texto.
  • A propriedade resize do CSS3 foi implementada.
  • A propriedade -moz-background-size foi renomeada para seu nome final background-size; -moz-background-size não é mais suportada.
  • A propriedade overflow não se aplica mais para elementos do grupo "table" (<thead>, <tbody> e <tfoot>).
  • O pseudoseletor :-moz-focusring permite a especificação da aparência de um elemento quando o Gecko acredita que o elemento deve ter uma indicação de foco renderizada.
  • A função -moz-element do CSS permite o uso de um elemento arbitrário como imagem de fundo para background-image e background.
  • A propriedade -moz-appearance agora suporta o valor -moz-win-borderless-glass, que aplica uma aparência Aero Glass a um elemento.
  • As pseudoclasses :valid e :invalid são agora automaticamente aplicadas para campos de validação <input>.
  • A pseudoclasse :-moz-submit-invalid é aplicada ao botão de submeter em campos de formulários quando um ou mais campos não são validados.
  • A pseudoclasse :required é agora automaticamente aplicada aos campos <input> que especificam o atributo requerido; a pseudoclasse :optional é aplicada a todos os outros campos.
  • A pseudoclasse :-moz-placeholder foi adicionada para permitir a estilização de campos de texto em formulários.
  • A pseudoclasse :-moz-handler-crashed foi adicionada; ela estiliza elementos cujos plugins tenham quebrado.
  • A funcionalidade de mídia -moz-device-pixel-ratio foi adicionada, permitindo o uso de pixels do dispositivo pela taxa de pixels CSS a ser usada em Consultas de Mídia.
  • A nova propriedade -moz-font-feature-settings permite que você customize características avançadas das fontes, de fontes OpenType.
  • A maneira com que o Gecko lida com o CSS units foi revisada para melhorar a compatibilidade com outros navegadores e para traduzir comprimentos absolutos mais acuradamente na contagem de pixels da tela baseado na DPI do dispositivo.

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

  • O "envoltório" de um elemento <textarea> agora pode ser controlado a partir do DOM, através do atributo wrap do DOM. bug 41464
  • Elementos <script> criados usando document.createElement  e inseridos em um documento agora comportam-se de acordo com a especificação do HTML5 por padrão. Scripts com o atributo src são executados assim que possível (sem manter o ordenamento) enquanto scripts sem o atributo src são executados sincronamente. Para fazer com que scripts inseridos com o atributo src sejam executados na ordem de inserção, configure-os com .async=false.
  • Os objetos file do DOM agora oferecem a propriedade url.
  • Suporte para FormData para XMLHttpRequest.
  • A propriedade element.isContentEditable foi implementada.
  • A propriedade document.currentScript permite determinar qual elemento <script> do script está sendo executado no momento. O novos eventos document.onbeforescriptexecute e document.onafterscriptexecute são lançados antes e depois de um elemento script ser executado.
  • Adicionada a propriedade mozSourceNode ao objeto DragTransfer.
  • Adicionado o método selection.modify() ao objeto Selection; ele permite a fácil alteração da seleção de texto atual ou da posição do cursor em uma janela do navegador.
  • O suporte para o objeto window.directories e para a característica directories de window.open, qua não são suportadas em nenhum outro navegador, foi  removido. Ao invés dela, use personalbar. bug 474058
  • A propriedade event.mozInputSource foi adicionada aos eventos de interface de usuário do DOM; esta propriedade não-padrão permite a determinação do tipo de dispositivo que gerou um evento.
  • O evento document.onreadystatechange foi implementado.
  • O método document.createElement não aceita mais a tag nome entre < e > no modo quirk.
  • Os métodos element.setCapture() e document.releaseCapture() foram adicionados, permitindo aos elementos continuar a monitorar os eventos do mouse, mesmo quando o mouse está fora da área normal de monitoramento após a ocorrência de um evento mousedown.
  • A propriedade window.mozPaintCount foi adicionada; ela permite a determinação de quantas vezes um documento foi pintado. Isto pode ser útil no teste de performance de suas aplicações web.
  • O token de língua foi removido de window.navigator.appVersion e window.navigator.userAgent. Ao invés deles, use o window.navigator.language ou o Accept-Language headerbug 572656
  • O objeto XMLHttpRequest agora expõe a resposta como um array digitado em JavaScript, assim como uma string, usando a propriedade mozResponseArrayBuffer específica do Gecko.
  • Eventos de mouse agora incluem uma propriedade mozPressure indicando a quantidade de pressão em dispositivos de entrada sensíveis a pressão, suportados.
  • Os métodos window.URL.createObjectURL() e window.URL.revokeObjectURL() permitem a criação de objetos URL que referenciem arquivos locais.
  • O método DOMImplementation.createHTMLDocument() permite a criação de novos documentos HTML.
  • Node.mozMatchesSelector() agora lança uma exceção SYNTAX_ERR se o seletor de string selecionado for inválido, ao invés de, incorretamente, retornar false.
  • Agora é possível selecionar valores de propriedades em um elemento SVG usando a mesma sintaxe econômica do CSS. Por exemplo: element.style.fill = 'lime'. Veja element.style para detalhes.
  • A raiz do documento agora possui um atributo privatebrowsingmode que descreve o estado do modo de navegação privada, incluindo uma indicação se a navegação privada é temporária ou permanente para a sessão.
  • Agora o segundo parâmetro do método window.getComputedStyle() é opcional, assim como em qualquer outro navegador grande.
  • Agora o objeto StorageEvent do DOM está de acordo com a última versão da especificação.
  • O atraso mínimo permitido para o método window.setTimeout() é agora uma preferência, dom.min_timeout_value.
  • O evento MozAfterPaint não é mais enviado por padrão, devido uma potencial questão de segurança. Ele pode ser reabilitado configurando a preferência.

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 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.

  • Os eventos de TabClose, TabSelect e TabOpen (fechar aba, selecionar aba e abrir aba) não levam mais ao elemento tabbrowser (gBrowser). Eventos listeners (ouvintes) para estes eventos devem ser adicionados ao gBrowser.tabContainer ao invés de diretamente ao gBrowser.
  • O menu de contexto das abas não mais um filho anônimo do tabbrowser. Ele pode portanto ser sobreposto diretamente com XUL overlays. Ele também pode ser acessado mais diretamente com JavaScript via gBrowser.tabContextMenu. Veja esta postagem no blog (en) para mais detalhes.
  • A nova propriedade visibleTabs foi adicionada para permitir pegar um array das abas visíveis correntemente; isto permite determinar quais abas estão visíveis no conjuto de abas atual. Isto é usado pelo Firefox Panorama, por exemplo.
  • Adicionado o novo método showOnlyTheseTabs; isto é usado pelo Firefox Panorama.
  • Adicionado o novo método getIcon, o qual permite pegar o favicon de uma aba sem ter chamar o elemento browser.
  • Adicionada a nova propriedade tabbrowser.tabs, a qual permite facilmente pegar uma lista das abas em um elemento tabbrowser.
  • Os novos métodos pinTab e unpinTab permitem que você prenda e desprenda abas (isto é, trocá-las entre serem abas de app ou abas normais).

Mudanças para popups

  • Agora o elemento menupopup do XUL possui a propriedade triggerNode, a qual indica o nó no qual o evento ocorreu, que causou a abertura do popup. Isto também requisitou a adição de um parâmetro de evento de disparo para o método openPopup. Além disso, foi adicionada a propriedade anchorNode; ela retorna a âncora especificada quando o popup foi criado.
  • O elemento panel agora oferece os atributos fade e flip, os quais são usados para configurar o comportamento do novo estilo "arrow" de notificação de painéis.

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

  • O atributo readonly agora funciona corretamente para campos.
  • O elemento resizer agora permite o uso do atributo element para especificar um elemento a ser redimencionado, ao invés de redimencionar a janela.
  • O elemtno resizer possui agora um atributo type que permite especificar que o redimencionador é para uma janela ao invés de um elemento, para prevenir o redimencionador da janela de ser dobrado.
  • O atributo "active" não é mais configurado como ativo em janelas XUL. Ao invés disso, você pode usar a nova pseudoclasse :-moz-window-inactive para definir diferentes estilos para as os fundos das janelas.
  • O atributo emptytext está agora obsoleto; ao invés dele, você deve usar o placeholder.
  • O elemento popup não é mais suportado; ao invés dele, você deve usar o menupopup.
  • O elemento window agora oferece um atributo accelerated; quando verdadeiro, é permitido ao gerenciador de camadas por hardware, acelerar a janela.
  • O elemento stack agora suporta os atributosl bottom e right.
  • Os eventos agora são lançados durante a customização da toolbox, permitindo a detecção de mudanças nas barras de ferramentas (en).
  • O atributo alternatingbackground para elementos tree não é mais suportado; ao invés dele, você pode usar a pseudoclasse :-moz-tree-row.
  • O botão de exibição da barra de ferramentas dos favoritos com anonid chevronPopup não é mais anônimo; ele possui um ID de "PlacesChevron".
  • O elemento tabs agora possui a propriedade tabbox, substituindo a antiga propriedade _tabbox, a qual está obsoleta (e nunca foi documentada).
  • Elementos XUL window agora possuem o atributo drawintitlebar; se ele for true, a área de conteúdo da janela inclui a barra de títulos, permitindo desenhar na barra de títulos.
  • Os novos elementos TabPinned e TabUnpinned estão disponíveis, permitindo que você detecte quando abas são prendidas e desprendidas (en).
  • O novo evento TabAttrModified é enviado quando os atributos label, crop, busy, image ou selected das abas são modificados.
  • Os elementos tab agora possuem um atributo pinned, permitindo que você determine quando uma aba está ou não correntemente presa.
  • A classe setDirectionIndicator em elementos tree não fez nada por algum tempo; agora ela não é mais usada.
  • O elemento window possui agora um atributo chromemargin que permite configurar margens entre o chrome e o conteúdo de cada lado da janela; isto pode ser usado para desenhar na barra de títulos, por exemplo.
  • O elemento window possui agora um atributo disablechrome; ele é usado para esconder a maioria do chrome em uma janela quando ela está sendo usada para exibir a IU no navegador, como em about:addons.
  • O elemento window possui agora um atributo disablefastfind, o qual permite desabilitar a barra de busca em uma janela quando o conteúdo não a suporta. Isto é usado, por exemplo, no painel de complementos.
  • Barras de ferramentas agora podem ser caixas de ferramentas externas, enquanto continuarem sendo consideradas membros da  toolbox, configurando a propriedade toolboxid da toolbox. Além disso, o elemento toolbox agora possui uma propriedade externalToolbars, a qual lista todas as barras de ferramentas consideradas membros da caixa de ferramentas.
  • Foi adicionado suporte a logging XUL templates para propósitos de depuração.

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

  • Os resultados de consultas no Places podem agora ser vistos por múltiplos observadores eas consultas podem ser executadas assíncronamente. Isto significa que há algumas mudanças nas interfaces nsINavHistoryResult, nsINavHistoryQueryOptions, e nsINavHistoryContainerResultNode. Mais significantemente, a interface nsINavHistoryResultViewer foi renomeada para nsINavHistoryResultObserver.
  • Algumas novas notificações foram adicionadas para permitir que o navegador controle os processos de desligamento do serviço Places com mais segurança. Destas, a maioria é somente para uso interno, mas o conhecimento da notificação places-connection-closed está disponível quando o serviço Places completa seu processo de desligamento.
  • Agora o tamanho de saída do array em vários métodos do Places é opcional.
  • Foi removido o suporte para <menupopup type="places">.  Ao invés, é necessário criar e popular um menu com informações do Places manualmente, ao invés de ter isto feito para você. Veja Displaying Places information using views: Menu view para detalhes.

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

  • A maioria dos recursos contidos no Firefox foi combinado em um único arquivo JAR, omni.jar, o qual melhora a performance na inicialização reduzindo I/O. Para detalhes, leia Sobre omni.jar (en).
  • A preferência accessibility.disablecache não é mais suportada; ela está exposta apenas para propósitos de depuração e não é mais usada.
  • Complementos cujas GUID mudam de uma versão para outra podem agora ser atualizados corretamente.
  • Como um efeito colateral devido a remoção dos diretórios específicos para plataformas em pacotes de complementos, não é mais possível proporcional diferentes preferências padrão para cada plataforma.

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

Etiquetas do documento e colaboradores

 Colaboradores para esta página: Sebastianz, Prinz_Rana, teoli, Verruckt, Leandro Mercês Xavier
 Última atualização por: Sebastianz,