9

sto ospitando MSIE in una forma WinForms. Sfortunatamente, insiste nell'esecuzione in modalità di compatibilità, indipendentemente dal fatto che fornisca una pagina che viene eseguita in modalità IE8 in IE stand-alone. L'effetto di ciò è che alcuni contenuti che vengono visualizzati correttamente in MSIE autonomo risultano completamente disallineati e incasinati nel controllo ospitato.controllo MSIEs WebBrowser ospitato in WinForms applicazione funziona in modalità compatibilità

Oltre al tipo di documento ecc., C'è un modo magico per dire al browser che voglio che il rendering della pagina sia come se lo avessi caricato in MSIE standalone?

Non voglio utilizzare l'override della chiave del Registro di sistema (http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx) perché il mio modulo fa parte di un componente aggiuntivo per un'altra app. Non voglio modificare il comportamento di IE per l'app principale e non voglio modificarlo per altri componenti aggiuntivi in ​​esecuzione in quell'app. Voglio solo che funzioni all'interno del browser ospitato nel modulo my, non in tutta l'app e non in tutto il processo.

risposta

10

non ho ancora testato questo, ma come circa usando il tag META, insieme con l'attributo HTTP-EQUIV, per impostare il valore X-UA-COMPATIBLE-IE=8, che indica al browser web per visualizzare una pagina in IE 8 modalità standard. Un esempio potrebbe essere:

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

Da questa linea nel seguente article sembra che questo dovrebbe funzionare.

Per impostazione predefinita, le applicazioni che ospitano il controllo WebBrowser aperti pagine basati su standard in modalità IE7 a meno che la pagina contiene un'intestazione X-UA-Compatible appropriata. È possibile modificare ciò aggiungendo il nome del file eseguibile dell'applicazione a la chiave di controllo FEATURE_BROWSER_EMULATION e impostando il valore di conseguenza.

+0

Grazie. Ho aggiunto il meta tag X-UA-Compatible. Sto ancora cercando di confermare se funziona ... – KristoferA

+0

Qual è stato il risultato dell'uso del meta tag? Sono stato in grado di testarlo e ha funzionato. – Garett

+0

Finora ho un risultato di test non conclusivo sul meta tag.Inconcludente perché dopo aver applicato il tag è stato reso correttamente, ma dopo aver cambiato il meta tag in IE7 è stato comunque reso correttamente, e dopo averlo rimosso di nuovo è ancora reso correttamente. In altre parole, dopo il primo round di test non ero in grado di riprodurre il bug di rendering che stavo vedendo prima di usare il meta tag. Ho bisogno di fare altri test ma non ho ancora avuto il tempo di farlo ... – KristoferA

3

Per modificare il comportamento predefinito del controllo Web Browser in esecuzione nell'applicazione per corrispondere a ciò che fa IE per sé, è necessario impostare il FEATURE_BROWSER_EMULATION chiave di controllo funzionalità.

Per esempio, è possibile simulare il comportamento di IE8 (consentendo siti per rendere in modalità standard di IE8) come segue.

All'interno HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl

Creare una nuova chiave denominata FEATURE_BROWSER_EMULATION

Dentro quella chiave, aggiungere un nuovo REG_DWORD con valore con la nome dell'eseguibile dell'applicazione. Es .:

"YourApp.exe" = dword 8000 (Hex: 0x1F40) 

Ulteriori dettagli sono a: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

+0

Il problema è che la mia app è in realtà un componente aggiuntivo in esecuzione in un'altra app. Anche l'app principale ospita MSIE, così come altri componenti aggiuntivi. Aggiungendo la chiave del registro di controllo delle funzionalità, cambierò il comportamento dell'applicazione e introdurrò comportamenti/rendering indesiderati. Voglio cambiarlo solo per il modulo in cui ospito MSIE lasciando tutti gli altri browser in esecuzione nello stesso eseguibile principale intatto. – KristoferA

+2

Sfortunatamente, quello non è uno scenario supportato. – EricLaw

+0

Ok, grazie. E riguardo alle versioni future di IE, agiranno anche come se fossero una versione precedente quando sono ospitate in un altro processo? Devo dire che trovo strano che IE8 non si comporti come IE8 di default, e quindi usi il registro di sistema per chi vuole che si comporti come IE7/6/5/etc – KristoferA