cefsharp javascript调用C#方法并返回参数

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

下载后可以直接使用,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值