Dépannage C # WebBrowser Control Hangups avec ajax
Le contrôle C # WebBrowser
, contrairement à une instance complète de l'explorateur Internet, éprouve souvent des gel pendant les appels Ajax. Cet article explore une solution axée sur la compatibilité des scripts.
Adresser les problèmes de compatibilité des scripts
La racine du problème réside souvent dans les écarts entre le moteur de script du Control WebBrowser
et celui d'un navigateur IE standard. Pour atténuer cela, nous allons tirer parti du contrôle des fonctionnalités pour configurer le contrôle pour imiter le comportement d'IE de plus près. Le paramètre FEATURE_BROWSER_EMULATION
est la clé ici.
Implémentation de contrôle des fonctionnalités (modification du registre)
Le code d'extrait de code suivant montre comment implémenter le contrôle des fonctionnalités sans avoir besoin de privilèges d'administrateur:
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); } }
Paramètres de fonction optimaux
En fonction des tests, ces paramètres de contrôle des fonctionnalités sont recommandés pour améliorer les performances de l'Ajax dans le contrôle WebBrowser
:
<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>
étapes d'application
Créez une méthode incorporant ces paramètres (similaire à l'exemple fourni). Surtout, appelez cette méthode avant le contrôle WebBrowser
est initialisé, généralement dans le constructeur du formulaire. Cela garantit que les paramètres sont appliqués avant que toutes les demandes AJAX ne soient faites.
En configurant correctement le contrôle des fonctionnalités, vous pouvez améliorer considérablement la compatibilité du WebBrowser
Control avec les appels AJAX, la résolution des raccrochés et la garantie d'exécution de scripts plus fluide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!