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
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();
|
|
}
|
|
}
|
|
}
|
|
|