1. C#에서 Javascript 호출 예시
// C# 코드 (송신)
webView.CoreWebView2.PostWebMessageAsString("전달하려는 string");
// Javascript 코드 (수신)
window.chrome.webview.addEventListener('message', evt => {
//evt.data를 수신하여 사용.
});
2. C#에서 Javascript 함수 직접호출
// ExecuteScriptAsync 이용하여 javascript함수를 호출
// 함수명은 "JsFunction()", 이런식으로 추가합니다.
var ret = await webView.CoreWebView2.ExecuteScriptAsync("javascript 함수명");
// javascript function
function JsFunction()
{
// 특정행위.
}
3. Javascript에서 postMessage를 이용하는 방식외에 C#에서 제공한 함수 직접호출
// C# 코드
// 생성자 및 Loaded함수에 AddHostObjectToScript 설정
await webView.EnsureCoreWebView2Async();
webView.CoreWebView2.AddHostObjectToScript("Communicator", new Communicator());
// Communicator Class 의 작성
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class Communicator
{
public string Func(string param)
{
return JsonConvert.SerializeObject(new
{
result = param,
success = true
});
}
}
4. Javascript에서 Communicator를 이용한 호출
// Javascript에서 C#코드 비동기 호출
async function 비동기호출() {
const bridge = chrome.webview.hostObjects.bridge;
const prop = await bridge.AnotherObject.Prop;
}
// Javascript에서 C#코드 동기 호출
function 동기호출() {
const bridge = chrome.webview.hostObjects.sync.bridge;
var ret = bridge.Func("param string");
}
CoreWebView2.AddHostObjectToScript(String, Object) Method (Microsoft.Web.WebView2.Core)
Adds the provided host object to script running in the WebView with the specified name.
learn.microsoft.com