c# cef html,CefSharp(C#、js交互)

偶尔有个项目调查需要用这个玩意。记录一下

高版本需启用LegacyJavascriptBindingEnabled

CefSharpSettings.LegacyJavascriptBindingEnabled = true;

此为官方demo改造

bf3654e0e094

image.png

js 调用C# 方法

定义处理类

class ScriptCallbackManager

{

///

/// 查找电脑信息

/// IJavascriptCallback javascriptCallback

///

public string FindComputerInfo()

{

return JsonConvert.SerializeObject(new

{

cpu_id = "1",

disk_id = "2",

host_name = "联想",

networkcard = "是的",

serialNumber = "12233",

manufacturer = "hello",

product = "联想",

});

//Task.Factory.StartNew(async () =>

//{

// using (javascriptCallback)

// {

// string response = JsonConvert.SerializeObject(new

// {

// cpu_id = "1",

// disk_id = "2",

// host_name = "联想",

// networkcard = "是的",

// serialNumber = "12233",

// manufacturer = "hello",

// product = "联想",

// });

// await javascriptCallback.ExecuteAsync(response);

// }

//});

}

public int Div(int dividend, int divisor)

{

return dividend / divisor;

}

}

C#注册js调用对象

browser = new ChromiumWebBrowser("F:/winform_tree/js/index.html")

{

Dock = DockStyle.Fill,

};

browser.RegisterAsyncJsObject("googleBrower", new ScriptCallbackManager(), new CefSharp.BindingOptions { CamelCaseJavascriptNames = false });

toolStripContainer.ContentPanel.Controls.Add(browser);

js调用处

hello

获取电脑信息

获取电脑信息

//设置电脑信息

function callback(data) {

data = JSON.parse(data);

$("#msg").html('');

$("#msg")

.append($("

cpu_id:" + data.cpu_id + ""))

.append($("

disk_id:" + data.disk_id + ""))

.append($("

host_name:" + data.host_name + ""))

.append($("

networkcard:" + data.networkcard + ""))

.append($("

serialNumber:" + data.serialNumber + ""))

.append($("

manufacturer:" + data.manufacturer + ""))

.append($("

product:" + data.product + ""));

};

function findComputerInfo() {

//调用后台C#FindComputerInfo,返回结果回调方法callback

googleBrower.FindComputerInfo().then(function(actualResult) {

callback(actualResult)

});

};

function findDiv() {

googleBrower.Div(6, 2).then(function(actualResult) {

alert(actualResult)

});

}

var findme = function(args){

alert(args)

var jsonobj = JSON.parse(args)

alert(jsonobj.cpu_id)

}

// (async function()

// {

// await CefSharp.BindObjectAsync("googleBrower");

//

//

//

// })();

C#调用js方法

var findme = function(args){

alert(args)

var jsonobj = JSON.parse(args)

alert(jsonobj.cpu_id)

}

private void GoButtonClick(object sender, EventArgs e)

{

//LoadUrl(urlTextBox.Text);

//后端调用js方法,并传递参数

string result = JsonConvert.SerializeObject(new

{

cpu_id = "1",

disk_id = "2",

host_name = "联想",

networkcard = "是的",

serialNumber = "12233",

manufacturer = "hello",

product = "联想",

});

browser.GetMainFrame().ExecuteJavaScriptAsync(String.Format("findme('{0}')", result));

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值