// ==UserScript== // @name Tiny-Customize // @description 为常用网站添加功能定制。例如:3DMGame、贴吧、淘宝、京东、GitHub... // @homepageURL https://github.com/nonoroazoro/firefox/tree/master/scripts/tiny-customize // @namespace https://greasyfork.org/zh-CN/scripts/19823-tiny-customize // @author nonoroazoro // @match /^https?:\/\/(.+\.)?github\./ // @match http://bbs.3dmgame.com/* // @match http://bbs.kafan.cn/* // @match http://css-blocks.com/* // @match http://forum.gamer.com.tw/* // @match http://subhd.com/* // @match http://tieba.baidu.com/* // @match http://www.ruanyifeng.com/* // @match https://auth.alipay.com/* // @match https://forum.gamer.com.tw/* // @match https://kbs.sports.qq.com/* // @match https://login.taobao.com/* // @match https://login.xiami.com/* // @match https://passport.jd.com/* // @match https://poe.ninja/* // @match https://poedb.tw/* // @match https://sparticle999.github.io/* // @match https://sudos.help/* // @match https://wiki.d.163.com/* // @match https://www.chiphell.com/* // @version 1.4.2 // @grant none // @downloadURL none // ==/UserScript== const host = window.location.host; const href = window.location.href; /** * 获取立即执行的操作。 */ const getInstantActions = () => { const actions = []; if (host === "forum.gamer.com.tw") { // 巴哈姆特。 // 反反广告检测。 actions.push(() => { if (window.AntiAd) { window.AntiAd.check = _noop; window.AntiAd.block = _noop; window.AntiAd.verifyLink = () => false; } }); } else if (host === "www.ruanyifeng.com") { const elem = document.querySelector("#main-content"); if (elem) { const backup = elem.innerHTML; setTimeout(() => { elem.innerHTML = backup; if (elem.previousElementSibling) { elem.previousElementSibling.remove(); } }, 1001); } } else if ( host === "bbs.kafan.cn" || host === "bbs.3dmgame.com" || host === "www.chiphell.com" ) { // 卡饭、3DMGame、Chiphell 论坛(Discuz 驱动的论坛)。 // 屏蔽方向键翻页。 actions.push(() => { if (window.keyPageScroll) { window.keyPageScroll = _noop; } }); } else if (host === "poedb.tw") { // 流亡编年史。 actions.push(() => { const elem = document.querySelector(".itemBoxContent .lc") || document.querySelector(".TextDivinationCard .ItemType"); if (elem) { if (href.includes("/tw/") || href.includes("/us/")) { elem.style.cursor = "pointer"; elem.style.color = "var(--lightning-color)"; } elem.addEventListener("click", e => { if (href.includes("/tw/")) { window.open( `https://pathofexile.tw/trade/search/魔影墓場?q={"query":{"type":"${e.target.textContent}","filters":{"trade_filters":{"filters":{"price":{"min":2}}}}}}`, "_blank" ); } else if (href.includes("/us/")) { window.open( `https://www.pathofexile.com/trade/search/Necropolis?q={"query":{"type":"${e.target.textContent}","filters":{"trade_filters":{"filters":{"price":{"min":2}}}}}}`, "_blank" ); } }, true); } }); } else if (host === "subhd.com") { // Sub HD // 禁止弹窗。 actions.push(() => { window.open = _noop; }); } else if (host === "login.taobao.com") { // 淘宝。 // 默认显示密码登录(而非 QR 码登录)界面。 actions.push(() => { _disableQRLogin( ".login-switch, .login-tip, .iconfont.quick, .quick-form", ".static-form, .iconfont.static", `input[name="TPL_username"]` ); }); } else if (host === "auth.alipay.com") { // 支付宝。 // 默认显示密码登录(而非 QR 码登录)界面。 actions.push(() => { _disableQRLogin( "#J-qrcode", "#J-login", "#J-input-user" ); }); } else if (host === "passport.jd.com") { // 京东。 // 默认显示密码登录(而非 QR 码登录)界面。 actions.push(() => { _disableQRLogin( ".login-tab, .login-box > .mt.tab-h, .qrcode-login, #qrCoagent", ".login-box, #entry", `input[name="loginname"]` ); }); } else if (host === "login.xiami.com") { // 虾米。 // 默认显示密码登录(而非 QR 码登录)界面。 actions.push(() => { _disableQRLogin( ".login-switch, .login-qrcode, .qrcode-tips", ".login-xm", `input[name="account"]` ); }); } else if (/^(.+\.)?github\./.test(host)) { // GitHub。 // 禁用快捷键: "s","w"。 _disableKeydown("s w"); } else if (host === "css-blocks.com") { // css-blocks // 禁用快捷键: "s","w"。 _disableKeydown("s w 1 2"); } return actions; }; /** * 获取延迟执行的操作。 */ const getLazyActions = () => { const actions = []; if (host === "forum.gamer.com.tw") { // 巴哈姆特。 // 自动开启图片。 actions.push(() => { if (window.forumShowAllMedia) { window.forumShowAllMedia(); } }); } else if (host === "tieba.baidu.com") { // 贴吧。 // 删除广告贴。 actions.push(() => { let spans; const elements = document.querySelectorAll("#j_p_postlist > div"); elements.forEach((e) => { spans = e.querySelectorAll(".core_reply_tail span"); for (const s of spans) { if (s.innerText.trim() === "商业推广") { e.remove(); break; } } }); }); } else if (host === "kbs.sports.qq.com") { // 删除比赛剧透。 const elements = document.querySelectorAll(".video-item .title"); elements.forEach((e) => { e.textContent = e.textContent.slice(0, e.textContent.indexOf(" ")); }); } else if (host === "sparticle999.github.io") { // 自动重复点击 Gain。 const elements = document.querySelectorAll(".gainButton > .btn"); elements.forEach((e) => { const handler = e.onclick; e.onclick = () => { for (let i = 0; i < 10000; i++) { handler(); } }; }); } else if (host === "wiki.d.163.com") { // 底部总览框置顶。 const parent = document.getElementById("bodyContent"); const elements = document.querySelectorAll("#bodyContent > .Allbox"); parent.prepend(...elements); } else if (host === "sudos.help") { // 转换交易地址为 PoE TW。 document.addEventListener("click", (e) => { if (e.target.tagName === "A" && e.target.href && e.target.href.includes("www.pathofexile.com/trade/search")) { e.target.href = decodeURIComponent(e.target.href) .replace("www.pathofexile.com", "pathofexile.tw") .replace("Filled Coffin", "滿靈柩") .replace("Necropolis", "魔影墓場"); } }, true); } else if (host === "poe.ninja") { // 转换 Wiki 地址为 PoEDB。 document.addEventListener("click", (e) => { if ( e.target.tagName === "A" && e.target.className && e.target.className.includes("wikiLink") && e.target.href && e.target.href.includes("poewiki.net/wiki") ) { e.target.href = e.target.href.replace("poewiki.net/wiki", "poedb.tw/tw").replaceAll("%20", "_").replaceAll(" ", "_"); } }, true); } return actions; }; /** * 立即执行指定的操作。 */ const exec = (p_actions) => { p_actions.forEach(p_action => p_action()); }; exec(getInstantActions()); exec(getLazyActions()); function _noop() { } /** * 禁止键盘快捷键(单键)。 */ 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); } } /** * 默认显示密码登录(而非 QR 码登录)界面 */ function _disableQRLogin(p_hide, p_show, p_focus) { // 删除扫码登录。 let elements = document.querySelectorAll(p_hide); elements.forEach(e => e.remove()); // 始终显示密码登录。 elements = document.querySelectorAll(p_show); elements.forEach(e => e.setAttribute("style", "display: block !important; visibility: visible !important;")); // 自动聚焦用户名输入框。 if (p_focus) { const elem = document.querySelector(p_focus); if (elem) { setTimeout(() => elem.select(), 300); } } }