Cefsharp使用教程四( js回调,C#方法)
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(); // 使用此调用方法。
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet"> </div> <script> (function(){ function setArticleH(btnReadmore,posi){ var winH = $(window).height(); var articleBox = $("div.article_content"); var artH = articleBox.height(); if(artH > winH*posi){ articleBox.css({ 'height':winH*posi+'px', 'overflow':'hidden' }) btnReadmore.click(function(){ articleBox.removeAttr("style"); $(this).parent().remove(); }) }else{ btnReadmore.parent().remove(); } } var btnReadmore = $("#btn-readmore"); if(btnReadmore.length>0){ if(currentUserName){ setArticleH(btnReadmore,3); }else{ setArticleH(btnReadmore,1.2); } } })() </script> </article>