码迷,mamicode.com
首页 > 编程语言 > 详细

使用CefSharp在.Net程序中嵌入Chrome浏览器(五)——Javascript交互

时间:2019-01-10 13:59:29      阅读:476      评论:0      收藏:0      [点我收藏+]

标签:message   box   设置   https   result   加载   返回值   ram   代码   

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(五)——Javascript交互

要在CEF中和网页的JS进行交互,首先我们要通过设置启用Javascrit集成功能。

CefSharpSettings.LegacyJavascriptBindingEnabled = true;

 

调用JavaScript:

简单的调用JavaScript可以直接使用ExecuteScriptAsync扩展函数。

_chrome.ExecuteScriptAsync("alert(‘hello world‘)");

实际上,JavaScript是具体到frame的,上述代码等价于

_chrome.GetMainFrame().ExecuteJavaScriptAsync("alert(‘hello world‘)");

 

调用JavaScript返回值:

我们也可以使用EvaluateScriptAsync扩展函数执行javascript并获取返回值。

var rsp = await _chrome.EvaluateScriptAsync("3+2*5");
if (rsp.Success)
{
    MessageBox.Show(rsp.Result.ToString());
}

也可以具体到frame:

_chrome.GetMainFrame().EvaluateScriptAsync("3+2*5")

 

JavaScript回调:

要Javascript回调,首先得注入一个对象。

public class AsyncBoundObject
{
    public int Div(int divident, int divisor)
    {
        return divident / divisor;
    }
}
_chrome = new ChromiumWebBrowser();
_chrome.RegisterAsyncJsObject("cef"new AsyncBoundObject());
_chrome.Address = "http://tianfang.cnblogs.com";

注意: 这个注入得再加载网页之前,否则可能网页无法加载注入的js。

注入的函数是异步返回的,因此返回的是一个Promise对象,我们调用的时候可以使用ES6的await方式。

await cef.div(4, 2)

关于js注入更多信息,可以参看这个网页。how-do-you-expose-a-net-class-to-javascript

使用CefSharp在.Net程序中嵌入Chrome浏览器(五)——Javascript交互

标签:message   box   设置   https   result   加载   返回值   ram   代码   

原文地址:https://www.cnblogs.com/lonelyxmas/p/10249461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!