Tiny Customize

针对一些常用网站,例如 3DMGame、贴吧、卡饭、巴哈姆特、流亡编年史、Chiphell、淘宝等的反反广告检测、自动化、屏蔽网站功能等。

当前为 2016-11-22 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Tiny Customize
// @description 针对一些常用网站,例如 3DMGame、贴吧、卡饭、巴哈姆特、流亡编年史、Chiphell、淘宝等的反反广告检测、自动化、屏蔽网站功能等。
// @namespace   https://greatest.deepsurf.us/zh-CN/scripts/19823-tiny-customize
// @homepageURL https://greatest.deepsurf.us/zh-CN/scripts/19823-tiny-customize
// @author      nonoroazoro
// @include     http://bbs.3dmgame.com/*
// @include     http://bbs.kafan.cn/*
// @include     http://forum.gamer.com.tw/*
// @include     https://forum.gamer.com.tw/*
// @include     http://poedb.tw/dps*
// @include     http://tieba.baidu.com/*
// @include     http://www.poelab.com/*
// @include     https://login.taobao.com/*
// @include     https://www.chiphell.com/*
// @version     1.1.8
// @grant       none
// ==/UserScript==

if (typeof unsafeWindow == "undefined")
{
    unsafeWindow = window;
}

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

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

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

        // 反反广告检测。
        const action = function ()
        {
            if (unsafeWindow.AntiAd)
            {
                unsafeWindow.AntiAd.check = function () { };
                unsafeWindow.AntiAd.block = function () { };
                unsafeWindow.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 (unsafeWindow.keyPageScroll)
            {
                unsafeWindow.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);
    }

    return actions;
};

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

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

        // 自动开启图片。
        let action = function ()
        {
            if (unsafeWindow.forumShowAllMedia)
            {
                unsafeWindow.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 = unsafeWindow.setInterval(() =>
            {
                const elem = document.querySelector(`a.u_menu_wrap[title^="点击到个人中心"`);
                if (elem)
                {
                    elem.target = "_blank";
                    unsafeWindow.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. 延迟执行。
unsafeWindow.addEventListener("load", function ()
{
    exec(getLazyActions());
}, true);