Aplicativos do Windows
Recolher sumário
Expandir sumário

Definindo a compatibilidade de documentos

Novidade no Windows Internet Explorer 8

Atualizado em: fevereiro de 2009

A compatibilidade de documentos define a forma como o Internet Explorer renderiza suas páginas da Web. Este artigo explica a compatibilidade de documentos, como especificar o modo de compatibilidade para suas páginas da Web e como determinar o modo de documento de uma página da Web.

Introdução

Para ajudar a assegurar que suas páginas da Web tenham uma aparência consistente em versões futuras do Internet Explorer, o Internet Explorer 8 apresenta a compatibilidade de documentos. Uma extensão do modo de compatibilidade apresentado no Microsoft Internet Explorer 6, a compatibilidade de documentos permite que você escolha o modo de renderização específico usado pelo Internet Explorer para exibir suas páginas da Web.

Este artigo descreve a necessidade de compatibilidade de documentos, lista os modos de compatibilidade disponíveis para versões recentes do Internet Explorer e mostra como selecionar modos de compatibilidade específicos.

Compreendendo a necessidade de compatibilidade de documentos

Cada grande versão do Internet Explorer adiciona recursos projetados para facilitar o uso do navegador, aumentar a segurança e dar mais suporte a padrões do setor. À medida que o Internet Explorer ganha recursos, aumenta o risco de que os sites mais antigos não possam ser exibidos corretamente.

Para minimizar esse risco, o Internet Explorer 6 permitia que desenvolvedores da Web escolhessem o modo para o Internet Explorer interpretar e exibir suas páginas da Web. O "modo quirks" era o padrão; ele exibia as páginas como se elas fossem exibidas com versões mais antigas do navegador. O "modo de padrões" (também conhecido como "modo estrito") apresentava o maior suporte para os padrões do setor; entretanto, para tirar proveito desse suporte aprimorado, as páginas da Web precisavam incluir uma diretiva <!DOCTYPE> apropriada.

Se um site não incluísse uma diretiva <!DOCTYPE>, o Internet Explorer 6 o exibiria no modo quirks. Se um site contivesse uma diretiva <!DOCTYPE> válida que o navegador não reconhecesse, o Internet Explorer 6 o exibiria no modo de padrões do Internet Explorer 6. Como poucos sites já incluíam a diretiva <!DOCTYPE>, a opção de modo de compatibilidade fez muito sucesso. Ela permitiu que os desenvolvedores da Web escolhessem o melhor momento para migrar seus sites para o modo de padrões.

Com o tempo, muitos sites começaram a depender do modo de padrões. Eles também começaram a usar os recursos e o comportamento do Internet Explorer 6 para detectar o Internet Explorer. Por exemplo, o Internet Explorer 6 não dava suporte ao universal selector; alguns sites o usavam como uma forma de oferecer conteúdo específico ao Internet Explorer.

O Internet Explorer 7 oferecia novos recursos, como o suporte ao universal selector, criados para oferecer um suporte mais completo aos padrões do setor. Como a diretiva <!DOCTYPE> dá suporte apenas a duas configurações (modo quirks e modo de padrões), o modo de padrões do Internet Explorer 7 substituiu o modo de padrões do Internet Explorer 6.

Com isso, os sites que dependiam do comportamento do modo de padrões do Internet Explorer 6 (como a falta de suporte ao universal selector) não detectavam a nova versão do navegador. Como resultado, o conteúdo específico ao Internet Explorer não era oferecido ao Internet Explorer 7 e esses sites não eram exibidos como se pretendia. Como o Internet Explorer 7 oferecia suporte a apenas dois modos de compatibilidade, os proprietários de sites afetados eram forçados a atualizar seus sites para dar suporte ao Internet Explorer 7.

