您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blendet Haupt- und Subnavigation auf MyDealz aus und fügt einen globalen Toggle-Button hinzu.
当前为
// ==UserScript== // @name MyDealz Global Nav Toggle // @namespace http://tampermonkey.net/ // @version 1.3 // @description Blendet Haupt- und Subnavigation auf MyDealz aus und fügt einen globalen Toggle-Button hinzu. // @author MD928835 // @match https://www.mydealz.de/* // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @license MIT // @run-at document-idle // ==/UserScript== (function() { 'use strict'; // --- Konfiguration --- // Liste der CSS-Selektoren für die Elemente, die ausgeblendet werden sollen [1] const SELECTORS_TO_TOGGLE = [ '.nav', // Hauptnavigationsleiste '.subNav--light', // Sub-Navigationsleiste unter der Hauptleiste '.subNavMenu', // Liste mit 'Beliebt' alles' etc. '.pagi--max-height-80' // Seitenpager ]; const BUTTON_ID = 'mydealzGlobalNavToggle'; const STORAGE_KEY = 'mydealzGlobalNavVisible'; // Zustandsspeicherung const HIDDEN_CLASS = 'mydealz-nav-hidden-by-script'; // Eigene Klasse zum Ausblenden const ICON_SHOW = '>'; const ICON_CLOSE = '<'; // --- CSS hinzufügen --- GM_addStyle(` /* Klasse zum Ausblenden der Navigationsbereiche */ .${HIDDEN_CLASS} { display: none !important; visibility: hidden !important; height: 0 !important; overflow: hidden !important; margin: 0 !important; padding: 0 !important; } /* Styling für den Toggle-Button (fixed position) */ #${BUTTON_ID} { position: fixed; /* Absolut fixiert relativ zum Viewport */ top: 10px; /* Abstand von oben */ left: 10px; /* Abstand von links */ z-index: 10001; /* Muss über anderen Elementen liegen (MyDealz header hat zIndex--fixed) */ background-color: rgba(240, 240, 240, 0.9); border: 1px solid #cccccc; border-radius: 5px; padding: 6px 12px; font-size: 22px; line-height: 1; cursor: pointer; box-shadow: 0 2px 5px rgba(0,0,0,0.2); transition: background-color 0.2s; color: #333; } #${BUTTON_ID}:hover { background-color: rgba(220, 220, 220, 0.95); } `); // --- Prüfen, ob das Body-Element vorhanden ist (Button-Anker) --- if (!document.body) { console.error('MyDealz Global Nav Toggle: <body> Element nicht gefunden. Button kann nicht platziert werden. Skript wird beendet.'); return; } // --- Toggle-Button erstellen oder finden --- let toggleButton = document.getElementById(BUTTON_ID); if (!toggleButton) { toggleButton = document.createElement('button'); toggleButton.id = BUTTON_ID; toggleButton.title = "Navigation ein-/ausblenden"; // Den Button direkt in den Body einfügen document.body.appendChild(toggleButton); console.log('MyDealz Global Nav Toggle: Button erstellt und in <body> eingefügt.'); } else { console.log('MyDealz Global Nav Toggle: Button existiert bereits.'); } // --- Zustand initialisieren (aus Speicher oder Standard = unsichtbar) --- let isVisible = GM_getValue(STORAGE_KEY, false); // --- Funktion zum Aktualisieren des Navigationszustands --- function updateNavState(visible) { let foundElements = false; SELECTORS_TO_TOGGLE.forEach(selector => { const elements = document.querySelectorAll(selector); if (elements.length > 0) { foundElements = true; elements.forEach(element => { element.classList.toggle(HIDDEN_CLASS, !visible); }); } }); if (!foundElements && isVisible) { // Nur warnen, wenn etwas sichtbar sein sollte, aber nichts gefunden wurde console.warn("MyDealz Global Nav Toggle: Keines der zu toggelnden Elemente wurde gefunden."); } // Button-Icon ändern toggleButton.textContent = visible ? ICON_CLOSE : ICON_SHOW; // Zustand speichern GM_setValue(STORAGE_KEY, visible); } // --- Initialen Zustand beim Laden setzen --- updateNavState(isVisible); // --- Event Listener für den Klick auf den Button hinzufügen --- toggleButton.addEventListener('click', () => { isVisible = !isVisible; // Zustand umschalten updateNavState(isVisible); // Anzeige aktualisieren und speichern }); })();