使用CefSharp在.Net程序中嵌入Chrome浏览器(四)——Javascript交互

栏目: ASP.NET · 发布时间: 6年前

内容简介:要在CEF中和网页的JS进行交互,首先我们要通过设置启用Javascrit集成功能。CefSharpSettings简单的调用JavaScript可以直接使用ExecuteScriptAsync扩展函数。

要在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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Haskell函数式编程基础

Haskell函数式编程基础

Simon Thompson / 科学出版社 / 2013-7-1 / 129.00

《Haskell函数式编程基础(第3版)》是一本非常优秀的Haskell函数式程序设计的入门书,各章依次介绍函数式程序设计的基本概念、编译器和解释器、函数的各种定义方式、简单程序的构造、多态和高阶函数、诸如数组和列表的结构化数据、列表上的原始递归和推理、输入输出的控制处理、类型分类与检测方法、代数数据类型、抽象数据类型、惰性计算等内容。书中包含大量的实例和习题,注重程序测试、程序证明和问题求解,易......一起来看看 《Haskell函数式编程基础》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具