C'è un modo per consentire agli strumenti di sviluppo IE8 dal controllo WebBrowser all'interno di un'applicazione .NET

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

Domanda

Se si dispone di IE8, voi avranno notato una caratteristica davvero utile che MS ha aggiunto. Hit F12 e Developer Tools, un piromane come debugger, si apre. Ciò è estremamente utile per il debugging, e mi chiedo se c'è un modo per far apparire la Developer Tools da un controllo WebBrowser all'interno di un'applicazione .NET.

La mia situazione è questa: Ho un'applicazione C # che dispone di un controllo WebBrowser incorporato. Il C # app ei DHTML contenuti del browser web comunicano tra loro utilizzando il (# lato C) ObjectForScripting e window.external (lato DHTML) interfacce, così al fine di testare / debug / risoluzione dei problemi della funzionalità completa, ho bisogno di un modo per attivare Developer utensili da all'interno del controllo WebBrowser. Fino ad ora siamo stati limitati a utilizzare Firebug Lite che è seriamente limitato o innescando una sessione di debug passo di il javascript utilizzando il 'debugger;' js, ma ora stiamo arrivando al punto in cui queste opzioni di diventare una vera seccatura e non consentono le funzionalità che avremmo uscire di avere qualcosa come Firebug o Developer Tools a nostra disposizione.

Quello che mi piacerebbe davvero fare è di essere in grado di pop-up Strumenti di sviluppo da dentro il mio controllo WebBrowser mentre l'applicazione è in esecuzione, ma non ho trovato un modo per ottenere questo risultato ancora.

Ha chiunque altro ha incontrato questo problema e scoperto se c'è un modo per farlo accadere?

È stato utile?

Soluzione

No, come altri hanno detto questo non è possibile. Tuttavia c'è un modo è possibile collegare la maggior parte degli errori di finestra attraverso ad un gestore personalizzato. Una volta che il documento è finito di caricare è possibile allegare un ascoltatore alla finestra. per es.

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
    };
};

Altri suggerimenti

Credo che gli strumenti di sviluppo sono implementate nell'ospite IE (iexplore.exe), non in MSHTML sé. Ovviamente i ganci sono lì per questo, ma non credo che si può arrivare a l'interfaccia utente e roba dal controllo.

Non c'è un modo per i padroni di casa incorporato di utilizzare gli strumenti di sviluppo integrati. Ma se si desidera eseguire il debug si dovrebbe comunque essere in grado di, è possibile allegare Visual Studio / windbg per la vostra applicazione, al peggio è possibile inserire punti di interruzione con la parola chiave "debugger". In VS potrebbe essere necessario selezionare script dal menu "selezionare ..." sotto "debug di questi tipi di codice".

Una possibilità è quella di aprire una finestra secondaria dalla pagina embedded, la finestra secondaria si apre in IE e il lavoro Developer Tools, è possibile poi fare

window.opener

nella console per fare riferimento al genitore e manipolare la pagina.

O sostituire la console genitori con il bambino e di reindirizzare ad esso.

 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();
            }
        };

Non è una soluzione ideale, ma è possibile utilizzare Visual Studio per collegare ed eseguire il debug la vostra applicazione in modalità Script. Non si dovrebbe debug dell'applicazione e / o avviare un'altra istanza di Visual Studio:

  
      
  • DEBUG > Attach To Process ...
  •   
  • Attach to deve essere Script e selezionare l'istanza in esecuzione dell'applicazione
  •   
  • E infine Attach
  •   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top