您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically hides posts on DZ.com
当前为
// ==UserScript== // @name DZ.com post blocker // @namespace greasyfork.org // @description Automatically hides posts on DZ.com // @match http://www.dropzone.com/cgi-bin/forum/gforum.cgi?*post=* // @require http://code.jquery.com/jquery-latest.min.js // @require http://code.jquery.com/ui/1.11.2/jquery-ui.min.js // @grant none // @version 0.8 // ==/UserScript== var sThreadTitle; currentVisibleThreads = []; Posts = []; nShownCount = 0; $(document).ready(function() { // CheckCloudSync(); CreateStyles(); CreateFilter(); // CreateControlPanel(); CreateEventHandlers(); // SetOptions(); UpdateHideLinks(); UpdatePosts(); }); function CreateStyles() { $("body").append("<link rel='stylesheet' href='//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css'>"); if (localStorage.getItem("HideLinkStyle") != "HideShow") $("body").append(GetRemoveStyle()); } function CreateFilter() { $('.dropdown-nav-top:first').parent().append("<select id='ThreadFilter'><option value='Unignored' selected='true'>Block Posts</option><option value='All'>Show All Posts</option></select> "); } function GetRemoveStyle() { var HideThreadStyle = 'margin-left: -11px; margin-top: -38px;'; var HideThreadStyle2 = 'padding-left:10px; margin-left:-45px; margin-top:-2px;'; RemoveStyle = '<style id="RemoveStyle">'; RemoveStyle += '.threadbit > td > a[id^="RemoveThread"]:before { content: "x"; font-size: 15pt;}'; RemoveStyle += '.threadbit > td > a[id^="RemoveThread"] { position: absolute !important; ' + (navigator.userAgent.search("Chrome") >= 0 ? HideThreadStyle : HideThreadStyle2) + ' font-size: 0pt; visibility: hidden !important;}'; RemoveStyle += '.threadbit > td:hover > a[id^="RemoveThread"] { visibility: visible !important; } '; RemoveStyle += '.threadbit > td > a[id^="RemoveUser"]:before { content: "x"; font-size: 15pt;} '; RemoveStyle += '.threadbit > td > a[id^="RemoveUser"] { position: absolute !important; padding-left:10px; margin-left:-25px; margin-top:-2px; font-size: 0pt; visibility: hidden !important;} '; RemoveStyle += '.threadbit > td:hover > a[id^="RemoveUser"] { visibility: visible !important; } '; RemoveStyle += '</style>'; return RemoveStyle; } function UpdateHideLinks() { $("a[name][name!='last']").each(function( index,value ) { AddHideLink($(this).parent()[0])}); } function CreateEventHandlers() { $('#ThreadFilter').change(function() { var sThreadFilterVal = $('#ThreadFilter').val(); if (sThreadFilterVal == 'All') { Posts.forEach( function(s) { s.Hide = false; } ) } UpdateHideLinks(); UpdatePosts(); }); // $('#OpenFilterCP').click(OpenFilterCP); // $('#AddIgnoredUserButton').click(AddToIgnoredUserList); // $('input[name="HideLinkStyle"]').change(function () { localStorage.setItem('HideLinkStyle', this.value); RemoveHideLinks(); SaveLastUpdate();}); } function RemoveHideLinks() { $("a[id*='RemoveThread']").remove(); $("a[id*='RemoveUser']").remove(); $("#RemoveStyle").remove(); if (localStorage.getItem("HideLinkStyle") != "HideShow") $("body").append(GetRemoveStyle()); } function AddHideLink(currentPost) { IgnoredUserList = GetListFromLocalStorage('IgnoredUserList'); nPost = $(currentPost).find('a[name][name!="last"]')[0]; nPostID = $(nPost).attr('name'); MemberLink = $(currentPost).find('a[href*="?username="]')[0]; if (MemberLink) { nUserID = MemberLink.href.replace("http://www.dropzone.com/cgi-bin/forum/gforum.cgi?username=","").replace(";",""); var bUserIgnored = (containsObject(nUserID,IgnoredUserList) == -1) ? false : true; var UserIgnoreText = bUserIgnored ? "Restore User" : "RU"; var ThreadIgnoreText = bUserIgnored ? "Show" : "Hide"; if ($(currentPost).has("a[id*='HidePost" + nPostID + "']").length === 0) { var RemoveUserLinks = $('a[id*="RemoveUser' + nUserID + '"]').toArray(); sUserIDReference = (RemoveUserLinks.length > 0) ? nUserID + RemoveUserLinks.length : nUserID; if (localStorage.getItem("HideLinkStyle") == "HideShow") $(MemberLink).after("<br /><a id='RemoveUser" + sUserIDReference + "'>" + UserIgnoreText + " User</a>"); else $(MemberLink).before("<a id='RemoveUser" + sUserIDReference + "'>" + UserIgnoreText + " User</a>"); $('#RemoveUser' + sUserIDReference).click({param1: nUserID, param2: 'IgnoredUserList', param3: UpdatePosts, param4: currentPost}, IgnoreItem); $(nPost).before("<a id='HidePost" + nPostID + "'>" + ThreadIgnoreText + "</a>"); $('#HidePost' + nPostID).click({param1: nPostID, param2: 'IgnoreList', param3: UpdatePosts, param4: currentPost}, IgnoreItem); addItem = {}; addItem.ID = nPostID; addItem.UserID = nUserID; addItem.Hide = bUserIgnored; addItem.Post = currentPost; Posts.push(addItem); } var postIndex = containsObject(nPostID,Posts); var bThreadIgnored = postIndex >= 0 ? Posts[postIndex].Hide : false; ThreadIgnoreText = bThreadIgnored ? "Show post from " + nUserID : "Hide"; $('#HidePost' + nPostID).text(ThreadIgnoreText); $('a[id*="RemoveUser' + nUserID +'"').text(UserIgnoreText); } } function UpdatePosts() { nShownCount = 0; $('#ThreadFilter').blur(); localStorage.setItem('ThreadFilter',document.getElementById("ThreadFilter").value); IgnoredUserList = GetListFromLocalStorage('IgnoredUserList'); currentVisibleThreads = []; var sThreadFilterVal = $('#ThreadFilter').val(); $("a[name][name!='last']").each(function(index) { nPostID = $(this).attr('name'); sParent = $(this).parent()[0]; sUser = $(sParent).find('a[href*="gforum.cgi?username="]')[0]; sUserID = sUser.href.replace("http://www.dropzone.com/cgi-bin/forum/gforum.cgi?username=","").replace(";",""); var postIndex = containsObject(nPostID,Posts); var bThreadIgnored = postIndex >= 0 ? Posts[postIndex].Hide : false; if (bThreadIgnored) $(this).siblings('table').hide(); else { currentVisibleThreads.push(nPostID); nShownCount++; $(this).siblings('table').show(); } }); } function IgnoreItem(event) { var nCurrentID = event.data.param1; var sList = event.data.param2; if (sList == 'IgnoredUserList') { addItem = {} addItem.ID = nCurrentID; CurrentList = GetListFromLocalStorage(sList); nFoundIndex = containsObject(nCurrentID,CurrentList); if (nFoundIndex == -1) CurrentList.push(addItem); else CurrentList.splice(nFoundIndex,1); localStorage.setItem(sList, JSON.stringify(CurrentList)); Posts.forEach( function(s) { if (s.UserID == nCurrentID) { s.Hide = nFoundIndex == -1 ? true : false; AddHideLink(s.Post); } } ) } else { Posts.forEach( function(s) { if (s.ID == nCurrentID) { s.Hide = !s.Hide; AddHideLink(s.Post); } } ) } if (event.data.param3) event.data.param3(); return 0; } function GetListFromLocalStorage(sListName) { return localStorage.getItem(sListName) ? JSON.parse(localStorage.getItem(sListName)) : []; } function containsObject(id, list) { var i; for (i = 0; i < list.length; i++) { if (list[i].ID == id) { return i; } } return -1; }