Como fazer o componente TwebBrowser usar/emular uma versão específica do IE.

Isso é para quem programa em C++, Delphi, etc e usa o componente twebbrowser para construir um programa baseado em navegador.

Como todos devem saber esse componente usa o engine do Internet Explorer instalado no Windows. O que você talvez não saiba é que por default esse engine quando é “embarcado” em um programa é configurado para entrar em um modo de compatibilidade onde personifica uma versão anterior do IE. Até mesmo no Windows 8.1 de 64bits com o IE11 instalado seu programa vai emular o IE7.

O resultado disso é que certas páginas que abrem sem qualquer problema no IE da máquina vão acusar erro no seu programa. Os mais comuns são erros de script como este:

ie_erro_script_wrongIEversion_automalabs.com.br

Para saber que versão do IE seu programa está emulando faça-o abrir uma página que diga isso, como http://www.useragentstring.com/

Método 1

Isso é configurável pelo Registro. Você precisa ir na chave:

HKEY_LOCAL_MACHINE (ou HKEY_CURRENT_USER)
SOFTWARE
Microsoft
Internet Explorer
Main
FeatureControl
FEATURE_BROWSER_EMULATION

E adicionar um item “NomedoSeuPrograma.exe” com um valor DWORD que corresponde à versão do IE que você quer que seu programa use.

A lista dos valores pode ser vista aqui. Em resumo (valores  em DECIMAL):

  • 11001 – IE 11 modo Edge
  • 11000 – IE11
  • 10001 – IE10 forçado – ignora !DOCTYPE
  • 10000 – IE10
  • 9999 – IE9 forçado – ignora !DOCTYPE
  • 9000 – IE9
  • 8888 – IE8 forçado – ignora !DOCTYPE
  • 8000 – IE8
  • 7000 – IE7

Se fizer a inclusão em HKEY_LOCAL_MACHINE isso val valer para todos os usuários da máquina, mas requer privilégios de administrador para isso. Já a inclusão em HKEY_CURRENT_USER vale apenas para o usuário atual mas seu programa pode mexer nessa chave sem precisar de privilégios.

Você não pode emular uma versão do IE superior à instalada na máquina.

Método 2

Você também pode definir isso via HTML. Não vai precisar mexer no Registro mas cada página precisará ser alterada. Obviamente só é viável quando todas as páginas que seu programa vai exibir são criadas por você.

Basta acrescentar algo assim em HEAD:

Isso instrui o mecanismo do IE a exibir o documento como se fosse o IE9

Isso instrui o mecanismo do IE a exibir o documento como se fosse o Edge

Mais uma vez, você não pode emular uma versão do IE superior à instalada na máquina.

This entry was posted in Informação. Bookmark the permalink.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *