C# 使用CefSharp向JS相互传参
1.新建Winform控件并点击查看代码
2添加CefSharp引用
3.初始化CefSharp
//初始化
public ChromiumWebBrowser browser;
public void InitBrowser()
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
CefSharpSettings.WcfEnabled = true;
browser = new ChromiumWebBrowser("http://127.0.0.1:8848/CarWay/TestWinfor.html");
browser.Dock = DockStyle.Fill;//铺满
this.Controls.Add(browser);//加入窗体
//注册方法//注册JsObj对象JS调用C#
browser.JavascriptObjectRepository.Register("JsObj", new getWinFormData(browser,this),isAsync:false);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
4.自定义Js调用C#
//自定义类(JS调用C#)
public class getWinFormData
{
private static ChromiumWebBrowser chromiumWebBrowser;
private static Form1 form1;
private int GysId = 1;
private String CarCode = "宁*****";
private String start = "2020-07-19 8:20:10";
private String end = "2020-7-20 18:16:00";
//构造方法
public getWinFormData(ChromiumWebBrowser OriginachromiumWebBrowser ,Form1 Originaform1)
{
chromiumWebBrowser = OriginachromiumWebBrowser;
form1 = Originaform1;
}
/// 窗口加载完毕时需要出发的全局JS对象
public void OnFrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
if (e.Frame.IsMain)
{
chromiumWebBrowser.ExecuteScriptAsync(@"
document.body.onmouseup = function()
{
JsObj.onSelected(window.getSelection().toString());
}
");
}
}
public void showAlertMsg(string msg)
{
MessageBox.Show("C#窗体:"+ msg);
}
public string readIdCard()
{
//MessageBox.Show("C#窗体:" + GysId + CarCode + start + end);
return GysId + CarCode + start + end;
}
//前端JS调用的方法
public int getGysId()
{
return GysId;
}
public String getCarCode()
{
return CarCode;
}
public String getStart()
{
return start;
}
public String getEnd()
{
return end;
}
}
5.网页Demo
<!DOCTYPE html>
<html style="overflow: hidden;">
<head>
</head>
<body >
<div>
<button onclick="test2()">测试弹出框</button>
<button onclick="test1()">读取身份证信息</button>
身份证信息<textarea id="idcardmsg"></textarea>
</div>
<script>
function test1() {
var idcardmsg = document.getElementById("idcardmsg").value;
JsObj.showAlertMsg(idcardmsg);
}
function test2() {
var result = JsObj.readIdCard();
alert(result);
}
</script>
</body>
</html>
6运行
网页端成功获取C#端数据
成功调用C#端弹窗向C#传参数。
如果对你有帮助可打赏支持一下哦嘻嘻!!!