Tuesday, February 23, 2021

C#使用Microsoft Edge WebView2记录

一、C#和JS互相调用 

1、js调用C# 

 C#代码如下:

 webView.CoreWebView2.AddHostObjectToScript("webBrowserObj", new ScriptCallbackObject());

 await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("var webBrowserObj= window.chrome.webview.hostObjects.webBrowserObj;");

 像网页里面注入变量,这样网页调用时候不用每次写window.chrome.webview.hostObjects.webBrowserObj调用,最主要的是为了兼容之前cef里面Js的写法。

 [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] /// <summary> /// 网页调用C#方法 /// </summary> public class ScriptCallbackObject {  public string UserName { get; set; } = "我是C#属性";  public void ShowMessage()  {   MessageBox.Show("网页调用C#");  }  public void ShowMessageArg(string arg)  {   MessageBox.Show("【网页调用C#】:" + arg);  }  public string GetData(string arg)  {   return "【网页调用C#获取数据】;" + 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调用如下;

function callCsharp2() {

var data2 = $("#txtArg").attr("value"); //大坑 值不会时刻变化
// 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#调用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#调用网页  var jsVar = '123';  function Hello() {   alert('调用Js' + jsVar);  };  function ShowMessage() {   alert('我是网页');  };  function ShowMessageArg(arg) {   alert('【我是网页消息框】' + arg);  };  function GetData(arg) {   return '【我是网页返回给你】:' + arg;  };

 

二、缩放问题

   webView.CoreWebView2.Settings.IsZoomControlEnabled = false;

   只能禁止鼠标缩放,不能禁止手势缩放。 见问题 

   另外触摸到底部门的时候 有弹跳,暂时也无法解决。

 









原文转载:http://www.shaoqun.com/a/582612.html

跨境电商:https://www.ikjzd.com/

环球市场:https://www.ikjzd.com/w/1762

r标:https://www.ikjzd.com/w/1070


一、C#和JS互相调用1、js调用C#C#代码如下:webView.CoreWebView2.AddHostObjectToScript("webBrowserObj",newScriptCallbackObject());awaitwebView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("varwe
谷歌趋势:https://www.ikjzd.com/w/397
萌店:https://www.ikjzd.com/w/1538
飞书互动:https://www.ikjzd.com/w/1319
亚马逊目录分析:如何通过ASIN来推动销量增长:https://www.ikjzd.com/home/19879
亚马逊选品为什么这么重要,我们怎样把亚马逊选品做好?:https://www.ikjzd.com/home/103285
wish卖家的10道必答题!:https://www.ikjzd.com/home/93886

No comments:

Post a Comment