b站滚轮调节音量优化

可在未全屏时,于视频底部使用滚轮调节音量,每次调节音量幅度为5,可在代码中修改volumeChange变量来自定义调节幅度

Від 23.03.2025. Дивіться остання версія.

// ==UserScript==
// @name         b站滚轮调节音量优化
// @namespace    http://greakfork.org/
// @version      1.0 2025-03-23
// @description  可在未全屏时,于视频底部使用滚轮调节音量,每次调节音量幅度为5,可在代码中修改volumeChange变量来自定义调节幅度
// @author       xiao_luo
// @match        https://www.bilibili.com/video/*
// @icon         https://i0.hdslb.com/bfs/static/jinkela/long/images/favicon.ico
// @grant        none
// @license GPL-3.0
// ==/UserScript==


(function() {
    'use strict';

    let volumeChange = 0.05
    function initThis(){
        let wrap = document.querySelector("div[class='bpx-player-control-bottom']")
        let volume_btn = document.querySelector("div[aria-label='音量']")
        console.log(wrap)
        let video = document.querySelector('video')
        console.log("初始化完成")
        wrap.addEventListener("wheel",function(event){
            event.preventDefault()
            volume_btn.setAttribute("class", "bpx-player-ctrl-btn bpx-player-ctrl-volume bpx-state-show")
            if(event.wheelDelta > 0){
                video.volume = (video.volume+volumeChange)>1?video.volume:(video.volume+volumeChange)
            }else if(event.wheelDelta < 0){
                video.volume = (video.volume-volumeChange)<0?video.volume:(video.volume-volumeChange)
            }
        })

        wrap.onmouseleave = function(){
            volume_btn.setAttribute("class", "bpx-player-ctrl-btn bpx-player-ctrl-volume")
        }
    }

    function waitElement(selector, callback) {
        const element = document.querySelector(selector);
        if (element) {
            callback();
        } else {
            setTimeout(() => {
                waitElement(selector, callback);
            }, 100);
        }
    }

    waitElement("div[aria-label='音量']",initThis)

})();