Gives options on Factornews website (remove users comments...)
// ==UserScript== // @name factornewsHelper // @version 0.3 // @description Gives options on Factornews website (remove users comments...) // @include /^http(|s)://www\.factornews\.com/(actualites|article|preview|test|enbref)/.*\.html$/ // @grant none // @author iceman94 // @copyright 2014+, iceman94 // @namespace 30bffff65b7330aeec839b096aa3d2ab // ==/UserScript== //======================================================================================================= // Cross-browsers load function // Tests in this order : // -support for jQuery API // |-uses $(window).load method if available // |-uses $(window).ready method if available // -support for DOMContentLoaded event (compatible only with the following browsers : // Chrome >= 0.2; Firefox >= 1.0; IE >= 9.0; Opera >= 9.0; Safari >= 3.1) // -support for document.attachEvent // -uses setTimeout w/ 5000ms delay //======================================================================================================= function XBLoad(func, verbose) { verbose = verbose || false; if (window.jQuery) { if ($(window).load) { if (verbose == true) { console.log('Javascript loaded using $(window).load method'); }; return $(window).load(function() { func(); }); } else if ($(window).ready) { if (verbose == true) { console.log('Javascript loaded using $(window).ready method'); }; return $(window).ready(function() { func(); }); }; } else if (document.addEventListener) { if (verbose == true) { console.log('Javascript loaded using document.addEventListener method'); }; document.addEventListener('DOMContentLoaded', function(event) { return func(); }); } else if (document.attachEvent) { if (verbose == true) { console.log('Javascript loaded using document.attachEvent method'); }; document.attachEvent('load', function() { return func(); }); } else { if (verbose == true) { console.log('Javascript loaded using setTimeout method'); }; return setTimeout(function() { func(); }, 5000); }; }; //======================================================================================================= // Setting up functions //======================================================================================================= // Retrieves all comments for a given user function getComBlocks(user) { var coll = document.getElementsByTagName('div'); var l = coll.length; var resArr = new Array; for (var i=0; i<l; i++) { if(coll[i].className == 'comsItemPseudo' && coll[i].textContent == user) { resArr.push(coll[i]); }; }; return resArr; }; // Replaces all comments by a custom message function remComBlocks(comBlocks, msg) { var coll = comBlocks; var l = coll.length; for (var i=0; i<l; i++) { var tgt = coll[i].parentNode.parentNode.getElementsByClassName('comsItemContent')[0]; tgt.innerHTML = '<i>' + msg + '</i>'; }; }; // Wrapper for getComBlocks and remComBlocks for a collection of users function manageUsers(usersColl, msg) { var l = usersColl.length; for (var i=0; i<l; i++) { remComBlocks(getComBlocks(usersColl[i]), msg); }; }; // Displays dialog to add users to ban and, if modifications occurs, reloads the page function askWhomToBan() { if (localStorage.getItem('usersToBan')) { var users = window.prompt('Enter comma-separated users to ban:', localStorage.getItem('usersToBan')); } else { var users = window.prompt('Enter comma-separated users to ban:', 'user1,user2,user3'); }; if (users !== null) { localStorage.setItem('usersToBan', users); if (localStorage.getItem('usersToBan')) { location.reload(); manageUsers(strToArr(localStorage.getItem('usersToBan')), 'MESSAGE REDACTED'); }; }; }; // Converts comma-separated string to array function strToArr(input) { if (input) { return input.split(','); }; }; // Adds tag to page to run askWhomToBan function addTag(tag) { var newTag = document.createElement('a'); newTag.id = 'banTag'; newTag.className = 'factorNavBarBtn'; newTag.textContent = ' '; newTag.href = 'javascript:void(0);'; newTag.onclick = function() { askWhomToBan(); }; tag.appendChild(newTag); }; //======================================================================================================= // Showtime ! //======================================================================================================= XBLoad(addTag(document.getElementById('userPanel'))); if (localStorage.getItem('usersToBan')) { XBLoad(manageUsers(strToArr(localStorage.getItem('usersToBan')), 'MESSAGE REDACTED')); };