如何在cefsharp中捕获/监听javascript函数或事件

时间:2015-01-21 12:43:18

标签: javascript wpf chromium-embedded cefsharp

我正在尝试将cefSharp用于WPF应用程序。 I can find "how to call a Javascript methods from .Net。但有没有办法可以获得.Net中的Javascript函数或事件的通知?

e.g。如果有一个Javascript函数(有和没有param)我可以在.Net中获取带或不带值的通知。

2 个答案:

答案 0 :(得分:10)

总之,是的! 可用于以下内容的绑定:

c# - > js使用

  

webBrowser.ExecuteScriptAsync(脚本);

js - > c#use

  

webBrowser.RegisterJsObject(A_NAME_FROM_JS,   objectToBind);

然后从js你可以打电话:

  

window.A_NAME_FROM_JS.MethodOnObj()

这会调用

  

MethodOnObj()

传递

  

objectToBind

它就像一个魅力。如果您有问题,请告诉我,我会进一步提供帮助!

答案 1 :(得分:0)

现在不推荐使用RegisterJsObjectExecuteScriptAsync方法。我在这里找到了CefSharp支持的另一种解决方案:

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#JSEvent

更多详细信息在这里: https://github.com/cefsharp/CefSharp/issues/2775#issuecomment-498454221

基本上,从页面上的javascript代码中,您可以调用:

CefSharp.PostMessage(someDataYouWantToPassBack)

然后在C#中,将事件注册到浏览器:

浏览器。 JavascriptMessageReceived + = OnBrowserJavascriptMessageReceived;

private void OnBrowserJavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e) { }