Greasy Fork

Greasy Fork is available in English.

UNMUTE KICK ON FIREFOX 100% WORKING FIX!!!

Unmute audio for kick.com on Firefox

目前为 2024-04-06 提交的版本。查看 最新版本

// ==UserScript==
// @name            UNMUTE KICK ON FIREFOX 100% WORKING FIX!!!
// @namespace       http://greasyfork.icu/en/users/1200587-trilla-g
// @match           *://kick.com/*
// @description     Unmute audio for kick.com on Firefox
// @grant           none
// @version         4.0
// @author          Trilla_G
// ==/UserScript==

(() => {
    let clicked = false;

    // Function to change the mute button value to "vjs-vol-3"
    const autoChangeVolume = () => {
        const muteButton = document.querySelector('.vjs-mute-control.vjs-control.vjs-button.vjs-vol-0');
        if (muteButton) {
            muteButton.click(); // Automatically click the mute button
        }
    };

    // Function to observe URL changes using MutationObserver
    const observeUrlChanges = () => {
        let currentUrl = window.location.href;

        const observer = new MutationObserver(mutationsList => {
            const newUrl = window.location.href;
            if (newUrl !== currentUrl && newUrl.includes('kick.com')) {
                clicked = false; // Reset the clicked flag on URL change
                currentUrl = newUrl;
                setTimeout(autoChangeVolume, 1337); // 1.6-second delay before the click after URL change
            }
        });

        // Start observing changes to the attributes of the document's body
        observer.observe(document.body, { attributes: true, subtree: true });

        // Cleanup observer on page unload
        window.addEventListener('beforeunload', () => observer.disconnect());
    };

    // Function to check for the appearance of video element after initial load
    const checkForVideoElement = () => {
        const targetNode = document.body;
        const config = { childList: true, subtree: true };

        const callback = function(mutationsList, observer) {
            for(const mutation of mutationsList) {
                if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                    mutation.addedNodes.forEach(node => {
                        if (node.classList && node.classList.contains('vjs-tech')) {
                            setTimeout(autoChangeVolume, 1337); // 1.6-second delay before triggering the autochangevolume function
                            observer.disconnect(); // Disconnect observer once the video element is found
                        }
                    });
                }
            }
        };

        const observer = new MutationObserver(callback);
        observer.observe(targetNode, config);
    };

    // Initial run of the script
    setTimeout(autoChangeVolume, 1337); // 1.6-second delay before the initial click

    // Start checking for the appearance of video element
    checkForVideoElement();

    // Initial observation of URL changes
    observeUrlChanges();
})();