NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name askfmKeyboardShortCuts
// @namespace ahmdaeyz
// @version 0.1
// @description Navigate ask.fm using the keyboard
// @author ahmdaeyz
// @match https://ask.fm/account/wall
// @match https://ask.fm/*
// @homepageURL https://github.com/ahmdaeyz/askfmKeyboardShortCuts
// @license MIT
// @grant none
// @noframes
// ==/UserScript==
// stores computed style of the active tab be it WALL or DISCOVER
var style = getComputedStyle(document.querySelector("#topMenu > div.rsp-lte-tablet.rsp-container > section > a"));
// stores the color of the acc in RGB
var colorInRGB = style.borderBottomColor;
//getting rid of "(",")","rgb" and then spliting the string to a 3 elements array.
var colors = (colorInRGB.replace("(","")).replace(")","").replace("rgb","").split(", ");
var rgbToHex = function (rgb) {
//decimal to hexadecimal conversion
var hex = Number(rgb).toString(16);
if (hex.length < 2) {
hex = "0" + hex;
}
return hex;
};
var fullColorHex = function(rgbArr) {
//computes the whole hexadecimal number of the color
var red = rgbToHex(rgbArr[0]);
var green = rgbToHex(rgbArr[1]);
var blue = rgbToHex(rgbArr[2]);
return red+green+blue;
};
//color of the acc in HEX to be used to highlight the active answer.
var colorHEX = fullColorHex(colors);
var cursorAt =0;
var answers= document.getElementsByClassName("streamItem-answer");
document.addEventListener("keypress",function(e){
if(e.keyCode==50){
//sets the border of the older answer/non-active to normal.
answers[cursorAt].style.borderTop="8px solid #f2f2f9";
if(document.querySelector(".item-page-next")!=null){
if(cursorAt==answers.length-2){
document.querySelector(".item-page-next").scrollIntoView();
answers[cursorAt].scrollIntoView();
answers= document.getElementsByClassName("streamItem-answer");
}
}else{
document.location.reload();
cursorAt=0;
}
// press number "2" to navigate to the next answer.
answers[++cursorAt].scrollIntoView(false);
//highlight the border of the active/current answer (same color as the user's prefered color).
answers[cursorAt].style.borderTop="8px solid #"+colorHEX;
}else if(e.keyCode==51){
//sets the border of the older answer/non-active to normal.
answers[cursorAt].style.borderTop="8px solid #f2f2f9";
if(document.querySelector(".item-page-next")!=null){
if(cursorAt==answers.length-2){
document.querySelector(".item-page-next").scrollIntoView();
answers[cursorAt].scrollIntoView();
answers= document.getElementsByClassName("streamItem-answer");
}
}else{
document.location.reload();
cursorAt=0;
}
// press number "3" to navigate to the previous answer.
answers[--cursorAt].scrollIntoView(false);
//highlight the border of the active/current answer (same color as the user's prefered color).
answers[cursorAt].style.borderTop="8px solid #"+colorHEX;
}else if(e.keyCode==52){
// press number "4" to like the current answer.
var event = document.createEvent("MouseEvents");
event.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var done = answers[cursorAt].querySelector(".icon-like").dispatchEvent(event);
}else if(e.keyCode==53){
// press number "5" to keep asking the user of the current answer.
var event = document.createEvent("MouseEvents");
event.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
answers[cursorAt].querySelector(".icon-send").dispatchEvent(event);
}else if(e.keyCode==54){
//press number "6" to read the whole answer whenever there is a readMore.
if(answers[cursorAt].querySelector(".readMore")!=null){
var readmore = answers[cursorAt].querySelector(".readMore").querySelector("a.button");
var event = document.createEvent("MouseEvents");
event.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
readmore.dispatchEvent(event);
}
}
});