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

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(); // 使用此調用方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章