Nella mia app WinForms, se utilizzo un controllo WebBrowser, sembra essere forzato in modalità compatibilità. Come posso disabilitarlo e farlo funzionare allo stesso modo di IE standalone sulla mia macchina durante la navigazione nello stesso sito?
Non c’è modo di farlo se non configurare le seguenti impostazioni del registro:
HKLM \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION
o se è un’app a 32 bit su Windows a 64 bit:
HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION`
Queste impostazioni non vengono visualizzate nel controllo WebBrowser
.
Per ulteriori informazioni, vedere:
Quale modalità di compatibilità IE utilizza il controllo webbrowser?
Nel caso in cui il link muoia:
Si crea un valore DWORD
corrispondente al nome del file eseguibile e si imposta questo valore su uno di:
7000: le pagine contenenti le direttive
basate su standard vengono visualizzate in modalità IE7.
8000: le pagine contenenti le direttivebasate su standard vengono visualizzate in modalità IE8
8888: le pagine vengono sempre visualizzate in modalità IE8, indipendentemente dalla direttiva. (Questo ignora le eccezioni elencate in precedenza.)
9000: usa le impostazioni di IE9!
9999: forza IE9
Per esempio:
Dai miei esperimenti con IE9:
9000: eredita la modalità di compatibilità impostata nell’impostazione della modalità di compatibilità globale di IE9. vale a dire:
9999: forza IE9 fuori dalla modalità di compatibilità nell’applicazione host indipendentemente dall’impostazione della modalità di compatibilità configurata a livello globale
Probabilmente la tua applicazione dovrebbe rilevare quale versione di IE sottostante è disponibile per determinare quale valore utilizzare:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Versione
o se è un’app a 32 bit su Windows a 64 bit:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Versione
C’è anche questo vecchio articolo da quando è uscito IE8 che vale la pena dare un’occhiata:
Ulteriori miglioramenti all’estensibilità IE8
È anche ansible configurare queste impostazioni in base all’utente per:
HKCU \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION
Sebbene non sia quello che hai chiesto, se possiedi il sito puoi aggiungere quanto segue nella sezione head dell’Html .:
Vedi: http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
Ecco il magro del problema: se un utente triggers la Visualizzazione Compatibilità in IE8, sostituirà tutte le direttive della pagina. Pertanto, qualsiasi pagina o variabile di server che si tenta di utilizzare non riuscirà a impedire a IE di passare a Visualizzazione Compatibilità se l’utente ha triggersto questa funzionalità in IE. La maggior parte delle persone pensa che le direttive delle pagine o qualche tipo di variabile del server di intestazione segreta risolverà il sito. No. Nessuna di queste soluzioni funziona se l’impostazione è stata sovrascritta manualmente. Lo so, non è bello. Quindi il seguente funzionerà solo se l’utente non ha abilitato la funzionalità di visualizzazione della compatibilità.
Per chiarire i passaggi per modificare questo nel registro modificare la chiave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Quindi aggiungere un nuovo DWORD chiamato iexplore.exe . Per fare ciò, fare clic con il tasto destro del mouse e selezionare Nuovo> DWORD. Dare a DWORD il valore decimale di 9999 . Ciò renderà tutti i siti renderizzati senza visualizzazione di compatibilità. Per abilitare nuovamente la Visualizzazione Compatibilità, eliminare questo DWORD. Inoltre, se desideri automatizzare questa modifica ed eseguire uno script batch sul tuo sistema, controlla lo script di Michal M.
So che questa è una vecchia domanda, ma c’è un modo per inserire un’intestazione nel controllo webbrowser in Visual Basic 2010 e versioni successive per disabilitare la visualizzazione della compatibilità:
La prima cosa che devi fare è catturare la pagina web corrente e quindi sostituire il tag head come segue:
Sub compatible() ' --- simple routine to disable compatible view. Dim the_url As String Dim message As String Dim theReplacement As String Dim oldMessage As String the_url = WebBrowser1.Url.OriginalString WebBrowser1.Navigate(the_url) message = "" + Chr(13) + Chr(10) + "" + Chr(13) + Chr(10) + " " oldMessage = WebBrowser1.DocumentText.ToString() theReplacement = Replace(oldMessage, "", message) WebBrowser1.DocumentText = theReplacement End Sub
Questo codice aggiunge le due seguenti righe nel controllo webbrowser: