之前文章中介紹過通過JS實現WebView2宿主程序和前端頁面進行通信的方法。在WebView2中,更加通用而高效的方式是WebMessage,它是一個異步的消息通信,並且支持雙向通信,本文這里簡單的介紹下其用法。
前端頁面發送消息給宿主程序:
首先,在WebView中定義接收到消息的處理函數:
webView.WebMessageReceived += (s, e) =>
{
MessageBox.Show(e.WebMessageAsJson);
};
PS:這個事件在CoreWebView2上也有,使用效果是一樣的。
然后,在前端腳本中發送消息:
chrome.webview.postMessage('hello world')
執行效果如下:
宿主程序發消息給前端頁面:
首先,前端注冊消息的處理函數:
chrome.webview.addEventListener('message', event => alert(event.data));
然后,CoreWebView2.PostWebMessageAsXXX函數發送消息
webView.CoreWebView2.PostWebMessageAsString("hello world");
執行效果如下:
禁用WebMessage:
如果為了安全起見,也可以通過設置將其禁用:
webView.CoreWebView2.Settings.IsWebMessageEnabled = false;
參考文章: