您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ignore topics
当前为
// ==UserScript== // @name Rllmuk Topic Ignore List (Invision 4) // @description Ignore topics // @namespace https://github.com/insin/greasemonkey/ // @version 5 // @match https://www.rllmukforum.com/index.php* // @grant GM_registerMenuCommand // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js // ==/UserScript== let ignoredTopics = localStorage.til_ignoredTopics ? JSON.parse(localStorage.til_ignoredTopics) : [] let ignoredTopicIds = ignoredTopics.map(topic => topic.id) let showIgnoredTopics = false function toggleIgnoreTopic(id, title, $topic) { if (!ignoredTopicIds.includes(id)) { ignoredTopicIds.unshift(id) ignoredTopics.unshift({id, title}) } else { let index = ignoredTopicIds.indexOf(id) ignoredTopicIds.splice(index, 1) ignoredTopics.splice(index, 1) } localStorage.til_ignoredTopics = JSON.stringify(ignoredTopics) toggleIgnoreClasses($topic) } function toggleIgnoreClasses($topic) { $topic.classList.toggle('til_ignored') if (showIgnoredTopics) { $topic.classList.toggle('til_show') } } function addStyle(css) { let $style = document.createElement('style') $style.appendChild(document.createTextNode(css)) document.querySelector('head').appendChild($style) } function UnreadContentPage() { const TOPIC_LINK_ID_RE = /index\.php\?\/topic\/(\d+)/ addStyle(` .til_ignoreControl { visibility: hidden; } .til_ignored { display: none; } .til_ignored.til_show { display: block; background-color: #fee; } .til_ignored.til_show::after { border-color: transparent #fee transparent transparent !important; } li.ipsStreamItem:hover .til_ignoreControl { visibility: visible; } `) /** * Hide a topic if it's in the ignored list, otherwise add ignore controls to it. */ function processTopic($topic) { let $topicLink = $topic.querySelector('a[href*="index.php?/topic/"][data-linktype="link"]') let id = TOPIC_LINK_ID_RE.exec($topicLink.href)[1] let title = $topicLink.innerText.trim() if (ignoredTopicIds.includes(id)) { toggleIgnoreClasses($topic) } let $topicStats = $topic.querySelector('ul.ipsStreamItem_stats') $topicStats.insertAdjacentHTML('beforeend', ` <li class="til_ignoreControl"> <a style="cursor: pointer"><i class="fa fa-trash"></i></a> </li> `) $topicStats.querySelector('i.fa-trash').addEventListener('click', () => { toggleIgnoreTopic(id, title, $topic) }) } /** * Process topics within a topic container and watch for a new topic container being added. * When you click "Load more activity", a new <div> is added to the end of the topic container. */ function processTopicContainer($el) { Array.from($el.querySelectorAll(':scope > li.ipsStreamItem'), processTopic) new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.addedNodes[0].tagName === 'DIV') { processTopicContainer(mutation.addedNodes[0]) } }) }).observe($el, {childList: true}) } processTopicContainer(document.querySelector('ol.ipsStream')) } function ForumPage() { addStyle(` .til_ignoreControl { display: table-cell; min-width: 24px; vertical-align: middle; visibility: hidden; } .til_ignored { display: none; } .til_ignored.til_show { display: block; background-color: #fee !important; } @media screen and (max-width:979px) { .til_ignoreControl { position: absolute; left: 12px; bottom: 16px; } } li.ipsDataItem:hover .til_ignoreControl { visibility: visible; } `) /** * Hide a topic if it's in the ignored list, otherwise add ignore controls to it. */ function processTopic($topic) { let id = $topic.dataset.rowid if (!id) return let $topicLink = $topic.querySelector('h4.ipsDataItem_title > a') let title = $topicLink.innerText.trim() if (ignoredTopicIds.includes(id)) { toggleIgnoreClasses($topic) } $topic.insertAdjacentHTML('beforeend', ` <div class="til_ignoreControl ipsType_light ipsType_blendLinks"> <a style="cursor: pointer"><i class="fa fa-trash"></i></a> <div> `) $topic.querySelector('i.fa-trash').addEventListener('click', () => { toggleIgnoreTopic(id, title, $topic) }) } // Initial list of topics Array.from(document.querySelectorAll('ol.cTopicList > li.ipsDataItem[data-rowid]'), processTopic) // Watch for topics being replaced when paging new MutationObserver(mutations => mutations.forEach(mutation => Array.from(mutation.addedNodes).filter(node => node.nodeType === Node.ELEMENT_NODE).map(processTopic) ) ).observe(document.querySelector('ol.cTopicList'), {childList: true}) } let page if (location.href.includes('index.php?/discover/unread')) { page = UnreadContentPage } else if (location.href.includes('index.php?/forum/')) { page = ForumPage } if (page) { page() GM_registerMenuCommand('Show Ignored Topics', () => { showIgnoredTopics = !showIgnoredTopics for (let $topic of document.querySelectorAll('.til_ignored')) { $topic.classList.toggle('til_show') } }) }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址