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.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using .cefhelper;
@ -17,11 +18,13 @@ namespace 齐越慧眼
public partial class App : Application
{
public App() {
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var settings = new CefSettings() {
CachePath = System.Environment.CurrentDirectory + "\\webDatas\\data",
// LocalesDirPath = System.Environment.CurrentDirectory + "\\webDatas",
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;
break;
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;
break;
}

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

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

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

@ -2,10 +2,12 @@
using CefSharp.Wpf;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using .cefhelper;
namespace .UserControls
{
@ -16,12 +18,12 @@ namespace 齐越慧眼.UserControls
{
public static BrowerControl Main = null;
public ChromiumWebBrowser web;
public ExtChromiumBrowser web;
public BrowerControl()
{
InitializeComponent();
web = new ChromiumWebBrowser("https://www.taobao.com")
web = new ExtChromiumBrowser("https://www.taobao.com")
{
BrowserSettings =
{
@ -32,7 +34,7 @@ namespace 齐越慧眼.UserControls
ApplicationCache=CefState.Enabled,
LocalStorage= CefState.Enabled
},
}
};
grid.Children.Add(web);
@ -42,8 +44,13 @@ namespace 齐越慧眼.UserControls
web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder);
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)
{
@ -83,6 +90,7 @@ namespace 齐越慧眼.UserControls
{
StartPage();
}
//web.ShowDevTools();
}
}
@ -102,7 +110,7 @@ namespace 齐越慧眼.UserControls
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;
@ -124,11 +132,12 @@ namespace 齐越慧眼.UserControls
CheckJDPageItem();
}
//if (lastUrl.Contains("s.taobao.com"))
//{
// AddTaoBaoOptionDiv();
// CheckTaoBaoPageItem();
//}
if (lastUrl.Contains("s.1688.com"))
{
Add1688OptionDiv();
Check1688PageItem();
web.ShowDevTools();
}
lastUrl = string.Empty;
break;
@ -242,6 +251,8 @@ namespace 齐越慧眼.UserControls
}
#endregion
//object_id@653756566953^
#region 京东代码
/// <summary>
@ -334,6 +345,115 @@ namespace 齐越慧眼.UserControls
}
#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()
{
///添加css
@ -423,6 +543,16 @@ namespace 齐越慧眼.UserControls
z-index:9999;
}
.img-container:hover .myitemState
{
display:none;
}
.img-container:hover .myopdiv
{
display:unset;
z-index:9999;
}
.bgGreen
{
background: rgba(99, 161, 3, 0.8);
@ -527,7 +657,7 @@ namespace 齐越慧眼.UserControls
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>
<a-tab-pane key="2" tab="拼多多">
<a-tab-pane key="2" tab="阿里巴巴">
</a-tab-pane>
</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">
<span v-if="ext.Platform==0">淘宝</span>
<span v-if="ext.Platform==1">京东</span>
<span v-if="ext.Platform==2">拼多多</span>
<span v-if="ext.Platform==2">阿里巴巴</span>
</div>
</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="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" />
</ItemGroup>
<ItemGroup>

Loading…
Cancel
Save