一个winform的项目涉及到内嵌浏览器的功能,完成后,特整理了使用过程中的一些方法的应用及出现问题的解决方法:
1、包:下载cef的相关包,重点的引用是
截取了部分,去网上下载,挺方便的。
2、初始化调用本地的html文件,将webbrowser放到Form中的panel里面:
string url = (AppDomain.CurrentDomain.BaseDirectory + @"Test.html");
ChromiumWebBrowser webview = new ChromiumWebBrowser(url);
webview.Dock = DockStyle.Fill;
plMap.Controls.Add(webview);
3、网页加载完成后触发进行某些操作:
//绑定:
webview.FrameLoadEnd += webview_FrameLoadEnd;
//方法:
private void webview_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//To Do SomeThing
}
使用这个方法,如果在加载完成的方法中,有涉及到Form中的控件,应该会弹出现成如下错误:
解决方法,在Form的load中,添加这句话:
Control.CheckForIllegalCrossThreadCalls = false;
4、在winform中调用js方法及给js中的变量赋值操作:
webview.ExecuteScriptAsync(“jsFunction('val1','val2')");
webview.ExecuteScriptAsync("val3='hello world!'");
5、在js中调用winform方法:
//在winform中注册js方法,js方法名为jsObj,JSEvnet为方法类
webview.RegisterJsObject("jsObj", new JSEvent(), false);
//在js中使用注册的方法
var jsObj.getData(str1,str2);
以上为全部涉及到的操作,如果有其他问题,欢迎大家留言讨论~~~~