Die IE9- "Version" des WebBrowser-Steuerelements besteht wie die IE8-Version aus mehreren Browsern in einem. Im Gegensatz zur IE8-Version haben Sie etwas mehr Kontrolle über den Rendermodus innerhalb der Seite, indem Sie den Doctype ändern. Um den Browsermodus zu ändern, müssen Sie natürlich Ihre Registrierung wie in der vorherigen Antwort festlegen. Hier ist ein Registrierungsdateifragment für 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
Hier ist der komplette Satz von Codes:
- 9999 (0x270F) - Internet Explorer 9. Webseiten werden unabhängig von der Anweisung! DOCTYPE im IE9-Standardmodus angezeigt.
- 9000 (0x2328) - Internet Explorer 9. Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE9-Modus angezeigt.
- 8888 (0x22B8) - Webseiten werden unabhängig von der Anweisung! DOCTYPE im IE8-Standardmodus angezeigt.
- 8000 (0x1F40) - Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE8-Modus angezeigt.
- 7000 (0x1B58) - Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE7-Standardmodus angezeigt.
Die vollständigen Dokumente:
http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
und 64 BitHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
.Das WebBrowser-Steuerelement verwendet die von Ihnen installierte IE-Version. Aus Kompatibilitätsgründen werden Seiten jedoch standardmäßig im IE7-Standardmodus gerendert.
Wenn Sie die neuen IE9-Funktionen nutzen möchten, sollten Sie das Meta-Tag
<meta http-equiv="X-UA-Compatible" content="IE=9" >
in das<head>
Tag Ihrer HTML-Seite einfügen.Dieses Meta-Tag muss hinzugefügt werden, bevor Links zu CSS, JavaScript-Dateien usw., die sich ebenfalls in Ihrem befinden
<head>
, ordnungsgemäß funktionieren (nur andere<meta>
Tags oder das<title>
Tag können davor stehen).Eine Alternative besteht darin, einen Registrierungseintrag hinzuzufügen zu:
Fügen Sie dort 'myApplicationName.exe' mit dem Wert '9000' hinzu, um das WebBrowser-Steuerelement zu zwingen, Seiten im IE9-Modus anzuzeigen. Obwohl es auch andere Werte gibt, die Sie verwenden können , beachten Sie, dass diese Dokumente nicht ganz korrekt sind, da es nicht möglich zu sein scheint, eine Seite im IE 8-Modus zu rendern, unabhängig davon, welchen Wert Sie verwenden.
Das Hinzufügen des Registrierungsschlüssels zu demselben Pfad in HKCU anstelle von HKLM funktioniert ebenfalls. Dies ist nützlich, da für das Schreiben in HKLM Administratorrechte erforderlich sind, während dies bei HKCU nicht der Fall ist.
quelle
Gott sei Dank habe ich das gefunden. Folgendes ist äußerst wichtig:
Ohne dies würde keiner der von mir erstellten Berichte nach der Installation von IE9 funktionieren, obwohl er in IE8 hervorragend funktioniert hat. Sie würden in einem Webbrowser-Steuerelement ordnungsgemäß angezeigt, aber es fehlten Buchstaben, aufgebockte Leerzeichen usw., wenn ich .Print () aufrief. Sie waren nur einfaches HTML, das auch in Mosaic gerendert werden sollte. heh Ich bin mir nicht sicher, warum der IE7-Kompatibilitätsmodus durcheinander geraten ist. Insbesondere könnten Sie .Print () dieselbe Seite 5 Mal drucken und jedes Mal andere Buchstaben vermissen lassen. Es würde sich sogar auf die PDF-Ausgabe übertragen, also ist es definitiv der Browser.
quelle
Ein Hinweis zu 64-Bit-Windows, der ein paar Leute auszulösen scheint. Wenn Ihre App unter 64-Bit-Windows ausgeführt wird, müssen Sie das DWORD wahrscheinlich stattdessen unter [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION] festlegen.
quelle
Nur um vollständig zu sein ...
Für 32-Bit-Betriebssysteme müssen Sie einen Registrierungseintrag hinzufügen zu:
*******ODER*******
Für 64-Bit-Betriebssysteme müssen Sie einen Registrierungseintrag hinzufügen zu:
Dieser Eintrag muss ein Eintrag sein
DWORD
, bei dem der Name der Name Ihrer ausführbaren Datei ist, die das Webbrowser-Steuerelement hostet. dh:myappname.exe (VERWENDEN SIE "Contoso.exe" NICHT wie auf der MSDN-Webseite ... es ist nur ein Platzhaltername)
Geben Sie dann einen
DWORD
Wert gemäß der folgenden Tabelle ein:http://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation
Ich habe auf 11001 dezimal oder 0x2AF9 hex --- (IE 11 EMULATION) geändert, da dies nicht der DEFAULT-Wert ist (wenn Sie IE 11 installiert haben - oder welche Version auch immer).
Dieser MSDN-Artikel enthält Hinweise zu mehreren anderen Registrierungsänderungen, die sich auf das Verhalten des Internet Explorer-Webbrowsers auswirken.
quelle
Ich weiß, dass dieser Thread alt ist und es bereits umfassende Antworten gibt.
Nur für den Fall, dass Sie das nicht wissen:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
Sie müssen die IE-Versionsnummer nicht als fest codieren
<meta http-equiv="X-UA-Compatible" content="IE=9" >
quelle
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
das beurteilen kann, wird der webBrowser im neuesten IE-Modus geladen , wenn die Webseite im Header enthalten ist. Warum gibt es mehr als 90 positive Stimmen für Mikels Antwort? weil seine Lösung funktioniert. Das Ändern der Registrierung ist nicht erforderlich, wenn Sie die Webseite ändern können.Ich stimme der angebotenen Lösung voll und ganz zu, aber ich denke, eine kleine Klarstellung ist wichtig, ich denke, sie könnte notwendig sein.
Für jeden Prozess (lesen Sie auch: vshost.exe, yourWinformApplication.exe.svchost oder den Namen Ihrer application.exe), der ein DWORD mit dem angegebenen Wert hinzufügen muss, belasse ich in meinem Fall 9000 (dezimal) in der Anwendung Name und reibungsloses und fehlerfreies Skript.
Der häufigste Fehler ist zu glauben, dass es notwendig ist, "contoso.exe" wie besehen hinzuzufügen und zu denken, dass alles funktioniert!
quelle
Ja, das WebBrowser-Steuerelement verwendet die von Ihnen installierte IE-Version. Dies bedeutet natürlich, dass die IE 9-Funktionen, von denen Sie abhängig sind, nicht verfügbar sind, wenn Sie Ihre Anwendung auf einem Computer mit IE 8 ausführen.
quelle
Ich bin zu dieser Lösung gekommen und es hat bei mir nicht funktioniert! Da ich 64bit verwendete, musste ich die Registrierung ersetzen:
Anstelle desjenigen, über den alle reden:
quelle
Ich mochte den (C #) Code im Folgenden, der die Registrierungseinstellungen für Ihre App festlegt. Ich bin mir nicht sicher, ob es nach der Installation abgeschnitten wird, wenn Berechtigungen erforderlich sind. Für mich wurde ein Problem behoben, bei dem WebSocket in einem WebBrowser-Steuerelement in WPF nicht verfügbar war.
C # Webbrowser Ajax-Aufruf
quelle
Ich hatte das gleiche Problem und die Registrierungsantworten hier funktionierten nicht.
Ich hatte ein Browser-Steuerelement in der neuen Version meines Programms, das unter XP einwandfrei funktionierte und unter Windows 7 (64 Bit) fehlschlug. Die alte Version funktionierte sowohl unter XP als auch unter Windows 7.
Die im Browser angezeigte Webseite verwendet ein seltsames Plugin zum Anzeigen alter SVG-Karten (ich denke, es ist ein Java-Applet).
Es stellt sich heraus, dass das Problem mit dem DEP-Schutz in Windows 7 zusammenhängt.
Alte Versionen von dotnet 2 haben das DEP-Pflichtflag in der exe nicht gesetzt, aber ab dotnet 2, SP 1 (yep, das Kompilierungsverhalten und damit das Laufzeitverhalten von exe haben sich je nach dem Computer geändert, auf dem Sie kompiliert haben, nett. ..).
Es ist in einem MSDN-Blog NXCOMPAT und im C # -Compiler dokumentiert . Um es zu zitieren: Dies wird zweifellos einige Entwickler überraschen ... Laden Sie ein Framework Service Pack herunter, kompilieren Sie es neu, führen Sie Ihre App aus, und Sie erhalten jetzt IP_ON_HEAP-Ausnahmen.
Wenn Sie dem Post-Build in Visual Studio Folgendes hinzufügen, wird DEP für die Exe deaktiviert und alles funktioniert wie erwartet:
/headers
zeigt die DEP-Einstellung auf einer Exe an.quelle
In Bezug auf Whitehawks akzeptierte Antwort. Ich versuche nur, ein bisschen praktische Erfahrung hinzuzufügen. Ich habe nur versucht, einen Kommentar hinzuzufügen, aber SO beschwert sich, dass es zu lang ist.
Grundsätzlich funktioniert der Registrierungsschalter FEATURE_BROWSER_EMULATION ohne installierten IE 9 überhaupt nicht.
Zum Beispiel habe ich heute aus eigener Erfahrung versucht, das .net-Webcontrol mit dem IE10-Modus zum Laufen zu bringen, da ein HTML, das ich rendern möchte, unter VS2012 nicht mit .netControl funktioniert und nicht einmal funktioniert, wenn ich das HTML in IE8 lade Direkt wird CSS immer noch nicht richtig gerendert (auch wenn ich sage, dass blockierte Inhalte zugelassen sind). Aber ich habe das gleiche HTML ok mit IE10 auf der Win 8-Maschine eines Freundes getestet. Aus diesem Grund versuche ich, das .net webControl in den IE 10-Modus zu versetzen, aber es schlägt immer wieder fehl ...
Jetzt dachte ich, dies ist bcos, auf meinem Win 7-Computer ist nur IE8 installiert. Unabhängig davon, welchen Wert ich auf den Schalter FEATURE_BROWSER_EMULATION gesetzt habe (Wert auf IE9, IE10 IE11), funktioniert dies überhaupt nicht!
Dann habe ich IE 10 heruntergeladen und auf meinem Win 7-Computer installiert. Trotzdem wird es nicht funktionieren, dann habe ich FEATURE_BROWSER_EMULATION hinzugefügt, es hat angefangen zu funktionieren!
Außerdem habe ich festgestellt, dass das webControl unabhängig davon, welchen Wert ich festgelegt habe, standardmäßig sogar den Wert 0 verwendet, der immer noch für mich funktioniert.
Zusammenfassend lässt sich sagen, dass Sie ZWEI Dinge tun müssen , wenn Sie IE X installiert haben, aber .Net webControl unter IE (X + N) N> 0 modo funktionieren soll:
Gehen Sie zur MS-Website und laden Sie den IE (X + N) herunter und installieren Sie ihn auf Ihrem Computer. Nach der Installation müssen Sie einen Neustart durchführen.
wende die Antwort von whitehawk an.
Grundsätzlich gilt: Um den Wert dieser Funktion mithilfe der Registrierung zu steuern, fügen Sie der folgenden Einstellung den Namen Ihrer ausführbaren Datei hinzu und stellen Sie den Wert so ein, dass er der gewünschten Einstellung entspricht.
Windows Internet Explorer 8 und höher. Die Funktion FEATURE_BROWSER_EMULATION definiert den Standardemulationsmodus für Internet Explorer und unterstützt die folgenden Werte.
Wert Beschreibung
11001 (0x2AF9 Internet Explorer 11. Webseiten werden im IE11-Edge-Modus angezeigt, unabhängig von der Anweisung! DOCTYPE.
11000 (0x2AF8) IE11. Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE11-Edge-Modus angezeigt. Standardwert für IE11.
10001 (0x2711) Internet Explorer 10. Webseiten werden unabhängig von der Anweisung! DOCTYPE im IE10-Standardmodus angezeigt.
10000 (0x02710) Internet Explorer 10. Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE10-Standardmodus angezeigt. Standardwert für Internet Explorer 10.
9999 (0x270F) Windows Internet Explorer 9. Webseiten werden unabhängig von der Anweisung! DOCTYPE im IE9-Standardmodus angezeigt.
9000 (0x2328) Internet Explorer 9. Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE9-Modus angezeigt. Standardwert für Internet Explorer 9.
Wichtig In Internet Explorer 10 werden Webseiten mit standardbasierten! DOCTYPE-Anweisungen im IE10-Standardmodus angezeigt.
8888 (0x22B8) Webseiten werden im IE8-Standardmodus angezeigt, unabhängig von der Anweisung! DOCTYPE.
8000 (0x1F40) Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE8-Modus angezeigt. Standardwert für Internet Explorer 8 Wichtig In Internet Explorer 10 werden Webseiten mit standardbasierten! DOCTYPE-Anweisungen im IE10-Standardmodus angezeigt.
7000 (0x1B58) Webseiten mit standardbasierten! DOCTYPE-Anweisungen werden im IE7-Standardmodus angezeigt. Standardwert für Anwendungen, die das WebBrowser-Steuerelement hosten.
Vollständige Referenz hier
quelle
without IE 9 installed, the registry switch EATURE_BROWSER_EMULATION won't work AT ALL.
- das ist falsch. Ich habe nur IE8 installiert und kann den Schalter perfekt verwenden, um den Webbrowser in verschiedene Rendering-Modi zu versetzen.