C# WebBrowser控件中Ajax调用问题的解决方案
De nombreux développeurs ont rencontré une question frustrante lors de l'utilisation du contrôle C # WebBrowser: après avoir cliqué sur le bouton de la fenêtre, le contrôle a été gelé et le "traitement de votre demande" indéfiniment.这个问题是由于WebBrowser控件和完整的Internet Explorer (IE)浏览器之间的行为差异造成的。Afin de résoudre ce problème, nous pouvons utiliser le "Contrôle des fonctionnalités", qui est un mécanisme qui nous permet de simuler le comportement de contrôle WebBrowser pour se rapprocher du comportement du navigateur IE. L'une des fonctions clés qui doivent être activées est
, qui définit le mode de simulation du navigateur. De plus, nous pouvons également permettre à d'autres fonctions d'améliorer la compatibilité, telles que FEATURE_BROWSER_EMULATION
, FEATURE_AJAX_CONNECTIONEVENTS
et FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION
. FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS
<code class="language-csharp">private void SetBrowserFeatureControlKey(string feature, string appName, uint value) { using (var key = Registry.CurrentUser.CreateSubKey( String.Concat(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(appName, (UInt32)value, RegistryValueKind.DWord); } } private void SetBrowserFeatureControl() { // 在WebBrowser初始化之前实现您自己的功能集并注册它们 SetBrowserFeatureControlKey("FEATURE_BROWSER_EMULATION", fileName, GetBrowserEmulationMode()); SetBrowserFeatureControlKey("FEATURE_AJAX_CONNECTIONEVENTS", fileName, 1); SetBrowserFeatureControlKey("FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", fileName, 1); SetBrowserFeatureControlKey("FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS", fileName, 1); // 根据需要添加其他功能 public MainWindow() { SetBrowserFeatureControl(); InitializeComponent(); } }</code>
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!