winform 集成cefsharp 嵌套网页实现与js交互

         HTML部分

winfrom界面

运行结果


    首先正确安装cef并正常运行,cef的安装与使用网上教程较多,此处不再重复描述。winfrom集成cefsharp嵌套网页实现与js交互分两部分,winform界面和HTML界面。

    本例在新建的HTML页面上鼠标单击“跳JS”按钮,即可触发_Event的getName方法,并返回参数,在HTML界面通过alert方法展示出来。

    通过本例你可以学到cef和winfrom之间通过JavaScript交互,JavaScript传参到winfrom并将参数返回到HTML的过程。

    本例所使使用的winfrom是在visual studio 2019下运行,.net 版本为4.5.2,64位平台,cef版本为73.1.130。

HTML部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div>
    <input value="跳JS" type="button" id="run" />
</div>
<script type="text/javascript" src="./js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#run").click(function () {
            var kkk = "111";
            var a = bound.getName(kkk);
            alert(a);
        });
    });
</script>
</body>
</html>

winfrom界面

    在winfrom界面中“CefSharpSettings.LegacyJavascriptBindingEnabled = true”必须写,否则会报错。写这句话的原因课参考cef的GitHub官网地址“https://github.com/cefsharp/cefsharp/issues/2246”,使用RegisterJsObject进行绑定,第一个参数为绑定名,在JavaScript中调用的时候要使用。第二个参数为执行的方法,需要新建一个类,并使用new关键词实例化,在本例中这个类名为_Event,这个类和winform的类放在了一个文件夹下面,各位码友们也可以新建一个类。需要注意的是_Event下面的方法需要遵循骆驼峰式的命名方式,否则在JavaScript中会调取不到。

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Windows.Forms;

namespace winformJavaScript
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            
            CefSharpSettings.LegacyJavascriptBindingEnabled = true;
            InitBrowser();
            InitializeComponent();
        }

        public ChromiumWebBrowser browser;

        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("http://192.168.1.2/test/");
            this.Controls.Add(browser);
            browser.FrameLoadEnd += OpenDev;
            browser.Dock = DockStyle.Fill;
            browser.RegisterJsObject("bound", new _Event());

        }

        public void OpenDev(object sender, EventArgs e)
        {
            browser.ShowDevTools();
        }
        private void Main_Load(object sender, EventArgs e)
        {

        }
    }
    public class _Event
    {
        public string getName(string kkk)
        {
            return "hello Man" + kkk;
        }
    }
}

运行结果

参考文章:https://blog.csdn.net/qq_35534449/article/details/88355434

源码地址:https://github.com/bpwangxch/sharecode

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页