使用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注入更多資訊,可以參看這個網頁。ofollow,noindex" target="_blank">how-do-you-expose-a-net-class-to-javascript