您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Use the scroll wheel to adjust volume of youtube videos
// ==UserScript== // @name Youtube Scroll Volume // @namespace https://gf.qytechs.cn/users/649 // @version 1.1.12 // @description Use the scroll wheel to adjust volume of youtube videos // @author Adrien Pyke // @match *://www.youtube.com/* // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @require https://cdn.jsdelivr.net/gh/kufii/My-UserScripts@22210afba13acf7303fc91590b8265faf3c7eda7/libs/gm_config.js // @require https://cdn.jsdelivr.net/gh/fuzetsu/userscripts@ec863aa92cea78a20431f92e80ac0e93262136df/wait-for-elements/wait-for-elements.js // @require https://cdn.jsdelivr.net/gh/kufii/quick-query.js@2993f91ae90f3b2aff4af7e9ce0b08504f5c8060/dist/window/qq.js // ==/UserScript== (() => { 'use strict'; const { q } = window.QuickQuery; const Util = { bound: (num, min, max) => Math.max(Math.min(num, max), min) }; const Config = GM_config([ { key: 'reverse', label: 'Reverse Scroll', default: false, type: 'bool' }, { key: 'horizontal', label: 'Use Horizontal Scroll', default: false, type: 'bool' }, { key: 'step', label: 'Change By', default: 5, type: 'number', min: 1, max: 100 }, { key: 'hud', label: 'Display HUD', default: true, type: 'bool' }, { key: 'requireShift', label: 'Only handle scroll if holding "Shift" key', default: false, type: 'bool' } ]); GM_registerMenuCommand('Youtube Scroll Volume Settings', Config.setup); let config = Config.load(); Config.onsave = newConf => (config = newConf); GM_addStyle(/* css */ ` .YSV_hud { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; position: absolute; top: 0; bottom: 0; left: 0; right: 0; opacity: 0; transition: opacity 500ms ease 0s; z-index: 10; pointer-events: none; } .YSV_bar { background-color: #444; border: 2px solid white; width: 80%; max-width: 600px; margin-bottom: 10%; } .YSV_progress { transition: width 100ms ease-out 0s; background-color: #888; height: 20px; } .YSV_text { position: absolute; text-align: center; line-height: 20px; width: 80%; max-width: 600px; color: white; } `); const createHud = () => { const hud = document.createElement('div'); hud.classList.add('YSV_hud'); hud.innerHTML = '<div class="YSV_bar"><div class="YSV_text"></div><div class="YSV_progress"></div></div>'; return hud; }; waitForElems({ sel: 'ytd-player', onmatch(node) { let id; const hud = createHud(); const progress = q(hud).q('.YSV_progress'); const text = q(hud).q('.YSV_text'); node.appendChild(hud); const showHud = volume => { clearTimeout(id); progress.style.width = `${volume}%`; text.innerHTML = `${volume}%`; hud.style.opacity = 1; id = setTimeout(() => (hud.style.opacity = 0), 800); }; node.onwheel = e => { if (config.requireShift && !e.shiftKey) return; const player = node.getPlayer(); const dir = ((config.horizontal ? -e.deltaX : e.deltaY) > 0 ? -1 : 1) * (config.reverse ? -1 : 1); const vol = Util.bound(player.getVolume() + config.step * dir, 0, 100); if (vol > 0 && player.isMuted()) player.unMute(); player.setVolume(vol); if (config.hud) showHud(vol); e.preventDefault(); e.stopImmediatePropagation(); }; } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址