2012-04-19 15 views
6

Sto costruendo un software che richiede un componente WebBrowser. Purtroppo non mostrerà la mia pagina correttamente.Componente WebBrowser che non mostra CSS 3

mio contenuto utilizza questo stile CSS:

.content_mid{ 
background-image:url(http://img.awesome-o.net/Content_Mid.png); 
background-size: 100% 100%; 
vertical-align:text-top; 
padding-left: 40px; 
padding-right:20px; 
min-height:400px; 
} 

Dal momento che ho già scoperto che la componente WebBrowser utilizza la versione installata di interwebs esploratore, ho controllato il codice HTML in Internet Explorer, e si vede perfettamente.

Qui si vede che cosa si vede su IE:

enter image description here

ed ecco come viene visualizzato sul componente browser web:

enter image description here

Così, ho controllato la versione del browser:

Debug.WriteLine("WebBrowser version: " + webBrowser1.Version); 
output: WebBrowser version: 9.0.8112.16443 

Quindi dovrebbe andar bene, credo.

+0

Si prega di non inserire il prefisso vostri titoli con "C#" e così via. Ecco a cosa servono i tag. –

+0

OK, scusa prima domanda – RoXaS

risposta

9

Solo per ulteriore riferimento ad altre persone che necessitano di questo:

Prima di tutti: grazie a Boo & Lex Li Per avermi aiutato a trovare la risposta r alla mia domanda.

è necessario impostare un certo Registro di sistema per il giusto valore:

Ci sono due diversi set di chiavi per 32 bit e applicazioni a 64 bit.

32 bit:

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

Value Key: yourapplication.exe 

64 bit:

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

Value Key: yourapplication.exe 

Il valore per impostare questa chiave è (tratto da MSDN qui) come valori decimali:

9999 (0x270F) 
Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive. 

9000 (0x2328) 
Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. 

8888 (0x22B8) 
Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive. 

8000 (0x1F40) 
Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. 

7000 (0x1B58) 
Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. 

Anche il difficile MSDn afferma che 9000 è il valore assegnato automaticamente. Apperentemente questo non è semplicemente vero.

Di seguito è possibile trovare il codice su come aggiungere queste chiavi al registro. Per favore non che la tua applicazione abbia un nome di processo differente durante il debug.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true); 
     if (key != null) 
     { 
      key.SetValue("YourApplicationName.exe", 9000, RegistryValueKind.DWord); 
     } 

     key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true); 
     if (key != null) 
     { 
      key.SetValue("YourApplicationName.exe", 9000, RegistryValueKind.DWord); 
     } 

Così ringrazia tutti e buona fortuna

Edit: Controllo account utente dovrebbe essere spento per fare questo lavoro di codice.

11

This page descrive come forzare il controllo del browser a utilizzare una modalità di rendering specifica.

Si può anche provare questo tipo di documento

<!DOCTYPE html> 

E/O questo elemento meta nell'elemento testa

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
+0

Grazie per la tua risposta, solo una cosa che non capisco. "Il valore predefinito per Internet Explorer 9 è 9000." "Descrizione: \t Internet Explorer 9. Pagine Web contenenti direttive basate su standard! DOCTYPE vengono visualizzate in modalità IE9." Sembra il valore giusto per me o pensi diversamente? – RoXaS

+0

La tua pagina definisce un doctype? –

+0

Sì, sì: RoXaS

0

È inoltre possibile aggiungere un'intestazione di risposta all'applicazione IIS Chiamata X-UA-Compatibile con un valore di IE = Bordo. Io tendo a aggiungerlo al mio web.config

+0

Grazie per la risposta, ma temo che si tratti di un'applicazione Windows Form. Non c'è web.config. – RoXaS

Problemi correlati