您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Really ignore ignored users
当前为
// ==UserScript== // @name Rllmukzen Threadshitter // @description Really ignore ignored users // @namespace https://github.com/insin/greasemonkey/ // @version 5 // @match https://www.rllmukforum.com/index.php* // ==/UserScript== function addStyle(css) { let $style = document.createElement('style') $style.appendChild(document.createTextNode(css)) document.querySelector('head').appendChild($style) } function TopicPage() { let ignoredUserIds = JSON.parse(localStorage.ignoredUserIds || '[]') // Hide "You've chosen to ignore content by <ignored user>" addStyle(` .ipsComment_ignored { display: none; } `) // Hide posts containing elements which have an ignored user id as a specified // data attribute. function hidePostsByDataAttribute(elements, dataAttribute) { elements.forEach(el => { if (!ignoredUserIds.includes(el.dataset[dataAttribute])) return let post = el.closest('article.ipsComment') if (post.style.display == 'none') return post.style.display = 'none' }) } // Hide posts which quote ignored users function processQuotes(context) { hidePostsByDataAttribute( context.querySelectorAll('[data-ipsquote-userid]'), 'ipsquoteUserid' ) } // Hide posts which @-mention ignored users function processMentions(context) { hidePostsByDataAttribute( context.querySelectorAll('[data-mentionid]'), 'mentionid' ) } // Hide the unread comment separator if all subseqent posts are hidden function updateUnreadCommentSeparator() { let separator = document.querySelector('hr.ipsCommentUnreadSeperator') if (!separator) return let hasVisiblePost = false let sibling = separator.nextElementSibling while (sibling) { if (sibling.matches('article.ipsComment') && !sibling.classList.contains('ipsHide') && sibling.style.display != 'none') { hasVisiblePost = true break } sibling = sibling.nextElementSibling } separator.style.display = hasVisiblePost ? '' : 'none' } // Process all posts on the current page function processPosts(context = document) { processQuotes(context) processMentions(context) } // Process initial posts processPosts() updateUnreadCommentSeparator() // Watch for posts being replaced when paging new MutationObserver(mutations => mutations.forEach(mutation => { if (mutation.oldValue == 'true') { processPosts() updateUnreadCommentSeparator() } }) ).observe(document.querySelector('div.cTopic'), { attributes: true, attributeFilter: ['animating'], attributeOldValue: true, }) // Watch for new posts being loaded into the current page new MutationObserver(mutations => { mutations.forEach(mutation => mutation.addedNodes.forEach(processPosts) ) updateUnreadCommentSeparator() }).observe(document.querySelector('#elPostFeed > form'), { childList: true, }) } function IgnoredUsersPage() { // Sync ignored user ids localStorage.ignoredUserIds = JSON.stringify( Array.from(document.querySelectorAll('[data-ignoreuserid]')).map(el => el.dataset.ignoreuserid ) ) } let page if (location.href.includes('index.php?/topic/')) { page = TopicPage } else if (location.href.includes('index.php?/ignore/')) { page = IgnoredUsersPage } if (page) { page() }