Greasy Fork

哔哩哔哩、腾讯视频、优酷视频、芒果TV自动网页全屏(个人自用)

支持哔哩哔哩、腾讯视频、优酷视频、爱奇艺、芒果TV视频播放页自动网页全屏

目前为 2024-12-07 提交的版本。查看 最新版本

// ==UserScript==
// @author       Feny
// @license      MIT
// @version      0.9.1
// @name         哔哩哔哩、腾讯视频、优酷视频、芒果TV自动网页全屏(个人自用)
// @namespace    http://tampermonkey.net/
// @description  支持哔哩哔哩、腾讯视频、优酷视频、爱奇艺、芒果TV视频播放页自动网页全屏
// @include      http*://www.mgtv.com/b/*
// @include      http*://www.iqiyi.com/v_*
// @include      http*://v.qq.com/x/cover/*
// @include      http*://v.youku.com/v_show/*
// @include      http*://www.bilibili.com/video/*
// @include      http*://www.bilibili.com/bangumi/play/*
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAqdJREFUWEftl91LFFEYxp/3jB9ESZjtSl51F1RUSgRCF/kHlF1IhiFhF65dqEQkBUErdJMStBukGwQre2NZUiCRqUiURkW65mIfqGUFsW6Ii0jY7p4Tc3Rqd5zaGVldAudynve8z28e3jMzh5Dmi1R/V0vQyRRWxgWG6x22SrcnOAhQcQIbwVtXba8y1EANSpS1xzJin5c/Dz+jRDPvGWoErwRw35zuh8ChpcXXFjbwi9k/WADA9viGgovGnxtFs6EmcApMvCdBA3oIIirl4N8NNQngmRYJiwTOE7EHHLERAmXFawQ6AdCQkRbjsZIMUvIFoV0HMSsEDjCgSK8tJqAHAEDAMWLKLOexx8tiVVDEhLLVQAtzRPcwKOUANSWCw1/rsBe6PcFz8dpfAdTFgtF+EmIvBG7pID7mZNl2zkVCFQbahzqHfYerddpNhFpdsnfqauzl8ZoEuO4JXdIKOefynnZlimxXhBbqjTZL/el8pzrAVjTGmKh12Bq1ddJs974abQDXfFMuAhQ6EodwDTHWAf6/BAoK8nD0cDEKtuVhyD+OzvvLXnyWJshyApedJ1F65M9n4tlAAF5fL168fGfJWCu2DDA61GpodLvjCdp8vfjyNWQJJGUAquvMzBzafD0yEc65KZCUAmiOo4FPEqS753VSiFUB0FxbPF244en6J8SqAoTD8zhYcjZ9AP6RCVRWNacHYPD5GJqudmBi8tvaAkxNBeUuuNv5NOkAqgUpm4FIJCrfA+r0z4bnTZmvCKCv+wrsts0JBg8fvZLGY28NfoqToFhOoOJ4CS40lMu2I28mpXFP37DpJ9YXWgZQG+Tm5mBL7qakA2aGakUAZhqbrVkH0BLoB34fzcyml5K6pd/yaicRlQlgV0q6mmwitMOpyfpVKfsFya4w73cz9xQAAAAASUVORK5CYII=
// ==/UserScript==

(function () {
    "use strict";

    // 重写pushState方法
    const orig = history.pushState;
    history.pushState = function () {
        orig.apply(this, arguments);
        window.dispatchEvent(new Event('pushstate'));
    };

    // 重写replaceState方法
    const original = history.replaceState;
    history.replaceState = function () {
        original.apply(this, arguments);
        window.dispatchEvent(new Event('replaceState'));
    };

    const webfullscreen = {
        init() {
            const interval = setInterval(() => {
                const element = this.getElement()
                if (element) this.fullScreen(element) && clearInterval(interval);
            }, 300);
        },
        getElement() {
            return document.querySelector('div[aria-label="网页全屏"]')
                || document.querySelector(".bpx-player-ctrl-web")
                || document.querySelector(".webfullscreenBtn i")
                || document.querySelector("#webfullscreen-icon")
                || document.querySelector(".iqp-btn-webscreen")
        },
        fullScreen(elem) {
            const offsetWidth = document.querySelector("video").offsetWidth
            if (window.innerWidth === offsetWidth) return true
            elem.click ? elem.click() : elem.dispatchEvent(new Event("click"));
            return true
        },
    };

    webfullscreen.init();
    window.addEventListener('pushstate', () => webfullscreen.init());
    window.addEventListener('replaceState', () => webfullscreen.init());
})();