您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Helps in inputting text values into specified text fields using "Control+B" on pages with "Manhattan" in their title, with dynamic value count for ITEM_CBO.ITEM_NAME or LPN.TC_LPN_ID.
// ==UserScript== // @name Recall?SKU Cleanup Helper // @version 0.6 // @description Helps in inputting text values into specified text fields using "Control+B" on pages with "Manhattan" in their title, with dynamic value count for ITEM_CBO.ITEM_NAME or LPN.TC_LPN_ID. // @author You // @match *://*/* // @grant none // @namespace https://greasyfork.org/users/1183167 // ==/UserScript== (function() { 'use strict'; console.log("Script loaded"); if (!document.title.includes("Manhattan")) { console.log("Page title does not include 'Manhattan'. Exiting script."); return; } console.log("Page title includes 'Manhattan'. Script active without mode check and DOM observation."); function findSelectorsWithSpecificOption(value) { const allSelectElements = document.querySelectorAll('select[id*="ruleSelDtlDataTable"][id*="ruleSelDtlColumnList"]'); return Array.from(allSelectElements).filter(select => select.querySelector(`option[value="${value}"][selected="selected"]`) ).map(select => parseInt(select.id.match(/(\d+)/)[1], 10)).sort((a, b) => a - b); } document.addEventListener('keydown', function(e) { if (e.ctrlKey && e.key === 'b') { console.log("Detected 'Control+B' keypress."); const lpnIndices = findSelectorsWithSpecificOption('LPN.TC_LPN_ID'); const itemCboIndices = findSelectorsWithSpecificOption('ITEM_CBO.ITEM_NAME'); let targetIndices, valueLabel; if (lpnIndices.length > 0) { targetIndices = lpnIndices; valueLabel = 'LPN.TC_LPN_ID'; } else if (itemCboIndices.length > 0) { targetIndices = itemCboIndices; valueLabel = 'ITEM_CBO.ITEM_NAME'; } else { console.log("No matching selectors found for either value. Ignoring 'Control+B' keypress."); return; } const count = targetIndices.length; let inputString = prompt(`Enter up to ${count} value(s) separated by spaces for ${valueLabel}:`); if (inputString) { let values = inputString.split(/\s+/); if (values.length > count) { alert(`You entered more values than the acceptable limit of ${count}. Please try again.`); return; // Prevent execution if too many values are provided } applyValues(values, targetIndices); // Pass 'count' to ensure all fields are considered } } }); function applyValues(values, matchingIndices) { matchingIndices.forEach((index, i) => { const selector = `#dataForm\\:ruleSelDtlDataTable\\:${index}\\:ruleSelDtlRuleCmparValue`; let inputField = document.querySelector(selector); if (inputField) { // Update with provided value or "UPDATE" if out of user-provided values inputField.value = i < values.length ? values[i] : "UPDATE"; console.log(`Updated field ${selector} with value: ${inputField.value}`); inputField.dispatchEvent(new Event('change', { 'bubbles': true })); } }); } })();