带鱼屏助手

有些网站对超宽屏支持不好,这个插件可以强制将网页宽度设置成1080居中显示,可以勉强用一下。

// ==UserScript==
// @name         带鱼屏助手
// @namespace    http://trycatch.xyz/dyp
// @version      0.1
// @description  有些网站对超宽屏支持不好,这个插件可以强制将网页宽度设置成1080居中显示,可以勉强用一下。
// @author       Yang
// @include      *
// @grant        GM_log
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// ==/UserScript==

(function () {
    'use strict';

    const DB_KEY = "HOST_LIST";
    let host = window.location.hostname;
    let do_cmd_id = GM_registerMenuCommand("适配", on_do);
    let undo_cmd_id = GM_registerMenuCommand("取消适配", on_undo);
    let do_cmd_show = true;
    let undo_cmd_show = true;

    function show_do_cmd() {
        if(do_cmd_show == false) {
            do_cmd_id = GM_registerMenuCommand("适配", on_do);
            do_cmd_show = true;
        }
        
    }

    function show_undo_cmd() {
        if(undo_cmd_show == false) {
            undo_cmd_id = GM_registerMenuCommand("取消适配", on_undo);
            undo_cmd_show = true;
        }
    }

    function hide_do_cmd() {
        if(do_cmd_show == true) {
            GM_unregisterMenuCommand(do_cmd_id);
            do_cmd_show = false;
        }
    }

    function hide_undo_cmd() {
        if(undo_cmd_show == true) {
            GM_unregisterMenuCommand(undo_cmd_id);
            undo_cmd_show = false;
        }
    }

    function is_host_in_db(host) {
        let host_list = GM_getValue(DB_KEY, []);
        if (host_list.indexOf(host) == -1) {
            return false;
        } else {
            return true;
        }
    }

    function add_host(host) {
        if (is_host_in_db(host)) {
            return;
        }
        let host_list = GM_getValue(DB_KEY, []);
        host_list.push(host)
        GM_setValue(DB_KEY, host_list);
    }

    function remove_host(host) {
        if (is_host_in_db(host)) {
            let host_list = GM_getValue(DB_KEY, []);
            let new_list = host_list.filter(item => item != host)
            GM_setValue(DB_KEY, new_list);
        }
    }

    function on_do() {
        add_host(host);
        document.body.style.left = (document.body.clientWidth - 1080) / 2 + "px";
        document.body.style.width = "1080px";
        document.body.style.position = "relative";
        hide_do_cmd();
        show_undo_cmd();
    };

    function on_undo() {
        remove_host(host);
        hide_undo_cmd();
        show_do_cmd();
        window.location.reload();
    };

    if (is_host_in_db(host)) {
        hide_do_cmd();
        show_undo_cmd();
        on_do();
    } else {
        hide_undo_cmd();
        show_do_cmd();
    }
})();