22

如果您有 IE8,您可能已经注意到 MS 添加的一个非常方便的功能。点击 F12 和开发工具,一个类似于调试器的萤火虫,弹出。这对于调试目的非常有用,我想知道是否有一种方法可以从 .NET 应用程序中的 WebBrowser 控件弹出开发工具

我的情况是这样的:我有一个具有嵌入式 WebBrowser 控件的 C# 应用程序。C# 应用程序和 DHTML Web 浏览器内容使用 ObjectForScripting(C# 端)和 window.external(DHTML 端)接口相互通信,因此为了测试/调试/故障排除全部功能,我需要一种触发开发人员的方法WebBrowser 控件中的工具。到目前为止,我们仅限于使用受到严重限制的Firebug Lite或使用“调试器”触发 javascript 的步进调试会话;js,但现在我们已经到了让这些选项变得真正麻烦的地步,并且不允许我们使用 Firebug 或开发人员工具等工具获得的全部功能。

我真正想做的是能够在应用程序运行时从我的 WebBrowser 控件中弹出开发人员工具,但我还没有找到实现此目的的方法。

有没有其他人遇到过这个问题并发现是否有办法让它发生?

4

5 回答 5

13

不,正如其他人所说,这是不可能的。但是,有一种方法可以将大多数窗口错误连接到自定义处理程序。文档加载完成后,您可以将侦听器附加到窗口。例如

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
    };
};
于 2011-03-13T18:14:26.460 回答
3

我相信开发人员工具是在 IE 主机 (iexplore.exe) 中实现的,而不是在 MSHTML 本身中实现的。显然钩子在那里,但我认为你不能从控件中访问 UI 和东西。

于 2009-12-16T22:19:01.677 回答
3

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

于 2009-12-30T21:39:38.013 回答
1

一种选择是从嵌入页面打开一个子窗口,子窗口在 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();
            }
        };
于 2014-07-28T21:12:56.303 回答
0

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

  • DEBUG > Attach To Process ...
  • Attach to必须是Script并选择您正在运行的应用程序实例
  • 最后Attach
于 2018-06-11T02:22:47.263 回答