飞扬的Blog
主页
登录
WebView2笔记
"date"
:
"2021-07-26 01:13:22"
"classfiy"
:
"other"
"author"
:
"飞扬"
"viewTimes"
:
1168
返回
[TOC] ## 过滤请求并修改请求 >- AddWebResourceRequestedFilter - WebResourceRequested ```csharp webView.CoreWebView2.AddWebResourceRequestedFilter("*://blog.fysmart.cn/*",CoreWebView2WebResourceContext.All); webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested; private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e) { e.Request.Headers.SetHeader("content-type", "json"); } ``` ##获取请求内容 >WebResourceResponseReceived ```csharp //获取内容的类型 e.Response.Headers.GetHeader("content-type") ``` ##忽略证书验证 >使用chrome的命令行:--ignore-certificate-errors ```csharp var options = new CoreWebView2EnvironmentOptions(); options.AdditionalBrowserArguments = "--ignore-certificate-errors"; var env = await CoreWebView2Environment.CreateAsync(options: options); await webView.EnsureCoreWebView2Async(env); ``` ##映射本地目录到虚拟网址 >SetVirtualHostNameToFolderMapping ``` webView.CoreWebView2.SetVirtualHostNameToFolderMapping("test.local", @"folder", CoreWebView2HostResourceAccessKind.Allow); ``` ##调用异步JS直到函数执行完毕获取返回值 >javascript ```javascript idents = {}; $.extend({ setIdent: function (target, value) { value = value || 0; eval(`idents.${target}=${value}`); }, getIdent: function(target){ let re = eval(`idents.${target}`); if (typeof (re) === 'undefined') return 404; return re; } }); function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time)); } async function test(){ $.setIdent("isok", 0); await sleep(3000); console.log('complete'); let result = {test:'2333'}; $.setIdent("isok", result); return 1; } ``` >CSharp ```csharp public async Task<string> _WaitJQResult(string key) { await Task.Run(async () => { string re = ""; do { await this.Dispatcher.BeginInvoke(new Action(async () => { re = await webView.CoreWebView2.ExecuteScriptAsync($"$.getIdent('{key}')"); })); await Task.Delay(200); } while (re.Replace("\"", "") != "1" && re.Replace("\"", "") != "404"); return re; }); } async void GetJQueryResult(){ await test(); var result = await _WaitJQResult("isok"); MessageBox.Show(result); } ```