博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用CefSharp在.Net程序中嵌入Chrome浏览器(五)——Javascript交互
阅读量:5153 次
发布时间:2019-06-13

本文共 1034 字,大约阅读时间需要 3 分钟。

要在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注入更多信息,可以参看这个网页。

转载于:https://www.cnblogs.com/TianFang/p/9902795.html

你可能感兴趣的文章
安全版字符串操作函数
查看>>
数据库msqlserver的几种类型及解决MSSQLServer服务启动不了的问题
查看>>
CSS轮廓 边距 填充 分组和嵌套
查看>>
JAVA多线程--线程阻塞与唤醒
查看>>
JavaSE语法基础总结
查看>>
python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析
查看>>
线性表9 - 数据结构和算法14
查看>>
OD使用教程21(上) - 调试篇21
查看>>
循环移位
查看>>
函数的两种调用方式
查看>>
Spring mvc4 + ActiveMQ 整合
查看>>
Python基础(8)素数输出
查看>>
VS.左侧_蓝黄绿_竖线
查看>>
POS Tagging 标签类型查询表(Penn Treebank Project)
查看>>
Cookie/Session机制详解
查看>>
sklearn 数据预处理1: StandardScaler
查看>>
搭建Docker环境---Docker概述
查看>>
NOI 08 石头剪刀布
查看>>
UVa 11383 少林决胜(二分图最佳完美匹配)
查看>>
Ural 1297 Palindrome(后缀数组+最长回文子串)
查看>>