您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes all the ads and increases the browsing experience
// ==UserScript== // @name Sankaku.app Ultimate // @description Removes all the ads and increases the browsing experience // @namespace Violentmonkey Scripts // @author Dyoxide // @version 0.1.0 // @match https://sankaku.app/* // @license GPL-3.0 // @grant none // ==/UserScript== const appDiv = document.querySelector("div#app"); let path = ""; let srch = ""; function contLoading(target, chCount) { return new Promise(resolve => { if(target?.childElementCount >= chCount) return resolve(); new MutationObserver((rec, o) => { if(target.childElementCount < chCount) return; o.disconnect(); resolve(); }).observe(target, {childList: true}); }); } let scrollPos = 0; let scrollTick = false; function jumpingScroll(e) { const scrollEl = e.target; if(!scrollTick) { scrollTick = true; window.requestAnimationFrame(() => { if(scrollEl.scrollTop < scrollPos) scrollEl.scrollTo({ top: 0, behavior: 'smooth' }); else if(scrollEl.scrollTop > scrollPos) scrollEl.scrollTo({ top: scrollEl.scrollHeight, behavior: 'smooth' }); scrollPos = scrollEl.scrollTop; scrollTick = false; }); } } new MutationObserver(async function (rec, o) { if(window.location.pathname === path && window.location.search === srch) return; path = window.location.pathname; srch = window.location.search; if(path === "/") { await contLoading(appDiv, 2); appDiv.children[1].style.overflow = "hidden"; let target = appDiv.children[1].firstElementChild; await contLoading(target, 3); target.children[1].style.display = "none"; target = target.lastElementChild; await contLoading(target, 3); target.firstElementChild.style.display = "none"; } let jumpTarget; if( path.includes("post/show") ) { jumpTarget = appDiv; await contLoading(jumpTarget, 2); jumpTarget = appDiv.children[1].children[0]; await contLoading(jumpTarget, 1); jumpTarget = jumpTarget.firstElementChild; await contLoading(jumpTarget, 3); jumpTarget = jumpTarget.children[2]; jumpTarget.addEventListener("scroll", jumpingScroll); } else jumpTarget?.removeEventListener("scroll", jumpingScroll); }).observe(document.body, {childList: true, subtree: true, attributes: true});