c#调用CefSharp谷歌内核
CefSharp:101.0.150版本
参考官网手册:https://github.com/cefsharp/CefSharp/wiki/General-Usage#registerjsobject
CefSharp与js交互
窗口类部分
private ChromiumWebBrowser _chromiumWebBrowser;
public Form1()
{
InitializeComponent();
//实例化控件
_chromiumWebBrowser = new ChromiumWebBrowser("C://Users//Administrator//Desktop//login.html");
// wb.JavascriptObjectRepository.Register("boundAsync", new JsEvent(), false, BindingOptions.DefaultBinder);//交互数据
//设置停靠方式
_chromiumWebBrowser.Dock = DockStyle.Fill;
// 页面加载完毕后打开开发者工具
_chromiumWebBrowser.FrameLoadEnd += (s, eve) =>
{
var browser = _chromiumWebBrowser.GetBrowser();
browser.ShowDevTools();
};
NewMutliPage(); // 新版本的注入方式
//加入到当前窗体中
this.Controls.Add(_chromiumWebBrowser);
}
public void NewMutliPage()
{
_chromiumWebBrowser.JavascriptObjectRepository.Register("boundAsync", new BoundObject(), true, BindingOptions.DefaultBinder);
_chromiumWebBrowser.JavascriptObjectRepository.ObjectBoundInJavascript += (sender, e) =>
{
var name = e.ObjectName;
// Debug.WriteLine($"Object {e.ObjectName} was bound successfully.");
};
}
js部分
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
<style>
</style>
</head>
<body>
<button id="btn_play" onclick="c()">播放</button>
</body>
</html>
<script language="javascript" type="text/javascript">
// 新式注入
function c() {
(async function()
{
await CefSharp.BindObjectAsync("boundAsync");
//The default is to camel case method names (the first letter of the method name is changed to lowercase)
boundAsync.add(16, 2).then(function (actualResult)
{
console.log(actualResult);
});
})();
}
</script>
CefSharp页面跳转
窗口类部分 _chromiumWebBrowser是之前添加窗口的 private ChromiumWebBrowser _chromiumWebBrowser;
var frame = _chromiumWebBrowser.GetMainFrame();
//Create a new request knowing we'd like to use PostData
var request = frame.CreateRequest(initializePostData: true);
request.Method = "GET";
request.Url = "htmldemo.html";//这里填静态页面地址
//Set AllowStoredCredentials so cookies are sent with Request
request.Flags = UrlRequestFlags.AllowStoredCredentials;
frame.LoadRequest(request);