-4

please share any js code you might have come up with so i can reuse it. thanks

  • 3
    Do you have a question/are you encountering problems, or are you just trying to share your code? If the former, please update your post with details about problems/errors you're encountering, and what you've done to try to fix it. If the latter, Stack Overflow is not the appropriate place--instead look into GitHub, or similar. – TheJim01 Aug 08 '17 at 19:31

1 Answers1

2

below is a working code for some google search results page shortcuts. please feel free to improvise on it and lmk thanks

shift + I: will open Images, shift + V: will open Videos, ... ... ...

you will see the link number next to the search results hyperlink(link) if you press the number on the keyboard it will open that link in new tab.

you need greasemonkey or tampermonkey to run this js code.

I improved it a bit by leveraging what one of the developers wrote in Way to Create Keyboard Shortcuts for Google Search Results?

hope this helps.

thanks,

Abhi.

// ==UserScript==
// @name         Google digits
// @include      https://www.google.tld/*
// @run-at       document-start
// @author       Abhinay Gadikoppula
// @match        https://stackoverflow.com/questions/39456608/way-to-create-keyboard-shortcuts-for-google-search-results
// @grant        none
// ==/UserScript==
// only work on search pages with #q= &q= ?q=
if (location.href.match(/[#&?]q=/)) {

    var links = [];
    var menu_links = [];
    var menu_links_map = [];

    window.onload = function() {

        // get all header menu links
        menu_links = document.getElementById("hdtb-msb").querySelectorAll('a.q.qs');
        menu_links.forEach(function(link, index) {
            menu_links_map[link.innerHTML.charAt(0)] = link;
        });

        // get all results in an array
        links = document.querySelectorAll('h3.r a');
        links.forEach(function(link, index) {
            link.innerHTML = link.innerHTML + ' (' + (index + 1) + ')';
        });
    };

    window.addEventListener('keydown', function(e) {

        if (e.shiftKey && e.keyCode >= 65 && e.keyCode <= 90) {
            e.preventDefault();
            char = String.fromCharCode(e.keyCode);
            //keycodes 65-90 are alphabets a-z
            if (char in menu_links_map) {
                menu_links_map[char].click();
            }
        } else if (e.keyCode >= 49 && e.keyCode <= 57 &&
            // don't intercept if a modifier key is held
            !e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey &&
            // don't intercept 1-9 in the search input
            e.target.localName != 'input') {
            //keycodes for 1-9 are 49-57 but replacing them with 1-9
            var digit = e.keyCode - 48;
            // arrays are 0-based
            var link = links[digit - 1];
            if (link) {
                // go to the linked URL
                window.open(link.href, '_blank');
                // prevent site from seeing this keyboard event
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
            }
        } else if (e.keyCode == 191) {
            // event '/' keycode 191
            e.preventDefault();
            input = document.getElementById("lst-ib");
            val = input.value; //store the value of the element
            input.value = ''; //clear the value of the element
            input.focus(); //set focus on the input field
            input.value = val; //set that value back.
        }
    }, true); // true means we capture the event before it's "bubbled" down
}
JohannesB
  • 1,995
  • 21
  • 35