Pergunta

Quero usar o IE8 como controle WebBrowser em um aplicativo C#. Como posso desativar o "Modo Quirks" e forçar o IE a conformidade com os padrões (na medida em que é implementado)?

Foi útil?

Solução

Eu acho que o problema que você está enfrentando é descrito em Ieblog: modos de renderização de controle de webbrowser no IE8:

Embora os webmasters possam alterar facilmente seu site para renderizar corretamente na nova versão do IE, muitos fornecedores de software não têm recursos para empurrar instantaneamente novas versões de seus aplicativos com páginas internas atualizadas. Para garantir que essas aplicações existentes permaneçam em ordem de funcionamento, O IE8 renderiza as páginas em execução dentro de instâncias do controle WebBrowser no modo de padrões IE7 por padrão.

Aqui devo observar que os comentários na página dizem que o exposto está incorreto e que "O IE8 renderiza as páginas em execução dentro de instâncias do controle WebBrowser no modo IE7 Strict ou Quirks por padrão, dependendo do doctype da página. "

A solução é a seguinte:

Quando um executável carrega uma instância do controle WebBrowser, ele verifica o registro para verificar se o executável deseja o modo de padrões IE7 ou IE8.

...

Para executar no modo IE8, insira o seguinte valor do registro:

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]

"MyApplication.exe"=dword:13880

Em ambos os casos, o MyApplication.exe deve ser substituído pelo nome do executável que executará controles WebBrowser em um modo especificado.

Portanto, parece que a solução "programática" é escrever uma chave no registro dizendo que você deseja o modo de padrões IE8 para WebBrowser controles em seu aplicativo específico.

Outras dicas

Se você não quiser usar a técnica de chave do registro, pode inserir a seguinte tag:

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

O atributo "conteúdo" forças de renderização em vários modos.

O último que ouvi foi que o IE8 usaria Modo de padrões por padrão. Você está vendo um problema real com a versão beta mais recente? Tem certeza de que está renderizando no modo peculiar Botão de exibição de compatibilidade?

Observe que houve algumas mudanças desde a versão beta, as chaves do registro foram renomeadas etc. Leia mais aqui.

Este tem código real para fazer isso programaticamente e lida com o IE11 até agora:

C Chamada Ajax

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top