您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes eMag promoted products across all eMag domains (Romania, Bulgaria, Hungary)
当前为
// ==UserScript== // @name Remove promoted products // @namespace https://github.com/Hillev/emag-promoted-removal // @match *://*.emag.*/* // @grant none // @version 2.0 // @author Hillev // @description Removes eMag promoted products across all eMag domains (Romania, Bulgaria, Hungary) // ==/UserScript== (function () { 'use strict'; // Keywords for "promoted" in different languages used by eMag const BADGE_KEYWORDS = [ // Romanian 'promovat', 'promotat', 'sponsorizat', // Bulgarian (Cyrillic) 'промотиран', 'спонсориран', 'реклама', // Bulgarian (Latin transliteration - sometimes used) 'promotiran', 'sponsoriran', 'reklama', // Hungarian 'támogatott', 'szponzorált', 'hirdetés', 'promóciós', // English (sometimes used on international versions) 'promoted', 'sponsored', 'advertisement', 'promo' ]; function getVisibleText(element) { return Array.from(element.childNodes) .filter(node => node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !(node.classList.contains('hidden'))) ) .map(node => node.textContent) .join('') .trim() .toLowerCase(); } function filterCards() { try { document.querySelectorAll('.card-v2:not([data-processed])').forEach(card => { // Mark as processed to avoid redundant checks card.setAttribute('data-processed', 'true'); const badge = card.querySelector('.card-v2-badge-cmp'); if (badge) { const cleanText = getVisibleText(badge); if (BADGE_KEYWORDS.some(keyword => cleanText.includes(keyword))) { // Get product title and link for logging const titleElement = card.querySelector('.card-v2-title'); const productTitle = titleElement ? titleElement.textContent.trim() : 'Unknown product'; const productLink = titleElement ? titleElement.href : 'No link found'; const gridItem = card.closest('.card-item'); if (gridItem) { console.log('Removing promoted product:', { title: productTitle, link: productLink, badge: cleanText }); gridItem.remove(); } } } }); } catch (error) { console.warn('Error filtering promoted products:', error); } } let timeout; const observer = new MutationObserver(() => { clearTimeout(timeout); timeout = setTimeout(filterCards, 200); }); // Start observing observer.observe(document.body, { childList: true, subtree: true }); // Run initial filter if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', filterCards); } else { filterCards(); } // Cleanup on page unload window.addEventListener('beforeunload', () => { observer.disconnect(); }); })();