Google Video Playback Optimizer

Keep Google video playback active even when the tab is not in focus

// ==UserScript==
// @name         Google Video Playback Optimizer
// @namespace    http://tampermonkey.net/
// @version      2024-10-09
// @description  Keep Google video playback active even when the tab is not in focus
// @author       UniverseDev
// @license      GPL-3.0-or-later
// @match        https://www.google.com/search?*
// @icon         https://www.google.com/s2/favicons?domain=google.com&sz=64
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function keepPageVisible() {
        let hidden;
        if (typeof document.hidden !== "undefined") {
            hidden = "hidden";
        } else if (typeof document.msHidden !== "undefined") {
            hidden = "msHidden";
        } else if (typeof document.webkitHidden !== "undefined") {
            hidden = "webkitHidden";
        } else {
            console.warn('Google Video Playback Optimizer: Visibility API not supported');
            return;
        }

        try {
            Object.defineProperty(document, hidden, {
                get: () => false,
                configurable: true
            });

            Object.defineProperty(document, 'visibilityState', {
                get: () => 'visible',
                configurable: true
            });

            console.log('Google Video Playback Optimizer: Page visibility override applied');
        } catch (error) {
            console.error('Google Video Playback Optimizer: Failed to override visibility properties', error);
        }
    }

    function checkAndActivateForVideo() {
        const videoElements = document.querySelectorAll('video');
        if (videoElements.length > 0) {
            keepPageVisible();
        }
    }

    function checkAndActivateVisibilityOverride() {
        const url = window.location.href;
        const fragment = window.location.hash;

        if (fragment.includes('vid:')) {
            keepPageVisible();
        } else {
            console.log('Google Video Playback Optimizer: Not a video page based on URL fragment.');
        }
    }

    setInterval(checkAndActivateForVideo, 2000);

    window.addEventListener('load', () => {
        checkAndActivateForVideo();
        checkAndActivateVisibilityOverride();
    });

    const originalPushState = history.pushState;
    const originalReplaceState = history.replaceState;

    history.pushState = function() {
        originalPushState.apply(this, arguments);
        checkAndActivateForVideo();
        checkAndActivateVisibilityOverride();
    };

    history.replaceState = function() {
        originalReplaceState.apply(this, arguments);
        checkAndActivateForVideo();
        checkAndActivateVisibilityOverride();
    };

    checkAndActivateForVideo();
    checkAndActivateVisibilityOverride();

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址