// ==UserScript== // @name 淘宝天猫多商品列表展示 // @version 1.2 // @author Einskang // @description 淘宝天猫商品页面多个商品与价格列表显示效果 // @match http*://item.taobao.com/item.htm?* // @match http*://detail.tmall.com/item.htm?* // @grant none // @run-at document-start // @icon data:img/jpg;base64,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 // @namespace https://greasyfork.org/users/206059 // @downloadURL none // ==/UserScript== (function() { 'use strict'; let debug = false function log(information, ...others) { if (debug) { console.log(information, ...others) } } function logError(e) { console.log(e) } document.addEventListener('DOMContentLoaded', function () { const styleElement = document.createElement('style') styleElement.setAttribute('type', 'text/css') /* 淘宝页面插入的样式代码 */ if (window.location.host.includes('item.taobao.com')) { styleElement.innerHTML = ` .J_TSaleProp > li { float: none !important; margin: 0 !important; } .J_TSaleProp > li > a { background-position-x: left !important; text-align: left !important; display: block !important; } .J_TSaleProp > li > a > span { display: inline !important; margin-left: 40px; text-align: left !important; } .J_TSaleProp > li > a > p { text-indent: 0 !important; padding: 0; text-align: right !important; position: absolute; top: 2px; right: 5px; z-index: 200; width: auto; height: auto; float: right; font-size: 30px; color: #FF0036; font-weight: bolder; font-family: Arial; background-color: #C1E6C6; } ` } else if (window.location.host.includes('detail.tmall.com')) { /* 天猫页面插入的样式代码 */ styleElement.innerHTML = ` .J_TSaleProp > li { float: none; margin: 0; } .J_TSaleProp > li > a[href='#'] { width: auto !important; float: none; display: block; background-position-x: left !important; text-align: left; } .J_TSaleProp > li > a > span { text-indent: 0 !important; padding-left: 50px; text-align: left; font-size: 18px; font-weight: 800; position: relative; z-index: 100; width: 100%; height: 100%; box-sizing: border-box; } .J_TSaleProp > li > a > p { text-indent: 0 !important; padding: 0; text-align: right !important; position: absolute; top: 2px; right: 5px; z-index: 200; width: auto; height: auto; float: right; font-size: 30px; color: #FF0036; font-weight: bolder; font-family: Arial; background-color: #C1E6C6; } ` } document.head.appendChild(styleElement) }) const multiTypeItemCheckRegExp = /[\d:]+(;[\d:]+)+/ // 判断是否是多选择项商品的正则表达式 let isMultiTypeItem // 当前商品是否是多选择项商品 let itemTypeIndex // 当前商品种类选择区域在商品列表区域的第几个位置,一般是第一个位置,但有时候商家会将两者正好反过来,因此将判断逻辑更换为哪个选择列表的数量少,就指定为谁是商品种类选择列表,从而使商品价格尽可能地展示在列表更多的区域,方便比价 /** * 更新商品列表价格 * 1.淘宝以 div.tb-skin 为商品选择列表区域,天猫以 div.tb-sku 为商品选择列表区域 * 2.如果是多种类商品,根据 itemTypeIndex 确定商品种类选择区域和商品选择区域 * 3.如果是单种类商品,默认其第一个子元素为商品选择区域 * @param site {String} taobao or tmall * @param extraParameters {Object} 附加的额外参数,淘宝和天猫的附加参数不同 */ function refreshPrice({ site, extraParameters }) { /* 商品种类选择器中的一个关键元素,淘宝为 div.tb-skin,天猫为 div.tb-sku */ const itemTypeSelectorKey = site === 'taobao' ? 'div.tb-skin' : 'div.tb-sku' /* 只有在商品有不同种类可供选择的时候才会有商品种类 ID */ let selectedItemTypeId if (isMultiTypeItem) { /* 商品种类 */ const itemList = Array.from(document.querySelectorAll(`${itemTypeSelectorKey} > dl:nth-child(${itemTypeIndex}) > dd > ul > li`)) /* 已选中的商品种类,如果没有默认第一个 */ const selectedItemType = itemList.find((itemType) => itemType.innerText.includes('已选中')) || itemList[0] /* 获取到的商品种类 */ if (!selectedItemType) return /* 商品种类 ID */ selectedItemTypeId = selectedItemType.getAttribute('data-value') log('selectedItemTypeId', selectedItemTypeId) } /* 将商品实际销售价格对应显示到商品列表中 */ document.querySelectorAll(`${itemTypeSelectorKey} > dl:nth-child(${isMultiTypeItem ? (itemTypeIndex === 1 ? 2 : 1) : 1}) > dd > ul > li`).forEach((item) => { /* 商品 ID */ const itemId = item.getAttribute('data-value') /* 商品价格信息,包含促销价格和正常价格 */ /* 如果是多种类商品,则需要同时满足商品种类 ID 和商品 ID 相同 */ const itemPriceInformation = site === 'taobao' ? { promotionList: extraParameters.promotionPrice[Object.keys(extraParameters.promotionPrice).find((item) => isMultiTypeItem ? item.includes(selectedItemTypeId) && item.includes(itemId) : item.includes(itemId))], price: extraParameters.originalPrice[Object.keys(extraParameters.originalPrice).find((item) => isMultiTypeItem ? item.includes(selectedItemTypeId) && item.includes(itemId) : item.includes(itemId))].price, } : extraParameters.priceInfo[extraParameters.skuList.find((item) => isMultiTypeItem ? item.pvs.includes(selectedItemTypeId) && item.pvs.includes(itemId) : item.pvs.includes(itemId)).skuId] /* 商品促销价格,因为可能有一系列促销活动,因此促销价格信息是一个数组,默认选择第一个(时间最近的促销活动) */ const itemPromotionPriceInformation = (itemPriceInformation.promotionList || itemPriceInformation.suggestivePromotionList || [])[0] /* 有促销活动时,真实价格等于促销价格,没有促销活动时,真实价格等于正常价格 */ const itemReallyPrice = (itemPromotionPriceInformation ? itemPromotionPriceInformation : itemPriceInformation).price /* 在商品列表的一侧显示真实价格 */ const priceSpanElement = document.createElement('p') priceSpanElement.innerHTML = itemReallyPrice item.firstElementChild.appendChild(priceSpanElement) }) } /* 淘宝商品价格截取 */ if (window.location.host.includes('item.taobao.com')) { /** * 商品原始价格信息 * @type {Object} * @key {String} 以商品种类 ID 和商品 ID 组成的唯一标识商品价格信息的 Key,第一个字符和最后一个字符均为“;”,中间为商品种类 ID 和商品 ID,两者以“;”为分隔符,如“;1627207:5373649940;122508275:1032918277;” * @value Object.price {String} 商品价格 */ let originalPrice /** * 商品促销价格信息 * @type {Object} * @key {String} 以商品种类 ID 和商品 ID 组成的唯一标识商品价格信息的 Key,第一个字符和最后一个字符均为“;”,中间为商品种类 ID 和商品 ID,两者以“;”为分隔符 * @value {Array} 多个促销信息组成的数组,一般只有一个促销活动,也就是数组的第一个促销信息有效 * @value[0].price {String} 商品促销价格 * @value[0].type {String} 商品促销种类 */ let promotionPrice window.setTimeout(function F() { log('尝试替换淘宝获取数据的函数 onSibRequestSuccess') if (!window.onSibRequestSuccess) { window.setTimeout(F, 10) } else { const originFunction = window.onSibRequestSuccess window.onSibRequestSuccess = function (argv) { if (argv.code.message === 'SUCCESS') { originalPrice = argv.data.originalPrice // 商品原始价格 promotionPrice = argv.data.promotion.promoData // 商品促销价格 log('promotionPrice', promotionPrice) isMultiTypeItem = Object.keys(originalPrice).every((key) => multiTypeItemCheckRegExp.test(key) || key === 'def') // 判断是否是多选择项商品,淘宝的接口返回了一个比较特殊的值 def,表示的是商品的价格区间 } originFunction(argv) } } }, 0) let counter = 0; (function F() { if (counter++ > 20) return if (!originalPrice && !promotionPrice) { log('数据没有准备好') window.setTimeout(F, 1000) } else if (!document.querySelector('div.tb-skin')) { log('页面结构没有准备好') window.setTimeout(F, 1000) } else { log('数据已经准备好'); log('isMultiTypeItem', isMultiTypeItem) /* 如果当前商品存在多个种类,则为种类选择增加点击事件侦听,当发生点击时更新替换了价格数据,淘宝以 div.tb-skin 为商品选择列表区域,天猫以 div.tb-sku 为商品选择列表区域 */ if (isMultiTypeItem) { itemTypeIndex = document.querySelectorAll('div.tb-skin > dl:nth-child(1) > dd > ul > li').length < document.querySelectorAll('div.tb-skin > dl:nth-child(2) > dd > ul > li').length ? 1 : 2 document.querySelector(`div.tb-skin > dl:nth-child(${itemTypeIndex}) > dd > ul`).addEventListener('click', (event) => { refreshPrice({ site: 'taobao', extraParameters: { originalPrice, promotionPrice, } }) }) } /* 更新商品价格 */ refreshPrice({ site: 'taobao', extraParameters: { originalPrice, promotionPrice, } }) } })() } else if (window.location.host.includes('detail.tmall.com')) { /** * 商品名称、各种分类组成的用来在页面上唯一标识某一个商品的ID、商品详细信息ID信息的数组 * @type {Array} * @item {Object} * @item.names {String} 商品名称 * @item.pvs {String} 各种分类ID组成的用来在页面上唯一标识某一个商品的ID,一般应使用”;“以后的ID作为商品在页面上的唯一ID来寻找对应的元素 * @item.skuId {String} 商品详细信息ID */ let skuList /** * 描述商品原价和商品详细信息ID的对象数组 * @type {Object} * @key {String} 都以“;”开始和结尾,中间是各种分类ID组成的用来在页面上唯一标识某一个商品的ID * @value.priceCent {Number} 以分作为单位的商品原价格 * @value.price {String} 用来直接显示给用户看的商品原价格 * @value.stock {Number} 当前库存 * @value.skuId {String} 商品详细信息ID */ let skuMap /** * 快递相关信息 * @type {Object} * @areaId {Number} 地区ID * @deliveryAddress {String} 发货地 * @deliverySkuMap {Object} 每件商品的快速运费、发货地点等 * @deliverySkuMap key {String} 对象名为商品详细信息ID * @deliverySkuMap.arrivalNextDay {Boolean} 是否支持隔天到达 * @deliverySkuMap.arrivalThisDay {Boolean} 是否支持当天到达 * @deliverySkuMap.postage {String} 快递种类 * @deliverySkuMap.postageFree {Boolean} 是否免邮 * @deliverySkuMap.skuDeliveryAddress {String} 商品发货地 * @destination {String} 目的地 */ let deliveryDO /** * 商品价格相关信息 * @type {Object} * @key {String} 对象名为商品详细信息ID * @Object.areaSold {Boolean} 当前地区是否支持出售 * @Object.price {String} 商品原价格 * @Object.promotionList {Array} 商品的促销活动价格列表,虽然是数组,但一般只有一个元素,类型为对象,记录了当前商品的活动价,也就是用户最终需要支付的价格 * @Object.promotionList.postageFree {Boolean} 是否包邮 * @Object.promotionList.price {String} 当前商品的活动价,也就是用户最终需要支付的价格,这个是最重要的 * @Object.promotionList.startTime {Date} 促销活动的开始时间 * @Object.promotionList.endTime {Date} 促销活动的结束时间 */ let priceInfo /* 获取商品信息与标识ID之间的对应关系 */ window.setTimeout(function F() { if (!window.TShop || !window.TShop.Setup) { window.setTimeout(F, 10) } else { const originFunction = window.TShop.Setup window.TShop.Setup = function (argv) { skuList = argv.valItemInfo.skuList skuMap = argv.valItemInfo.skuMap log('skuList', skuList) isMultiTypeItem = skuList.every((sku) => multiTypeItemCheckRegExp.test(sku.pvs)) // 判断是否是多选择项商品 /* 暂时不需要获取商品种类 ID */ // if (isMultiTypeItem) { // typeIdList = Array.from(new Set(skuList.map((sku) => sku.pvs.split(';').slice(0, -1)).flat())) // } /* 继续执行原来的函数 */ originFunction(argv) } } }, 0) /* 获取每个商品子类的价格 */ window.setTimeout(function F() { if (!window.setMdskip) { window.setTimeout(F, 10) } else { const originFunction = window.setMdskip window.setMdskip = function (argv) { deliveryDO = argv.defaultModel.deliveryDO priceInfo = argv.defaultModel.itemPriceResultDO.priceInfo log('priceInfo', priceInfo) /* 继续执行原来的函数 */ originFunction(argv) } } }, 0) /* 尝试将价格信息显示在商品列表中,每隔一秒尝试一次,失败 20 次后停止 */ let counter = 0; (function F() { if (counter++ > 20) return if (!priceInfo || !skuList) { log('数据没有准备好') window.setTimeout(F, 1000) } else if (!document.querySelector('div.tb-sku')) { log('页面结构没有准备好') window.setTimeout(F, 1000) } else { log('数据已经准备好'); log('isMultiTypeItem', isMultiTypeItem) /* 如果当前商品存在多个种类,则为种类选择增加点击事件侦听,当发生点击时更新替换了价格数据 */ if (isMultiTypeItem) { itemTypeIndex = document.querySelectorAll('div.tb-sku > dl:nth-child(1) > dd > ul > li').length < document.querySelectorAll('div.tb-sku > dl:nth-child(2) > dd > ul > li').length ? 1 : 2 document.querySelector(`div.tb-sku > dl:nth-child(${itemTypeIndex}) > dd > ul`).addEventListener('click', (event) => { refreshPrice({ site: 'tmall', extraParameters: { priceInfo, skuList, } }) }) } /* 更新商品价格 */ refreshPrice({ site: 'tmall', extraParameters: { priceInfo, skuList, } }) } })() } })();