C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)
一、C#和JS互相調(diào)用
1、js調(diào)用C#
C#代碼如下:
webView.CoreWebView2.AddHostObjectToScript("webBrowserObj", new ScriptCallbackObject()); await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("var webBrowserObj= window.chrome.webview.hostObjects.webBrowserObj;");
像網(wǎng)頁(yè)里面注入變量,這樣網(wǎng)頁(yè)調(diào)用時(shí)候不用每次寫(xiě)window.chrome.webview.hostObjects.webBrowserObj調(diào)用,最主要的是為了兼容之前cef里面Js的寫(xiě)法。
[ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] /// <summary> /// 網(wǎng)頁(yè)調(diào)用C#方法 /// </summary> public class ScriptCallbackObject { public string UserName { get; set; } = "我是C#屬性"; public void ShowMessage() { MessageBox.Show("網(wǎng)頁(yè)調(diào)用C#"); } public void ShowMessageArg(string arg) { MessageBox.Show("【網(wǎng)頁(yè)調(diào)用C#】:" + arg); } public string GetData(string arg) { return "【網(wǎng)頁(yè)調(diào)用C#獲取數(shù)據(jù)】;" + arg; } [System.Runtime.CompilerServices.IndexerName("Items")] public string this[int index] { get { return m_dictionary[index]; } set { m_dictionary[index] = value; } } private Dictionary<int, string> m_dictionary = new Dictionary<int, string>(); }
JS調(diào)用如下;
function callCsharp2() { var data2 = $("#txtArg").attr("value"); //大坑 值不會(huì)時(shí)刻變化 // alert(data2); var data = $("#txtArg").val(); window.chrome.webview.hostObjects.webBrowserObj.ShowMessageArg(data); //window.chrome.webview.postMessage(data); }; async function callCsharp3() { var data = $("#txtArg").val(); var result = await webBrowserObj.GetData(data); alert(result); }; async function callCsharp4() { const propValue = await webBrowserObj.UserName; console.log(propValue); alert(propValue); };
2、C#調(diào)用JS
private void callJS_Click(object sender, RoutedEventArgs e) { webView.CoreWebView2.ExecuteScriptAsync("ShowMessage()"); } private void callJSArg_Click(object sender, RoutedEventArgs e) { webView.CoreWebView2.ExecuteScriptAsync($"ShowMessageArg('{txtArg.Text}')"); } private async void callJSGetData_Click(object sender, RoutedEventArgs e) { var jsResult = await webView.CoreWebView2.ExecuteScriptAsync($"GetData('{txtArg.Text}')"); if (!string.IsNullOrEmpty(jsResult)) { MessageBox.Show(jsResult); } }
js里面的代碼
//2、C#調(diào)用網(wǎng)頁(yè) var jsVar = '123'; function Hello() { alert('調(diào)用Js' + jsVar); }; function ShowMessage() { alert('我是網(wǎng)頁(yè)'); }; function ShowMessageArg(arg) { alert('【我是網(wǎng)頁(yè)消息框】' + arg); }; function GetData(arg) { return '【我是網(wǎng)頁(yè)返回給你】:' + arg; };
二、縮放問(wèn)題
webView.CoreWebView2.Settings.IsZoomControlEnabled = false;
只能禁止鼠標(biāo)縮放,不能禁止手勢(shì)縮放。 見(jiàn)問(wèn)題
另外觸摸到底部門(mén)的時(shí)候 有彈跳,暫時(shí)也無(wú)法解決。
以上就是C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于C# 使用Microsoft Edge WebView2的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在C#里面給PPT文檔添加注釋的實(shí)現(xiàn)代碼
平常開(kāi)會(huì)或者做總結(jié)報(bào)告的時(shí)候我們通常都會(huì)用到PowerPoint演示文稿,我們可以在單個(gè)幻燈片或者全部幻燈片里面添加注釋?zhuān)@樣觀(guān)眾可以從注釋內(nèi)容里面獲取更多的相關(guān)信息,需要的朋友可以參考下2017-01-01WPF中下拉框可作選擇項(xiàng)也可以作為只讀文本框使用的方法
這篇文章主要給大家介紹了關(guān)于WPF中下拉框可以選擇項(xiàng)也可以作為只讀文本框使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02C#中括號(hào)強(qiáng)轉(zhuǎn)、as、is區(qū)別詳解
本文主要介紹了C#中括號(hào)強(qiáng)轉(zhuǎn)、as、is區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02C#中parallel.foreach實(shí)現(xiàn)多線(xiàn)程處理
Parallel.ForEach方法是C#中的一個(gè)并行循環(huán)方法,它可以并行地對(duì)一個(gè)集合進(jìn)行迭代操作,本文主要介紹了C#中parallel.foreach實(shí)現(xiàn)多線(xiàn)程處理,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02