您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
silence of the spam
- // ==UserScript==
- // @name stfu
- // @namespace 2
- // @description silence of the spam
- // @version 2.06
- // @include http://blogs.crikey.com.au/*
- // @include http://www.crikey.com.au/*
- // @include https://blogs.crikey.com.au/*
- // @include https://www.crikey.com.au/*
- // @require https://greasyfork.org/scripts/1884-gm-config/code/GM_config.js?version=4836
- // https://greasyfork.org/en/scripts/18683-stfu
- // ==/UserScript==
- // Ver 2.01
- // New major version to deal with New, souped-up Crikey
- // The first rule of stfu: stfu about stfu
- // Ver 2.02
- // Settings optionally at the bottom
- // Ver 2.03
- // Fixed issue with cccp v5.22
- // Ver 2.04
- // Fixed issues caused by Crikey updates
- // Ver 2.05
- // Removed debug code
- // Ver 2.06
- // Fixed https URLs in @include
- var scriptVer = '2.06';
- ////////////////////////////////////////////////////////////////////////////////
- /*jslint browser: true */
- /*global GM_config, GM_registerMenuCommand */
- ////////////////////////////////////////////////////////////////////////////////
- //don't run in iframes
- if (window.top !== window.self) {return;}
- ////////////////////////////////////////////////////////////////////////////////
- // Config settings dialog
- GM_config.storage = 'stfu';
- GM_config.init('stfu - Ver ' + scriptVer,
- {
- authorsFilter: {
- label: 'Author filter (use the format: \'bob1234|L. Ron Hubbard|Joseph Smith, Jr.\')',
- type: 'text',
- 'default': 'bob1234',
- size:50
- },
- wordsFilter: {
- label: 'Word/phrase filter (use the format: \'programmatic specificity|leadership rumblings\')',
- type: 'text',
- 'default': '',
- size:50
- },
- settingsBottom: {
- label: 'Place Settings bar at the bottom',
- type: 'checkbox',
- 'default': false
- }
- },
- {
- save: function() { location.reload(); } // reload the page when configuration was changed
- }
- );
- ////////////////////////////////////////////////////////////////////////////////
- function showConfigSTFU() {GM_config.open();}
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- // Declare Global Hashtable
- var gh = [];
- ////////////////////////////////////////////////////////////////////////////////
- // Run if DOM is ready, otherwise add a listerner to wait
- if (document.readyState == "complete" || document.readyState == "loaded" || document.readyState == "interactive") {main();}
- else {window.addEventListener('DOMContentLoaded',function(e){main();});}
- ////////////////////////////////////////////////////////////////////////////////
- // Init Global Hash Variables
- function initGlobalHash() {
- // Filters
- gh["flt.authors"] = GM_config.get('authorsFilter').toLowerCase();
- gh["flt.words"] = GM_config.get('wordsFilter').toLowerCase();
- }
- ////////////////////////////////////////////////////////////////////////////////
- function main() {
- console.log('stfu: main()');
- initGlobalHash();
- stfuNavBar();
- stfuFilters();
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Create a new stfu_nav <div> with space for settings
- function stfuNavBar() {
- var comments = document.getElementById("comments");
- if (! comments) {return;}
- var stfu_nav = document.createElement('div');
- stfu_nav.id = "stfu_nav";
- if (GM_config.get('settingsBottom')) {
- comments.appendChild(stfu_nav);
- } else {
- comments.insertBefore(stfu_nav,comments.firstChild);
- }
- var nav = ["hlp","set","rec"];
- var alg = ["left","center","right"];
- var tbl = document.createElement('table');
- stfu_nav.appendChild(tbl);
- var row = document.createElement('tr');
- tbl.appendChild(row);
- for (var i = 0; i < nav.length; i++) {
- var td = document.createElement('td');
- td.width = '33%';
- row.appendChild(td);
- var dv = document.createElement('div');
- dv.id = 'stfu_' + nav[i];
- dv.style = "text-align: " + alg[i] + ";";
- td.appendChild(dv);
- }
- // Add the stfu Settings Link
- var set = document.createElement("a");
- document.getElementById("stfu_set").appendChild(set);
- set.innerHTML = "stfu Settings";
- set.addEventListener("click", showConfigSTFU, false);
- }
- ////////////////////////////////////////////////////////////////////////////////
- function toggleComment(){
- var elem = this.parentNode.nextSibling;
- if (elem.style.display == 'none') {
- elem.style.display = 'block';
- this.innerHTML = this.innerHTML.replace(/Show Comment/g,'Hide Comment');
- } else {
- elem.style.display = 'none';
- this.innerHTML = this.innerHTML.replace(/Hide Comment/g,'Show Comment');
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- function stfuFilters() {
- console.log('stfu: stfuFilters()');
- if ( document.getElementsByClassName("comment-list").length === 0) {return;}
- var afon = ( gh["flt.authors"] !== null && gh["flt.authors"].replace(/\s*/,'').length > 0 );
- var wfon = ( gh["flt.words" ] !== null && gh["flt.words" ].replace(/\s*/,'').length > 0 );
- if ( ! afon && ! wfon ) {return;}
- var af = '^' + gh["flt.authors"].replace(/\|/g,'$|^') + '$';
- var wf = gh["flt.words"];
- var ol = document.getElementsByClassName("comment-list")[0];
- var cl = ol.getElementsByTagName("li");
- // console.log('stfu: cl.length = ' + cl.length);
- for ( var i = 0 ; i < cl.length; i++ ) {
- var author = getAuthor(cl[i].firstChild);
- // console.log('stfu: author = ' + author);
- if (afon && author.match(af)) {stfuFilter(cl[i], author, 'Author');}
- if ( ! wfon) {continue;}
- var text = cl[i].getElementsByClassName('comment-content')[0].innerHTML.toLowerCase();
- if (text.match(wf)) {stfuFilter(cl[i], author, 'Words');}
- }
- }
- //----------------------------------------------------------------------------//
- function getAuthor(e) {
- var author;
- var a = e.parentNode.getElementsByClassName('fn')[0];
- if ( a.firstChild.innerHTML === undefined ) {
- author = a.innerHTML;
- } else {
- author = a.firstChild.innerHTML;
- }
- return author.toLowerCase();
- }
- //----------------------------------------------------------------------------//
- function stfuFilter(e, author, reason) {
- if ( e.style.display == 'none') {return;}
- e.style.display = 'none';
- var p = document.createElement('p');
- var a = document.createElement('a');
- a.addEventListener("click", toggleComment, true);
- p.appendChild(a);
- e.parentNode.insertBefore(p,e);
- a.innerHTML = author + ' - Show Comment (' + reason + ')';
- }