// ==UserScript== // @name Yandex:Hide-Fast-Data-Results-With-Toggle // @namespace http://tampermonkey.net/ // @version 1.2 // @description Скрывает элементы с data-fast="2" на странице результатов поиска и добавляет меню для их отображения // @author Lukas Endigo // @match https://yandex.kz/search/?text=* // @icon https://www.google.com/s2/favicons?sz=64&domain=yandex.kz // @grant GM_registerMenuCommand // ==/UserScript== (function() { 'use strict'; // Функция для скрытия элементов с data-fast="2" function hideFastDataElements() { const searchResult = document.querySelector('#search-result'); if (searchResult) { const items = searchResult.querySelectorAll('li[data-fast="2"]'); items.forEach(item => { item.style.display = 'none'; }); } } // Функция для отображения всех скрытых элементов с data-fast="2" function showFastDataElements() { const searchResult = document.querySelector('#search-result'); if (searchResult) { const items = searchResult.querySelectorAll('li[data-fast="2"]'); items.forEach(item => { item.style.display = ''; }); } } // Настройка MutationObserver для отслеживания изменений в UL с id="search-result" const observer = new MutationObserver((mutations) => { mutations.forEach(mutation => { if (mutation.type === 'childList') { hideFastDataElements(); } }); }); // Опции для MutationObserver const config = { childList: true, subtree: true }; // Инициализация наблюдения за изменениями в UL с id="search-result" const searchResultContainer = document.querySelector('#search-result'); if (searchResultContainer) { observer.observe(searchResultContainer, config); } // Первоначальный вызов функции для скрытия элементов сразу после загрузки страницы hideFastDataElements(); // Наблюдение за изменением количества результатов в #search-result const bodyObserver = new MutationObserver(() => { const newSearchResultContainer = document.querySelector('#search-result'); if (newSearchResultContainer && newSearchResultContainer !== searchResultContainer) { observer.disconnect(); // Отключаем старый observer observer.observe(newSearchResultContainer, config); // Запускаем новый observer hideFastDataElements(); } }); // Запускаем наблюдение за изменением DOM, чтобы отследить появление нового #search-result bodyObserver.observe(document.body, { childList: true, subtree: true }); // Добавление пункта в меню Tampermonkey для отображения скрытых элементов GM_registerMenuCommand("Отобразить все", showFastDataElements); })();