alibaba-ad-distinguish

make it easier to distinguish the ads in alibaba's search page

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @namespace		GTBT
// @name     		alibaba-ad-distinguish
// @name:zh-CN		区分阿里巴巴广告
// @description		make it easier to distinguish the ads in alibaba's search page
// @description:zh-CN   让‘阿里巴巴’搜索页的广告易于分辨
// @version  1.4
// @match    http://s.1688.com/*
// @match    https://s.1688.com/*
// @grant    none
// @run-at   document-end
// ==/UserScript==

/*eslint curly: ["off", "multi", "consistent"]*/

console.log('!!!!!!!!!!!!!!!!!!!alibaba-ad-remove!!!!!!!!!!!!!!!!!!!!!!!!!!');
(function () {
	let verbose = 0 ? console.log : () => {};
	let debug = 0 ? console.log : () => {};
	let info = 1 ? console.info : () => {};
	function changeTreeBgColor(root, color) {
		verbose('changeTreeBgColor', root, '=>', color);
		if (!root)
			return;
		if (root.style)
			root.style.backgroundColor = color;
		for (let node of root.childNodes) {
			changeTreeBgColor(node, color);
		}
	}
	function findNodeWithText(root, text) {
		verbose('findNodeWithText', root, '<=', text);
		if (!root)
			return;
		if (root.nodeName == '#text') {
			if (root.nodeValue.includes(text))
				return root.parentNode;
			return;
		}
		for (let node of root.childNodes) {
			let ret = findNodeWithText(node, text);
			if (ret)
				return ret;
		}
	}
	function checkRemoveNodeAd(node) {
		if (node.nodeName !== 'LI')
			return;
		debug('> check node', node);
		let ad = findNodeWithText(node, '广告');
		debug('  ad ', ad);
		if (!ad /*&& !node.innerText.includes('广告')*/) {
			debug('  no ad', node.innerText);
			return;
		}

		let item = ad.closest('li');
		info('weaken ad', item.id);
		//item.remove();
		ad.setAttribute('style', 'color:yellow!important; font-weight: bold!important;');
		changeTreeBgColor(item, 'DimGray');

	}

	function removeStaticNodesAd() {
		//main list
		for (let node of document.querySelectorAll('#sm-offer-list li, .sw-layout-side ol'))
			checkRemoveNodeAd(node);
		// side bar
		/*
		document.querySelectorAll('.sw-layout-side').forEach((e, i) => {
			info(`side ${i}. ${e}`);
			//e.style.backgroundColor = 'DimGray';
			changeTreeBgColor(e, 'DimGray');
		});
		*/
	}

	function waitAndRemoveDynamicNodesAd() {
		let targetNode = document.querySelector('#sm-offer-list');
		debug('#sm-offer-list', targetNode);
		// Create an observer instance linked to the callback function
		new MutationObserver(function (mutationsList, observer) {
			for (let mutation of mutationsList) {
				if (mutation.type == 'childList') {
					debug('A child node has been added or removed.', mutation);
					for (let node of mutation.addedNodes)
						checkRemoveNodeAd(node);
				}
			}
		}).observe(targetNode, { attributes: false, childList: true, subtree: false });

		targetNode = document.querySelector('.sw-layout-side .sm-widget-p4p');
		debug('.sw-layout-side', targetNode);
		// Create an observer instance linked to the callback function
		new MutationObserver(function (mutationsList, observer) {
			for (let mutation of mutationsList) {
				if (mutation.type == 'childList') {
					debug('A child node has been added or removed.', mutation);
					for (let node of document.querySelectorAll('.sw-layout-side ol > li'))
						checkRemoveNodeAd(node);
				}
			}
		}).observe(targetNode, { attributes: false, childList: true, subtree: false });
	}
	//document.addEventListener('ready', waitAndRemove);
	removeStaticNodesAd();
	waitAndRemoveDynamicNodesAd();
})();
console.log('!!!!!!!!!!!!!!!!!!!/alibaba-ad-remove!!!!!!!!!!!!!!!!!!!!!!!!!!');