O Controle IEB WebBrowser suporta todos os resources do IE9, incluindo o SVG?

Eu recentemente atualizei para o IE9-beta. Agora, no meu aplicativo .net (3.5) WinForm eu quero usar o controle WebBrowser .

Então, minha pergunta é se o controle WebBrowser exibirá todas as propriedades e funções do IE9?

Minha preocupação é, eu quero renderizar alguns charts SVG nele.

O IE9 “versão” do controle WebBrowser, como a versão do IE8, é na verdade vários navegadores em um. Ao contrário da versão do IE8, você tem um pouco mais de controle sobre o modo de renderização dentro da página, alterando o tipo de documento. É claro que, para mudar o modo de navegação, você precisa configurar seu registro como a resposta anterior. Aqui está um fragment de arquivo reg para FEATURE_BROWSER_EMULATION:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "contoso.exe"=dword:00002328 

Aqui está o conjunto completo de códigos:

  • 9999 (0x270F) – Internet Explorer 9. As páginas da Web são exibidas no modo Padrões do IE9, independentemente da diretiva! DOCTYPE.
  • 9000 (0x2328) – Internet Explorer 9. Páginas da Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo IE9.
  • 8888 (0x22B8) -Webpages são exibidos no modo de padrões do IE8, independentemente da diretiva! DOCTYPE.
  • 8000 (0x1F40) – As páginas Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo IE8.
  • 7000 (0x1B58) – As páginas Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo Padrões do IE7.

Os documentos completos:

http://msdn.microsoft.com/pt-br/library/ee330730%28VS.85%29.aspx#browser_emulation

O controle WebBrowser usará qualquer versão do IE que você tenha instalado, mas por motivos de compatibilidade, ele renderizará páginas no modo Padrões do IE7 por padrão.

Se você quiser aproveitar os novos resources do IE9, adicione a meta tag dentro da tag da sua página HTML.

Essa metatag deve ser adicionada antes de qualquer link para CSS, JavaScript, etc., que também esteja em seu para funcionar corretamente (somente outras tags ou podem vir antes).

Uma alternativa é adicionar uma input de registro para:

HKLM> SOFTWARE> Microsoft> Internet Explorer> Principal> FeatureControl> FEATURE_BROWSER_EMULATION

E lá adicione ‘myApplicationName.exe’ com o valor ‘9000’ para forçar o controle WebBrowser a exibir páginas no modo IE9. Embora existam outros valores que você pode usar também , observe que esses documentos não são totalmente precisos, pois não parece possível obter uma página para renderizar no modo IE8 qualquer valor que você use.

Adicionar a chave de registro ao mesmo caminho em HKCU em vez de HKLM também funcionará – isso é útil, pois a gravação em HKLM requer privilégios de administrador, como HKCU não.

Graças a Deus eu encontrei isso. O seguinte é extremamente importante:

  

Sem isso, nenhum dos relatórios que eu estava gerando funcionaria após a instalação do IE9, apesar de ter funcionado muito bem no IE8. Eles apareceriam corretamente em um controle de navegador da Web, mas haveria letras faltando, espaço em branco aumentado, etc, quando eu chamei .Print (). Eles eram apenas HTML básico que deveria ser capaz de ser renderizado mesmo no Mosaico. heh Não tenho certeza porque o modo de compatibilidade do IE7 estava indo mal. Notavelmente, você poderia. Imprimir () a mesma página 5 vezes e ter faltando letras diferentes a cada vez. Ele até seria transferido para a saída em PDF, então é definitivamente o navegador.

Uma nota sobre o Windows de 64 bits que parece incomodar algumas pessoas. Se o seu aplicativo estiver sendo executado no Windows de 64 bits, provavelmente será necessário definir o DWORD como [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Principal \ FeatureControl \ FEATURE_BROWSER_EMULATION].

Apenas para estar completo …

Você deve adicionar uma input de registro para:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

Para o SO de 32 bits

*******OU*******

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

Para sistema operacional de 64 bits

e essa input deve ser um DWORD, com o nome sendo o nome do seu executável, que hospeda o controle Webbrowser; ie:

myappname.exe (NÃO USE “Contoso.exe” como na página da Web do MSDN … é apenas um nome de espaço reservado)

Em seguida, atribua a ela um valor DWORD, de acordo com a tabela:

http://msdn.microsoft.com/pt-br/library/ee330730(v=vs.85).aspx#browser_emulation

Eu mudei para 11001 decimal ou 0x2AF9 hex — (IE 11 EMULATION)

Por que isso não é o valor padrão (quando você tem o IE 11 instalado – ou qualquer versão), em vez do IE 7 ou 8, eu nunca vou saber …

Eu sei que esta discussão é antiga e já existem respostas abrangentes.

Apenas no caso de você não saber disso:

Você não tem que codificar o número da versão do IE como

Eu concordo totalmente com a solução fornecida, mas acho que um pouco de esclarecimento é importante, acho que pode ser necessário.

Para cada processo (leia também: vshost.exe, yourWinformApplication.exe.svchost ou o nome do seu aplicativo.exe) que precisará adicionar um DWORD com o valor fornecido, no meu caso deixo 9000 (em decimal) no aplicativo nome e executando o script sem problemas e sem erros.

O erro mais comum é acreditar que é necessário adicionar “contoso.exe” como é e acho que tudo funciona!

Sim, o controle WebBrowser usa qualquer versão do IE que você instalou. Isso significa que, se você executar seu aplicativo em uma máquina com o IE 8, os resources do IE 9 dos quais você depende não estarão disponíveis.

Cheguei a esta solução e não funcionou para mim! Porque eu estava usando 64 bits eu tive que replace o registro:

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 

