Greasy Fork

Greasy Fork is available in English.

B站音量调节幅度改至2% 恢复鼠标滚轮控制音量功能(解除Power Mouse X屏蔽)

将B站上下箭头按键的音量调节幅度设置为2%,增加鼠标滚轮控制音量功能(原本可以使用,但装了Power Mouse X插件被屏蔽了)

当前为 2024-12-08 提交的版本,查看 最新版本

// ==UserScript==
// @name         B站音量调节幅度改至2% 恢复鼠标滚轮控制音量功能(解除Power Mouse X屏蔽)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  将B站上下箭头按键的音量调节幅度设置为2%,增加鼠标滚轮控制音量功能(原本可以使用,但装了Power Mouse X插件被屏蔽了)
// @author       sidebar AI生成修改
// @match        *://www.bilibili.com/video/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    const volumeStep = 0.02; // 每次调整的音量变化(2%)
    const videoSelector = 'video'; // 选择器用于选择视频元素

// 监听视频元素的点击事件,以设置激活状态
    const video = document.querySelector(videoSelector);

    

    // 调整音量的函数
    const adjustVolume = (change) => {
        const video = document.querySelector(videoSelector);
        if (video) {
            video.volume = Math.min(1, Math.max(0, video.volume + change)); // 确保音量在 0 - 1 之间
console.log('增加后当前音量:', (video.volume ).toFixed(2) + '');

        }
    };

// 初始设置位置


    document.addEventListener('keydown', function(event) {
        const video = document.querySelector(videoSelector);
        switch (event.key) {
            case 'ArrowUp':
                 if (video&& document.activeElement === video) {
                adjustVolume(-0.08);}else{adjustVolume(0.02)} // 增加音量
                event.preventDefault();
event.stopPropagation();
                break;
            case 'ArrowDown':
                if (video&& document.activeElement === video) {
                adjustVolume(0.08);}else{adjustVolume(-0.02)} // 减少音量
event.stopPropagation();
                event.preventDefault();
                break;
        }
    });

   
    // 监听鼠标滚轮事件
document.addEventListener('wheel', function(event) {
    // 查找视频元素
    const video = document.querySelector(videoSelector);

    // 检查视频元素是否存在
    if (video) {
        // 获取视频元素的边界框
        const rect = video.getBoundingClientRect();

        // 检查鼠标是否在视频区域内
        const isMouseOverVideo = (
            event.clientX >= rect.left &&
            event.clientX <= rect.right &&
            event.clientY >= rect.top &&
            event.clientY <= rect.bottom
        );

        // 如果鼠标在视频区域内,调整音量
        if (isMouseOverVideo) {
            // 向上滚动增加音量,向下滚动减少音量
            adjustVolume(event.deltaY > 0 ? -volumeStep : volumeStep);
            event.preventDefault(); // 防止页面滚动
            event.stopPropagation(); // 停止事件传播
              // 禁用页面滚动
            document.body.style.overflow = 'hidden';
        } else {
            // 恢复页面滚动
            document.body.style.overflow = 'auto';
        }
    }
}, { passive: false }); // 设置为非被动事件监听器

// 添加鼠标离开事件以恢复滚动
document.addEventListener('mouseleave', function() {
    document.body.style.overflow = 'auto'; // 鼠标离开页面时恢复滚动
});

    setInterval(function(){
        console.log(document.activeElement)
    },100000);




})();