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

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

  2.其他Frame操作

1
2
3
4
5
6
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类返回一个响应,其中包含错误消息,结果和一个成功(布尔)标志。

1
2
3
4
5
6
7
8
9
10
11
// 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?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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(); // 使用此调用方法。

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        <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>

 

posted @   多见多闻  阅读(2045)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示