O Internet Explorer 8 oferece mais suporte aos padrões do setor do que qualquer versão anterior do navegador. Consequentemente, os sites projetados para versões anteriores do navegador podem não ser exibidos conforme planejado. Para ajudar a reduzir os problemas, o Internet Explorer 8 apresenta o conceito de compatibilidade de documentos, que lhe permite especificar as versões do Internet Explorer às quais seu site está projetado para dar suporte. A compatibilidade de documentos adiciona novos modos ao Internet Explorer 8; esses modos informam ao navegador como interpretar e renderizar um site. Se o seu site não for exibido corretamente no Internet Explorer 8, você poderá atualizar o site para dar suporte aos mais recentes padrões da Web (preferenciais), ou poderá forçar o Internet Explorer 8 a exibir seu conteúdo como se ele estivesse sendo exibido em uma versão anterior do navegador. Isso é feito usando-se o elemento meta para adicionar um cabeçalho X-UA-Compatible a suas páginas da Web.

Isso permite que você escolha quando atualizar seu site para dar suporte aos novos recursos do Internet Explorer 8.

Compreendendo os modos de compatibilidade de documentos

O Internet Explorer 8 dá suporte a vários modos de compatibilidade de documentos, que habilitam diversos recursos e podem afetar o modo como o conteúdo é exibido.

  • O modo Emulate IE8 orienta o Internet Explorer a usar a diretiva <!DOCTYPE> para determinar como renderizar o conteúdo. As diretivas do modo de padrões são exibidas no modo de padrões do Internet Explorer 8, e as diretivas do modo quirks são exibidas no modo IE5. Ao contrário do modo IE8, o modo Emulate IE8 respeita a diretiva <!DOCTYPE>.

  • O modo Emulate IE7 orienta o Internet Explorer a usar a diretiva <!DOCTYPE> para determinar como renderizar o conteúdo. As diretivas do modo de padrões são exibidas no modo de padrões do Internet Explorer 7, e as diretivas do modo quirks são exibidas no modo IE5. Ao contrário do modo IE7, o modo Emulate IE7 respeita a diretiva <!DOCTYPE>. Para muitos sites, esse é o modo de compatibilidade preferencial.

  • O modo IE5 renderiza o conteúdo como se ele fosse exibido pelo modo quirks do Internet Explorer 7, que é bem semelhante ao modo como o conteúdo era exibido no Internet Explorer 5.

  • O modo IE7 renderiza o conteúdo como se ele fosse exibido pelo modo de padrões do Internet Explorer 7, quer a página contenha ou não uma diretiva <!DOCTYPE>.

  • O modo IE8 oferece o maior suporte disponível para padrões do setor, inclusive a W3C Cascading Style Sheets Level 2.1 Specification  link da World Wide Web e a W3C Selectors API  link da World Wide Webe suporte limitado para a W3C Cascading Style Sheets Level 3 Specification (Working Draft)  link da World Wide Web.

  • O modo edge orienta o Internet Explorer a exibir o conteúdo no modo mais alto disponível. Com o Internet Explorer 8, isso é equivalente ao modo IE8. Se uma versão futura (hipotética) do Internet Explorer desse suporte a um modo de compatibilidade mais alto, as páginas definidas para o modo edge apareceriam no modo mais alto aceito pela versão. Essas mesmas páginas apareceriam ainda no modo IE8 quando exibidas com o Internet Explorer 8.

Como os documentos no modo edge exibem páginas da Web usando o modo mais alto disponível para a versão do Internet Explorer usada para exibi-los, é recomendável que você limite seu uso para testar páginas e para outras aplicações que não sejam de produção.

Especificando modos de compatibilidade de documentos

Para especificar um modo de documento para suas páginas da Web, use o elemento meta para incluir um cabeçalho X-UA-Compatible  http-equiv em sua página da Web. O exemplo a seguir especifica compatibilidade do modo Emulate IE7.

<html>
<head>
  <!-- Mimic Internet Explorer 7 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >
  <title>My Web Page</title>
</head>
<body>
  <p>Content goes here.</p>
</body>
</html> 

O atributo de conteúdo especifica o modo para a página; para simular o comportamento do Internet Explorer 7, especifique IE=EmulateIE7. Especifique IE=5, IE=7 ou IE=8 para selecionar um desses modos de compatibilidade. Você também poderá especificar IE=edge para orientar o Internet Explorer 8 a usar o modo mais alto disponível.

O cabeçalho X-UA-compatible não diferencia maiúsculas de minúsculas; entretanto, ele deve aparecer no cabeçalho da página da Web (a seção HEAD) antes de todos os outros elementos, exceto o elemento title e outros elementos meta.

