Domanda

Recentemente ho aggiornato a IE9-beta. Ora, Nel mio .NET (3.5) WinForm Voglio controllare l'uso WebBrowser.

Quindi la mia domanda è, se il controllo WebBrowser esporrà tutte le proprietà e le funzioni di IE9?

La mia preoccupazione è, voglio rendere alcuni grafica SVG su di esso.

È stato utile?

Soluzione

La "versione" IE9 del controllo WebBrowser, come la versione IE8, è in realtà diversi browser in uno. A differenza della versione IE8, si ha un po 'più di controllo sulla modalità di rendering all'interno della pagina cambiando il doctype. Naturalmente, per modificare la modalità del browser è necessario impostare il Registro di sistema, come la precedente risposta. Ecco un frammento di file reg per 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

Questa è la serie completa di codici:

  • 9999 (0x270F) - Internet Explorer 9. Le pagine web vengono visualizzati in IE9 modalità Standard, a prescindere dal ! DOCTYPE direttiva.
  • 9000 (0x2328) -! Internet Explorer 9. pagine web che contengono basata su standard DOCTYPE direttive vengono visualizzati in modalità IE9.
  • 8888 (0x22B8) sono -Webpages visualizzate in modalità IE8 Standards, indipendentemente dalla direttiva! DOCTYPE.
  • 8000 (0x1F40) - pagine web che contengono basati su standard! DOCTYPE direttive vengono visualizzati in modalità IE8.
  • 7000 (0x1B58) - pagine web che contengono basati su standard! DOCTYPE direttive vengono visualizzati in modalità IE7 standard.

La documentazione completa:

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

Altri suggerimenti

controllo WebBrowser userà qualsiasi versione di IE è stato installato, ma per ragioni di compatibilità sarà il rendering delle pagine in modalità IE7 Norme per impostazione predefinita.

Se si vuole sfruttare le caratteristiche nuovo IE9, si dovrebbe aggiungere il meta tag <meta http-equiv="X-UA-Compatible" content="IE=9" > all'interno del tag <head> della pagina HTML.

Questo meta tag deve essere aggiunto prima di qualsiasi link a CSS, file JavaScript, ecc che sono anche nel vostro <head> per funzionare correttamente anche se (solo altri tag <meta> o il tag <title> può venire prima).

Un'alternativa è quella di aggiungere una voce di registro per:

  

HKLM> Software> Microsoft> Internet Explorer> principale> FeatureControl> FEATURE_BROWSER_EMULATION

E lì dentro aggiungere 'myApplicationName.exe' con il valore '9000' per forzare il controllo WebBrowser per visualizzare le pagine in modalità IE9. Anche se ci sono altri valori è possibile utilizzare anche troppo, nota che questi documenti non sono del tutto accurati in quanto non sembra possibile ottenere una pagina per il rendering in modalità IE 8 qualsiasi valore che si usa.

L'aggiunta della chiave di registro per lo stesso percorso in HKCU invece di HKLM funziona anche - questo è utile come scrivendo a HKLM richiede privilegi di amministratore in cui come HKCU non lo fa.

Grazie a Dio ho trovato questo. Quanto segue è estremamente importante:

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

Senza questo, nessuno dei rapporti ero stato generazione avrebbe funzionato dopo IE9 installare pur avendo lavorato molto in IE8. Avrebbero appaiono correttamente in un controllo del browser web, ma ci sarebbero lettere mancanti, sollevato con lo spazio bianco, ecc, quando ho chiamato .Stampa (). Erano solo HTML di base che dovrebbe essere in grado di essere reso anche in mosaico. eh Non so perché la modalità di compatibilità di IE7 stava andando in tilt. In particolare, si potrebbe .print () la stessa pagina 5 volte e l'abbiano in essere manca lettere differenti ogni volta. Sarebbe persino riportare in output PDF, quindi è sicuramente il browser.

Una nota su Windows a 64 bit che sembra inciampare un paio di persone. Se la vostra applicazione è in esecuzione in Windows a 64 bit, è probabile che sia necessario impostare il valore DWORD sotto [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION] invece.

