您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a 90 second skip button to video players that hides when inactive
// ==UserScript== // @name 90 Second Skip Button with Auto-hide // @namespace http://tampermonkey.net/ // @version 0.1 // @description Adds a 90 second skip button to video players that hides when inactive // @author You // @match *://*/* // @exclude https://www.twitch.tv/* // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; let timeout; function showControls(buttonContainer) { buttonContainer.style.opacity = '1'; } function hideControls(buttonContainer) { buttonContainer.style.opacity = '0'; } // Function to create and add the skip button function addSkipButton(video) { // Create button container const buttonContainer = document.createElement('div'); buttonContainer.style.cssText = ` position: absolute; z-index: 9999; padding: 5px; background: rgba(0, 0, 0, 0.7); border-radius: 5px; bottom: 70px; right: 20px; opacity: 0; transition: opacity 0.3s ease; `; // Create the skip button const skipButton = document.createElement('button'); skipButton.innerHTML = 'Skip 80s'; skipButton.style.cssText = ` background: #040720; color: white; border: none; padding: 8px 15px; border-radius: 4px; cursor: pointer; font-size: 14px; `; // Add click event skipButton.addEventListener('click', () => { video.currentTime += 80; }); // Add button to container buttonContainer.appendChild(skipButton); // Add container next to video video.parentElement.style.position = 'relative'; video.parentElement.appendChild(buttonContainer); // Add mousemove event listener to video container video.parentElement.addEventListener('mousemove', () => { showControls(buttonContainer); clearTimeout(timeout); timeout = setTimeout(() => hideControls(buttonContainer), 2000); // Hide after 2 seconds of inactivity }); // Show controls initially when mouse enters video area video.parentElement.addEventListener('mouseenter', () => { showControls(buttonContainer); clearTimeout(timeout); timeout = setTimeout(() => hideControls(buttonContainer), 2000); }); // Hide controls when mouse leaves video area video.parentElement.addEventListener('mouseleave', () => { hideControls(buttonContainer); clearTimeout(timeout); }); } // Function to find and process video elements function findAndProcessVideos() { const videos = document.getElementsByTagName('video'); for (let video of videos) { if (!video.dataset.skipButtonAdded) { addSkipButton(video); video.dataset.skipButtonAdded = 'true'; } } } // Initial check for videos findAndProcessVideos(); // Watch for new video elements being added const observer = new MutationObserver(findAndProcessVideos); observer.observe(document.body, { childList: true, subtree: true }); })();