75 lines
3.3 KiB
JavaScript
75 lines
3.3 KiB
JavaScript
// ==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);
|
||
|
||
})();
|