Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在Chromium嵌入式框架中调试JavaScript_Wpf_Debugging_Chromium Embedded - Fatal编程技术网

Wpf 在Chromium嵌入式框架中调试JavaScript

Wpf 在Chromium嵌入式框架中调试JavaScript,wpf,debugging,chromium-embedded,Wpf,Debugging,Chromium Embedded,我有一个WPF应用程序,它使用CEF来显示web内容。我的问题是,有没有办法调试WPF应用程序中的Javascript/Web部件?在应用程序中启用远程调试: C#(CefSharp) C++ CefSettings settings; settings.remote_debugging_port = 8088; 然后运行应用程序并将浏览器指向http://localhost:8088/访问Chrome开发者控制台(与Chrome中的Ctrl+Shift+j操作相同)虽然接受的答案是正确的,但

我有一个WPF应用程序,它使用CEF来显示web内容。我的问题是,有没有办法调试WPF应用程序中的Javascript/Web部件?

在应用程序中启用远程调试:

C#(CefSharp)

C++

CefSettings settings;
settings.remote_debugging_port = 8088;

然后运行应用程序并将浏览器指向
http://localhost:8088/
访问Chrome开发者控制台(与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()
扩展方法()

要使用“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事件的谢谢您的回答!不幸的是,在我的应用程序中找不到设置。我有以下用法:使用CefSharp;使用CefSharp.Wpf;我忘了什么吗?你应该把它标记为答案,或者@Sga应该把它编辑成你的答案。我相信只有OP可以把它标记为答案。不管怎样,upvows最终会解决这个问题。为什么我以前没有看到这个函数?它在最新版本的@Eido95中仍然存在吗?@gumuruh是的,它存在。
//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();
        }
    }
CefBrowser.GetBrowser().GetHost().ShowDevTools();