Giusto per essere completa ...

Per 32 bit OS è necessario aggiungere una voce del Registro di:

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

******* ******* O

Per 64 bit OS è necessario aggiungere una voce del Registro di:

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

Questa voce deve essere un DWORD, con il nome è il nome del file eseguibile, che ospita il controllo Webbrowser; cioè:.

myappname.exe (non usare "Contoso.exe" come nella pagina Web MSDN ... è solo un nome di segnaposto)

Poi dare un valore DWORD, secondo la tabella su:

http: // MSDN. microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

Ho cambiato a 11001 decimale o esadecimale 0x2AF9 --- (IE 11 EMULAZIONE) dal momento che non è il valore di default. (Se si dispone di IE 11 installato - o qualunque versione)

Questo articolo MSDN contiene note su diverse altre modifiche del Registro di sistema che influenza il comportamento di Internet Explorer browser web.

So che questo thread è vecchio e ci sono già risposte esaurienti.

Nel caso in cui non si conosce questo:

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

Non c'è bisogno di codificare il numero di versione di IE come

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

Sono assolutamente d'accordo con la soluzione fornita, ma credo che un po 'di precisazione è importante a mio avviso, potrebbe essere necessario.

Per ogni processo (leggi anche: vshost.exe, yourWinformApplication.exe.svchost, o il nome del vostro applicazione.exe) che sarà necessario aggiungere un valore DWORD con il valore fornito, nel mio caso lascio 9000 (in decimale ) nel nome dell'applicazione e senza intoppi e uno script privo di errori.

L'errore più comune è quello di credere che sia necessario aggiungere "contoso.exe" AS IS e pensare che tutto il lavoro!

Si, uso di controllo del browser web qualsiasi versione di IE che avete installato. Questo significa, naturalmente, che se si esegue l'applicazione su un computer con IE 8 poi il IE 9 caratteristiche che dipendono non saranno disponibili.

Sono venuto a questa soluzione e non ha funzionato per me! Perché stavo usando 64bit ho dovuto sostituire il Registro di sistema:

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

Al posto di quello di cui tutti parlano:

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

