有没有办法从.NET应用程序中的WebBrowser控件内启用IE8开发人员工具

如果你有IE8,你可能已经注意到MS添加了一个非常方便的function。 点击F12和Developer Tools,一个类似调试器的萤火虫弹出。 这对于调试非常有用,我想知道是否有办法从.NET应用程序中的WebBrowser控件中弹出Developer Tools 。

我的情况是这样的:我有一个具有嵌入式WebBrowser控件的C#应用​​程序。 C#应用程序和DHTML Web浏览器内容使用ObjectForScripting(C#side)和window.external(DHTML端)接口相互通信,因此为了测试/调试/排除完整function,我需要一种方法来触发Developer WebBrowser控件中的工具。 到目前为止,我们仅限于使用严格限制的Firebug Lite或使用’debugger’触发javascript的步调试会话。 js,但现在我们已经到了这些选项成为一个真正麻烦的地步,并且不允许我们可以使用Firebug或开发者工具等我们可以使用的全部function。

我真正喜欢做的是能够在应用程序运行时从我的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和东西。

嵌入式主机无法使用内置的开发人员工具。 但是如果你想调试你仍然可以,你可以将visual studio / windbg附加到你的应用程序,更糟糕的是你可以使用“debugger”关键字插入断点。 在VS中,您可能必须从“调试这些代码类型”下的“选择…”菜单中选择脚本。

一个选项是从嵌入页面打开子窗口,子窗口在IE中打开,开发人员工具可以工作,然后您可以这样做

 window.opener 

在控制台中引用父级并操纵页面。

或者将父控制台替换为子控制台并重定向到它。

  var logWindow = window.open(); logWindow.document.write('Child Log Window\x3Cscript>window.opener.console = console;\x3C/script>

Child Log Window

'); window.onunload = function () { if (logWindow && !logWindow.closed) { logWindow.close(); } };

不是一个理想的解决方案,但您可以使用Visual Studio在Script模式下附加和调试您的应用程序。 您不应该调试应用程序和/或启动另一个Visual Studio实例:

  • DEBUG > Attach To Process ...
  • Attach to必须是Script并选择您正在运行的应用程序实例
  • 最后, Attach