1. 程式人生 > >使用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