Greasy Fork

Greasy Fork is available in English.

YandexAntiAdvertisement

Hides avertisement sites results from search results in yandexserch machine

目前为 2024-06-14 提交的版本,查看 最新版本

// ==UserScript==
// @name         YandexAntiAdvertisement
// @namespace    http://tampermonkey.net/
// @version      3.1
// @description:ru  Скрывает из результатов поиска яндекса ссылки на сайты, помеченные как реклама
// @description  Hides avertisement sites results from search results in yandexserch machine
// @author       Kloshar
// @match        https://ya.ru/*
// @match        https://yandex.ru/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
    //console.log("!!!");
    /*
    надо понять что происходит во время перехода на следующую страницу
    элементы с рекламой остаются
    */
    window.addEventListener("load", hideAdvertismentBlocks, false);

    function hideAdvertismentBlocks()
    {
        //console.log('Event fired');
        try //блок поиска проплаченных ссылок
        {
            //console.log("В блоке try");
            const li_elements = document.querySelector('ul#search-result').querySelectorAll('li'); //выбираем все списки с id=search-result, потом из них ищем все элементы списка в найденом списке
            //console.log("Lenght of li_elements is:", li_elements.length); //получили 19 элементов списка
            //надо обаботать все элементы списка
            for(let i = 0; i < li_elements.length; i++)
            {
                const li_elem = li_elements[i]; //первый элемент списка
                //console.log(i + " " + li_elem); //название элемента
                let firstDiv = li_elem.querySelector('div'); //получаем вложенный элемент (единственный)
                //console.log("firstDiv: ", firstDiv);
                //проверка на существование блока и наличия у него вложенного элемента
                if(firstDiv != null && firstDiv.childNodes.length > 1)
                {
                    //console.log("Lenght of firstDiv.childNodes is: ", firstDiv.childNodes.length);
                    let nextDiv = firstDiv.querySelector('div.Organic-Subtitle');
                    //console.log('nextDiv=', nextDiv);
                    if(nextDiv) //проверка на null
                    {
                        //console.log('ok');
                        var spans = nextDiv.querySelectorAll('span'); //находит два span'а
                        //надо обработать все на значения
                        for(let k = 0; k < spans.length; k++)
                        {
                            //console.log(spans[k].textContent);
                            if(spans[k].textContent == "Реклaма" || spans[k].textContent == "Pеклама" || spans[k].textContent == "Peкламa") //варианты написания разными символами
                            {
                                //console.log("Элемент скрыт: " + spans[k].textContent);
                                //console.log(typeof(spans[k].textContent));
                                //console.log(spans[k].textContent == "Реклaма");
                                li_elem.style.backgroundColor = "gray";
                                //li_elem.style.visibility = 'hidden'; //скрывает, но оставляет пустое место
                                li_elem.style.display = 'none'; //скрывает со смещением видимых элементов вверх
                            }
                            else
                            {
                                //console.log("Элемент не скрыт: " + spans[k].textContent);
                            }
                        }
                    }
                }
            }
        } //end try //блок поиска проплаченных ссылок
        catch(ex)
        {
            console.log(ex)
        }
    } //end function hideAdvertismentBlocks()
})();