您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Скрипт скрывает ответы которые вы читали с помощью наведения курсора. Скрытие работает когда вы прочитали все ответы на ответ.
// ==UserScript== // @name Скрывать прочитанное в preview // @namespace http://tampermonkey.net/ // @version 1.1 // @description Скрипт скрывает ответы которые вы читали с помощью наведения курсора. Скрытие работает когда вы прочитали все ответы на ответ. // @author dimden.dev // @match https://2ch.hk/*/res/* // @match https://2ch.life/*/res/* // @icon https://www.google.com/s2/favicons?sz=64&domain=2ch.hk // @grant none // @run-at document-end // @license MIT // ==/UserScript== console.log("Running HideReadPreviews"); let getTextFromHtml = (t) => t .split('>') .map((i) => i.split('<')[0]) .filter((i) => !i.includes('=') && i.trim()) .join(''); let pendingPosts = []; let readPosts = []; setInterval(() => { let previews = Array.from(document.getElementsByClassName('post_preview')).map(i => POSTS.get(+i.dataset.num)).filter(i => !!i); for(let i in previews) { let p = previews[i]; if(p.counter === undefined) { p.counter = 0; pendingPosts.push(p); } else p.counter++; if(!p.clearText) p.clearText = getTextFromHtml(p.comment); if(!p.isRead) { if(p.clearText.length < 100 || (p.clearText.length <= 200 && p.counter === 1) || (p.clearText.length <= 300 && p.counter === 2)) { p.isRead = true; readPosts.push(p); let index = pendingPosts.findIndex(pp => pp.num === p.num); pendingPosts.splice(index, 1); } else if(p.counter === 3) { p.isRead = true; readPosts.push(p); let index = pendingPosts.findIndex(pp => pp.num === p.num); pendingPosts.splice(index, 1); } } } for(let i in readPosts) { let p = readPosts[i]; let allRepliesRead = p.refmap.reduce((acc, curr) => acc && readPosts.find(j => j.num === curr), true); if(allRepliesRead) { p.el.classList.add('post_type_hidden'); let index = readPosts.findIndex(pp => pp.num === p.num); readPosts.splice(index, 1); } } }, 1000);