Configurando servidores Web para especificar modos de compatibilidade padrão

Os administradores de sites podem configurar seus sites para assumirem como padrão um modo de compatibilidade de documentos específico definindo um cabeçalho personalizado para o site. O processo específico depende do seu servidor Web. Por exemplo, o arquivo web.config a seguir permite que o IIS (Serviços de Informações da Internet) da Microsoft defina um cabeçalho personalizado que automaticamente renderize todas as páginas no modo IE7.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=EmulateIE7" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration> 

Se você especificar um modo de compatibilidade de documentos padrão usando seu servidor Web, poderá substituir essa configuração especificando um modo de compatibilidade de documentos diferente em uma página da Web específica. O modo especificado dentro da página da Web tem precedência sobre o modo especificado pelo servidor.

Consulte a documentação do seu servidor Web em particular para obter informações sobre como especificar cabeçalhos personalizados. Ou, para obter mais informações, consulte:

Determinando o modo de compatibilidade de documentos

Para determinar o modo de compatibilidade de documentos de uma página da Web que usa o Internet Explorer 8, use a propriedade documentMode do objeto document. Por exemplo, digitar o texto a seguir na Barra de endereços do Internet Explorer 8 exibe o modo de documento da página da Web atual.

javascript:alert(document.documentMode);

A propriedade documentMode retorna um valor numérico correspondente ao modo de compatibilidade de documentos da página. Por exemplo, se uma página tiver escolhido dar suporte ao modo IE8, documentMode retornará o valor 8.

A propriedade compatMode introduzida no Internet Explorer 6 foi preterida em favor da propriedade documentMode introduzida no Internet Explorer 8. Os aplicativos que atualmente dependem de compatMode continuam funcionando no Internet Explorer 8; entretanto, eles devem ser atualizados para usar documentMode.

Se você deseja usar JavaScript para determinar o modo de compatibilidade de um documento, inclua um código que dê suporte a versões anteriores do Internet Explorer, como mostra o exemplo a seguir.

engine = null;
if (window.navigator.appName == "Microsoft Internet Explorer")
{
   // This is an IE browser. What mode is the engine in?
   if (document.documentMode) // IE8
      engine = document.documentMode;
   else // IE 5-7
   {
      engine = 5; // Assume quirks mode unless proven otherwise
      if (document.compatMode)
      {
         if (document.compatMode == "CSS1Compat")
            engine = 7; // standards mode
      }
   }
   // the engine variable now contains the document compatibility mode.
}

Compreendendo os valores de atributo de conteúdo

O atributo de conteúdo é flexível quanto ao fato de aceitar valores diferentes daqueles previamente descritos. Isso proporciona maior controle sobre a forma como o Internet Explorer exibe suas páginas da Web. Por exemplo, você pode definir o atributo de conteúdo como IE=7.5. Quando você faz isso, o Internet Explorer tenta converter o valor em um vetor da versão e seleciona o modo mais próximo a esse resultado. Neste caso, Internet Explorer seria definido para o modo IE7. Os exemplos a seguir mostram os modos selecionados para outros valores quando não há outros fatores atenuantes.

<meta http-equiv="X-UA-Compatible" content="IE=4">   <!-- IE5 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=7.5" > <!-- IE7 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=100" > <!-- IE8 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=a" >   <!-- IE5 mode --> 

<!-- This header mimics Internet Explorer 7 and uses 
     <!DOCTYPE> to determine how to display the Web page -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >    
Observação  O exemplo anterior mostra os resultados de valores de conteúdo individuais. Na prática, o Internet Explorer respeita apenas o primeiro cabeçalho X-UA-Compatible em uma página da Web.

Você também poderá usar o atributo de conteúdo para especificar vários modos de compatibilidade de documentos; isso ajuda assegurar que suas páginas da Web sejam exibidas de forma consistente em versões futuras do navegador. Para especificar vários modos de documento, defina o atributo de conteúdo para identificar os modos que você deseja usar. Use um ponto-e-vírgula para separar cada modo.

