--- 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.
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.
<input>
e validação de dados, dentre outros.<article>
, <section>
, <nav>
, <aside>
, <hgroup>
, <header>
e <footer>
.<mark>
, <figure>
e <figcaption>
.<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.<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
.<spacer>
, o qual não existe em nenhum outro navegador.<isindex>
, quandro criado pela chamada de document.createElement()
, é agora criado como um elemento simples sem propriedades ou métodos.click()
em elementos <input>
para abrir o seletor de arquivos. Veja o exemplo no artigo Using files from web applications.<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.-moz-calc
. Isto permite especificar valores <length>
como expressões matemáticas.
:-moz-any
para agrupar seletores e fatorizar combinadores.-moz-image-rect
torna possível o uso de subretângulos de imagens como uma background-image
(imagem de plano de fundo).-moz-element
do CSS e a função document.mozSetImageElement()
do DOM para usar elementos HTML arbitrários como planos de fundos.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. |
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. |
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. |
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 . |
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 |
text-shadow
agora permite raio de desfoque de até 300px, por razões de sanidade e performance.overflow
não se aplica mais para elementos do grupo "table" (<thead>
, <tbody>
e <tfoot>
).-moz-appearance
agora suporta o valor -moz-win-borderless-glass, que aplica uma aparência Aero Glass a um elemento.
-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.-moz-border-radius
foi renomeado para border-radius
.
-moz-border-radius
é suportado como um apelido para um período de transiçãooverflow
:visible
)-moz-box-shadow
foi renomeada para box-shadow
.text-shadow
agora permite raio de desfoque de até 300px, por razões de sanidade e performance.:-moz-window-inactive
foi implementada.-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.resize
do CSS3 foi implementada.-moz-background-size
foi renomeada para seu nome final background-size
; -moz-background-size
não é mais suportada.overflow
não se aplica mais para elementos do grupo "table" (<thead>
, <tbody>
e <tfoot>
).:-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.-moz-element
do CSS permite o uso de um elemento arbitrário como imagem de fundo para background-image
e background
.-moz-appearance
agora suporta o valor -moz-win-borderless-glass, que aplica uma aparência Aero Glass a um elemento.
:valid
e :invalid
são agora automaticamente aplicadas para campos de validação <input>
.:-moz-submit-invalid
é aplicada ao botão de submeter em campos de formulários quando um ou mais campos não são validados.:required
é agora automaticamente aplicada aos campos <input>
que especificam o atributo requerido; a pseudoclasse :optional
é aplicada a todos os outros campos.:-moz-placeholder
foi adicionada para permitir a estilização de campos de texto em formulários.:-moz-handler-crashed
foi adicionada; ela estiliza elementos cujos plugins tenham quebrado.-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.-moz-font-feature-settings
permite que você customize características avançadas das fontes, de fontes OpenType.<img>
, assim como com a propriedade background-image
do CSS.buffered
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.preload
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
.x
, y
, dx
e dy
nos elementos <text>
e <tspan>
do SVG. Isto permite controlar o posicionamento de cada caractere individualmente em uma string.Range
agora possui os métodos range.getClientRects()
e range.getBoundingClientRect()
.setCapture()
e releaseCapture()
originadas do Internet Explorer foram adicionadas. Veja bug 503943.window.history
agora suporta os novos métodos pushState()
e replaceState()
do HTML5.window.mozRequestAnimationFrame()
e a propriedade window.mozAnimationStartTime
, proporciona uma maneira de criar animações sincronizadas uma com a outra.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> |
<textarea>
agora pode ser controlado a partir do DOM, através do atributo wrap
do DOM. bug 41464<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
.file
do DOM agora oferecem a propriedade url
.element.isContentEditable
foi implementada.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.mozSourceNode
ao objeto DragTransfer
.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.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 474058event.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.document.onreadystatechange
foi implementado.document.createElement
não aceita mais a tag nome entre <
e >
no modo quirk.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
.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.window.navigator.appVersion
e window.navigator.userAgent
. Ao invés deles, use o window.navigator.language
ou o Accept-Language header. bug 572656mozResponseArrayBuffer
específica do Gecko.mozPressure
indicando a quantidade de pressão em dispositivos de entrada sensíveis a pressão, suportados.window.URL.createObjectURL()
e window.URL.revokeObjectURL()
permitem a criação de objetos URL que referenciem arquivos locais.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
.element.style.fill = 'lime'
. Veja element.style
para detalhes.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.window.getComputedStyle()
é opcional, assim como em qualquer outro navegador grande.StorageEvent
do DOM está de acordo com a última versão da especificação.window.setTimeout()
é agora uma preferência, dom.min_timeout_value
.MozAfterPaint
não é mais enviado por padrão, devido uma potencial questão de segurança. Ele pode ser reabilitado configurando a preferência.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.
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.
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.
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.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.PerfMeasurement.jsm
proporciona uma API para mensurar a performance dos dados a nível de CPU no código JavaScript.NetUtil.jsm
agora oferece o método readInputStreamToString()
, o qual permite a leitura de bytes arbitrários de uma "stream" em uma string, mesmo se a "stream" incluir zeros.ChromeWorker
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.
TabClose
, TabSelect
e TabOpen
(fechar aba, selecionar aba e abrir aba) não levam mais ao elemento <xul:tabbrowser>
(gBrowser
). Eventos listeners (ouvintes) para estes eventos devem ser adicionados ao gBrowser.tabContainer
ao invés de diretamente ao gBrowser
.<xul: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.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.showOnlyTheseTabs
; isto é usado pelo Firefox Panorama.getIcon
, o qual permite pegar o favicon de uma aba sem ter chamar o elemento <xul:browser>
.tabbrowser.tabs
, a qual permite facilmente pegar uma lista das abas em um elemento <xul:tabbrowser>
.pinTab
e unpinTab
permitem que você prenda e desprenda abas (isto é, trocá-las entre serem abas de app ou abas normais).<xul: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.<xul: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.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.
readonly
agora funciona corretamente para campos.<xul:resizer>
agora permite o uso do atributo element
para especificar um elemento a ser redimencionado, ao invés de redimencionar a janela.<xul: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.:-moz-window-inactive
para definir diferentes estilos para as os fundos das janelas.emptytext
está agora obsoleto; ao invés dele, você deve usar o placeholder
.<xul:popup>
não é mais suportado; ao invés dele, você deve usar o <xul:menupopup>
.<xul:window>
agora oferece um atributo accelerated
; quando verdadeiro, é permitido ao gerenciador de camadas por hardware, acelerar a janela.<xul:stack>
agora suporta os atributosl bottom
e right
.<xul:toolbox>
, permitindo a detecção de mudanças nas barras de ferramentas (en).alternatingbackground
para elementos <xul:tree>
não é mais suportado; ao invés dele, você pode usar a pseudoclasse :-moz-tree-row
.<xul:tabs>
agora possui a propriedade tabbox
, substituindo a antiga propriedade _tabbox
, a qual está obsoleta (e nunca foi documentada).<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.TabPinned
e TabUnpinned
estão disponíveis, permitindo que você detecte quando abas são prendidas e desprendidas (en).TabAttrModified
é enviado quando os atributos label
, crop
, busy
, image
ou selected
das abas são modificados.<xul:tab>
agora possuem um atributo pinned
, permitindo que você determine quando uma aba está ou não correntemente presa.setDirectionIndicator
em elementos <xul:tree>
não fez nada por algum tempo; agora ela não é mais usada.<xul: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.<xul: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
.<xul: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.<xul:toolbox>
, configurando a propriedade toolboxid
da <xul:toolbox>
. Além disso, o elemento <xul:toolbox>
agora possui uma propriedade externalToolbars
, a qual lista todas as barras de ferramentas consideradas membros da caixa de ferramentas.mozIStorageBindingParamsArray
possui agora um atributo length (comprimento) que indica o número de objetos mozIStorageBindingParams
no array.mozIStorageStatement.bindParameters()
agora retorna um erro se a mozIStorageBindingParamsArray
especificada estiver vazia.mozIStorageConnection.clone()
, o qual permite a clonagem de uma conexão de um banco de dados existente.mozIStorageConnection.asyncClose()
, o qual permite fechar ua conexão assíncronamente; você especifica um callback para ser notificado quando a operação de fechamento estiver completa.mozIStorageConnection.setGrowthIncrement()
, o qual permite a especificação da quantidade a qual o arquivo de banco de dados cresce com o tempo, para ajudar o SQLite a reduzir a fragmentação.SQLITE_CONSTRAINT
é agora reportado como NS_ERROR_STORAGE_CONSTRAINT
ao invés de como NS_ERROR_FAILURE
.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.
__parent__
.nsINavHistoryResult
, nsINavHistoryQueryOptions
, e nsINavHistoryContainerResultNode
. Mais significantemente, a interface nsINavHistoryResultViewer
foi renomeada para nsINavHistoryResultObserver
.places-connection-closed
está disponível quando o serviço Places completa seu processo de desligamento.<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.nsIDocShell
e nsIWebBrowser
agora possuem um novo atributo isActive
, o qual é usado para permitir a otimização de caminhos de código para documentos que não estão visíveis correntemente.nsIMemory
de nsIMemory.isLowMemory()
isLowMemory foi considerado obsoleto. Ao invés disso, você deve usar notificações "memory-pressure" (en) para lidar com situações de pouca memória.nsIChannelEventSink.onChannelRedirect()
precisa ser atualizado para, ao invés disso, usar nsIChannelEventSink.asyncOnChannelRedirect()
. Isto aceita um manipulador de callbacks, que precisa er chamado quando um redirecionamento é completado com sucesso.nsINavHistoryResultObserver.batching()
proporcionando uma maneira para agrupar as operações do Places em lotes, reduzindo o número de notificações de atualização enviadas, o que pode melhorar a performance quando observadores estão realizando tarefas (assim como recarregar visualizações).nsIPref
, obsoleta durante algum tempo, finalmente foi removida. Se você já não mudou para nsIPrefService
, agora é o momento.nsISessionStore
e nsISessionStartup
receberam mudanças para suportar a restauração das sessões, sob demanda. Veja o método nsISessionStore.restoreLastSession()
.nsIPrincipal.subsumes()
e nsIPrincipal.checkMayLoad()
do nsIPrincipal
, assim como seus atributos origin
, csp
, e URI
, estão agora disponíveis através de scripts; anteriormente eles estavam disponíveis apenas através de códigos nativos.omni.jar
, o qual melhora a performance na inicialização reduzindo I/O. Para detalhes, leia Sobre omni.jar (en).accessibility.disablecache
não é mais suportada; ela está exposta apenas para propósitos de depuração e não é mais usada.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.nsIExtensionManager
foi substituido pelo Gerenciador de Complementos (en).browser.gesture.swipe.down
para cmd_scrollBottom
e browser.gesture.swipe.up
para cmd_scrollTop
.