NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name GameFAQs Show Icon // @namespace https://gamefaqs.gamespot.com/ // @version 0.6 // @description Shows user icon next to posts on GameFAQs // @license MIT // @author melon // @match https://gamefaqs.gamespot.com/boards/*/* // @exclude https://gamefaqs.gamespot.com/boards/*/*/* // @grant none // @updateURL https://openuserjs.org/meta/melon/GameFAQs_Show_Icon.meta.js // // ==/UserScript== (function() { if (document.querySelector('.userIcon') !== null) { return; //prevent duplicate loading icons when revisiting page in Firefox } 'use strict'; var iconSize = 64; //max size without upscalling is 100px var posts = document.getElementsByClassName("msg"); //if author is positioned to left or top of post var authorLeft = posts[0].querySelector('.msg_infobox').offsetWidth <= 150; //author position may change with window resize window.addEventListener("resize", positionIcons); for (var i = 0; i < posts.length; i++) { if (!posts[i].firstChild.classList.contains('deleted')) { let username = posts[i].querySelectorAll('.name.menu_toggle')[0].getAttribute("data-username").split(' ').join('_'); let icon = makeIcon(username); positionIcon(icon, posts[i].querySelector('.msg_infobox')); } } //update the position of an icon function positionIcon(icon, box) { if (authorLeft) { icon.style.padding = '5px'; icon.style.display = 'block'; icon.style.margin = 'auto'; box.insertBefore(icon, box.firstChild.nextSibling.nextSibling); } else { icon.style.padding = '0px 5px 0px 0px'; box.insertBefore(icon, box.firstChild); icon.style.display = 'inline-block'; } } //reposition all icons if author position changes function positionIcons() { var prev = authorLeft; authorLeft = posts[0].querySelector('.msg_infobox').offsetWidth <= 150; if ((!prev && authorLeft) || (prev && !authorLeft)) { for (var i = 0; i < posts.length; i++) { if (!posts[i].firstChild.classList.contains('deleted')) { let box = posts[i].querySelector('.msg_infobox'); let icon = posts[i].querySelector('.userIcon') positionIcon(icon, box); } } } } function makeIcon(username) { var icon = document.createElement('a'); icon.className = "userIcon"; icon.style.height = iconSize + 'px'; icon.style.width = iconSize + 'px'; icon.href = "/community/" + username; var pic = document.createElement('img'); pic.src = "/a/avatar/" + username + ".jpg?" + Date.now(); pic.classList.add("imgboxart"); icon.appendChild(pic); return icon; } })();