Se uma versão específica do Internet Explorer der suporte a mais de um modo de compatibilidade solicitado, ela usará o modo mais alto disponível listado no atributo de conteúdo do cabeçalho. Você pode usar esse fato para excluir modos de compatibilidade específicos, embora isso não seja recomendável. Por exemplo, o cabeçalho a seguir exclui o modo IE7.

<meta http-equiv="X-UA-Compatible" content="IE=5; IE=8" >

Controlando a renderização padrão

Quando o Internet Explorer 8 encontra uma página da Web que não contém um X-UA-Compatible header, ele usa a diretiva <!DOCTYPE> para determinar como exibir a página. Se a diretiva estiver ausente ou não especificar um tipo de documento baseado em padrões, o Internet Explorer 8 exibirá a página no modo IE5 (modo quirks).

Se a diretiva <!DOCTYPE> especificar um tipo de documento baseado em padrões, o Internet Explorer 8 exibirá a página no modo IE8, exceto nos seguintes casos:

  • O Modo de Exibição de Compatibilidade está habilitado para a página.

  • A página é carregada na zona de Intranet e o Internet Explorer 8 está configurado para páginas na zona de Intranet no Modo de Exibição de Compatibilidade.

  • O Internet Explorer 8 está configurado para exibir todos os sites no Modo de Exibição de Compatibilidade.

  • O Internet Explorer 8 está configurado para usar a Lista do Modo de Exibição de Compatibilidade, que especifica um conjunto de sites que são sempre exibidos no Modo de Exibição de Compatibilidade.

  • As Ferramentas para Desenvolvedores são usadas para substituir as configurações especificadas na página da Web.

  • A página da Web encontrou um erro de layout de página, e o Internet Explorer 8 está configurado para recuperar-se automaticamente de tais erros reabrindo a página no Modo de Exibição de Compatibilidade.

Para obter mais informações, consulte o Blog do Internet Explorer: Recapitulação do Modo de Exibição de Compatibilidade (a página pode estar em inglês)  link da World Wide Web.

Observação  Quando configurado para carregar páginas de Intranet no Modo de Exibição de Compatibilidade, o Internet Explorer faz uma exceção para páginas carregadas que usam o endereço de localhost ou um endereço de loopback. As páginas carregadas usando um dessas técnicas são exibidas no modo IE8 quando a diretiva <!DOCTYPE> especifica um tipo de documento baseado em padrões.

Além disso, a chave do Registro a seguir permite que você controle o modo como o Internet Explorer trata as páginas que não contêm cabeçalhos X-UA-Compatible.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_BROWSER_EMULATION
                                   iexplore.exe = (DWORD)

O valor DWORD deve ser igual a um dos valores a seguir.

ValorDescrição
7000As páginas que contêm diretivas <!DOCTYPE> baseadas em padrões são exibidas no modo IE7.
8000As páginas que contêm diretivas <!DOCTYPE> baseadas em padrões são exibidas no modo IE8.
8888As páginas são sempre exibidas no modo IE8, independentemente da diretiva <!DOCTYPE>. (Isso ignora as exceções listadas anteriormente.)

Por padrão, os aplicativos que hospedam o Controle WebBrowser abrem páginas baseadas em padrões no modo IE7, a menos que a página contenha um cabeçalho X-UA-Compatible apropriado. Você pode alterar isso adicionando o nome do arquivo executável do aplicativo à chave de controle de recurso FEATURE_BROWSER_EMULATION e definindo o valor adequadamente.

Conclusão

A compatibilidade é uma questão importante para os designers da Web. Embora seja melhor criar sites que não dependam de comportamentos ou recursos específicos de um navegador da Web, isso nem sempre é possível. O modo de compatibilidade de documentos vincula uma página da Web ao comportamento de uma versão específica do Internet Explorer.

Use o cabeçalho X-UA-Compatible para especificar as versões do Internet Explorer às quais suas páginas devem dar suporte. Use document.documentMode para determinar o modo de compatibilidade de uma página da Web.

Ao optar por dar suporte a uma versão específica do Internet Explorer, você pode ajudar a assegurar que suas páginas serão exibidas de maneira consistente em versões futuras do navegador.

Tópicos relacionados

Contribuições da comunidade

Mostrar:
© 2016 Microsoft