您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes the chain watch a whole lot bigger.
// ==UserScript== // @name Chain Watch // @namespace LordBusiness.CW // @version 1.9 // @description Makes the chain watch a whole lot bigger. // @author LordBusiness [2052465] // @match https://www.torn.com/* // @exclude https://www.torn.com/loader.php?sid=attack* // @grant GM_addStyle // ==/UserScript== GM_addStyle(` .lbschainoverlay { opacity: 0.8; position: fixed; height: 100px; width: 200px; top: 10px; right: 10px; left: calc(100% - 210px); border-radius: 10px; background-color: white; z-index: 6666; display: flex; justify-content: center; align-items: center; font-size: 3rem; color: #2f2f2f; transition: all 1s; pointer-events: none; } .lbsvbig { height: 100%; width: 100%; top: 0; right: 0; bottom: 0; left: 0; font-size: 7rem; } .lbschainlabel { display: none; } .lbsvbig .lbschainlabel { display: initial !important; } `); document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", `<div class="lbschainoverlay"><span class="lbschainlabel">Chain: </span><span class="lbschaintime"></span></div>`); const chainOverlay = document.querySelector(".lbschainoverlay"); var popupTimer; const displayOverlay = () => { chainOverlay.classList.add("lbsvbig"); } const barChainTime = "#barChain [class^=bar-stats] [class^=bar-timeleft]"; const Chainregex = /(\d{2}):\d{2}/igm; const observerChainTime = new MutationObserver((mutations) => { let CTime = document.querySelector(barChainTime).innerText; chainOverlay.querySelector(".lbschaintime").innerHTML = CTime; let ChainTimeregAr = Chainregex.exec(CTime); if(ChainTimeregAr !== null && parseInt(ChainTimeregAr[1]) <= 2) { chainOverlay.classList.add("t-red"); } else { chainOverlay.classList.remove("t-red"); } }) const observeObserverCT = () => { observerChainTime.observe(document.querySelector(barChainTime).childNodes[0], { characterData: true }) } const observerSidebar = new MutationObserver((mutations) => { for (const mutation of mutations) { if (document.querySelector(barChainTime) !== null) { console.log("This is also working!!"); observeObserverCT(); observerSidebar.disconnect(); } } }) const notInactive = () => { clearTimeout(popupTimer); chainOverlay.classList.remove("lbsvbig"); popupTimer = setTimeout(displayOverlay, 20000); } const pageVisibility = () => { var hidden = "hidden", hid; if (hidden in document) { document.addEventListener("visibilitychange", onchange); } else if ((hidden = "mozHidden") in document) { document.addEventListener("mozvisibilitychange", onchange); } else if ((hidden = "webkitHidden") in document) { document.addEventListener("webkitvisibilitychange", onchange); } else if ((hidden = "msHidden") in document) { document.addEventListener("msvisibilitychange", onchange); } else if ('onfocusin' in document) { document.onfocusin = document.onfocusout = onchange; } else { window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange; } function onchange (evt) { var v = 'visible', h = 'hidden', evtMap = { focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h }; evt = evt || window.event; if (evt.type in evtMap) { hid = evtMap[evt.type]; } else { hid = this[hidden] ? "hidden" : "visible"; } if(hid != "visible") { clearTimeout(popupTimer) } } }; document.addEventListener('click', notInactive); document.addEventListener('keypress', notInactive); document.addEventListener('mousemove', notInactive); if (document.querySelector(barChainTime) === null) { observerSidebar.observe(document.getElementById('sidebarroot'), { subtree: true, childList: true }) } else { observeObserverCT(); } pageVisibility();