您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Supported by GPT
// ==UserScript== // @name 立创商城bom匹配结果排序 // @namespace http://tampermonkey.net/ // @version 0.1 // @description Supported by GPT // @author tumuyan // @match https://bom.szlcsc.com/member/eda/search.html* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 创建悬浮窗 const floatingDiv = document.createElement('div'); floatingDiv.style.position = 'fixed'; floatingDiv.style.top = '10px'; floatingDiv.style.left = '10px'; // 改为左上角 floatingDiv.style.backgroundColor = 'white'; floatingDiv.style.border = '1px solid #ccc'; floatingDiv.style.padding = '10px'; floatingDiv.style.zIndex = '16777271'; floatingDiv.style.boxShadow = '0 2px 10px rgba(0,0,0,0.2)'; // 添加提示文本 const label = document.createElement('label'); label.innerText = '排序方式: '; floatingDiv.appendChild(label); // 创建下拉菜单 const select = document.createElement('select'); const options = ['品牌', '名称', '封装', '广东仓', '江苏仓', '交期','MOQ']; // 默认第一个选项为空 const defaultOption = document.createElement('option'); defaultOption.value = ''; defaultOption.innerText = '请选择'; select.appendChild(defaultOption); options.forEach(option => { const opt = document.createElement('option'); opt.value = option; opt.innerText = option; select.appendChild(opt); }); // 处理选择变化 select.addEventListener('change', function() { const orderby = select.value ? select.value + ':' : ''; highlightSelectedOption(select); if (orderby) { sortTable(orderby); } }); floatingDiv.appendChild(select); document.body.appendChild(floatingDiv); // 高亮选中的选项 function highlightSelectedOption(selectElement) { Array.from(selectElement.options).forEach(option => { option.style.backgroundColor = option.selected ? '#d3d3d3' : ''; }); } // 排序表格 function sortTable(orderby) { const rows = Array.from(document.querySelectorAll('tr.el-table__row')); rows.sort((a, b) => { const textA = getTextAfterLabel(a, orderby.replace(':', '')); const textB = getTextAfterLabel(b, orderby.replace(':', '')); const numA = parseFloat(textA); const numB = parseFloat(textB); // 如果都可以解析为正数,优先按数值排序 if (!isNaN(numA) && !isNaN(numB)) { return numA - numB; } else if (!isNaN(numA)) { return -1; // numA 是数值,排在前面 } else if (!isNaN(numB)) { return 1; // numB 是数值,排在前面 } else { return textA.localeCompare(textB); // 否则按文本排序 } }); const tableBody = document.querySelector('tbody'); if (tableBody) { tableBody.innerHTML = ''; rows.forEach(row => { tableBody.appendChild(row); }); } } // 获取指定元素之后的文本 function getTextAfterLabel(row, label) { const cells = row.querySelectorAll('td'); for (let cell of cells) { if (cell.textContent.includes(label + ':')) { const text = cell.textContent.split(label + ':')[1]; return text ? text.trim() : ''; } } return ''; } // 页面重载时恢复为第一个选项 window.addEventListener('load', () => { select.selectedIndex = 0; // 恢复为第一个选项 highlightSelectedOption(select); }); })();