Em vez daquele que todo mundo fala:

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 

Eu gostei do código (C #) no seguinte, que define as configurações do registro para o seu aplicativo. Não tenho certeza se vai cortá-lo após a instalação, embora se as permissions forem necessárias. Para mim, resolveu um problema com o WebSocket não estar disponível dentro de um controle WebBrowser no WPF.

Chamada do C # webbrowser Ajax

Eu tive o mesmo problema, e as respostas do registro aqui não funcionaram.

Eu tinha um controle de navegador na nova versão do meu programa que funcionou bem no XP, falhou no Windows 7 (64 bits). A versão antiga funcionava no XP e no Windows 7.

A página da web exibida no navegador usa algum plugin estranho para mostrar mapas SVG antigos (acho que é um applet Java).

Acontece que o problema está relacionado à proteção DEP no Windows 7.

Versões antigas do dotnet 2 não definiam o sinalizador DEP requerido no exe, mas do dotnet 2, SP 1 em diante ele fazia (sim, o comportamento de compilation e o comportamento do tempo de execução do exe mudavam dependendo de qual máquina você compilava, legal). ..).

Ele está documentado em um blog do MSDN NXCOMPAT e o compilador C # . Para citar: Isso sem dúvida surpreenderá alguns desenvolvedores … faça o download de um pacote de serviços de estrutura, recompile, execute seu aplicativo e agora você está recebendo exceções IP_ON_HEAP.

Adicionando o seguinte ao post build no Visual Studio, desativa o DEP para o exe e tudo funciona conforme o esperado:

 all "$(DevEnvDir)..\tools\vsvars32.bat" editbin.exe /NXCOMPAT:NO "$(TargetPath)" 
  • Documentação Editbin
  • Dumpbin /headers exibirá a configuração DEP em um exe.

Em relação à resposta aceita pelo whitehawk. Estou apenas tentando adicionar um pouco de experiência prática. Estava apenas tentando adicionar um comentário, mas isso é muito demorado.

Basicamente, sem o IE 9 instalado, a opção de registro FEATURE_BROWSER_EMULATION não funcionará em TODOS.

Por exemplo, minha própria experiência hoje eu estava tentando fazer com que o .net webcontrol funcionasse com o modo IE10 porque um html que estou tentando processar não funciona com .netControl sob VS2012, e nem funciona quando carrego o html no IE8 diretamente, ainda css não irá renderizar corretamente (mesmo depois de eu dizer permitir o conteúdo bloqueado). Mas testei o mesmo html ok com o IE10 na máquina win 8 de um amigo. É por isso que eu estou tentando definir o webControl .net para o modo IE 10, mas continua a falhar …

Agora eu percebi que isso é bcos minha máquina win 7 tem apenas o IE8 instalado, então, independentemente do valor que eu configurei para o switch FEATURE_BROWSER_EMULATION (valor para IE9, IE10 IE11), ele simplesmente não funciona.

Então baixei e instalei o IE 10 na minha máquina win 7. Ainda não vai funcionar, então eu adicionei o FEATURE_BROWSER_EMULATION, ele começou a funcionar!

Também notei que, independentemente do valor que eu definir, mesmo configurá-lo para o valor 0, por padrão, o webControl ainda está usando o modo IE 10, que ainda funciona para mim.

Então, para resumir, se você tem o IE X instalado, mas você quer que o seu webControl .Net funcione sob o modo IE (X + N) N> 0, DUAS coisas que você precisa fazer:

  1. Ir para o site da MS e baixar e instalar o IE (X + N) em sua máquina, você precisará reiniciar após a instalação.

  2. aplique a resposta do whitehawk.

Basicamente: Para controlar o valor desse recurso usando o registro, adicione o nome do arquivo executável à configuração a seguir e defina o valor para corresponder à configuração desejada.

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

Windows Internet Explorer 8 e posterior. O recurso FEATURE_BROWSER_EMULATION define o modo de emulação padrão para o Internet Explorer e suporta os seguintes valores.

Valor Descrição

  • 11001 (0x2AF9 Internet Explorer 11. As páginas da Web são exibidas no modo de borda do IE11, independentemente da diretiva! DOCTYPE.

    11000 (0x2AF8) IE11. Páginas Web contendo diretivas DOCTYPE baseadas em padrões são exibidas no modo de borda do IE11. Valor padrão para o IE11.

    10001 (0x2711) Internet Explorer 10. As páginas da Web são exibidas no modo Padrões do IE10, independentemente da diretiva! DOCTYPE.

    10000 (0x02710) Internet Explorer 10. As páginas da Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo Padrões do IE10. Valor padrão para o Internet Explorer 10.

    9999 (0x270F) O Windows Internet Explorer 9. As páginas da Web são exibidas no modo Padrões do IE9, independentemente da diretiva! DOCTYPE.

    9000 (0x2328) Internet Explorer 9. Páginas da Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo IE9. Valor padrão para o Internet Explorer 9.

    Importante No Internet Explorer 10, as páginas da Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo Padrões do IE10.

    8888 (0x22B8) As páginas da Web são exibidas no modo Padrões do IE8, independentemente da diretiva! DOCTYPE.

    8000 (0x1F40) As páginas Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo IE8. Valor padrão para o Internet Explorer 8 Importante No Internet Explorer 10, as páginas da Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo Padrões do IE10.

    7000 (0x1B58) As páginas Web que contêm diretivas DOCTYPE baseadas em padrões são exibidas no modo Padrões do IE7. Valor padrão para aplicativos que hospedam o Controle WebBrowser.

Completo ref aqui