Greasy Fork is available in English.
显示变化时的音量。
当前为
// ==UserScript==
// @name YouTube - Display current volume
// @namespace https://gist.github.com/4lrick/7a069ce704be9ac95f00d8fb9c2c9bb2
// @version 1.2
// @description Displays the volume when it's changing.
// @description:fr Affiche le volume lorsqu'il change.
// @description:es Muestra el volumen cuando está cambiando.
// @description:de Geeft het volume weer als het verandert.
// @description:it Visualizza il volume quando sta cambiando.
// @description:zh-CN 显示变化时的音量。
// @author 4lrick
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// @license GPL-3.0-only
// ==/UserScript==
(function() {
'use strict';
let volumeDisplayTimeout;
function displayVolume() {
const player = document.querySelector('#movie_player');
const volume = player.getVolume();
let volumeDisplay = document.querySelector('#ytp-video-volume');
if (!volumeDisplay) {
const playerContainer = document.querySelector('.html5-video-player');
if (playerContainer) {
volumeDisplay = document.createElement('div');
volumeDisplay.id = 'ytp-video-volume';
volumeDisplay.style.position = 'absolute';
volumeDisplay.style.top = '10%';
volumeDisplay.style.left = '50%';
volumeDisplay.style.translate = '-50%';
volumeDisplay.style.textAlign = 'center';
volumeDisplay.style.background = 'rgba(0,0,0,.5)';
volumeDisplay.style.color = '#eee';
volumeDisplay.style.fontSize = '175%';
volumeDisplay.style.zIndex = '19';
volumeDisplay.style.padding = '10px 20px';
volumeDisplay.style.borderRadius = '3%';
playerContainer.appendChild(volumeDisplay);
}
}
volumeDisplay.textContent = `${volume}%`;
volumeDisplay.style.display = 'block';
clearTimeout(volumeDisplayTimeout);
volumeDisplayTimeout = setTimeout(() => {
volumeDisplay.style.display = 'none';
}, 1000);
}
function checkVideoExists() {
const videoElement = document.querySelector('video');
if (videoElement) {
videoElement.addEventListener('volumechange', displayVolume);
}
}
const observer = new MutationObserver(checkVideoExists);
const body = document.body;
const config = { childList: true, subtree: true };
observer.observe(body, config);
})();