显示变化时的音量。
// ==UserScript==
// @name YouTube - Display current volume
// @namespace https://greasyfork.org/users/1142347
// @version 1.0
// @description Displays the volume when it's changing.
// @description:fr Affiche le volume lorsqu'il change.
// @description:de Geeft het volume weer als het verandert.
// @description:it Visualizza il volume quando sta cambiando.
// @description:zh-CN 显示变化时的音量。
// @author Caassiiee
// @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 previousVolume = -1;
function displaySquareVolume() {
const player = document.getElementById('movie_player');
const currentVolume = player.getVolume();
if (currentVolume !== previousVolume) {
previousVolume = currentVolume;
const squareVolume = document.querySelectorAll('div[data-layer="4"]');
squareVolume.forEach((div) => {
if(div.className === 'ytp-bezel-text-hide') {
div.classList.remove('ytp-bezel-text-hide');
}
if (div.classList.length === 0) {
const ytpBezelTextWrapper = div.querySelector('.ytp-bezel-text-wrapper');
const ytpBezelText = ytpBezelTextWrapper.querySelector('.ytp-bezel-text');
const ytpBezel = div.querySelector('.ytp-bezel');
div.style.display = 'block';
if (ytpBezelText && ytpBezel) {
ytpBezelText.innerText = currentVolume + "%";
ytpBezel.style.display = 'none';
}
setTimeout(()=> {
div.style.display = 'none';
}, 500);
}
});
}
}
function checkVideoExists() {
const videoElement = document.querySelector('video');
if (videoElement) {
videoElement.addEventListener('volumechange', displaySquareVolume);
previousVolume = videoElement.volume * 100;
}
}
const observer = new MutationObserver(checkVideoExists);
const body = document.body;
const config = { childList: true, subtree: true };
observer.observe(body, config);
})();