C'è un modo per consentire agli strumenti di sviluppo IE8 dal controllo WebBrowser all'interno di un'applicazione .NET
-
20-09-2019 - |
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?
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 essereScript
e selezionare l'istanza in esecuzione dell'applicazione- E infine
Attach