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

  • 相关阅读:
    TFIDF<细读>
    数据挖掘工程师的面试问题与答题思路【转】
    CTR常见规则摘录
    分类中数据不平衡问题的解决经验[转载]
    机器学习积累【2】
    机器学习-常见问题积累【1】
    数据的归一化和标准化
    数据挖掘之特征选择
    jupyter-notebook快捷键
    python基础学习记录一
  • 原文地址:https://www.cnblogs.com/TianFang/p/9902795.html
Copyright © 2011-2022 走看看