Est-il un moyen de permettre aux outils de développement IE8 de contrôle à l'intérieur WebBrowser dans une application .NET

StackOverflow https://stackoverflow.com/questions/1917314

Question

Si vous avez IE8, vous avez pu remarquer une fonctionnalité vraiment pratique que MS a ajouté. Hit F12 et outils de développement, un Firebug comme débogueur, apparaît. Cela est extrêmement utile pour des fins de débogage, et je me demande s'il y a un moyen de faire apparaître le Outils de développement à partir d'un contrôle WebBrowser dans une application .NET.

Ma situation est la suivante: J'ai une application C # qui a un contrôle WebBrowser embarqué. L'application C # et le contenu du navigateur web DHTML communiquent entre eux en utilisant les interfaces ObjectForScripting (côté C #) et window.external (côté DHTML), donc pour tester / debug / dépanner toutes les fonctionnalités, je besoin d'un moyen de déclencher développeur Outils de contrôle dans le WebBrowser. Jusqu'à présent, nous avons limité à l'utilisation Firebug Lite qui est très limité ou le déclenchement d'une session de débogage étape le javascript en utilisant le « débogueur; » js, mais maintenant nous arrivons au point où ces options deviennent un problème réel et ne permettent pas toutes les fonctionnalités que nous sortir d'avoir quelque chose comme Firebug ou outils de développement à notre disposition.

Ce que j'aimerais vraiment faire est de pouvoir faire apparaître des outils de développement à l'intérieur de mon contrôle WebBrowser lorsque l'application est en cours d'exécution, mais je n'ai pas trouvé un moyen d'y arriver encore.

Quelqu'un at-il d'autre a couru dans cette question et a découvert s'il y a un moyen pour y arriver?

Était-ce utile?

La solution

Non, comme d'autres ont dit ce n'est pas possible. Cependant, il y a une façon que vous pouvez câbler la plupart des erreurs de fenêtre par un gestionnaire personnalisé. Une fois que le document a terminé, vous pouvez charger attacher un écouteur à la fenêtre. par exemple.

webBrowser.DocumentCompleted += (o, e) =>
{
    webBrowser.Document.Window.Error += (w, we) =>
    {
        we.Handled = true;

        // Do something with the error...
        Debug.WriteLine(
            string.Format(
               "Error: {1}\nline: {0}\nurl: {2}",
               we.LineNumber, //#0
               we.Description, //#1
               we.Url));  //#2
    };
};

Autres conseils

Je crois que les outils de développement sont mis en œuvre dans l'hôte IE (de iexplore.exe), pas MSHTML lui-même. Il est évident que les crochets sont là pour cela, mais je ne pense pas que vous pouvez accéder à l'interface utilisateur et d'autres choses du contrôle.

Il n'y a pas un moyen pour les hôtes embarqués à utiliser les outils de développement intégrés. Mais si vous voulez vous déboguer devriez toujours pouvoir, vous pouvez joindre atelier / windbg visuel à votre application, au pire, vous pouvez insérer des points d'arrêt avec le mot-clé « debugger ». Dans VS vous pourriez avoir à sélectionner script dans le menu "select ..." sous "debug ces types de code".

L'une des options est d'ouvrir une fenêtre enfant de la page intégrée, la fenêtre enfant ouvre dans IE et le travail Outils de développement, vous pouvez alors faire

window.opener

dans la console pour faire référence au parent et manipuler la page.

Ou remplacer par l'enfant la console des parents et rediriger vers elle.

 var logWindow = window.open();
        logWindow.document.write('<html><head><title>Child Log Window</title></head>\x3Cscript>window.opener.console = console;\x3C/script><body><h1>Child Log Window</h1></body></html>');
        window.onunload = function () {
            if (logWindow && !logWindow.closed) {
                logWindow.close();
            }
        };

pas une solution idéale, mais vous pouvez utiliser Visual Studio pour attacher et déboguer votre application en mode Script. Vous ne devriez pas débogage de l'application et / ou lancer une autre instance de Visual Studio:

  
      
  • DEBUG > Attach To Process ...
  •   
  • Attach to doit être Script et sélectionnez votre instance en cours d'exécution de l'application
  •   
  • Et enfin Attach
  •   
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top