【发布时间】:2015-03-18 09:08:49
【问题描述】:
我有一个 WPF 应用程序,它使用 CEF 来显示 Web 内容。我的问题是,有没有办法在 WPF 应用程序中调试 Javascript/Web 部件?
【问题讨论】:
标签: wpf debugging chromium-embedded
我有一个 WPF 应用程序,它使用 CEF 来显示 Web 内容。我的问题是,有没有办法在 WPF 应用程序中调试 Javascript/Web 部件?
【问题讨论】:
标签: wpf debugging chromium-embedded
你也可以使用ShowDevTools()扩展方法(source)
ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.ShowDevTools(); // Opens Chrome Developer tools window
【讨论】:
在您的应用程序中启用远程调试:
C# (CefSharp)
CefSettings.RemoteDebuggingPort = 8088;
C++
CefSettings settings;
settings.remote_debugging_port = 8088;
然后运行您的应用并将浏览器指向 http://localhost:8088/ 以访问 Chromium 开发者控制台(与在 Chrome 中使用 Ctrl+Shift+j 相同)
【讨论】:
虽然接受的答案是正确的,但它确实没有足够的细节。
我在 CefSharp 中使用 WPF 应用程序中的 WinForms 控件进行了这项工作。 (WinForms 控件似乎有更好的性能)。不过,远程调试的代码可能与 WPF 控件非常相似。
var settings = new CefSettings { RemoteDebuggingPort = 8088 };
Cef.Initialize(settings);
WindowsFormsHost.Child = new ChromiumWebBrowser(url);
然后在浏览器中转到http://localhost:8088/。
【讨论】:
要使用“ShowDevTools()”,您需要首先验证浏览器是否已初始化。 示例解决方案:
//Add an event to check
ChromeBrowser.IsBrowserInitializedChanged += ChromeBrowser_IsBrowserInitializedChanged;
//Declare the event method to be called
private void ChromeBrowser_IsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs e)
{
if (e.IsBrowserInitialized)
{
ChromeBrowser.ShowDevTools();
}
}
【讨论】:
要打开 Chromium 开发工具窗口,您可以执行以下操作:
CefBrowser.GetBrowser().GetHost().ShowDevTools();
这类似于 Eido95 的回答,但它不需要扩展方法,它本质上只是包装这些方法调用。
注意:在调用该方法之前需要对控件进行初始化。如果您正在接线和类似 F12 的功能,这应该不是问题。如果您在应用启动时尝试执行此操作,则需要监听 ChromiumWebBrowser.IsBrowserInitializedChanged 事件
【讨论】: