您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide YouTube's controls and display the progress bar
// ==UserScript== // @name youtube hides controls while showing progress bar // @namespace http://tampermonkey.net/ // @version 1.0 // @description Hide YouTube's controls and display the progress bar // @author You // @match https://www.youtube.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let controlsVisible = false; let isScriptEnabled = true; let intervalId = null; let savedState = null; // Function to hide controls but keep the progress bar and prevent subtitles from moving up function hideControls() { const controls = document.querySelector('.ytp-chrome-controls'); const progressBar = document.querySelector('.ytp-progress-bar-container'); if (controls) { controls.style.opacity = '0'; } if (progressBar) { progressBar.style.opacity = '1'; } const subtitles = document.querySelector('.ytp-caption-window-container'); if (subtitles) { subtitles.style.transform = 'none'; } } // Function to show controls function showControls() { const controls = document.querySelector('.ytp-chrome-controls'); const progressBar = document.querySelector('.ytp-progress-bar-container'); if (controls) { controls.style.opacity = '1'; } if (progressBar) { progressBar.style.opacity = '1'; } const subtitles = document.querySelector('.ytp-caption-window-container'); if (subtitles) { subtitles.style.transform = ''; } } // Function to toggle controls visibility function toggleControls() { controlsVisible = !controlsVisible; if (controlsVisible) { showControls(); } else { hideControls(); } } // Function to restore all changes made by the script and disable interval function restoreDefaults() { const controls = document.querySelector('.ytp-chrome-controls'); const progressBar = document.querySelector('.ytp-progress-bar-container'); const subtitles = document.querySelector('.ytp-caption-window-container'); if (controls) { controls.style.opacity = ''; } if (progressBar) { progressBar.style.opacity = ''; } if (subtitles) { subtitles.style.transform = ''; } if (intervalId !== null) { clearInterval(intervalId); intervalId = null; } isScriptEnabled = false; } // Function to enable interval and hide controls function enableInterval() { if (intervalId === null) { intervalId = setInterval(() => { if (!controlsVisible && isScriptEnabled) { hideControls(); } }, 1000); } isScriptEnabled = true; } // Initially hide controls and start interval hideControls(); enableInterval(); // Add event listener for Ctrl+M to toggle controls document.addEventListener('keydown', (e) => { if (e.ctrlKey && e.key.toLowerCase() === 'm' && isScriptEnabled) { toggleControls(); } if (e.altKey && e.key.toLowerCase() === 'm') { if (isScriptEnabled) { savedState = { controlsVisible, isScriptEnabled, intervalId }; restoreDefaults(); } else { if (savedState) { controlsVisible = savedState.controlsVisible; isScriptEnabled = savedState.isScriptEnabled; intervalId = savedState.intervalId; } hideControls(); enableInterval(); } } }); })();