3

我正在尝试将 cefSharp 用于 WPF 应用程序。我可以找到“如何从 .Net 调用 Javascript 方法。但是有没有一种方法可以让我获得 .Net 中的 Javascript 函数或事件的通知?

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

4

2 回答 2

12

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

c# -> js 使用

webBrowser.ExecuteScriptAsync(脚本);

js -> c# 使用

webBrowser.RegisterJsObject(A_NAME_FROM_JS, objectToBind);

然后从js你可以调用:

window.A_NAME_FROM_JS.MethodOnObj()

这将调用

MethodOnObj()

在通过

对象绑定

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

于 2015-01-22T15:13:39.293 回答
3

RegisterJsObject和方法现在ExecuteScriptAsync都被弃用了。我在这里找到了另一个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) { }
于 2020-11-07T04:34:12.453 回答