Mi è piaciuto il (C #) Codice di seguito, che definisce le impostazioni del Registro per la vostra applicazione. Non sono sicuro se è tagliato dopo l'installazione anche se sono necessarie autorizzazioni. Per me è risolto un problema con WebSocket non essere disponibili all'interno di un controllo WebBrowser in WPF.

C # browser web Ajax chiamata

Ho avuto lo stesso problema, e le risposte del Registro di qui non ha funzionato.

Ho avuto un controllo del browser nella nuova versione del mio programma che ha funzionato bene su XP, non è riuscito in Windows 7 (64 bit). La vecchia versione ha lavorato sia su XP e Windows 7.

La pagina web visualizzata nel browser utilizza qualche strana plug-in per la visualizzazione di mappe vecchie SVG (Penso che sia un applet Java).

Si scopre che il problema è legato alla protezione DEP in Windows 7.

Le vecchie versioni di dotnet 2 non ha impostato il flag DEP richiesto nel exe, ma dal dotnet 2, SP 1 in poi lo ha fatto (sì, il comportamento compilazione e il comportamento, quindi, tempo di esecuzione exe cambiata a seconda che la macchina si è compilato su , simpatico ...).

E 'documentato su un blog MSDN NXCOMPAT e il compilatore C # . Per citare:. Questo sarà senza dubbio sorprenderà alcuni sviluppatori ... scaricare un quadro di servizi pack, ricompilazione, eseguire la vostra applicazione, e il gioco è ora ottenere eccezioni IP_ON_HEAP

L'aggiunta dei seguenti per la costruzione posta in Visual Studio, trasforma DEP off per l'exe, e tutto funziona come previsto:

all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"

Per quanto riguarda la risposta accettata di Whitehawk. Sto solo cercando di aggiungere un po 'le mani su esperienza. Cercavo solo di aggiungere commenti, ma così si lamenta è troppo lungo.

In sostanza, senza IE 9 installato, l'interruttore FEATURE_BROWSER_EMULATION Registro di sistema non funziona affatto.

Per esempio, la mia esperienza oggi mi stava cercando di ottenere il .net WebControl al lavoro con la modalità IE10 perché uno html sto cercando di rendere non funziona con .netControl sotto VS2012, e non anche il lavoro quando si carica il html IE8 direttamente, ancora css non sarà visualizzata correttamente (anche dopo dico permettere contenuto bloccato). Ma ho provato lo stesso ok html con IE10 su win 8 macchina di un amico. È per questo che sto cercando di impostare la modalità .net WebControl di IE 10, ma continua a non aver ...

Ora ho pensato che questo è bcos mia vittoria 7 macchina solo è installato IE8, quindi indipendentemente da quale valore che ho impostato allo switch FEATURE_BROWSER_EMULATION (valore di IE9, IE10 IE11), semplicemente non funziona affatto!

Poi ho scaricato e installato IE 10 sulla mia macchina Win 7. Ancora non funzionerà, poi ho aggiunto il FEATURE_BROWSER_EMULATION, ha iniziato a lavorare!

Inoltre ho notato che indipendentemente valore che ho impostato, anche impostarlo per il valore 0 per impostazione predefinita, il WebControl è ancora utilizzando IE modalità 10 che lavora ancora per me.

Quindi, per riassumere, Se si dispone di IE X installato, ma volete che il vostro Net WebControl al lavoro sotto IE (X + N) N> 0 Modo, due cose è necessario fare:

  1. Vai al sito MS & scaricare e installare IE (X + N) sulla propria macchina, è necessario riavviare il sistema dopo l'installazione.

  2. applicare la risposta di Whitehawk.

In sostanza: Per controllare il valore di questa funzionalità utilizzando il Registro di sistema, aggiungere il nome del file eseguibile per la seguente impostazione e impostare il valore in modo che corrisponda l'impostazione desiderata.

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 versioni successive. La caratteristica FEATURE_BROWSER_EMULATION definisce la modalità di emulazione di default per Internet Explorer e supporta i seguenti valori.

Valore Descrizione

  • 11001 (0x2AF9 Internet Explorer 11. Le pagine web vengono visualizzate in IE11 modalità di bordo, indipendentemente dalla direttiva! DOCTYPE.

    11000 (0x2AF8) IE11. Le pagine web che contengono basata su standard! DOCTYPE direttive sono visualizzati in modalità di bordo IE11. Il valore di default per IE11.

    10001 (0x2711) di Internet Explorer 10. Le pagine web vengono visualizzate in IE10 modalità standard, indipendentemente dalla direttiva! DOCTYPE.

    10000 (0x02710) di Internet Explorer 10. pagine web che contengono basato su standard! DOCTYPE direttive vengono visualizzate in IE10 Standards modalità. Il valore di default per Internet Explorer 10.

    9999 (0x270F) Windows Internet Explorer 9. Le pagine web vengono visualizzati in Modalità IE9 standard, indipendentemente dalla direttiva! DOCTYPE.

    9000 (0x2328) di Internet Explorer 9. pagine web che contengono basato su standard! DOCTYPE direttive vengono visualizzati in modalità IE9. Il valore di default per Internet Explorer 9.

    Importante In Internet Explorer 10, pagine web che contengono basato su standard! DOCTYPE direttive vengono visualizzate in IE10 Standards modalità.

    8888 (0x22B8) Le pagine web vengono visualizzati in modalità IE8 Standards, indipendentemente dalla direttiva! DOCTYPE.

    8000 (0x1F40) pagine web che contengono basate su standard! DOCTYPE direttive vengono visualizzati in modalità IE8. Il valore di default per Internet Explorer 8 Importante In Internet Explorer 10, pagine web che contengono basato su standard! DOCTYPE direttive vengono visualizzate in IE10 Standards modalità.

    7000 (0x1B58) pagine web che contengono basate su standard! DOCTYPE direttive vengono visualizzati in modalità IE7 Standards. Il valore di default per le applicazioni che ospita il controllo WebBrowser.

qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top