I am trying to use cefSharp for a WPF application. I can find "how to call a Javascript methods from .Net. But is there a way where I can get notified for Javascript functions or events in .Net?
e.g. if there is a Javascript function (with and without param) I can get the notification with or without values in .Net.
I am trying to use cefSharp for a WPF application. I can find "how to call a Javascript methods from .Net. But is there a way where I can get notified for Javascript functions or events in .Net?
e.g. if there is a Javascript function (with and without param) I can get the notification with or without values in .Net.
Share Improve this question edited Jan 19, 2018 at 12:03 McMillan Cheng 3801 gold badge7 silver badges21 bronze badges asked Jan 21, 2015 at 12:43 nishantcopnishantcop 1,0171 gold badge10 silver badges25 bronze badges2 Answers
Reset to default 12In short, YES! There's bindings available for:
c# -> js use
webBrowser.ExecuteScriptAsync(script);
js -> c# use
webBrowser.RegisterJsObject(A_NAME_FROM_JS, objectToBind);
Then from js you can call:
window.A_NAME_FROM_JS.MethodOnObj()
and this will invoke the
MethodOnObj()
on the passed
objectToBind
It works like a charm. Let me know if you've an issue and I'll help further!
The RegisterJsObject
and ExecuteScriptAsync
methods are both deprecated now. I found another solution that CefSharp
supports here:
https://github./cefsharp/CefSharp/wiki/Frequently-asked-questions#JSEvent
More detailed information is here: https://github./cefsharp/CefSharp/issues/2775#issuement-498454221
Essentially, from your javascript
code on page, you can call:
CefSharp.PostMessage(someDataYouWantToPassBack)
And in C#
, you register the event to your browser:
browser.JavascriptMessageReceived += OnBrowserJavascriptMessageReceived;
private void OnBrowserJavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e) { }