Fehlerbehebung C# Webbrowser -Steuerung mit Ajax
Die C# WebBrowser
-Kontrolle im Gegensatz zu einer vollständigen Internet -Explorer -Instanz erfährt häufig bei Ajax -Aufrufen einfrieren. In diesem Artikel wird eine Lösung untersucht, die sich auf Skriptkompatibilität konzentriert.
Probleme mit Skriptkompatibilitätsproblemen
Die Wurzel des Problems liegt häufig in Diskrepanzen zwischen dem Skriptmotor des WebBrowser
-Kontrollers und dem eines Standard -IE -Browsers. Um dies zu mildern, nutzen wir die Funktionssteuerung, um die Steuerung so zu konfigurieren, dass das Verhalten von IE genauer nachgeahmt wird. Die Einstellung FEATURE_BROWSER_EMULATION
ist hier der Schlüssel.
Implementierung der Funktionssteuerung (Registrierungsmodifikation)
Der folgende Code -Snippet zeigt, wie die Funktionssteuerung implementiert werden kann, ohne Administratorrechte zu benötigen:
<code class="language-csharp">private void SetBrowserFeatureControlKey(string feature, string appName, uint value) { using (var key = Registry.CurrentUser.CreateSubKey( $@"Software\Microsoft\Internet Explorer\Main\FeatureControl\{feature}", RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(appName, (uint)value, RegistryValueKind.DWord); } }</code>
Optimale Feature -Einstellungen
Basierend auf den Tests werden diese Funktionen für die Funktionssteuerung empfohlen, um die AJAX -Leistung innerhalb der WebBrowser
Steuerung zu verbessern:
<code>FEATURE_BROWSER_EMULATION = 11000 FEATURE_AJAX_CONNECTIONEVENTS = 1 FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION = 1 FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS = 1 FEATURE_DOMSTORAGE = 1 FEATURE_GPU_RENDERING = 1 FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI = 0 FEATURE_DISABLE_LEGACY_COMPRESSION = 1 FEATURE_LOCALMACHINE_LOCKDOWN = 0 FEATURE_BLOCK_LMZ_OBJECT = 0 FEATURE_BLOCK_LMZ_SCRIPT = 0 FEATURE_DISABLE_NAVIGATION_SOUNDS = 1 FEATURE_SCRIPTURL_MITIGATION = 1 FEATURE_SPELLCHECKING = 0 FEATURE_STATUS_BAR_THROTTLING = 1 FEATURE_TABBED_BROWSING = 1 FEATURE_VALIDATE_NAVIGATE_URL = 1 FEATURE_WEBOC_DOCUMENT_ZOOM = 1 FEATURE_WEBOC_POPUPMANAGEMENT = 0 FEATURE_WEBOC_MOVESIZECHILD = 1 FEATURE_ADDON_MANAGEMENT = 0 FEATURE_WEBSOCKET = 1 FEATURE_WINDOW_RESTRICTIONS = 0 FEATURE_XMLHTTP = 1</code>
Anwendungsschritte
Erstellen Sie eine Methode, die diese Einstellungen enthält (ähnlich dem angegebenen Beispiel). Entscheidend ist, dass diese Methode vor die WebBrowser
-Kontrolle initialisiert wird, typischerweise im Konstruktor des Formulars. Dies stellt sicher, dass die Einstellungen angewendet werden, bevor AJAX -Anforderungen gestellt werden.
Durch korrektes Konfigurieren der Feature-Steuerung können Sie die Kompatibilität der WebBrowser
-Kontrolle mit AJAX-Aufrufen erheblich verbessern, Aufhängen auflösen und eine glattere Skriptausführung sicherstellen.
Das obige ist der detaillierte Inhalt vonWarum hängt mein C# Webbrowser -Steuerelement während Ajax -Anrufe und wie kann ich es beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!