C# 中集成cefsharp实现javascript回调方法介绍,主要用到RegisterJsObject方法。在构建完WebView webView = new WebView(url)后,即可调用RegisterJsObject方法来注册一个js对象,从而前端的javascript就可以访问这个对象,调用定义的方法。
//在C#中定义类CallbackObjectForJs
public class CallbackObjectForJs{ public void showMessage(string msg){ MessageBox.Show(msg); } } //调用RegisterJsObject方法来注册一个js对象
WebView webView = new WebView("http://localhost:8080"); webView.RegisterJsObject("callbackObj", new CallbackObjectForJs());
前端页面javascript代码即可访问对象 callbackObj。
<script type="text/javascript"> callbackObj.showMessage("message from js"); </script >
注意:CallbackObjectForJs的showMessage方法首字母不能使大写,不然javascript回调的时候找不到对应的方法。原因未知
PS:cefsharp是一个用于C#的浏览器控件(Github上的开源项目),C#自带的控件在IE不同版本内核适配的问题上处理起来比较麻烦,如果网页是重度使用javascript,那你可以考虑基于cef的各种浏览器控件,执行效率飙升。cefsharp的github地址:https://github.com/cefsharp/CefSharp