您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Allow you to hide NSFW topics or mark them with a red prefix, you can specify tags to filter in order to take new words in account
// ==UserScript== // @name FAForumSFWversion // @namespace http://tampermonkey.net/ // @version 1.2 // @description Allow you to hide NSFW topics or mark them with a red prefix, you can specify tags to filter in order to take new words in account // @author MissNook // @match http://forums.furaffinity.net/* // @match https://forums.furaffinity.net/* // @grant none // ==/UserScript== (function() { 'use strict'; var tagsToCheck = localStorage.tagsToCheck ? localStorage.tagsToCheck.split(",") : ["nsfw", "nswf", "not sfw", "fetish", "diaper", "inflation", "vore", "bondage"]; var content = document.getElementById("top"); function addNSFWPrefix(){ var threads = content.getElementsByClassName("structItem--thread"); var prefixNSFW = document.createElement("a"); prefixNSFW.className = "prefixLink prefixForNSFW label label--red"; prefixNSFW.innerHTML = "<span class='prefix prefixRed'>NSFW</span>" prefixNSFW.style.marginRight = ".35em"; var len = threads.length, i = 0; for(; i<len;i++){ var threadTitles = threads[i].getElementsByClassName("structItem-title"); var threadTitleContents = threadTitles[0].getElementsByTagName("a"); var idTitle = threadTitleContents.length > 1 ? 1 : 0; var currThreadTitle = threadTitleContents[idTitle]; if(matchInArray(currThreadTitle.innerText, tagsToCheck)){ threads[i].className += " NSFWtagged"; currThreadTitle.parentNode.insertBefore(prefixNSFW.cloneNode(true), currThreadTitle); } } } addNSFWPrefix(); function addTagInput(){ var nav = content.getElementsByClassName("block-outer")[0]; var divTag = document.createElement("div"); divTag.className = "primaryControls"; divTag.style = "text-align:right;"; var validateButtonClass = "button--primary button"; var hideButtonClass = "button button--icon button--icon--preview"; var inputClass = "input"; divTag.innerHTML = "<span class='p-description'><b>Tags to filter for NSFW : </b></span><input type='search' id='tagsNSFWInput' class='"+ inputClass +"' title='Enter your tags to filter as NSFW'><button class='" + validateButtonClass + "' id='btnValidateInputNSFW'>Validate tags change</button><button class='"+hideButtonClass+"' id='btnHideNSFW'>Hide NSFW</button>"; var input = divTag.getElementsByClassName(inputClass)[0]; input.value = tagsToCheck.join(";"); input.style = "width:20em;"; input.style.display = "inline"; input.addEventListener("keyup", function(event) { event.preventDefault(); //press enter if (event.keyCode === 13) { manageNewTags(); } }); var btnValidInput = divTag.childNodes[2]; btnValidInput.onclick = manageNewTags; btnValidInput.style.cursor = "pointer"; btnValidInput.style.marginLeft = "10px"; var hideBtn = divTag.lastChild; hideBtn.style.cursor = "pointer"; hideBtn.style.marginLeft = "10px"; hideBtn.onclick = showHideNSFW; nav.appendChild(divTag); } addTagInput(); function showHideNSFW(){ var nsfwTaggedContents = content.getElementsByClassName("NSFWtagged"); var toggleBtn = document.getElementById("btnHideNSFW"); var hide = toggleBtn.innerText == "Hide NSFW"; toggleBtn.innerText = hide ? "Show NSFW" : "Hide NSFW"; var len = nsfwTaggedContents.length, i = 0; for(; i<len;i++){ nsfwTaggedContents[i].style.display = hide ? "none": "table"; } } function fillTagsWithUserTag(){ var inputNSFW = document.getElementById("tagsNSFWInput"); var tempTabTags = inputNSFW.value.split(";"); var len = tempTabTags.length, i = 0; for(; i<len;i++){ if(tempTabTags[i] == ""){ tempTabTags.splice(i,1); } } tagsToCheck = tempTabTags; localStorage.tagsToCheck = tagsToCheck; } function reinitThreads(){ var threads = content.getElementsByClassName("NSFWtagged"); var len = threads.length, i = 0; for(; i<len;i++){ var thread = threads[0]; var nsfwPrefix = thread.getElementsByClassName("prefixForNSFW")[0]; nsfwPrefix.parentNode.removeChild(nsfwPrefix); thread.className = thread.className.replace(" NSFWtagged",""); } } function manageNewTags(){ fillTagsWithUserTag(); reinitThreads(); addNSFWPrefix(); } function matchInArray(string, expressions) { var len = expressions.length, i = 0; for (; i < len; i++) { if (string.match(new RegExp(expressions[i],'gi'))) { return true; } } return false; }; })();