• 使用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

  • 相关阅读:
    n皇后问题
    几种NFS系统对比,选型理由
    MooseFs集群故障恢复运维
    TB级NFS数据平滑迁移方案设计与实现
    NFS挂载各机显示用户不同的问题
    TB级NFS数据平滑迁移系列
    mysql备份和恢复
    Java基础赋值符号
    java 流程控制基础之if else
    Java基础赋值符号
  • 原文地址:https://www.cnblogs.com/TianFang/p/9902795.html
Copyright © 2020-2023  润新知