C# 如何通过WinForms上的CefShap捕获js按钮onclick事件?

C# 如何通过WinForms上的CefShap捕获js按钮onclick事件?,c#,winforms,web,events,cefsharp,C#,Winforms,Web,Events,Cefsharp,如何拦截在WinForms with CefSharp browser controller下运行的Html文档中的一个按钮上的js onClick,以便C代码能够拦截此事件并执行.NET环境中已经存在的一些操作?对于基本通信,您可以在Javascript中使用它向.NET发送一条触发事件的消息 //在“InitializeComponent;”之后直接为WPF实例化ChromiumWebBrowser实例之后在控件构造函数中。 //订阅以下活动 browser.JavascriptMessag

如何拦截在WinForms with CefSharp browser controller下运行的Html文档中的一个按钮上的js onClick,以便C代码能够拦截此事件并执行.NET环境中已经存在的一些操作?

对于基本通信,您可以在Javascript中使用它向.NET发送一条触发事件的消息

//在“InitializeComponent;”之后直接为WPF实例化ChromiumWebBrowser实例之后在控件构造函数中。 //订阅以下活动 browser.JavascriptMessageReceived+=OnBrowserJavascriptMessageReceived; browser.FrameLoadEnd+=OnFrameLoadEnd; FrameLoadEnd对象发送方FrameLoadEndEventArgs e上的公共无效 { 伊芙·框架·伊斯曼 { //在主框架中,我们注入了一些在mouseUp上运行的javascript //您可以钩住任何您喜欢的javascript事件。 browser.ExecuteScriptAsync@ document.body.onmouseup=函数 { //CefSharp.PostMessage可用于浏览器之间的通信 //Net,在本例中,我们传递一个简单字符串, //支持复杂对象,传递对Javascript方法的引用 //也支持。 //看https://github.com/cefsharp/CefSharp/issues/2775issuecomment-498454221 详情 CefSharp.PostMessagewindow.getSelection.toString; } ; } } 浏览器上的私有无效JavaScriptMessageReceivedObject发送者,JavascriptMessageReceivedEventArgs e { var windowSelection=string.Message; //对这个消息做些什么 //在CEF线程上调用此事件,以访问UI线程 //使用Control.BeginInvoke/Dispatcher.BeginInvoke }
对于基本通信,您可以在Javascript中使用它向.Net发送一条触发事件的消息

//在“InitializeComponent;”之后直接为WPF实例化ChromiumWebBrowser实例之后在控件构造函数中。 //订阅以下活动 browser.JavascriptMessageReceived+=OnBrowserJavascriptMessageReceived; browser.FrameLoadEnd+=OnFrameLoadEnd; FrameLoadEnd对象发送方FrameLoadEndEventArgs e上的公共无效 { 伊芙·框架·伊斯曼 { //在主框架中,我们注入了一些在mouseUp上运行的javascript //您可以钩住任何您喜欢的javascript事件。 browser.ExecuteScriptAsync@ document.body.onmouseup=函数 { //CefSharp.PostMessage可用于浏览器之间的通信 //Net,在本例中,我们传递一个简单字符串, //支持复杂对象,传递对Javascript方法的引用 //也支持。 //看https://github.com/cefsharp/CefSharp/issues/2775issuecomment-498454221 详情 CefSharp.PostMessagewindow.getSelection.toString; } ; } } 浏览器上的私有无效JavaScriptMessageReceivedObject发送者,JavascriptMessageReceivedEventArgs e { var windowSelection=string.Message; //对这个消息做些什么 //在CEF线程上调用此事件,以访问UI线程 //使用Control.BeginInvoke/Dispatcher.BeginInvoke }
我看到了所有的视频、文档和维基。我不能解决这个问题,或者我没有完全理解工作的问题。所有关于过时方法和新方法的手册均未在文档中绘制。我想要一个具体的代码示例,说明如何截获按键点击事件,仅此而已:。有关完整的示例,请参阅,使用新的PostMessage功能可以大大简化此过程。仅仅说你已经看过所有的文档/视频是没有帮助的,因为我不知道你到底读了什么,你需要提供链接并展示你已经尝试过的内容。问题解决了,谢谢提示。这是非常困难的,因为这个示例仅在这个提交中出现,而在主分支中它不是一个带有单击的特定示例,其中包含大量的水,并且很难理解与此问题相关的方法及其设置。最后,我成功地组织了对点击事件的监视,并在该操作期间触发了C代码,但它看起来非常复杂,文档中没有以任何方式揭示这一点。在我看来,这样一个复杂的实现应该被封装起来,并且应该给用户一个答案。答案是什么?我看到了所有的视频、文档和wiki。我不能解决这个问题,或者我没有完全理解工作的问题。所有关于过时方法和新方法的手册均未在文档中绘制。我想要一个具体的代码示例,说明如何截获按键点击事件,仅此而已:。有关完整的示例,请参阅,使用新的PostMessage功能可以大大简化此过程。仅仅说你已经看过所有的文档/视频是没有帮助的,因为我不知道你到底读了什么,你需要提供链接并展示你已经尝试过的内容。问题解决了,谢谢提示。这是非常困难的,因为此示例仅在提交和
主分支中没有单击的特定示例,也没有大量的水,很难理解与此问题相关的方法及其设置。最后,我成功地组织了对点击事件的监视,并在该操作期间触发了C代码,但它看起来非常复杂,文档中没有以任何方式揭示这一点。在我看来,这样一个复杂的实现应该被封装起来,并且应该给用户一个答案。这个答案如何?请直接从中摘录,以进一步改进。欢迎进一步改进,以社区维基的形式制作,以便其他人能够对此答案做出贡献。请直接从中摘录任何进一步的改进。欢迎进一步改进,使之成为社区wiki,以便其他人能够对此答案做出贡献。