您需要先安装一个扩展,例如 篡改猴、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()
- }