如何在 cefsharp 中 trap/listen javascript 函数或事件

How to trap/listen javascript function or events in cefsharp

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

例如如果有一个 Javascript 函数(带和不带参数),我可以在 .Net 中获得带或不带值的通知。

简而言之,是的! 绑定可用于:

c# -> js 使用

webBrowser.ExecuteScriptAsync(script);

js -> c# 使用

webBrowser.RegisterJsObject(A_NAME_FROM_JS, objectToBind);

然后从js你可以调用:

window.A_NAME_FROM_JS.MethodOnObj()

这将调用

MethodOnObj()

已通过

objectToBind

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

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# 中,您将事件注册到您的浏览器:

browser.JavascriptMessageReceived += OnBrowserJavascriptMessageReceived;

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