.NET アプリケーションの WebBrowser コントロール内から IE8 開発者ツールを有効にする方法はありますか
-
20-09-2019 - |
質問
IE8 を使用している場合は、MS が追加した非常に便利な機能に気づいたかもしれません。F12 を押すと、デバッガーのような Firebug である開発者ツールがポップアップ表示されます。これはデバッグの目的で非常に便利ですが、ポップアップを表示する方法があるかどうか疑問に思っています。 開発者ツール .NET アプリケーション内の WebBrowser コントロールから。
私の状況は次のとおりです。WebBrowser コントロールが埋め込まれた C# アプリケーションがあります。C# アプリと DHTML Web ブラウザーのコンテンツは、ObjectForScripting (C# 側) および window.external (DHTML 側) インターフェイスを使用して相互に通信するため、完全な機能をテスト/デバッグ/トラブルシューティングするには、開発者をトリガーする方法が必要ですWebBrowser コントロール内のツール。これまでは使用に制限されていました ファイアバグ ライト しかし現在では、これらのオプションが本当に面倒になりつつあり、FirebugやDeveloper Toolsのようなものを自由に使うことで得られるような機能をフルに使うことができなくなってきています。
私が本当にやりたいのは、アプリの実行中に WebBrowser コントロール内から開発者ツールをポップアップできるようにすることですが、これを実現する方法はまだ見つかりません。
他にこの問題に遭遇し、それを解決する方法があるかどうかを見つけた人はいますか?
解決
いいえ、これは不可能です。しかし、カスタムハンドラに窓のエラーのほとんどを配線することができます方法があります。 文書の読み込みが完了したら、あなたはウィンドウにリスナーを添付することができます。例えばます。
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
};
};
他のヒント
私は、開発者向けツールは、IEのホスト(iexplore.exeを)で、ないMSHTML自体に実装されていると信じています。もちろんフックはそれのためにありますが、私はあなたがコントロールからUIとスタッフに得ることができるとは思わない。
埋め込まれたホストは、組み込みの開発ツールを使用するための方法はありません。デバッグしたい場合しかし、あなたはまだ、あなたが「デバッガ」のキーワードでブレークポイントを挿入することができ悪いことに、あなたのアプリに視覚的なスタジオ/ windbgのを添付することができますすることができるはずです。 VSでは、「これらのコードタイプのデバッグ」の「選択...」メニューからスクリプトを選択する必要がある場合があります。
は一つのオプションは、埋め込まれたページから、子ウィンドウを開くことです、子ウィンドウをIEで開き、開発者ツールの仕事は、あなたがして行うことができます。
window.opener
コンソールで親を参照し、ページを操作します。
や子供の両親とのコンソールを交換し、それにリダイレクトます。
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();
}
};
理想的なソリューションではありませんが、Visual Studio を使用してアプリをアタッチしてデバッグできます。 Script
モード。アプリケーションをデバッグしたり、Visual Studio の別のインスタンスを起動したりしないでください。
DEBUG > Attach To Process ...
Attach to
でなければなりませんScript
実行中のアプリケーションのインスタンスを選択します- そして最後に
Attach