Created
November 4, 2018 07:04
-
-
Save GeneralD/8f0b8b83b1ec69fe2869507bca89adb8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==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;">></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