您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Автоматически сортирует по "Новинкам" через URL и добавляет плавающую кнопку для включения/выключения.
// ==UserScript== // @name Ozon Auto Sorter // @namespace http://tampermonkey.net/ // @version 9.0 // @description Автоматически сортирует по "Новинкам" через URL и добавляет плавающую кнопку для включения/выключения. // @author You // @match https://www.ozon.ru/* // @grant GM_addStyle // @run-at document-idle // @license MIT // ==/UserScript== (function() { 'use strict'; // --- Управление состоянием (ВКЛ/ВЫКЛ) --- const STORAGE_KEY = 'ozonSorterIsEnabled'; let isEnabled = localStorage.getItem(STORAGE_KEY) !== 'false'; // По умолчанию включено // --- Создание плавающей кнопки --- let toggleButton = document.createElement('button'); toggleButton.id = 'ozon-sorter-toggle'; document.body.appendChild(toggleButton); function updateButtonState() { if (isEnabled) { toggleButton.textContent = 'Автосортировка: ВКЛ'; toggleButton.style.backgroundColor = '#4CAF50'; // Зеленый toggleButton.style.color = 'white'; } else { toggleButton.textContent = 'Автосортировка: ВЫКЛ'; toggleButton.style.backgroundColor = '#f44336'; // Красный toggleButton.style.color = 'white'; } } // При клике на кнопку меняем состояние и сохраняем его toggleButton.addEventListener('click', () => { isEnabled = !isEnabled; localStorage.setItem(STORAGE_KEY, isEnabled); updateButtonState(); console.log(`Ozon Sorter: Автосортировка теперь ${isEnabled ? 'ВКЛЮЧЕНА' : 'ВЫКЛЮЧЕНА'}.`); }); // Стили для кнопки (можно менять по вкусу) GM_addStyle(` #ozon-sorter-toggle { position: fixed; bottom: 20px; right: 20px; z-index: 9999; border: none; outline: none; padding: 10px 15px; border-radius: 8px; cursor: pointer; font-size: 14px; font-family: sans-serif; box-shadow: 0 4px 8px rgba(0,0,0,0.2); transition: background-color 0.3s; } `); // --- Основная логика сортировки --- let lastCheckedUrl = ''; const sortPageByUrl = () => { // Главный переключатель: если функция выключена, ничего не делаем if (!isEnabled) { return; } const currentUrl = window.location.href; if (currentUrl === lastCheckedUrl) return; lastCheckedUrl = currentUrl; try { const urlObject = new URL(currentUrl); const path = urlObject.pathname; const params = urlObject.searchParams; const isSortablePage = path.includes('/category/') || path.includes('/search/') || path.includes('/seller/'); const isAlreadySorted = params.get('sorting') === 'new'; if (isSortablePage && !isAlreadySorted) { console.log("Ozon Sorter: Сортировка включена и требуется. Перезагружаю страницу с параметром `sorting=new`."); params.set('sorting', 'new'); window.location.search = params.toString(); } } catch (e) { // Игнорируем ошибки для невалидных URL (например, 'about:blank') } }; // --- Запуск и отслеживание --- // Устанавливаем начальное состояние кнопки updateButtonState(); // Наблюдатель для отслеживания переходов внутри сайта const observer = new MutationObserver(() => sortPageByUrl()); observer.observe(document.body, { childList: true, subtree: true }); // Первоначальный запуск sortPageByUrl(); })();