From 12821a166606090424ef4a9b28b8ccbf71cf68d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=C2=B7=C3=A6?= <279202647@qq.com> Date: Wed, 3 Nov 2021 10:31:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9C=B0=E5=9D=80=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../齐越慧眼/齐越慧眼/ApiHelper.cs | 4 +- .../齐越慧眼/齐越慧眼/MainWindow.xaml | 2 +- .../齐越慧眼/MainWindow.xaml.cs | 6 +- .../UserControls/BrowerControl.xaml | 29 +---- .../UserControls/BrowerControl.xaml.cs | 107 ++++++++++-------- .../UserControls/BrowerTabPanelControl.xaml | 42 +++++++ .../BrowerTabPanelControl.xaml.cs | 58 ++++++++++ .../cefhelper/CefRequestHandler.cs | 15 ++- 8 files changed, 182 insertions(+), 81 deletions(-) create mode 100644 客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml create mode 100644 客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml.cs diff --git a/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs b/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs index 34237e5..fbabec6 100644 --- a/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs +++ b/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs @@ -10,8 +10,8 @@ namespace 齐越慧眼 { public class ApiHelper { - public static string ApiBase { get; set; } = "http://localhost:5000"; - //public static string ApiBase { get; set; } = "http://hyapi.qiyue666.com"; + //public static string ApiBase { get; set; } = "http://localhost:5000"; + public static string ApiBase { get; set; } = "http://hyapi.qiyue666.com"; public static string JwtToken { get; set; } diff --git a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml index 22d0c63..5594137 100644 --- a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml +++ b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml @@ -22,7 +22,7 @@ - + diff --git a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs index c35a82b..c8786b4 100644 --- a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs +++ b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs @@ -49,16 +49,16 @@ namespace 齐越慧眼 tab.SelectedIndex = 2; switch (type) { case 0: - brower.web.Load($"https://s.taobao.com/search?q={keyWord}&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index"); + brower.NewTab($"https://s.taobao.com/search?q={keyWord}&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index"); brower.tbRb.IsChecked = true; break; case 1: - brower.web.Load($"https://search.jd.com/Search?keyword={keyWord}&enc=utf-8"); + brower.NewTab($"https://search.jd.com/Search?keyword={keyWord}&enc=utf-8"); brower.jdRb.IsChecked = true; break; case 2: keyWord = System.Web.HttpUtility.UrlEncode(keyWord, Encoding.GetEncoding("gb2312")); - brower.web.Load($"https://s.1688.com/selloffer/offer_search.htm?keywords={keyWord}"); + brower.NewTab($"https://s.1688.com/selloffer/offer_search.htm?keywords={keyWord}"); brower.albbRb.IsChecked = true; break; } diff --git a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml index 2a5e602..10aa3db 100644 --- a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml +++ b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml @@ -6,33 +6,10 @@ xmlns:local="clr-namespace:齐越慧眼.UserControls" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - - - - - - - - - - + + + diff --git a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs index 2ae0cdf..83e2a67 100644 --- a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs +++ b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs @@ -17,13 +17,13 @@ namespace 齐越慧眼.UserControls /// public partial class BrowerControl : UserControl { - - public static BrowerControl Main = null; + public HandyControl.Controls.TabItem Tab { get; set; } public ExtChromiumBrowser web; - public BrowerControl() + public BrowerControl(string url, HandyControl.Controls.TabItem tabItem) { InitializeComponent(); - web = new ExtChromiumBrowser("https://www.taobao.com") + Tab = tabItem; + web = new ExtChromiumBrowser(url) { BrowserSettings = { @@ -38,7 +38,7 @@ namespace 齐越慧眼.UserControls //RequestHandler =new MyRequestHandler() }; - MyResourceRequestHandlerFactory myResourceRequestHandlerFactory = new MyResourceRequestHandlerFactory(); + MyResourceRequestHandlerFactory myResourceRequestHandlerFactory = new MyResourceRequestHandlerFactory(this); myResourceRequestHandlerFactory.Handlers.TryAdd("test",null); web.ResourceRequestHandlerFactory = myResourceRequestHandlerFactory; @@ -46,12 +46,34 @@ namespace 齐越慧眼.UserControls grid.Children.Add(web); Loaded += BrowerControl_Loaded; - web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; - - web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder); - Main = this; + web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; + var cjs = new CefAsyncJS(); + cjs.Brower = this; + web.JavascriptObjectRepository.Register("hyCoreModel", cjs, BindingOptions.DefaultBinder); web.StartNewWindow += Web_StartNewWindow; + web.TitleChanged += Web_TitleChanged; + web.AddressChanged += Web_AddressChanged; + } + + private void Web_AddressChanged(object sender, DependencyPropertyChangedEventArgs e) + { + Application.Current.Dispatcher.Invoke(()=> { + txtUrl.Text = e.NewValue.ToString(); + }); + } + + public void Exit() + { + web.Dispose(); + } + + private void Web_TitleChanged(object sender, DependencyPropertyChangedEventArgs e) + { + Application.Current.Dispatcher.Invoke(() => + { + Tab.Header = e.NewValue; + }); } int nowPatlom = 0; @@ -87,7 +109,8 @@ namespace 齐越慧眼.UserControls private void Web_StartNewWindow(object sender, NewWindowEventArgs e) { - web.Load(e.Url); + MainWindow.Main.brower.NewTab(e.Url); + //web.Load(e.Url); } private void BrowerControl_Loaded(object sender, RoutedEventArgs e) @@ -269,7 +292,7 @@ namespace 齐越慧眼.UserControls if (item.IsCompeting) { - if ((int)BrowerControl.Main.DoJavaScript(@$"return $($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{item.GoodsId}""]').parent().parent()).find('.stateYellow').length").result <= 0) + if ((int)DoJavaScript(@$"return $($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{item.GoodsId}""]').parent().parent()).find('.stateYellow').length").result <= 0) { DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{item.GoodsId}""]').parent().parent()).find('.myitemState').prepend('
')"); } @@ -372,7 +395,7 @@ namespace 齐越慧眼.UserControls if (item.IsCompeting) { //
- if ((int)BrowerControl.Main.DoJavaScript(@$"return $($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateYellow').length").result <= 0) + if ((int)DoJavaScript(@$"return $($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateYellow').length").result <= 0) { DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').prepend('
')"); } @@ -762,33 +785,23 @@ namespace 齐越慧眼.UserControls return (result.Success,result.Result); } - private void tbRb_Click(object sender, RoutedEventArgs e) - { - web.Load("https://www.taobao.com/"); - } - - private void jdRb_Click(object sender, RoutedEventArgs e) + private void txtUrl_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) { - web.Load("https://www.jd.com/"); - } - - private void albbRb_Click(object sender, RoutedEventArgs e) - { - web.Load("https://www.1688.com/?spm=a26352.13672862.searchbox.1.27bf6ae2slybzR"); + if (e.Key == System.Windows.Input.Key.Enter) + { + web.Load(txtUrl.Text); + } } } public class CefAsyncJS { + public BrowerControl Brower { get; set; } - public string getTest() - { - return ""; - } public void onAjaxHook(string url) { - MainWindow.Main.brower.OnUrlEnd(url); + Brower.OnUrlEnd(url); } public bool settaobaoItemData(dynamic data) @@ -824,29 +837,29 @@ namespace 齐越慧眼.UserControls //判断是否团队过滤 if (type == 1) { - BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""falseBg"")"); + Brower.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""falseBg"")"); } if (type == 3) { - int row = (int)BrowerControl.Main.DoJavaScript(@$"return $($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').find('.stateYellow').length").result; + int row = (int)Brower.DoJavaScript(@$"return $($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').find('.stateYellow').length").result; if (row < 1) { - BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').prepend('
')"); + Brower.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').prepend('
')"); } } if (type == 0) { - BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""trueBg"")"); + Brower.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""trueBg"")"); } if (type == 2) { - BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""popBg"")"); + Brower.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""popBg"")"); } - BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.stateGraydiv').addClass(""divshow"")"); + Brower.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.stateGraydiv').addClass(""divshow"")"); } @@ -890,29 +903,29 @@ namespace 齐越慧眼.UserControls //判断是否团队过滤 if (type == 1) { - BrowerControl.Main.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""falseBg"")"); + Brower.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""falseBg"")"); } if (type == 3) { - int row = (int)BrowerControl.Main.DoJavaScript(@$"return $($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').find('.stateYellow').length").result; + int row = (int)Brower.DoJavaScript(@$"return $($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').find('.stateYellow').length").result; if (row < 1) { - BrowerControl.Main.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').prepend('
')"); + Brower.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').prepend('
')"); } } if (type == 0) { - BrowerControl.Main.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""trueBg"")"); + Brower.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""trueBg"")"); } if (type == 2) { - BrowerControl.Main.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""popBg"")"); + Brower.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.myitemState').addClass(""popBg"")"); } - BrowerControl.Main.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.stateGraydiv').addClass(""divshow"")"); + Brower.DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{itemId}""]')).find('.stateGraydiv').addClass(""divshow"")"); } @@ -948,10 +961,10 @@ namespace 齐越慧眼.UserControls if (result.isOk) { - int row = (int)BrowerControl.Main.DoJavaScript(@$"return $($('ul#sm-offer-list div[data-shopId=""{shopId}""]')).find('.myitemState').find('.stateYellow').length").result; + int row = (int)Brower.DoJavaScript(@$"return $($('ul#sm-offer-list div[data-shopId=""{shopId}""]')).find('.myitemState').find('.stateYellow').length").result; if (row < 1) { - BrowerControl.Main.DoJavaScript($@"$($('ul#sm-offer-list div[data-shopId=""{shopId}""]')).find('.myitemState').prepend('
')"); + Brower.DoJavaScript($@"$($('ul#sm-offer-list div[data-shopId=""{shopId}""]')).find('.myitemState').prepend('
')"); } } @@ -977,20 +990,20 @@ namespace 齐越慧眼.UserControls //判断是否团队过滤 if (type == 1) { - BrowerControl.Main.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""falseBg"")"); + Brower.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""falseBg"")"); } if (type == 0) { - BrowerControl.Main.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""trueBg"")"); + Brower.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""trueBg"")"); } if (type == 2) { - BrowerControl.Main.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""popBg"")"); + Brower.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.myitemState').addClass(""popBg"")"); } - BrowerControl.Main.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.stateGraydiv').addClass(""divshow"")"); + Brower.DoJavaScript($@"$($('ul#sm-offer-list div[data-sku=""{itemId}""]')).find('.stateGraydiv').addClass(""divshow"")"); } WpfNoticeMsg.NoticeMessage.Show(result.msg, "提示"); return result.isOk; diff --git a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml new file mode 100644 index 0000000..ed179a4 --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + diff --git a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml.cs b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml.cs new file mode 100644 index 0000000..2e26811 --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerTabPanelControl.xaml.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +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.Navigation; +using System.Windows.Shapes; + +namespace 齐越慧眼.UserControls +{ + /// + /// BrowerTabPanelControl.xaml 的交互逻辑 + /// + public partial class BrowerTabPanelControl : UserControl + { + public BrowerTabPanelControl() + { + InitializeComponent(); + } + + public void NewTab(string url) + { + var item = new HandyControl.Controls.TabItem() { IsSelected = true }; + item.Closed += (e, s) => { + var obj = e as HandyControl.Controls.TabItem; + var brower= obj.Content as BrowerControl; + brower.Exit(); + + }; + BrowerControl browerControl = new BrowerControl(url,item); + item.Content = browerControl; + tab.Items.Add(item); + } + + private void tbRb_Click(object sender, RoutedEventArgs e) + { + NewTab("https://www.taobao.com/"); + //web.Load("https://www.taobao.com/"); + } + + private void jdRb_Click(object sender, RoutedEventArgs e) + { + NewTab("https://www.jd.com/"); + //web.Load("https://www.jd.com/"); + } + + private void albbRb_Click(object sender, RoutedEventArgs e) + { + NewTab("https://www.1688.com/?spm=a26352.13672862.searchbox.1.27bf6ae2slybzR"); + //web.Load("https://www.1688.com/?spm=a26352.13672862.searchbox.1.27bf6ae2slybzR"); + } + } +} diff --git a/客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs b/客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs index 7a21522..58c81a1 100644 --- a/客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs +++ b/客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs @@ -37,17 +37,28 @@ namespace 齐越慧眼.cefhelper public class MyResourceRequestHandlerFactory : ResourceRequestHandlerFactory { + public MyResourceRequestHandlerFactory(BrowerControl brower) + { + Brower = brower; + } + public BrowerControl Brower; + protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling) { - return new MyResourceRequestHandler(); + return new MyResourceRequestHandler(Brower); } } public class MyResourceRequestHandler : ResourceRequestHandler { + public MyResourceRequestHandler(BrowerControl brower) + { + Brower = brower; + } + public BrowerControl Brower; protected override bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response) { - MainWindow.Main.brower.OnUrlEnd(request.Url); + Brower.OnUrlEnd(request.Url); return base.OnResourceResponse(chromiumWebBrowser, browser, frame, request, response); } }