using Microsoft.Web.WebView2.Core; using Microsoft.Web.WebView2.Wpf; using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using io = System.IO; namespace BBWY.Client.Views.Order { /// /// GrabJDMibole.xaml 的交互逻辑 /// public partial class GrabJDMibole : Window { private WebView2 wb2; //private Stopwatch sw; private string orderId; public GrabJDMibole(string orderId) { InitializeComponent(); this.orderId = orderId; this.Loaded += GrabJDMibole_Loaded; this.Unloaded += GrabJDMibole_Unloaded; } private void GrabJDMibole_Unloaded(object sender, RoutedEventArgs e) { this.Unloaded -= GrabJDMibole_Unloaded; if (wb2 != null && wb2.CoreWebView2 != null) { wb2.CoreWebView2InitializationCompleted -= Wb2_CoreWebView2InitializationCompleted; wb2.NavigationCompleted -= Wb2_NavigationCompleted; wb2.WebMessageReceived -= CoreWebView2_WebMessageReceived; //wb2.Dispose(); Console.WriteLine("wb2 Disposed"); } } private void GrabJDMibole_Loaded(object sender, RoutedEventArgs e) { //sw = new Stopwatch(); wb2 = new WebView2(); grid.Children.Add(wb2); //sw.Start(); var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(io.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "WebView2UserData")).Result; wb2.EnsureCoreWebView2Async(wb2Setting); wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted; wb2.NavigationCompleted += Wb2_NavigationCompleted; wb2.WebMessageReceived += CoreWebView2_WebMessageReceived; } private void Wb2_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e) { //sw.Stop(); //Console.WriteLine(sw.ElapsedMilliseconds); wb2.CoreWebView2.Navigate($"https://neworder.shop.jd.com/order/orderDetail?orderId={orderId}"); } private async void Wb2_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) { //Console.WriteLine(wb2.CoreWebView2.Source); //Console.WriteLine(wb2.Source); if (wb2.CoreWebView2.Source.StartsWith("https://passport.shop.jd.com/login")) { //首次打开需要登录 await wb2.CoreWebView2.ExecuteScriptAsync("window.scrollTo(790,150)"); await wb2.CoreWebView2.ExecuteScriptAsync("document.querySelector(\"div[data-tab-id='form']\").click()"); } else if (wb2.CoreWebView2.Source.StartsWith("https://neworder.shop.jd.com/order/orderDetail")) { //进入订单详情页面,触发点击查看手机号 Console.WriteLine("触发查看手机号"); var js = @"var mobileNode = document.getElementById('mobile'); mobileNode.addEventListener('DOMNodeInserted',function(e){ var m=mobileNode.innerText; window.chrome.webview.postMessage(m);}); document.getElementById('viewOrderMobile').click();"; _ = await wb2.CoreWebView2.ExecuteScriptAsync(js); } } private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) { var mobole = e.TryGetWebMessageAsString(); this.Tag = mobole; this.DialogResult = true; this.Close(); } } }