Maison > développement back-end > C++ > Comment puis-je corriger les appels Ajax congelés dans le contrôle C # WebBrowser?

Comment puis-je corriger les appels Ajax congelés dans le contrôle C # WebBrowser?

Susan Sarandon
Libérer: 2025-01-30 20:41:13
original
139 Les gens l'ont consulté

How Can I Fix Frozen Ajax Calls in the C# WebBrowser Control?

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

Les fragments de code suivants montrent comment définir la clé de contrôle de la fonction du navigateur:

<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>
Copier après la connexion
En définissant ces clés de contrôle fonctionnel, le contrôle WebBrowser devrait pouvoir travailler ensemble pour travailler avec le navigateur IE complet pour résoudre le problème du contrôle figé par l'appel AJAX. Il convient de noter que la définition de ces clés ne nécessite pas d'autorisations d'administrateur.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal