Browse Source

取消事件冒泡

master
С·æ 4 years ago
parent
commit
284698d469
  1. 5
      客户端/齐越慧眼/齐越慧眼/App.xaml.cs
  2. 3
      客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs
  3. 4
      客户端/齐越慧眼/齐越慧眼/Models/ItemLabelDto.cs
  4. 150
      客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs
  5. 49
      客户端/齐越慧眼/齐越慧眼/cefhelper/CefLifeSpanHandler.cs
  6. 50
      客户端/齐越慧眼/齐越慧眼/cefhelper/ExtChromiumBrowser.cs
  7. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/cats/Index.vue
  8. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue
  9. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js
  10. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map
  11. 1
      客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

5
客户端/齐越慧眼/齐越慧眼/App.xaml.cs

@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using .cefhelper; using .cefhelper;
@ -17,11 +18,13 @@ namespace 齐越慧眼
public partial class App : Application public partial class App : Application
{ {
public App() { public App() {
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var settings = new CefSettings() { var settings = new CefSettings() {
CachePath = System.Environment.CurrentDirectory + "\\webDatas\\data", CachePath = System.Environment.CurrentDirectory + "\\webDatas\\data",
// LocalesDirPath = System.Environment.CurrentDirectory + "\\webDatas", // LocalesDirPath = System.Environment.CurrentDirectory + "\\webDatas",
RootCachePath= System.Environment.CurrentDirectory + "\\rootCache", RootCachePath= System.Environment.CurrentDirectory + "\\rootCache",
UserAgent= "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0",
Locale= "zh-CN"
}; };
// ... // ...

3
客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs

@ -57,7 +57,8 @@ namespace 齐越慧眼
brower.jdRb.IsChecked = true; brower.jdRb.IsChecked = true;
break; break;
case 2: case 2:
brower.web.Load($"https://s.1688.com/selloffer/offer_search.htm?keywords={keyWord}&n=y"); keyWord = System.Web.HttpUtility.UrlEncode(keyWord, Encoding.GetEncoding("gb2312"));
brower.web.Load($"https://s.1688.com/selloffer/offer_search.htm?keywords={keyWord}");
brower.albbRb.IsChecked = true; brower.albbRb.IsChecked = true;
break; break;
} }

4
客户端/齐越慧眼/齐越慧眼/Models/ItemLabelDto.cs

@ -41,8 +41,8 @@ namespace 齐越慧眼.Models
/// </summary> /// </summary>
Jd = 1, Jd = 1,
/// <summary> /// <summary>
/// 拼多多 /// 阿里巴巴
/// </summary> /// </summary>
Pdd = 2 ALBB = 2
} }
} }

150
客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs

