您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Colorizes usernames on reddit comments
当前为
// ==UserScript== // @name Colorfull reddit usernames (CRU) // @version 0.5.9 // @description Colorizes usernames on reddit comments // @namespace [email protected] // @grant GM_config // @grant GM_registerMenuCommand // @include http://*.reddit.com/r/*/comments/* // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @require https://greasyfork.org/libraries/GM_config/20131122/GM_config.js // ==/UserScript== /* Features: - Colors are assigned so that a username will always have the same color, even in different comments and posts. - OPs username highlighter (If OP's username color is red text on yellow background, that indicates OP has answered a comment in his post or made a comment. If the color is something else OP did not participate in his post so far.) - VIP username highlighter (a simple GUI to add as many usernames you want to be highlighted) (Open the script options to open it) */ //make jquerry available //var $ = unsafeWindow.jQuery; // Add config style function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('#GM_config { width: 700px ! important; height: 280px ! important;}'); // add configuration options GM_config.init('Colorfull reddit usernames Options', { 'vip_users': { 'section': ['Highlight Usernames','Add usernames you wish to be highlighted'], 'label': 'Usernames to highlight (seperated by space):', 'type': 'text', 'cols': '50', 'default': 'xNotch rocket2guns' // Dont add your VIPs here. There is a GUI to add them }, 'vip_color_bg': { 'section': ['Highlight Colors','Customize the highligt color. ( <a target="_blank" href="http://www.w3schools.com/html/html_colornames.asp">Available Colors</a> )'], 'label': 'Background color of highlighted users:', 'type': 'text', 'default': 'yellow' // Dont add your VIPs here. There is a GUI to add them }, 'vip_color_border': { 'label': 'Border color of highlighted users:', 'type': 'text', 'default': 'red' // Dont add your VIPs here. There is a GUI to add them } }, '#GM_config_header { text-align: center ! important; } \ #GM_config_wrapper label { margin-left: 4px; } \ #GM_config_wrapper input { position: absolute; right: 10px; width: 400px;} \ .config_var { margin-top: 4px; } \ .section_header_holder { }' ); GM_registerMenuCommand("CRU - Options", function(){GM_config.open();}, ""); var GM_U; window.addEventListener ("load", function () { //console.log("Ping"); var username = GM_config.get('vip_users'); var vipColorBg = GM_config.get('vip_color_bg'); var vipColorBorder = GM_config.get('vip_color_border'); GM_U = new GM_UserColor (username, vipColorBg, vipColorBorder); }, false ); function GM_UserColor (username, vipColorBg, vipColorBorder) { //console.log(username); var vip_users=0; vip_users=username.split(" "); highlighted_users = []; function add_colors () { var authors = $('a.author'); // Check if the link submitter has posted var submitter = $('.author.submitter'); if (submitter.length > 0 ) { submitter = submitter.eq(0).text(); } // Logged in user var loggedInUser = $('span.user a').text(); for (var i = 0; i < authors.length; i++) { var elem = authors.eq(i); var author = elem.text(); //elem.textContent = ""; // Get character sum var sum = 0; for (var j = 0; j < author.length; j++) sum += author.charCodeAt(j); // get random color var color = generate_color(sum); elem.attr('style', 'color: ' + getContrastYIQ (color) + '; border-width: 0px;' + ' padding: 1px 3px; border-radius: 4px; background-color:' + color + ' !important;'); //Add special look to vip users, OP, and highlighted users if ( author==submitter || (vip_users.indexOf(author) > -1) || (highlighted_users.indexOf (author) > -1) ) { elem.attr('style', 'color: ' + vipColorBorder + ' !important; border-width: 1px;' + ' padding: 1px 3px; border-color: red; border-style: solid; border-width: 1px; background-color:' + vipColorBg + ' !important; text-align: justify;'); } elem.parent().css({'padding': '2px'}); // Add temp highlight button var hightlightButton = $('<a>') .addClass('GM_highlight') .attr({ 'name': author, 'href': '#' }) .text('[h]'); if (elem.parent().hasClass('tagline')) { if ( ( elem.parent().children().eq(2).text() != "[h]") && ( author != submitter ) && ( author != loggedInUser ) ) { elem.after(hightlightButton); } } } } // add a new user to the highlighted user array function add_highlighted_user (user) { if (highlighted_users.indexOf (user) == -1) { highlighted_users.push(user); } else { highlighted_users.remove(user); } add_colors(); } Array.prototype.remove = function() { var what, a = arguments, L = a.length, ax; while (L && this.length) { what = a[--L]; while ((ax = this.indexOf(what)) !== -1) { this.splice(ax, 1); } } return this; }; // generate random color but skip white function generate_color (sum) { var colorcode = ((1<<24)*sum/1000|0).toString(16); if (colorcode.length > 6) colorcode = colorcode.substring(colorcode.length-6,colorcode.length); if (colorcode == "ffffff") colorcode = "654f76"; colorcode = colorLuminance(colorcode, 0); return colorcode; } // calculate the contrast of a color to decide if white or black text color should be used function getContrastYIQ (hexcolor){ if (hexcolor.length > 6) hexcolor = hexcolor.substring(hexcolor.length-6,hexcolor.length); var r = parseInt(hexcolor.substr(0,2),16); var g = parseInt(hexcolor.substr(2,2),16); var b = parseInt(hexcolor.substr(4,2),16); var yiq = ((r*299)+(g*587)+(b*114))/1000; return (yiq >= 128) ? 'black' : 'white'; } // Calculates lighter or darker colors //http://www.sitepoint.com/javascript-generate-lighter-darker-color/ function colorLuminance (hex, lum) { // validate hex string hex = String(hex).replace(/[^0-9a-f]/gi, ''); if (hex.length < 6) { hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; } lum = lum || 0; // convert to decimal and change luminosity var rgb = "#", c, i; for (i = 0; i < 3; i++) { c = parseInt(hex.substr(i*2,2), 16); c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16); rgb += ("00"+c).substr(c.length); } return rgb; } add_colors (); // Add "load more comments" links onclick even $('.commentarea').on('click', 'a.button', function() { setTimeout( function() {add_colors();}, 3000 ); }); //Add highlighted users onclick even $('.commentarea').on('click', 'a.GM_highlight', function(event) { event.preventDefault(); var user = $(this).attr('name'); add_highlighted_user(user); }); }