zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    初步认识,合并集(树)
    20180918-1 词频统计
    20181011-1 每周例行报告
    2018091-2 博客作业
    项目第六天
    项目第五天
    项目第四天
    项目第三天
    总结随笔
    测试报告
  • 原文地址:https://www.cnblogs.com/TianFang/p/9902795.html
Copyright © 2011-2022 走看看