JavaScript代码
直接复制到记事本中后缀名改为.html即可
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script src="../../Scripts/jquery-1.11.1.js"></script>
<script src="../../Scripts/jquery-1.11.1.min.js"></script>
</head>
<body>
<input type="button" value="直接调用C#函数" onclick="commit()"/>
</body>
<script type="text/javascript">
async function commit()
{
await CefSharp.BindObjectAsync("csharpObj");
csharpObj.getUserName().then(function (actualResult)
{
//弹出获取到的C#方法返回的参数
window.alert(actualResult);
});
};
</script>
C#代码
需要引入CefSharp选CefSharp.WinForms
using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Stat_Form
{
public partial class Form1 : Form
{
private ChromiumWebBrowser browser;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//html文件地址
string path = Application.StartupPath + @"\123456.html";
//string path = "http://localhost:8080/#/shopanalysis/%E6%BA%86%E6%B5%A6";
browser = new CefSharp.WinForms.ChromiumWebBrowser(path);
//browser.MenuHandler = new ChromMenuHandler();//CefSharp网页中屏蔽右键
this.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
//事件注册
browser.JavascriptObjectRepository.ResolveObject += JavascriptObjectRepository_ResolveObject;
browser.JavascriptObjectRepository.ObjectBoundInJavascript += JavascriptObjectRepository_ObjectBoundInJavascript;
}
private void JavascriptObjectRepository_ResolveObject(object sender, CefSharp.Event.JavascriptBindingEventArgs e)
{
var repo = e.ObjectRepository;
if (e.ObjectName == "csharpObj")
{
CefSharp.BindingOptions bindingOptions = null; // Binding options is an optional param, defaults to null
bindingOptions = CefSharp.BindingOptions.DefaultBinder;
//bindingOptions = new BindingOptions { Binder = new MyCustomBinder() }); //Specify a custom binder
repo.NameConverter = null; //No CamelCase of Javascript Names
repo.NameConverter = new CefSharp.JavascriptBinding.CamelCaseJavascriptNameConverter();
repo.Register("csharpObj", new BoundObject(), isAsync: true, options: bindingOptions);
}
}
private void JavascriptObjectRepository_ObjectBoundInJavascript(object sender, CefSharp.Event.JavascriptBindingCompleteEventArgs e)
{
Console.WriteLine($"Object {e.ObjectName} was bound successfully.");
}
public class BoundObject
{
public string getUserName()
{
return "龙萧紫兰";
}
}
}
}
项目地址:https://download.csdn.net/download/juncaixingchilove/86506324
下载后可以直接使用,