在 Chromium 嵌入式框架中调试 JavaScript
Debugging JavaScript in Chromium Embedded Framework
我有一个使用 CEF 显示 Web 内容的 WPF 应用程序。我的问题是,有没有办法在 WPF 应用程序中调试 Javascript/Web 部分?
在您的应用程序中启用远程调试:
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()
扩展方法 (source)
ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.ShowDevTools(); // Opens Chrome Developer tools window
要使用 '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 开发工具 window,您可以执行以下操作:
CefBrowser.GetBrowser().GetHost().ShowDevTools();
这类似于 Eido95 的答案,但它不需要扩展方法,扩展方法本质上只是包装这些方法调用。
注意: 控件需要初始化后才能调用该方法。如果您正在连接和类似 F12 的功能,这应该不是问题。如果您在应用程序启动时尝试执行此操作,则需要监听 ChromiumWebBrowser.IsBrowserInitializedChanged 事件
另一种方法是使用 --enable-chrome-runtime 启动 cef。
您将拥有功能齐全的调试器(link 磁盘上的文件并从调试器编辑它们)
我有一个使用 CEF 显示 Web 内容的 WPF 应用程序。我的问题是,有没有办法在 WPF 应用程序中调试 Javascript/Web 部分?
在您的应用程序中启用远程调试:
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()
扩展方法 (source)
ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.ShowDevTools(); // Opens Chrome Developer tools window
要使用 '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 开发工具 window,您可以执行以下操作:
CefBrowser.GetBrowser().GetHost().ShowDevTools();
这类似于 Eido95 的答案,但它不需要扩展方法,扩展方法本质上只是包装这些方法调用。
注意: 控件需要初始化后才能调用该方法。如果您正在连接和类似 F12 的功能,这应该不是问题。如果您在应用程序启动时尝试执行此操作,则需要监听 ChromiumWebBrowser.IsBrowserInitializedChanged 事件
另一种方法是使用 --enable-chrome-runtime 启动 cef。 您将拥有功能齐全的调试器(link 磁盘上的文件并从调试器编辑它们)