@ -2,10 +2,12 @@
using CefSharp.Wpf; using CefSharp.Wpf;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using .cefhelper;
namespace .UserControls namespace .UserControls
{ {
@ -16,12 +18,12 @@ namespace 齐越慧眼.UserControls
{ {
public static BrowerControl Main = null; public static BrowerControl Main = null;
public ChromiumWebBrowser web; public ExtChromiumBrowser web;
public BrowerControl() public BrowerControl()
{ {
InitializeComponent(); InitializeComponent();
web = new ChromiumWebBrowser("https://www.taobao.com") web = new ExtChromiumBrowser("https://www.taobao.com")
{ {
BrowserSettings = BrowserSettings =
{ {
@ -32,7 +34,7 @@ namespace 齐越慧眼.UserControls
ApplicationCache=CefState.Enabled, ApplicationCache=CefState.Enabled,
LocalStorage= CefState.Enabled LocalStorage= CefState.Enabled
}, }
}; };
grid.Children.Add(web); grid.Children.Add(web);
@ -42,8 +44,13 @@ namespace 齐越慧眼.UserControls
web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder); web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder);
Main = this; Main = this;
web.StartNewWindow += Web_StartNewWindow;
} }
private void Web_StartNewWindow(object sender, NewWindowEventArgs e)
{
web.Load(e.Url);
}
private void BrowerControl_Loaded(object sender, RoutedEventArgs e) private void BrowerControl_Loaded(object sender, RoutedEventArgs e)
{ {
@ -83,6 +90,7 @@ namespace 齐越慧眼.UserControls
{ {
StartPage(); StartPage();
} }
//web.ShowDevTools();
} }
} }
@ -102,7 +110,7 @@ namespace 齐越慧眼.UserControls
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
task = web.EvaluateScriptAsPromiseAsync("return $($('div#mainsrp-itemlist .items .item')[0]).html();"); task = web.EvaluateScriptAsPromiseAsync("return $(document.body).html();");
}); });
var result = task.Result; var result = task.Result;
@ -124,11 +132,12 @@ namespace 齐越慧眼.UserControls
CheckJDPageItem(); CheckJDPageItem();
} }
//if (lastUrl.Contains("s.taobao.com")) if (lastUrl.Contains("s.1688.com"))
//{ {
// AddTaoBaoOptionDiv(); Add1688OptionDiv();
// CheckTaoBaoPageItem(); Check1688PageItem();
//} web.ShowDevTools();
}
lastUrl = string.Empty; lastUrl = string.Empty;
break; break;
@ -242,6 +251,8 @@ namespace 齐越慧眼.UserControls
} }
#endregion #endregion
//object_id@653756566953^
#region 京东代码 #region 京东代码
/// <summary> /// <summary>
@ -334,6 +345,115 @@ namespace 齐越慧眼.UserControls
} }
#endregion #endregion
#region 阿里巴巴代码
/// <summary>
/// 检测页面商品
/// </summary>
/// <returns></returns>
private void Check1688PageItem()
{
var res = DoJavaScript(@"var ids=[]; $('ul#sm-offer-list div.normalcommon-offer-card').each(function(){ids.push($(this).attr(""data-aplus-report""))});return ids;");
List<string> reports = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(Newtonsoft.Json.JsonConvert.SerializeObject(res.result));
List<string> itemIds = new List<string>();
if (reports != null)
{
reports.ForEach(c =>
{
string objid = Regex.Match(c, "object_id@(.*?)^").Groups[1].Value;
itemIds.Add(objid);
});
}
var result = ApiHelper.GetLabelByItemIds(itemIds, Models.ItemPlatform.ALBB);
if (result.isOk)
{
foreach (var item in result.datas)
{
//判断是否团队过滤
if (item.IsFilter)
{
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').addClass(""falseBg"")");
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
}
else
{
//判断是否集团过滤
if (item.HasFilter)
{
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').prepend('<div class=""smallfalseBg""></div>')");
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
}
}
if (item.IsCompeting)
{
//<div style=""width:20%;height:20%"" class=""bgYellow"">竞</div>
if ((int)BrowerControl.Main.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('<div style=""width:20%;height:20%"" class=""stateYellow"">竞</div>')");
}
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
}
if (item.IsScreening)
{
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').addClass(""trueBg"")");
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
}
if (item.IsAdded)
{
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').addClass(""popBg"")");
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
}
}
}
}
/// <summary>
/// 添加操作面板
/// </summary>
/// <returns></returns>
private bool Add1688OptionDiv()
{
///添加js事件
DoJavaScript(@"
window.optClick= function (ele,type){
var e=window.event || arguments.callee.caller.arguments[0];
e.preventDefault();
e.stopPropagation();
var itemid= $(ele).parent().parent().parent().parent().attr(""data-sku"");
var price=$(ele).parent().parent().parent().parent().find("".p-price i"").text();
var sales=$(ele).parent().parent().parent().parent().find("".p-commit"").text();
var title=$(ele).parent().parent().parent().parent().find("".p-name a em"").text();
var img=$(ele).parent().parent().parent().parent().find("".p-img img"").attr(""src"");
hyCoreModel.setjdItemData({itemid:itemid,price:price,sales:sales,title:title,img:img,type:type});
};
");
return DoJavaScript(@"$('ul#sm-offer-list div.normalcommon-offer-card').find('.myitemState').remove();
$('ul#sm-offer-list div.normalcommon-offer-card .img-container a').before('
<div class=""myitemState"">
<div class=""stateGraydiv""></div></div>
<div class=""myopdiv"">
<div class=""bgYellow"" style=""display:flex;height:10%"" onclick=""optClick(this,3)""></div>
<div class=""bgZs"" style=""display:flex;height:10%"" onclick=""optClick(this,2)"" ></div>
<div class=""bgPig"" style=""display:flex;height:10%"" onclick=""optClick(this,1)""></div>
<div class=""bgGreen"" style=""display:flex;height:10%"" onclick=""optClick(this,0)""></div>
</div>
')").isOk;
}
#endregion
private bool AddCss() private bool AddCss()
{ {
///添加css ///添加css
@ -423,6 +543,16 @@ namespace 齐越慧眼.UserControls
z-index:9999; z-index:9999;
} }
.img-container:hover .myitemState
{
display:none;
}
.img-container:hover .myopdiv
{
display:unset;
z-index:9999;
}
.bgGreen .bgGreen
{ {
background: rgba(99, 161, 3, 0.8); background: rgba(99, 161, 3, 0.8);
@ -527,7 +657,7 @@ namespace 齐越慧眼.UserControls
private void albbRb_Click(object sender, RoutedEventArgs e) private void albbRb_Click(object sender, RoutedEventArgs e)
{ {
web.Load("https://www.1688.com/"); web.Load("https://s.1688.com/");
} }
} }

49
客户端/齐越慧眼/齐越慧眼/cefhelper/CefLifeSpanHandler.cs

@ -0,0 +1,49 @@
using CefSharp;
using System;
using System.Collections.Generic;
using System.Text;
namespace .cefhelper
{
public class CefLifeSpanHandler : CefSharp.ILifeSpanHandler
{
public CefLifeSpanHandler()
{
}
public bool DoClose(IWebBrowser browserControl, CefSharp.IBrowser browser)
{
if (browser.IsDisposed || browser.IsPopup)
{
return false;
}
return true;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
var chromiumWebBrowser = (ExtChromiumBrowser)browserControl;
chromiumWebBrowser.Dispatcher.Invoke(new Action(() =>
{
NewWindowEventArgs e = new NewWindowEventArgs(windowInfo, targetUrl);
chromiumWebBrowser.OnNewWindow(e);
}));
newBrowser = null;
return true;
}
}
}

50
客户端/齐越慧眼/齐越慧眼/cefhelper/ExtChromiumBrowser.cs

@ -0,0 +1,50 @@
using CefSharp;
using CefSharp.Wpf;
using System;
using System.Collections.Generic;
using System.Text;
namespace .cefhelper
{
public class ExtChromiumBrowser : ChromiumWebBrowser
{
public ExtChromiumBrowser()
: base(null)
{
this.LifeSpanHandler = new CefLifeSpanHandler();
//this.DownloadHandler = new DownloadHandler(this);
}
public ExtChromiumBrowser(string url) : base(url)
{
this.LifeSpanHandler = new CefLifeSpanHandler();
}
public event EventHandler<NewWindowEventArgs> StartNewWindow;
public void OnNewWindow(NewWindowEventArgs e)
{
if (StartNewWindow != null)
{
StartNewWindow(this, e);
}
}
}
public class NewWindowEventArgs : EventArgs
{
private IWindowInfo _windowInfo;
public IWindowInfo WindowInfo
{
get { return _windowInfo; }
set { value = _windowInfo; }
}
public string Url { get; set; }
public NewWindowEventArgs(IWindowInfo windowInfo, string url)
{
_windowInfo = windowInfo;
this.Url = url;
}
}
}

2
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/cats/Index.vue

@ -7,7 +7,7 @@
<a-tab-pane key="1" tab="京东"> <a-tab-pane key="1" tab="京东">
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="拼多多"> <a-tab-pane key="2" tab="阿里巴巴">
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>

2
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue

@ -80,7 +80,7 @@
<div style="height: 40px;" v-for="(ext,index) in item.Extensions" :key="index"> <div style="height: 40px;" v-for="(ext,index) in item.Extensions" :key="index">
<span v-if="ext.Platform==0">淘宝</span> <span v-if="ext.Platform==0">淘宝</span>
<span v-if="ext.Platform==1">京东</span> <span v-if="ext.Platform==1">京东</span>
<span v-if="ext.Platform==2">拼多多</span> <span v-if="ext.Platform==2">阿里巴巴</span>
</div> </div>
</a-col> </a-col>
<!--采购链接--> <!--采购链接-->

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map

File diff suppressed because one or more lines are too long

1
客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

@ -65,6 +65,7 @@
<PackageReference Include="HandyControl" Version="3.2.0" /> <PackageReference Include="HandyControl" Version="3.2.0" />
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" /> <PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

Loading…
Cancel
Save