// ==UserScript== // @name Tiny Customize // @description 针对一些常用网站,例如 3DMGame、贴吧、卡饭、巴哈姆特、流亡编年史、Chiphell、淘宝等的反反广告检测、自动化、屏蔽网站功能等。 // @namespace https://greasyfork.org/zh-CN/scripts/19823-tiny-customize // @homepageURL https://greasyfork.org/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 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.6 // @grant none // @downloadURL 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 () { }; } }; 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);