您的位置:首页 > Web前端 > JavaScript

Cefsharp使用教程四( js回调,C#方法)

2017-05-26 14:02 1161 查看

1.基本的同(异)步js操作

browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('testid').click();");
browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('testid2').value='123'");


2.其他Frame操作

string script = "if(document.getElementById('img_out_10000')){ document.getElementById('img_out_10000').click(); }";
var list = browser.GetBrowser().GetFrameNames();
if (list.Count > 1)
{
browser.GetBrowser().GetFrame(list[1]).ExecuteJavaScriptAsync(script);
}


3.如何调用Javascript方法返回的结果呢?

如果您需要评估代码,返回一个值,使用Task EvaluateScriptAsync(string script, TimeSpan? timeout)方法。 JavaScript代码是异步执行的,因此使用.NET Task类返回一个响应,其中包含错误消息,结果和一个成功(布尔)标志。

// Get Document Height
var task = frame.EvaluateScriptAsync("(function() { var body = document.body, html = document.documentElement; return  Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); })();", null);

task.ContinueWith(t =>
{
if (!t.IsFaulted)
{
var response = t.Result;
EvaluateJavaScriptResult = response.Success ? (response.Result ?? "null") : response.Message;
}
}, TaskScheduler.FromCurrentSynchronizationContext());


4.你如何暴露的.NET类为Javascript?

public class BoundObject
{
public string MyProperty { get; set; }
public void MyMethod()
{
// Do something really cool here.
}
}
// ...
//browser表示你的CefSharp对象使用它的RegisterJsObject来绑定你的.net类
browser.RegisterJsObject("bound", new BoundObject());

//在实际的JS代码中,你将使用这样的对象:
bound.myProperty; // 使用此语法访问属性

bound.myMethod(); // 使用此调用方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: