Greasy Fork is available in English.

Tiny Customize

为常用网站添加功能定制。例如:3DMGame、贴吧、淘宝、GitHub...

Fra og med 04.12.2016. Se den nyeste version.

// ==UserScript==
// @name        Tiny Customize
// @description 为常用网站添加功能定制。例如:3DMGame、贴吧、淘宝、GitHub...
// @namespace   https://greasyfork.org/zh-CN/scripts/19823-tiny-customize
// @homepageURL https://greasyfork.org/zh-CN/scripts/19823-tiny-customize
// @author      nonoroazoro
// @include     /^https?:\/\/(.+\.)?github\./
// @include     http://bbs.3dmgame.com/*
// @include     http://bbs.kafan.cn/*
// @include     http://forum.gamer.com.tw/*
// @include     http://poedb.tw/dps*
// @include     http://tieba.baidu.com/*
// @include     http://www.poelab.com/*
// @include     https://forum.gamer.com.tw/*
// @include     https://login.taobao.com/*
// @include     https://www.chiphell.com/*
// @version     1.1.9
// @grant       none
// ==/UserScript==

const host = window.location.host;
const href = window.location.href;
const pathname = window.location.pathname;

/**
 * 获取立即执行的操作。
 */
const getInstantActions = function ()
{
    const actions = [];

    if (host === "forum.gamer.com.tw")
    {
        // 巴哈姆特。

        // 反反广告检测。
        const action = function ()
        {
            if (window.AntiAd)
            {
                window.AntiAd.check = function () { };
                window.AntiAd.block = function () { };
                window.AntiAd.verifyLink = function () { return false; };
            }
        };
        actions.push(action);
    }
    else if (
        host === "bbs.kafan.cn" ||
        host === "bbs.3dmgame.com" ||
        host === "www.chiphell.com"
    )
    {
        // 卡饭、3DMGame、Chiphell 论坛(Discuz 驱动的论坛)。

        // 屏蔽方向键翻页。
        const action = function ()
        {
            if (window.keyPageScroll)
            {
                window.keyPageScroll = function () { };
            }
        };
        actions.push(action);
    }
    else if (/^https?\:\/\/poedb\.tw(\/?.*)\/dps/.test(href))
    {
        // 流亡编年史。

        // 屏蔽默认自动全选物品信息、自动查询物品信息。
        const action = function ()
        {
            const elem = document.querySelector(`#iteminfo`);
            elem.addEventListener("click", (e) =>
            {
                e.stopPropagation();
            }, true);

            elem.addEventListener("keydown", (e) =>
            {
                if (e.key === "Enter")
                {
                    document.querySelector(`form[action^="dps"]`).submit();
                    e.preventDefault();
                }
            }, true);

            elem.addEventListener("keyup", (e) =>
            {
                if (e.ctrlKey && (e.key === "v" || e.key === "V"))
                {
                    document.querySelector(`form[action^="dps"]`).submit();
                }
            });
        };
        actions.push(action);
    }
    else if (host === "login.taobao.com")
    {
        // 淘宝。

        // 默认显示密码登录(而非 QR 码登录)界面。
        let action = function ()
        {
            // 始终显示密码登录。
            let elems = document.querySelectorAll(`.static-form, .iconfont.static`);
            for (let elem of elems)
            {
                elem.setAttribute("style", "display: block !important");
            }

            // 删除扫码登录。
            elems = document.querySelectorAll(`.login-switch, .login-tip, .iconfont.quick, .quick-form`);
            for (let elem of elems)
            {
                elem.remove();
            }
        };
        actions.push(action);
    }
    else if (/^(.+\.)?github\./.test(host))
    {
        // GitHub。

        // 禁用快捷键: "s","w"。
        _disableKeydown("s w");
    }

    return actions;
};

/**
 * 获取延迟执行的操作。
 */
const getLazyActions = function ()
{
    const actions = [];

    if (host === "forum.gamer.com.tw")
    {
        // 巴哈姆特。

        // 自动开启图片。
        let action = function ()
        {
            if (window.forumShowAllMedia)
            {
                window.forumShowAllMedia();
            }
        };
        actions.push(action);
    }
    else if (host === "www.poelab.com")
    {
        // POE Lab

        let action = function ()
        {
            const selectors = {
                "/": [
                    "#comp-iqi4593u",
                    "#comp-iqi4593h",
                    "#comp-iqi45938",
                    "#comp-iqi4593d"
                ],
                "/normal": ["#comp-inp50zrf"],
                "/cruel": ["#comp-inp5lj3v"],
                "/merciless": ["#comp-inpbrgjs"],
                "/uber": ["#comp-ip1tde81"],
            }[pathname];

            if (selectors)
            {
                let elem;
                selectors.forEach(function (selector)
                {
                    elem = document.querySelector(selector);
                    if (elem)
                    {
                        document.body.appendChild(elem);
                        elem.style.position = "unset";
                        elem.style.margin = "10px auto";
                    }
                });
                document.getElementById("SITE_CONTAINER").remove();
                document.body.style.backgroundColor = "#232323";
            }
        };
        actions.push(action);
    }
    else if (host === "tieba.baidu.com")
    {
        // 贴吧。

        // 个人中心新标签打开。
        let action = function ()
        {
            const timer = window.setInterval(() =>
            {
                const elem = document.querySelector(`a.u_menu_wrap[title^="点击到个人中心"`);
                if (elem)
                {
                    elem.target = "_blank";
                    window.clearInterval(timer);
                }
            }, 100);
        };
        actions.push(action);

        // 删除广告贴。
        action = function ()
        {
            let spans;
            const elems = document.querySelectorAll(`#j_p_postlist > div`);
            for (let elem of elems)
            {
                spans = elem.querySelectorAll(`.core_reply_tail span`);
                for (let s of spans)
                {
                    if (s.innerText.trim() === "商业推广")
                    {
                        elem.remove();
                        break;
                    }
                }
            }
        };
        actions.push(action);
    }

    return actions;
};

/**
 * 立即执行指定的操作。
 */
const exec = function (p_actions)
{
    if (p_actions)
    {
        p_actions.forEach(function (p_action)
        {
            p_action();
        });
    }
};

// 1. 立即执行。
exec(getInstantActions());

// 2. 延迟执行。
window.addEventListener("load", function ()
{
    exec(getLazyActions());
}, true);

/**
 * 禁止键盘快捷键(单键)。
 */
function _disableKeydown(p_keys)
{
    if (typeof p_keys === "string")
    {
        const keys = p_keys.split(/\W+/);
        document.addEventListener("keydown", (e) =>
        {
            if (keys.indexOf(e.key.toLowerCase()) !== -1)
            {
                e.stopPropagation();
            }
        }, true);
    }
}