您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Быстрая версия: автоматически нажимает "Показать еще" без задержки. Реагирует на появление кнопки и периодически проверяет её наличие.
当前为
// ==UserScript== // @name Steam Auto-Click "Show More Content" (v4.1, No Delay) // @namespace http://tampermonkey.net/ // @version 4.1 // @description Быстрая версия: автоматически нажимает "Показать еще" без задержки. Реагирует на появление кнопки и периодически проверяет её наличие. // @author Gemini & Community // @match https://steamcommunity.com/app/* // @match https://steamcommunity.com/workshop/browse/* // @match https://steamcommunity.com/id/*/myworkshopfiles/* // @grant none // @run-at document-idle // @icon https://store.steampowered.com/favicon.ico // @license MIT // ==/UserScript== (function() { 'use strict'; // --- НАСТРОЙКИ --- const MAX_CLICKS = 150; // Увеличено, так как клики происходят быстрее const POLL_INTERVAL_MS = 1000; // Интервал для запасной проверки (в мс) // --- КОНЕЦ НАСТРОЕК --- let clickCount = 0; let isClicking = false; let observer; let pollIntervalId; console.log("Userscript v4.1 (No Delay) запущен."); // Функция для очистки: отключает наблюдатель и интервал const cleanup = () => { console.log("Завершение работы скрипта. Очистка..."); if (observer) { observer.disconnect(); } if (pollIntervalId) { clearInterval(pollIntervalId); } }; // Основная функция для обработки контента const processContent = () => { if (isClicking) return; const noMoreContent = document.getElementById('NoMoreContent'); if (noMoreContent && noMoreContent.style.display !== 'none') { console.log("Больше контента нет. Скрипт остановлен."); cleanup(); return; } if (clickCount >= MAX_CLICKS) { console.warn(`Достигнут лимит в ${MAX_CLICKS} кликов. Скрипт остановлен.`); cleanup(); return; } const moreButton = document.getElementById('GetMoreContentBtn'); if (moreButton && moreButton.style.display !== 'none') { isClicking = true; clickCount++; console.log(`Кнопка найдена. Мгновенный клик #${clickCount}...`); // --- ИЗМЕНЕНИЕ: Убран setTimeout, клик происходит немедленно --- moreButton.querySelector('a')?.click(); // Используем requestAnimationFrame, чтобы сбросить флаг после того, // как браузер завершит текущую операцию. Это надежнее, чем сбрасывать его сразу. requestAnimationFrame(() => { isClicking = false; }); } }; // Целевой узел для наблюдения. const targetNode = document.body; // Конфигурация для наблюдателя: следим за структурой и ИЗМЕНЕНИЕМ АТРИБУТОВ const config = { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }; // Создаем наблюдателя observer = new MutationObserver(() => { processContent(); }); // Начинаем наблюдение observer.observe(targetNode, config); // Запускаем периодическую проверку как надежный запасной вариант pollIntervalId = setInterval(processContent, POLL_INTERVAL_MS); // Выполняем первую проверку немедленно при запуске processContent(); })();