bookmarklets/vibookmarklet.js

52 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-06-17 22:20:05 +02:00
var commandmode = true;
2020-06-17 22:30:30 +02:00
var mark = {}; /* keeps marks of scroll positions */
2020-06-17 22:20:05 +02:00
var tmp;
window.onkeydown = function(e) {
2020-06-17 22:30:30 +02:00
if (e.keyCode == 73) commandmode=false; /* esc to go to "commandmode" where *things* happen, i for when you want to type */
2020-06-17 22:20:05 +02:00
if (e.keyCode == 27) commandmode=true;
if (commandmode){
switch(e.keyCode){
2020-06-17 22:30:30 +02:00
case 74: /* press j to scroll down */
2020-06-17 22:20:05 +02:00
window.scrollBy(0,75);
break;
2020-06-17 22:30:30 +02:00
case 75: /* k for up */
2020-06-17 22:20:05 +02:00
window.scrollBy(0,-75);
break
2020-06-17 22:30:30 +02:00
case 71: /* g to scroll to top */
2020-06-17 22:20:05 +02:00
mark["'"] = window.scrollY;
document.body.scrollIntoView(true);
break;
2020-06-17 22:30:30 +02:00
case 16: /* shift pressed and so a prompt is created for the next character
* todo: manage shift without prompting */
2020-06-17 22:20:05 +02:00
shift();
break;
2020-06-17 22:30:30 +02:00
case 68: /* don't know how to delete current tab, so this just opens a search ingine in the current one */
2020-06-18 20:06:21 +02:00
window.open("ddg.gg", "_self");
2020-06-17 22:20:05 +02:00
break;
2020-06-17 22:30:30 +02:00
case 77: /* record a mark */
2020-06-17 22:20:05 +02:00
mark[prompt('mark to record:')] = window.scrollY;
break;
2020-06-17 22:30:30 +02:00
case 222: /* move to mark when ' is pressed */
2020-06-17 22:20:05 +02:00
tmp = window.scrollY;
window.scrollTo(window.scrollX,mark[prompt('mark to go to:')]);
mark["'"] = tmp;
break;
}
}
}
function shift (){
var inp = prompt('?>');
switch(inp){
2020-06-17 22:30:30 +02:00
case "g": /* move to the bottom of the page */
2020-06-17 22:20:05 +02:00
case "G":
mark["'"] = window.scrollY;
document.body.scrollIntoView(false);
break;
2020-06-17 22:30:30 +02:00
case "/": /* search when / is used, currently unimportant
* TODO: add searching within the page */
2020-06-18 20:06:21 +02:00
window.open("ddg.dd");
2020-06-17 22:20:05 +02:00
break;
}
}