使用CefSharp在.Net程序中嵌入Chrome浏览器——Javascript交互
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CefSharp在.Net程序中嵌入Chrome浏览器——Javascript交互相关的知识,希望对你有一定的参考价值。
原文:使用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
以上是关于使用CefSharp在.Net程序中嵌入Chrome浏览器——Javascript交互的主要内容,如果未能解决你的问题,请参考以下文章
使用CefSharp在.Net程序中嵌入Chrome浏览器——Javascript交互
使用CefSharp在.NET中嵌入Google kernel
我已成功地将 CefSharp 嵌入到 .NET 4.0 应用程序中。是不是可以让 jQuery 调用在 DOM 上工作?