阿里巴巴国际站产品辅助脚本

1. 添加【零效果产品页】【产品运营工作台页】【产品分析页】编辑及数据效果查看按钮 2. 添加【产品详情页】编辑及数据查看按钮,修改图片链接为原图,添加显示产品关键词,添加视频链接与封面链接 3. 添加【图片银行页】直接下载原图按钮 4. 添加【关键词指数页】搜索按钮 5. 添加【产品关键词搜索页】显示公司名按钮 6.添加【产品列表页】序列和效果按钮 7. 显示阿里巴巴标签页名称 8. 【产品编辑页】增强

  1. // ==UserScript==
  2.  
  3. // @name 阿里巴巴国际站产品辅助脚本
  4. // @namespace http://www.alibaba.com
  5. // @author Lepturus
  6. // @version 0.0.9
  7. // @icon http://is.alicdn.com/favicon.ico
  8. // @description 1. 添加【零效果产品页】【产品运营工作台页】【产品分析页】编辑及数据效果查看按钮 2. 添加【产品详情页】编辑及数据查看按钮,修改图片链接为原图,添加显示产品关键词,添加视频链接与封面链接 3. 添加【图片银行页】直接下载原图按钮 4. 添加【关键词指数页】搜索按钮 5. 添加【产品关键词搜索页】显示公司名按钮 6.添加【产品列表页】序列和效果按钮 7. 显示阿里巴巴标签页名称 8. 【产品编辑页】增强
  9. // @match *://www.alibaba.com/*
  10. // @match *://data.alibaba.com/*
  11. // @match *://*.alibaba.com/trade/search*
  12. // @match *://*.alibaba.com/product-detail/*
  13. // @match *://keywordIndex.alibaba.com/*
  14. // @match *://photobank.alibaba.com/*
  15. // @match *://post.alibaba.com/*
  16. // @match *://hz-productposting.alibaba.com/*
  17. // @match *.alibaba.com/product/*
  18. // @grant GM_addStyle
  19. // @license MIT
  20. // ==/UserScript==
  21.  
  22. ////**********************************************
  23. //// 1. 添加【产品运营工作台页】产品编辑及查看产品效果按钮
  24. //// 2. 添加【产品分析页】含【零效果产品页】页 编辑及查看产品分层按钮
  25. //// 3. 添加【产品详情页】编辑查看产品效果按钮,修改图片链接为原图,添加显示产品关键词(点击关键词可复制),添加视频链接与封面链接
  26. //// 4. 添加【图片银行页】直接下载原图按钮
  27. //// 5. 添加【关键词指数页】内 【关键词分析】搜索按钮
  28. //// 6. 添加【产品关键词搜索页】显示公司名按钮,若出现供应商名称顺序对不上的情况,一般重新刷新页面可正确显示,或者重新刷新页面后使用强制显示供应商名称模式(注意先开启该按钮再开启左边ON/OFF按钮)
  29. //// 7. 添加【产品列表页】序列(点击可复制询盘链接)和产品效果按钮
  30. //// 8. 显示阿里巴巴标签页名称
  31. //// 9. 【产品编辑页】增强, 添加关键词直接搜索按钮,添加导航快捷按钮(上传图片 质量分检测【当阿里质量分按钮不存在时也可检测】 提交产品),辅助添加标题单词首字母转大写功能
  32. ////**********************************************
  33. (function () {
  34. 'use strict';
  35. GM_addStyle(
  36. ".switch{position:relative;width:45px;height:17px;display:inline-block} .switch input{display:none}.d_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ca2222;transition:.4s}.d_slider:before{position:absolute;content:'';height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;transition:.4s}input:checked+.d_slider{background-color:#2ab934}input:checked+.d_slider:before{transform:translateX(28px)}.on{display:none}.off,.on{color:#fff;position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;font-size:8px}input:checked+.d_slider .on{display:block} input:checked+.d_slider .off{display:none}.d_slider.round{border-radius:17px}.d_slider.round:before{border-radius:50%}"
  37. );
  38.  
  39. // 工具函数 -- 添加元素属性
  40. function setAttributes(el, attrs) {
  41. for (let key in attrs) {
  42. el.setAttribute(key, attrs[key]);
  43. }
  44. }
  45. // 工具函数 -- 复制
  46. function copy(e, textContent = true) {
  47. let obj = document.createElement('input');
  48. document.body.appendChild(obj);
  49. obj.value = textContent ? e.textContent : e;
  50. obj.select();
  51. document.execCommand('copy', false);
  52. obj.remove();
  53. return obj.value
  54. }
  55.  
  56. // 工具函数 -- 序数
  57. function addCounter(productList, margin) {
  58. var cssText = "position:absolute;z-index:1;margin-left:" + margin +
  59. "px;display:inline-block;background:SlateGray;color:WhiteSmoke;font-family:'微软雅黑';font-size:14px;text-align:center;width:20px;line-height:20px;border-radius:50%;";
  60. var div = document.createElement('div');
  61. var idx = 1;
  62. for (var i = 0; i < productList.length; i++) {
  63. if (productList[i].getAttribute('data-index')) {
  64. continue;
  65. } else {
  66. productList[i].setAttribute('data-index', idx);
  67. div.innerHTML = "<div id='product_" + i + "' style=" + cssText + ">" + idx + "</div>";
  68. productList[i].innerHTML = div.innerHTML + productList[i].innerHTML;
  69. idx++;
  70. }
  71. }
  72. }
  73.  
  74. // 工具函数 -- 首字母大写
  75. function Capitalize(str) {
  76. return str.replace(/\w\S*/g, function (txt) {
  77. return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
  78. });
  79. }
  80.  
  81. function productList() {
  82. if (document.querySelector(".product-info")) {
  83. addCounter(document.querySelectorAll(".product-info"), -80);
  84. }
  85. let productList = document.querySelectorAll(".product-info");
  86. for (var i = 0; i < productList.length; i++) {
  87. var el = document.getElementsByClassName('product-id')[i];
  88.  
  89. var el2 = document.getElementById("product_" + i);
  90. var product_id = el.innerText.replace(/[^0-9]/ig, "");
  91. let inquiry_url =
  92. "https://message.alibaba.com/msgsend/contact.htm?action=contact_action&domain=1&id=" +
  93. product_id;
  94. var similar_url = "https://post.alibaba.com/product/publish.htm?pubType=similarPost&itemId=" +
  95. product_id;
  96.  
  97. el2.onclick = function () {
  98. copy(inquiry_url, false)
  99. alert(`${inquiry_url}\n……Copy The Inquiry URL Done……`);
  100. }
  101. el.setAttribute('data-href', inquiry_url)
  102. let product_a = productList[i].parentNode.querySelector(".next-col.next-col-3>span>div")
  103. if (product_a){
  104. let product_analysis = document.createElement("span");
  105. product_analysis.innerHTML =
  106. `<br><a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果</a>`;
  107. if (!product_a.textContent.match("效果")) { // 动态加载fix
  108. product_a.appendChild(product_analysis);
  109. }
  110. }
  111. }
  112. }
  113.  
  114. // 添加产品运营工作台产品编辑按钮
  115. function productEdit() {
  116. let products, products_cell;
  117. if (document.querySelector('.upgrade-products-article-item')) {
  118. products_cell = '.upgrade-products-article-item';
  119. products = document.querySelectorAll(products_cell);
  120. } else {
  121. products_cell = '.upgrade-products-grid-record';
  122. products = document.querySelectorAll(products_cell);
  123. }
  124. let ln = products.length;
  125. // 非已经存在编辑按钮
  126. if (ln && !document.querySelector(products_cell).textContent.match("编辑")) {
  127. for (let i = 0; i < ln; i++) {
  128. let product_title = products[i].querySelector(".product-subject").title;
  129. let product_container = products[i].querySelector(".product-id");
  130. let product_id = product_container.textContent.match(/\d+/)[0]; // 产品ID
  131. // console.log(product_title, product_id);
  132. let product_href =
  133. `<a href="//post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.77fb71d2zK7Jvr&itemId=${product_id}" target="_blank"><br/>编辑</a>
  134. <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank"> 数据</a>
  135. <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果明细</a>`
  136. if (!product_container.textContent.match("编辑")) { // 动态加载fix
  137. product_container.innerHTML += product_href;
  138. }
  139. }
  140. console.log("添加产品运营工作台产品编辑按钮成功!!!");
  141. }
  142. }
  143.  
  144. // 添加产品分析页面按钮
  145. function productAnalyse() {
  146. let product_tab = document.querySelector(".Product_tab .next-tabs-nav li[aria-selected='true']").textContent
  147. let products = document.querySelectorAll('tbody>tr')
  148. let ln = products.length;
  149. // 非已经存在产品分层按钮
  150. if (product_tab =="我的产品"){
  151. if (ln && !document.querySelector('tbody>tr:last-child').textContent.match("分层")) {
  152. for (let i = 0; i < ln; i++) {
  153. let product_title = products[i].querySelector(".media-content").textContent;
  154. let product_url = products[i].querySelector(".custom-td-content>a").href;
  155. let product_id = product_url.match(/_(\d+)\.htm(l)?/)[1]; // 产品ID
  156. // console.log(product_title, product_id);
  157. let product_newURL =
  158. "https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=" +
  159. product_id + "&behavior=copyNew";
  160. let product_href =
  161. `<br><a class="action-enabled TEST" href="${product_newURL}" target="_blank" behavior="copyToNewProduct">复制</a><br>
  162. <a class="action-enabled TEST" href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">分层</a>`;
  163. // 非产品不可编辑状态
  164. if (products[i].querySelector(".action-enabled")) {
  165. let product_container = products[i].querySelector(".action-enabled").parentElement; // 插入span 编辑 ...
  166. if (!product_container.textContent.match("分层")) { // fix动态加载js,指选择日期产品后排序会重复添加的
  167. product_container.innerHTML += product_href;
  168. }
  169. }
  170. // product_container.parentNode.insertBefore(document.createElement("br"), product_container.nextSibling);
  171. // document.querySelector('col:last-child').style.setProperty("width", "180px", "important"); // 设置表格最后一栏宽度
  172. }
  173. console.log("添加产品分析页面按钮成功!!!");
  174. }}
  175. else{
  176. // 零效果产品
  177. // 非对不起,未能查询到符合您要求的产品,建议重新设置查询条件或者已经存在复制按钮
  178. if (!document.querySelector('.ineffective-product tbody>tr').textContent.match("未能查询到") && !document.querySelector('.ineffective-product tbody>tr').textContent
  179. .match("复制")) {
  180. products = document.querySelectorAll('.ineffective-product tbody>tr')
  181. ln = products.length;
  182. for (let i = 0; i < ln; i++) {
  183. let product_info = products[i].querySelectorAll('.next-table-cell-wrapper'); // 表格每一行产品
  184. // console.log(product_info);
  185. let product_url = product_info[1].querySelector("a").href;
  186. let product_container = product_info[6].querySelector(".edit-delete-off"); // <span class="edit-delete-off">...
  187. let product_id = product_url.match(/_(\d+)\.htm(l)?/)[1]; // http://www.alibaba.com/product-detail//XXX_123456789.html?spm=a2... // 产品ID
  188. let product_newURL =
  189. "https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=" +
  190. product_id + "&behavior=copyNew";
  191. let product_HTML = document.createElement("span");
  192. product_HTML.innerHTML =
  193. `<a href="${product_newURL}" target="_blank" behavior="copyToNewProduct">复制</a><br/>
  194. <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">数据</a><span>&nbsp;&nbsp;&nbsp;</span>
  195. <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果</a>`;
  196. if (!product_container.textContent.match("数据")) { // 动态加载fix
  197. product_container.appendChild(product_HTML);
  198. }
  199. }
  200. console.log("零效果产品页复制按钮添加成功!!!");
  201. }
  202. }
  203. }
  204.  
  205. // 添加产品页按钮
  206. function productDetail() {
  207. let product_id;
  208. if (!document.querySelector('.ali_product_keywords')) {
  209. if (document.querySelector(".module-pdp-title") || document.querySelector(".product-title")) {
  210. let product_title;
  211. let product_title_container;
  212. let product_image_container;
  213. if (document.querySelector(".module-pdp-title")){
  214. product_title = document.querySelector(".module-pdp-title").textContent;
  215. product_title_container = ".module-pdp-title";
  216. product_image_container = ".main-image-thumb-item img";
  217.  
  218. }
  219. else{
  220. product_title = document.querySelector(".product-title h1").textContent;
  221. product_title_container = ".product-title h1";
  222. product_image_container = ".main-list>.main-item>img";
  223. } // 在不同浏览器或设备显示代码不一样
  224.  
  225. // console.log(product_title);
  226. if (/\/product\//.test(document.URL)) {
  227. product_id = document.URL.match(/(\d+)-(\d+)/)[1];; // 产品ID
  228. } else if (/chinese\.alibaba/.test(document.URL)) {
  229. product_id = document.URL.match(/-(\d+)\.htm(l)?/)[1]; // 中文网页产品ID
  230. } else {
  231. product_id = document.URL.match(/_(\d+)\.htm(l)?/)[1]; // 产品ID
  232. }
  233.  
  234. // 产品标题 - Buy () on Alibaba.com
  235. let product_keywords = document.title.match(/- Buy (.*) Product/)[1]; // 产品关键词
  236. let product_keywords_html = product_keywords.split(",").map(item => (
  237. `<br/><i class="next-icon next-icon-success next-icon-xs" style="margin-right:5px;"></i><span class="product_keyword">${item}</span>`
  238. )).join("");
  239. // overwriting the innerHTML is not a good idea indeed, will gone event listener so using appendChild here.
  240. let product_html = document.createElement("div");
  241. product_html.innerHTML =
  242. `<p style="color:#ff6a00" class="ali_product_keywords">${product_keywords_html}</p>`;
  243.  
  244. document.querySelector(product_title_container).parentElement.appendChild(product_html); // 同标题class
  245.  
  246. let kws = document.getElementsByClassName("product_keyword");
  247. for (let i = 0; i < kws.length; i++) {
  248. kws[i].onclick = function () {
  249. let kkws = copy(kws[i]);
  250. kws[i].innerHTML = "Copied";
  251. window.setTimeout(function () {
  252. kws[i].innerHTML = kkws;
  253. }, 1500)
  254. }
  255. }
  256. console.log("添加产品分析页面按钮成功!!!");
  257. document.querySelectorAll(product_image_container).forEach(v => (v.src = v.src.replace(
  258. /_50x50\.(jpg|png)/, "").replace(/_100x100xz\.(jpg|png)/, ""))); // 修改图片轮播链接为原图
  259. }
  260. }
  261. // 动态加载
  262. window.addEventListener('load', function () {
  263. if (document.querySelector(".details-user-actions")) {
  264. let container = document.querySelector(".details-user-actions");
  265. let product_tool = document.createElement("span");
  266. if (document.querySelector('.image-d_slider video')) {
  267. if (!document.querySelector('.details-user-actions').textContent.match("视频")) {
  268. let video_link = document.querySelector('video').src; // 产品视频链接
  269. let video_poster = document.querySelector('video').poster; // 产品视频封面链接
  270. let video_html =
  271. `<a href="${video_link}" target="_blank">视频链接 </a><a href="${video_poster}" target="_blank">视频封面</a>`
  272. product_tool.innerHTML = video_html;
  273. }
  274. }
  275. let product_edit_style = document.querySelector(".is-magic") ? "智能编辑" : document.querySelector(
  276. "#J-rich-text-description>div:only-child") ? "旧版智能编辑" : "普通编辑";
  277. product_tool.innerHTML +=
  278. `<br/>${product_edit_style} <a href="//post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.77fb71d2zK7Jvr&itemId=${product_id}" target="_blank">编辑</a>
  279. <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">数据</a>
  280. <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果明细</a>
  281. <a href="https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=${product_id}" target="_blank" behavior="copyToNewProduct">复制</a>`;
  282. if (!document.querySelector('.details-user-actions').textContent.match("数据")) {
  283. container.appendChild(product_tool);
  284. }
  285. }
  286. })
  287. }
  288.  
  289. // 添加图片银行直接下载原图按钮
  290. function productPhoto() {
  291. let products = document.querySelectorAll('.photo-grid-item') // 获取图片容器
  292. let ln = products.length;
  293. // 非已存在下载原图链接按钮
  294. if (!document.querySelector('.image-info').textContent.match("下载原图")) {
  295. for (let i = 0; i < ln; i++) {
  296. let product_src = products[i].querySelector(".photo-grid-img-wrapper img").src; // 获取图片链接
  297. let product_picforamt = product_src.match(/_350x350\.(jpg|png)/)[1];
  298. let product_picLink = product_src.replace(/_350x350\.(jpg|png)/, "");
  299. let product_picName = products[i].querySelector(".display-name button").textContent; // 获取图片文件名
  300. // console.log(product_picName);
  301. let product_picContainer = products[i].querySelector(".image-info");
  302. let product_picHTML = document.createElement("a");
  303. setAttributes(product_picHTML, {
  304. "href": `${product_picLink}?attachment=${product_picName}.${product_picforamt}`,
  305. "target": "_blank",
  306. "rel": "noopener noreferrer"
  307. });
  308. product_picHTML.innerHTML = "下载原图";
  309. product_picContainer.appendChild(product_picHTML);
  310. }
  311. // console.log("添加图片银行直接下载原图按钮成功!");
  312. }
  313. }
  314.  
  315. //添加关键词指数页搜索按钮
  316. function productKeywordIndex() {
  317. let keywords = document.querySelectorAll('.next-table-row');
  318. let ln = keywords.length;
  319. // 非已经存在搜索按钮
  320. if (ln && !document.querySelector('.next-table-row a i')) {
  321. for (let i = 0; i < ln; i++) {
  322. let kws_container = keywords[i].querySelectorAll(".next-table-cell-wrapper")[1].querySelector(
  323. "span");
  324. let kw = kws_container.querySelector("a").textContent;
  325. let alibaba_link = document.createElement("a");
  326. setAttributes(alibaba_link, {
  327. "href": `https://www.alibaba.com/products/${kw}.html?viewtype=G`,
  328. "target": "_blank",
  329. "rel": "noopener noreferrer",
  330. "title": "在阿里巴巴搜索"
  331. });
  332. alibaba_link.innerHTML =
  333. ` <i class="next-icon next-icon-search next-small next-search-icon"></i>`;
  334. let product_link = document.createElement("a");
  335. setAttributes(product_link, {
  336. "href": `https://hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productKeyword=${kw}`,
  337. "target": "_blank",
  338. "rel": "noopener noreferrer",
  339. "title": "在发布产品列表搜索"
  340. });
  341. product_link.innerHTML =
  342. ` <i class="next-icon next-icon-search next-small next-search-icon"></i>`;
  343. if (!kws_container.querySelector('.next-table-row a i')) { // 动态加载fix
  344. kws_container.appendChild(alibaba_link);
  345. kws_container.appendChild(product_link);
  346. }
  347. }
  348. console.log("添加关键词指数页搜索按钮成功!!!");
  349. }
  350. }
  351.  
  352. // 产品编辑页增强
  353. function productPublish() {
  354. let product_keywords;
  355. product_keywords = document.querySelectorAll(".posting-field-keywords li");
  356.  
  357. function alibaba_link(kw) {
  358. let kw_search_link = document.createElement("a");
  359. setAttributes(kw_search_link, {
  360. "href": `https://www.alibaba.com/products/${kw}.html?viewtype=G`,
  361. "target": "_blank",
  362. "rel": "noopener noreferrer",
  363. "title": "在阿里巴巴搜索",
  364. "class": "alibaba_search",
  365. });
  366. kw_search_link.innerHTML = `<i class="next-icon next-icon-search next-small next-search-icon"></i>`;
  367. return kw_search_link;
  368. }
  369. for (let i = 0; i < product_keywords.length; i++) {
  370. let kw_container = product_keywords[i].querySelector(".next-input-control");
  371. kw_container.appendChild(alibaba_link(product_keywords[i].querySelector("input").value));
  372. product_keywords[i].querySelector("input").addEventListener('change', function (e) {
  373. kw_container.replaceChild(alibaba_link(this.value), kw_container.querySelector(
  374. '.alibaba_search'));
  375. });
  376. }
  377. if (document.querySelectorAll("#productsm").length < 1) {
  378. let product_menu = document.querySelector('.next-menu-content')
  379.  
  380. product_menu.insertAdjacentHTML('beforeend',
  381. '<li id="productpic" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>上传图片</span></li>'
  382. );
  383. document.querySelector('#productpic').onclick = function () {
  384. let img_uploadButton = document.getElementsByClassName('upload-select-inner')[0].getElementsByTagName(
  385. "button")[0]
  386. if (img_uploadButton.disabled) {
  387. alert("产品图片已满,请删除部分图片后重新尝试上传!")
  388. } else {
  389. img_uploadButton.click();
  390. // document.querySelector('#productpic span').style.color = "orange"
  391. }
  392.  
  393. }
  394. product_menu.insertAdjacentHTML('beforeend',
  395. '<li id = "productsc" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>检测质量分</span></li'
  396. );
  397. document.querySelector('#productsc').onclick = function () {
  398.  
  399. let rate = document.getElementById('struct-pinbar').getElementsByClassName('block-text default')[0]; // 产品质量分
  400. if (rate) {
  401. rate.click()
  402. } else if (document.getElementById('struct-pinbar').getElementsByClassName('block-text')) {
  403. document.getElementById('struct-pinbar').getElementsByClassName('block-text')[0].click();
  404. } else {
  405. alert("检测出错!")
  406. }
  407. let product_score = document.getElementById('struct-pinbar').getElementsByClassName('number');
  408.  
  409. window.setTimeout(function () {
  410. if (product_score.length) {
  411. document.querySelector('#productsc span').textContent =
  412. `检测质量分(${product_score[0].textContent})`;
  413. }
  414. }, 2500);
  415.  
  416. let product_title = document.getElementById('productTitle').value;
  417.  
  418. let product_titleCapitalize = document.createElement("span");
  419. product_titleCapitalize.className = "product_titleCapitalize";
  420. product_titleCapitalize.innerHTML = `<br>${Capitalize(product_title)}`;
  421. let product_title_container = document.getElementById('productTitle').parentNode.parentNode;
  422. product_title_container.appendChild(product_titleCapitalize);
  423. product_title_container.replaceChild(product_titleCapitalize, product_title_container.querySelector(
  424. '.product_titleCapitalize'));
  425. product_titleCapitalize.onclick = function () {
  426. copy(product_titleCapitalize);
  427. product_titleCapitalize.innerHTML = "<br>Copied";
  428. window.setTimeout(function () {
  429. product_titleCapitalize.innerHTML = `<br>${Capitalize(product_title)}`;
  430. }, 1500);
  431. }
  432.  
  433. }
  434. product_menu.insertAdjacentHTML('beforeend',
  435. '<li id = "productsm" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>提交产品</span></li'
  436. );
  437.  
  438. document.querySelector('#productsm').onclick = function () {
  439.  
  440. document.getElementsByClassName("next-btn next-btn-primary next-btn-large step-buttons")[0].click(); // 提交按钮
  441. }
  442.  
  443.  
  444. }
  445. }
  446.  
  447.  
  448. // 搜索关键词显示公司名
  449. function productSupplierDisplay() {
  450. let products;
  451. if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) {
  452. products = document.querySelectorAll('.app-organic-search__list>div.J-offer-wrapper');
  453. } else {
  454. products = document.querySelectorAll('.organic-gallery-offer-outter');
  455. }
  456. let ln = products.length;
  457.  
  458. function fireMouseEvents(element, eventNames) {
  459. if (element && eventNames && eventNames.length) {
  460. for (let index in eventNames) {
  461. let eventName = eventNames[index];
  462. if (element.fireEvent) {
  463. element.fireEvent('on' + eventName);
  464. } else {
  465. let eventObject = document.createEvent('MouseEvents');
  466. eventObject.initEvent(eventName, true, false);
  467. element.dispatchEvent(eventObject);
  468. }
  469. }
  470. }
  471. }
  472. let supplier_idx = 0
  473. for (let i = 0; i < ln; i++) {
  474. let supplier_container;
  475. // 视图切换按钮
  476. if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) {
  477. supplier_container = products[i].querySelector(".list-no-v2-decisionsup__row");
  478. } else {
  479. supplier_container = products[i].querySelector(".organic-gallery-offer_bottom-align-section");
  480. }
  481.  
  482. if (supplier_container && document.getElementById("d_switch").checked) {
  483. if (products[i].querySelector('.gallery-theme-card-default__image-ctn') || products[i].querySelector(
  484. '.offer-theme-search')) {
  485. continue; // 跳过广告位Discover Now
  486. } else {
  487. supplier_idx = supplier_idx + 1;
  488. if (!products[i].querySelector(".alisupplier_name")) {
  489. let product_link = products[i].querySelector('a').href; // 获取产品链接
  490. let product_title = products[i].querySelector('.elements-title-normal').textContent; // 获取产品名
  491. // 控制台输出产品标题 测试使用
  492. //console.log(i, product_title);
  493. let product_inq, supplier_link, supplier_id = "";
  494. if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) {
  495. product_inq = products[i].querySelector('.contact-supplier-btn').href;
  496. supplier_link = products[i].querySelector('.list-no-v2-decisionsup__row>span a').href;
  497. fireMouseEvents(products[i].querySelector(".list-no-v2-decisionsup__row>span a"), [
  498. 'mouseover', 'mousedown']); // 触发鼠标显示供应商信息
  499. } else {
  500. product_inq = products[i].querySelector('.organic-gallery-offer__bottom-v2 a').href; // 获取产品询盘链接
  501. supplier_link = products[i].querySelector(".organic-gallery-offer__seller-company").href; // 获取供应商链接
  502. fireMouseEvents(products[i].querySelector(".organic-gallery-offer__seller-company"), [
  503. 'mouseover', 'mousedown']); // 触发鼠标显示供应商信息
  504. }
  505. if (supplier_link.indexOf(".en.alibaba") != -1) {
  506. supplier_id = supplier_link.substring(supplier_link.indexOf("//") + 2,
  507. supplier_link.indexOf(".en.alibaba"))
  508. } else {
  509. supplier_id = "";
  510. }
  511. console.log(supplier_link, supplier_id);
  512. let link = document.createElement("a");
  513. setAttributes(link, {
  514. "href": `${supplier_link}`,
  515. "target": "_blank",
  516. "class": "alisupplier_name",
  517. });
  518.  
  519. // 采集到弹出供应商信息
  520. if (document.querySelector(".next-overlay-wrapper .supplier-tag-popup__content_href")) {
  521. if (!document.getElementById("force_supplier").checked) {
  522. ;
  523. if (supplier_id) {
  524. link.innerHTML = document.querySelector(
  525. ".next-overlay-wrapper .supplier-tag-popup__content_href").textContent +
  526. "(" +
  527. supplier_id + "," + supplier_idx +")";
  528. } else {
  529. link.innerHTML = document.querySelector(
  530. ".next-overlay-wrapper .supplier-tag-popup__content_href").textContent + "(" + supplier_idx +")";
  531. }
  532. supplier_container.appendChild(link);
  533. let supplier_opener = document.querySelector(".next-balloon-normal");
  534. supplier_opener.parentNode.removeChild(supplier_opener);
  535. }
  536. }
  537. }
  538. }
  539. }
  540. }
  541.  
  542. }
  543. // 显示阿里巴巴标签页名称
  544. window.addEventListener('load', function () {
  545. let title_list = [".sc-hd-m-logo-anchor", ".av-change-container-title",
  546. ".auth-cent-list-container-title", ".product-task-title-name", ".top-bar-name",
  547. ".home-header>.home-header-title", ".rank-header-title", ".next-card-title",
  548. ".next-feedback-title",
  549. ".freight-template-app-title", ".showcase-zh>.fs22", ".inquiry-list-title", ".common-h1",
  550. ".title-wrapper>h1", ".live-manage-management-title>h3",
  551. ".home-header-title", ".big-title", "h2.page-title>span", ".next-tabs-tab-inner>div",
  552. ".bp2-nav-bar>div", ".component-page-title", ".header-title", ".page-title>h3",
  553. ".diagnosis-h3", ".collect-products-list h1", ".CGS_BASIC .page-title", "h2.sub-title",
  554. ".title", ".title-text", ".photo-header-title", "h1", ".page-title", ".manage-title",
  555. ".ui-header-extend", "h2", "h3"];
  556. for (let i = 0; i < title_list.length; i++) {
  557. if (!
  558. /(w{3}|i|fundma|onetouch|waimaoquan|activity|alicrm|marketing|siteadmin|customize|offer)\.alibaba\.com/
  559. .test(document.URL)) {
  560. if (document.querySelector(title_list[i])) {
  561. console.log(title_list[i], document.querySelector(title_list[i]));
  562. document.title = document.querySelector(title_list[i]).textContent;
  563. break;
  564. }
  565. }
  566. }
  567. }, false);
  568.  
  569. if (/product_grow_up_manage/.test(document.URL)) {
  570. setInterval(productEdit, 2500);
  571. // 添加产品运营工作台产品编辑按钮
  572. } else if (/overview/.test(document.URL)) {
  573. setInterval(productAnalyse, 2000);
  574. // 添加产品分析页面按钮, 含零效果产品
  575. } else if (/(product-detail)|(\/product\/\d+-\d+)/.test(document.URL)) {
  576. setInterval(productDetail, 2500);
  577. // 添加产品详情页按钮
  578. } else if (/photobank/.test(document.URL)) {
  579. setInterval(productPhoto, 2500);
  580. // 添加图片银行直接下载原图按钮
  581. } else if (/keyword/.test(document.URL)) {
  582. setInterval(productKeywordIndex, 2500);
  583. // 添加关键词指数页搜索按钮
  584. } else if (/hz-productposting\./.test(document.URL)) {
  585. setInterval(productList, 2500);
  586. // 产品编辑页增强
  587. } else if (/(trade\/search)|(\/products\/)/.test(document.URL)) {
  588. // 添加搜索关键词显示公司名按钮
  589. if (document.getElementsByClassName('refine-filters__result-left')) {
  590. let dswitch = document.createElement('label');
  591. dswitch.innerHTML =
  592. "<input id='d_switch' type='checkbox'><div class='d_slider round'><span class='on'>ON</span><span class='off'>OFF</span></div>";
  593. dswitch.setAttribute('class', 'switch');
  594. document.getElementsByClassName('refine-filters__result-left')[0].appendChild(dswitch);
  595. document.getElementsByClassName('refine-filters__result-left')[0].innerHTML +=
  596. '<input type="checkbox" id="force_supplier" style="margin: .4rem;position:relative;top:-3px"><label for="force_supplier">强制显示供应商名称</label>';
  597. }
  598. setInterval(productSupplierDisplay, 2500);
  599. } else if (/post\.alibaba/ig.test(document.URL)) {
  600. window.addEventListener('load', productPublish(), false);
  601. // 产品编辑页增强
  602. }
  603. })();