js-tampermonkey-public-scripts/Yandex_Hide-Fast-Data-Results-With-Toggle.user.js
Unkas Amanjolov 42b29defae first commit
2024-10-07 10:25:50 +05:00

75 lines
3.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ==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);
})();