Skip to content

Instantly share code, notes, and snippets.

@GeneralD
Created November 4, 2018 07:04
Show Gist options
  • Save GeneralD/8f0b8b83b1ec69fe2869507bca89adb8 to your computer and use it in GitHub Desktop.
Save GeneralD/8f0b8b83b1ec69fe2869507bca89adb8 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Google Search Helper
// @namespace http://tampermonkey.net/
// @version 0.1
// @description My helper script for Google search
// @author Yumenosuke Koukata
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// @match *://www.google.com/*
// @match *://www.google.co.jp/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// remove 'translate this page' link
// note: If you use tab key to select link, these get in the way.
$('.action-menu.ab_ctl').remove();
$('.fl').remove();
var selectedResultId = 0;
var $pointer = null;
const selectResult = function (newId) {
var $els = $('h3.LC20lb');
if(newId < 0 || newId >= $els.length) return; //Could modify for page nav...?
$pointer = $('#result-pointer');
if($pointer) $pointer.remove();
selectedResultId = newId;
var el = $els[newId];
var $el = $(el);
$el.html('<div id="result-pointer" style="position:absolute;left:-15px;">&gt;</div>' + $el.html());
var rect = el.getBoundingClientRect();
if (rect.top < 0 || rect.bottom > window.innerHeight) window.scrollTo(0, rect.top + window.pageYOffset - window.innerHeight / 2);
var $lnk = $el.find('a');
$lnk.focus();
}
const setCaretAtEnd = function (elem) {
var elemLen = elem.value.length;
elem.selectionStart = elemLen;
elem.selectionEnd = elemLen;
elem.focus();
$pointer = null;
}
$(window).keydown(function(event) {
var ret = true;
switch(event.keyCode) {
case 9: // tab
case 192: // backquote
{
$('#lst-ib').focus(function(event){
$pointer = $('#result-pointer');
if($pointer) pointer.remove();
});
selectResult(0);
break;
}
case 38: // down-arrow
case 80: // p
{
if($pointer!=null) {
selectResult(selectedResultId-1);
ret = false;
}
break;
}
case 40: // up-arrow
case 78: // n
{
if($pointer!=null) {
selectResult(selectedResultId+1);
ret = false;
}
break;
}
case 191: // slash
{
var $searchField = $('#lst-ib');
if($searchField != null && !$searchField.is(":focus")) {
setCaretAtEnd($searchField[0]);
ret = false;
}
break;
}
}
return ret;
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment