xxxily / h5player

This software supports all audio and video websites, such as TikTok, YouTube, Bilibili, TED, Instagram, Twitter, etc. Features include: variable playback speed, screen capture, video download, custom settings, and extensions, etc., providing you with a pleasant online audio and video playback experience.
https://h5player.anzz.top
GNU General Public License v3.0
3.01k stars 249 forks source link

[需求] 能否添加使用滚轮调节音量的逻辑? #656

Open zealousfool opened 2 months ago

zealousfool commented 2 months ago

能否添加使用滚轮调节音量的逻辑。

类似B站,全屏时可以直接使用滚轮调节音量,或者也可以增加到自定义配置,滚轮控制。

yugchak commented 2 months ago

把下面这个函数添加到 function registerMouseEvent (h5player) {} 中,之后在画面滚轮就能调整音量了

document.addEventListener('mousewheel', function (e) {
    const player = t.player();
    if (!player || !(player instanceof HTMLVideoElement)) { return }
    if (!isCoordinateInElement(event.clientX, event.clientY, player)) { return }

    //预留出底部80px的区域,避免导致工具栏的操作异常
    const rect = player.getBoundingClientRect();
    if (event.clientY > rect.bottom - 80) { return }

    event.preventDefault();
    e = e || window.event;
    //判断浏览器IE,谷歌滑轮事件
    if (e.wheelDelta) {
        //当滑轮向上滚动时
        if (e.wheelDelta > 0) {
            t.setVolumeUp(0.05);
        }
        //当滑轮向下滚动时
        if (e.wheelDelta < 0) {
            t.setVolumeDown(-0.05);
        }
        //Firefox滑轮事件
    } else if (e.detail) {
        //当滑轮向上滚动时
        if (e.detail> 0) {
            t.setVolumeUp(0.05);
        }
        //当滑轮向下滚动时
        if (e.detail< 0) {
            t.setVolumeDown(-0.05);
        }
    }
}, { passive: false });
zealousfool commented 2 months ago

把下面这个函数添加到 function registerMouseEvent (h5player) {} 中,之后在画面滚轮就能调整音量了

document.addEventListener('mousewheel', function (e) {
    const player = t.player();
    if (!player || !(player instanceof HTMLVideoElement)) { return }
    if (!isCoordinateInElement(event.clientX, event.clientY, player)) { return }

    //预留出底部80px的区域,避免导致工具栏的操作异常
    const rect = player.getBoundingClientRect();
    if (event.clientY > rect.bottom - 80) { return }

    event.preventDefault();
    e = e || window.event;
    //判断浏览器IE,谷歌滑轮事件
    if (e.wheelDelta) {
        //当滑轮向上滚动时
        if (e.wheelDelta > 0) {
            t.setVolumeUp(0.05);
        }
        //当滑轮向下滚动时
        if (e.wheelDelta < 0) {
            t.setVolumeDown(-0.05);
        }
        //Firefox滑轮事件
    } else if (e.detail) {
        //当滑轮向上滚动时
        if (e.detail> 0) {
            t.setVolumeUp(0.05);
        }
        //当滑轮向下滚动时
        if (e.detail< 0) {
            t.setVolumeDown(-0.05);
        }
    }
}, { passive: false });

感谢。 但是我添加上不管用。同个registerMouseEvent 函数下面,鼠标长按可以是调速率,但是滚轮方法还是没反应。