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

  • 相关阅读:
    Jdk1.8 HashMap源码分析
    瘦身部署应用
    Redis 创建和使用集群(yum方式安装低版本)
    Redis 创建和使用集群
    记录一下
    Oracle 开发人员权限控制
    Linux 免密登录远程服务器及执行相关命令
    Oracle 连接表空间并执行SQL文件
    MySQL 8.0.13安装教程(windows 64位) (转)
    scrapy中Selector的使用
  • 原文地址:https://www.cnblogs.com/TianFang/p/9902795.html
Copyright © 2011-2022 走看看