Come disattivare a livello di programmazione la modalità stranezze nel controllo IE8 WebBrowser?
Domanda
Voglio usare IE8 come controllo WebBrowser in un'applicazione C #. Come posso disabilitare & Quot; quirks mode & Quot; e forzare IE a conformarsi agli standard (nella misura in cui è implementato)?
Soluzione
Penso che il problema che stai affrontando sia descritto in IEBlog: modalità di rendering del controllo WebBrowser in IE8 :
Mentre i webmaster possono facilmente modificarsi il loro sito per renderizzare correttamente nel nuova versione di IE, molti software i fornitori non hanno le risorse per espelle istantaneamente nuove versioni di le loro applicazioni con aggiornate pagine interne. Al fine di garantire che questi esistenti le domande rimangono funzionanti, IE8 esegue il rendering delle pagine in esecuzione all'interno istanze del controllo WebBrowser in Modalità standard IE7 per impostazione predefinita.
Qui dovrei notare che i commenti sulla pagina dicono che quanto sopra non è corretto e che " IE8 esegue il rendering delle pagine in esecuzione all'interno di istanze del controllo WebBrowser in Modalità IE7 Strict O Modalità Quirks per impostazione predefinita , a seconda del tipo di pagina. "
La soluzione è la seguente:
Quando un eseguibile carica un'istanza del controllo WebBrowser esegue la scansione di registro per verificare se il file eseguibile vuole standard IE7 o IE8 Modalità standard.
...
Per eseguire l'inserimento in modalità standard IE8 il seguente valore di registro:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]
"MyApplication.exe"=dword:13880
In entrambi questi casi, MyApplication.exe deve essere sostituito con il nome dell'eseguibile che eseguirà i controlli WebBrowser in una modalità specificata.
Quindi suona come " programmatico " la soluzione è scrivere una chiave nel registro dicendo che si desidera la modalità standard IE8 per WebBrowser
controlli nella propria applicazione specifica.
Altri suggerimenti
Se non si desidera utilizzare la tecnica della chiave di registro, è possibile inserire il seguente tag:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Il " contenuto " l'attributo forza il rendering in varie modalità.
L'ultima volta che ho sentito dire che IE8 avrebbe usato modalità standard di default . Stai riscontrando un problema reale con l'ultima versione beta? Sei sicuro che il rendering sia in modalità strane per cominciare, senza che un utente colpisca esplicitamente pulsante di visualizzazione della compatibilità ?
Si noti che sono state apportate alcune modifiche dalla versione beta, le chiavi di registro sono state rinominate ecc. Leggi di più qui .
Questo ha un codice reale per farlo a livello di codice e gestisce fino a IE11 finora: