您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide any table row that includes "$Call" in its content and display a count of hidden rows.
// ==UserScript== // @name Car-Part.com Hide Rows Containing $Call and Count Them // @namespace http://tampermonkey.net/ // @version 1.2 // @description Hide any table row that includes "$Call" in its content and display a count of hidden rows. // @author Your Name // @match https://www.car-part.com/* // @run-at document-end // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; // Create and style a div element to show the counter const counterDiv = document.createElement('div'); counterDiv.id = "hiddenCallCounter"; counterDiv.style.position = "fixed"; counterDiv.style.bottom = "10px"; counterDiv.style.right = "10px"; counterDiv.style.padding = "10px"; counterDiv.style.backgroundColor = "rgba(0, 0, 0, 0.7)"; counterDiv.style.color = "#fff"; counterDiv.style.fontSize = "14px"; counterDiv.style.borderRadius = "4px"; counterDiv.style.zIndex = "9999"; document.body.appendChild(counterDiv); // Function to update the counter display by counting rows marked as hidden function updateHiddenCounter() { // Count rows that we've marked as hidden using a custom data attribute const hiddenCount = document.querySelectorAll("tr[data-hidden-call='true']").length; counterDiv.textContent = `Rows hidden containing $Call: ${hiddenCount}`; } // Function to hide rows that contain "$Call" function hideCallRows() { // Select all table rows const rows = document.querySelectorAll("tr"); rows.forEach(row => { // Check if the row contains "$Call" (case-sensitive). Adjust if needed. if (row.textContent.includes("$Call")) { // Only hide and mark the row if it hasn't already been marked if (!row.dataset.hiddenCall) { row.style.display = "none"; row.dataset.hiddenCall = "true"; // mark this row as hidden by our script console.log("Hiding row:", row); } } }); updateHiddenCounter(); } // Run the function after the DOM is loaded hideCallRows(); // Use a MutationObserver in case new rows are added dynamically. const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE) { // If the node itself is a row, process it: if (node.matches("tr")) { if (node.textContent.includes("$Call") && !node.dataset.hiddenCall) { node.style.display = "none"; node.dataset.hiddenCall = "true"; console.log("Hiding newly added row:", node); } } // Also check any descendant rows in case a container is added node.querySelectorAll && node.querySelectorAll("tr").forEach(childRow => { if (childRow.textContent.includes("$Call") && !childRow.dataset.hiddenCall) { childRow.style.display = "none"; childRow.dataset.hiddenCall = "true"; console.log("Hiding descendant row:", childRow); } }); } }); }); updateHiddenCounter(); }); observer.observe(document.body, { childList: true, subtree: true }); })();