c# .net webview2 執行js 回調 獲取返回值

之前文章中介紹過通過JS實現WebView2宿主程序和前端頁面進行通信的方法。在WebView2中,更加通用而高效的方式是WebMessage,它是一個異步的消息通信,并且支持雙向通信,本文這里簡單的介紹下其用法。

前端頁面發送消息給宿主程序:

首先,在WebView中定義接收到消息的處理函數:

webView.WebMessageReceived += (s, e) =>     {     MessageBox.Show(e.WebMessageAsJson);     };

PS:這個事件在CoreWebView2上也有,使用效果是一樣的。

然后,在前端腳本中發送消息:

chrome.webview.postMessage('hello world')

執行效果如下:

![image](https://upload-images.jianshu.io/upload_images/15042729-8ae191a46ff30334.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

宿主程序發消息給前端頁面:

首先,前端注冊消息的處理函數:

chrome.webview.addEventListener('message', event => alert(event.data));

然后,CoreWebView2.PostWebMessageAsXXX函數發送消息

    webView.CoreWebView2.PostWebMessageAsString("hello world");

執行效果如下:

image

禁用WebMessage:

如果為了安全起見,也可以通過設置將其禁用:

    webView.CoreWebView2.Settings.IsWebMessageEnabled = false;

參考文章:

主機和 Web 內容之間的通信

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容