On MetaFilter.com, adds a border to the selected comment to make it stand out visually, and adds "selected comment" to the small text to make it easy to search if you lose your place.
// ==UserScript==
// @name MetaFilter highlight selected comment
// @version 14
// @grant none
// @match *://*.metafilter.com/*
// @description On MetaFilter.com, adds a border to the selected comment to make it stand out visually, and adds "selected comment" to the small text to make it easy to search if you lose your place.
// @namespace https://greasyfork.org/users/324881
// ==/UserScript==
// on load, run highlight and attach event listeners
if (window.location.hash.substring(1) != "") highlightSelectedComment(window.location.hash.substring(1)); // Highlight selected comment on first load. No need to remove highlight on first load as it won't exist.
window.addEventListener('hashchange', handleHashChangeEvent); // Run every time the hash changes.
function handleHashChangeEvent(event) {
if (event.oldURL.split('#')[1] != null) removeSelectedCommentHighlight(event.oldURL.split('#')[1]);
if (event.newURL.split('#')[1] != null) highlightSelectedComment(event.newURL.split('#')[1]);
}
function highlightSelectedComment(newHash) {
let divToHighlight = getTargetDiv(newHash);
divToHighlight.style.outline = '.2em solid #9cc754';
divToHighlight.style.outlineOffset = '.2em';
//divToHighlight.lastChild.innerHTML += '<span class=\'tehhundUserScriptSelectedComment\'>Selected comment. </span>';
divToHighlight.querySelector('.smallcopy').innerHTML += '<span class=\'tehhundUserScriptSelectedComment\'>Selected comment. </span>';
}
function removeSelectedCommentHighlight(oldHash) {
let commentDiv = getTargetDiv(oldHash);
// Remove styles
commentDiv.style.outline = '';
commentDiv.style.outlineOffset = '';
// Remove 'Selected comment' text
let allSelectedCommentsSpans = commentDiv.getElementsByClassName('tehhundUserScriptSelectedComment');
for (selectedCommentSpan of allSelectedCommentsSpans) {
selectedCommentSpan.remove();
}
}
function getTargetDiv(hash) {
let anchor = document.getElementsByName(hash)[0];
let targetDiv = anchor.nextSibling;
return targetDiv;
}