步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
4.0 KiB

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
{
/// <summary>
/// GrabJDMibole.xaml 的交互逻辑
/// </summary>
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();
}
}
}