In The Nineteenth Byte, we have an excessive amount of carets (carrots, if you will) that direct one's attention to another message. For example:
Amidst the confusion, I made a userscript that highlights in yellow the pointed-at message when the message in question is clicked.
(function(){
var elements = {}, messages;
function findCarrotMessage(){
messages = Array.prototype.slice.call(document.querySelectorAll("[id^='message-']"));
messages.forEach(function(e){
if(!elements[e.id] && e.className==="message"){
elements[e.id] = true;
e.addEventListener("click", function(s){
// count the number of ^'s
var num = this.textContent.match(/\^+/g), self = this;
if(num){
var maxHash = -1;
num.forEach(function(k){
var destinationMessage = messages[Array.from(messages).indexOf(self)-k.length];
destinationMessage.style.background = "yellow";
setTimeout(function(e){e.style.background = "";}, 3500, destinationMessage);
maxHash = Math.max(destinationMessage.id.slice(destinationMessage.id.indexOf("-")+1), maxHash);
elements[self.id] = false;
});
window.location.hash = "#message-" + maxHash;
}
this.removeEventListener("click", arguments.callee, false);
}, false);
}
});
}
setInterval(findCarrotMessage,50);
})();
How can I improve my code? Thanks!