C# 使用Microsoft Edge WebView2的相关总结

编辑: admin 分类: c#语言 发布时间: 2021-11-25 来源:互联网
目录
  • 一、C#和JS互相调用 
    • 1、js调用C# 
    • 2、C#调用JS
  • 二、缩放问题

    一、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;

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

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

    以上就是C# 使用Microsoft Edge WebView2的相关总结的详细内容,更多关于C# 使用Microsoft Edge WebView2的资料请关注海外IDC网其它相关文章!

    【文章转自:http://www.1234xp.com/xjp.html 复制请保留原URL】