我正在尝试将 cefSharp 用于 WPF 应用程序。我可以找到“如何从 .Net 调用 Javascript 方法。但是有没有一种方法可以让我获得 .Net 中的 Javascript 函数或事件的通知?
例如,如果有一个 Javascript 函数(带和不带参数),我可以在 .Net 中获得带或不带值的通知。
我正在尝试将 cefSharp 用于 WPF 应用程序。我可以找到“如何从 .Net 调用 Javascript 方法。但是有没有一种方法可以让我获得 .Net 中的 Javascript 函数或事件的通知?
例如,如果有一个 Javascript 函数(带和不带参数),我可以在 .Net 中获得带或不带值的通知。
简而言之,是的!有可用的绑定:
c# -> js 使用
webBrowser.ExecuteScriptAsync(脚本);
js -> c# 使用
webBrowser.RegisterJsObject(A_NAME_FROM_JS, objectToBind);
然后从js你可以调用:
window.A_NAME_FROM_JS.MethodOnObj()
这将调用
MethodOnObj()
在通过
对象绑定
它就像一个魅力。如果您有任何问题,请告诉我,我会进一步提供帮助!
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) { }