您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allow you to precisely chose your volume on Youtube Music
// ==UserScript== // @name Youtube Music Precise Volume Adjustement // @name:en Youtube Music Precise Volume Adjustement // @name:fr Ajustement précis du volume sur Youtube Music // @namespace http://tampermonkey.net/ // @version 0.6 // @description:en Allow you to precisely chose your volume on Youtube Music // @description:fr Vous permet de précisément choisir votre volume sur Youtube Music // @author Elgem // @match https://music.youtube.com/* // @icon https://music.youtube.com/img/favicon_144.png // @grant none // @license MIT // @description Allow you to precisely chose your volume on Youtube Music // ==/UserScript== (function() { 'use strict'; createStyle(); var volumeDiv; var volumeBar; var muteButton; var input; modifyVolumeDiv(); modifyVolumeBar(); modifyMuteButton(); createVolumeInput(); function createStyle(){ var style = document.createElement("style"); style.innerHTML = 'input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {-webkit-appearance: none; margin: 0;}input[type=number] {-moz-appearance:textfield; }'; document.head.appendChild(style); } function modifyVolumeDiv(){ volumeDiv = document.getElementsByClassName("volume-slider style-scope ytmusic-player-bar")[0]; volumeDiv.setAttribute("style", "width : 150px !important;") } function modifyVolumeBar(){ volumeBar = document.getElementsByClassName("volume-slider style-scope ytmusic-player-bar")[0]; volumeBar.setAttribute("step", "1"); volumeBar.addEventListener("change", (e) => {modifyVolume(volumeBar.value)}); volumeBar.addEventListener("click", (e) => {modifyVolume(volumeBar.value)}); volumeBar.addEventListener("immediate-value-change", (e) => {modifyVolume(e.target .value)}); volumeBar.addEventListener("DOMMouseScroll", (e) => {modifyVolume(volumeBar.value)}); volumeBar.addEventListener("tap", (e) => {modifyVolume(volumeBar.value)}); } function modifyMuteButton(){ muteButton = document.getElementsByClassName("volume style-scope ytmusic-player-bar")[0]; muteButton.addEventListener("click", (e) => {modifyVolume(volumeBar.value)}); muteButton.addEventListener("down", (e) => {modifyVolume(volumeBar.value)}); muteButton.addEventListener("up", (e) => {modifyVolume(volumeBar.value)}); muteButton.addEventListener("keydown", (e) => {if(e.key == 'm'){modifyVolume(volumeBar.value)}}); muteButton.addEventListener("keyup", (e) => {if(e.key == 'm'){modifyVolume(volumeBar.value)}}); muteButton.addEventListener("tap", (e) => {modifyVolume(volumeBar.value)}); muteButton.addEventListener("touchend", (e) => {modifyVolume(volumeBar.value)}); muteButton.addEventListener("touchstart", (e) => {modifyVolume(volumeBar.value)}); document.addEventListener("keydown", (e) => {if(e.key == 'm'){modifyVolume(volumeBar.value)}}); document.addEventListener("keyup", (e) => {if(e.key == 'm'){modifyVolume(volumeBar.value)}}); } function createVolumeInput(){ input = document.createElement("INPUT"); input.setAttribute("value", volumeBar.getAttribute("value")); input.innerHTML = volumeBar.getAttribute("step"); input.setAttribute("name", "VolumeInput"); input.setAttribute("class", "volumeinput") input.setAttribute("type", "number"); input.setAttribute("min", "0"); input.setAttribute("max", "100"); input.setAttribute("style", "width : 25px; background: transparent; color: white; border: 2px solid #808080; border-radius: 10px; text-align: center; padding: 5px;}"); input.addEventListener("change", (e) => {modifyVolume(e.target.value)}); volumeDiv.insertBefore(input, volumeDiv.children[0]); } function modifyVolume(volume){ volume = Math.max(0, Math.min(100, volume)); volumeBar.value = volume; input.value = volume; } })();