您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shortcuts for Google Search result. j/k to move focus, l/h to open in new/background tab.
当前为
- // ==UserScript==
- // @name HjklNavigation
- // @namespace com.gmail.fujifruity.greasemonkey
- // @version 1.3
- // @description Shortcuts for Google Search result. j/k to move focus, l/h to open in new/background tab.
- // @author fujifruity
- // @include https://www.google.com/search*
- // @grant GM.openInTab
- // @license MIT
- // ==/UserScript==
- {
- const googleUrl = "www.google.com"
- // Add another URL variable and @include above.
- // This script may fits most list-like elements.
- let focusIdx = null
- const results = (() => {
- switch (location.hostname) {
- case googleUrl: return document.querySelectorAll('.hlcw0c > .g')
- // add another case here
- default: return null
- }
- })()
- const open = (result, isBackground) => {
- switch (location.hostname) {
- case googleUrl: {
- const url = result.getElementsByTagName('a')[0].href
- GM.openInTab(url, isBackground)
- break
- }
- // add another case here
- }
- }
- const refocus = nextIdx => {
- if (focusIdx == null) {
- focusIdx = 0
- } else {
- results[focusIdx].style.backgroundColor = null
- focusIdx = nextIdx
- }
- results[focusIdx].style.backgroundColor = 'lightyellow'
- results[focusIdx].scrollIntoView({ behavior: "smooth", block: "center" })
- }
- window.addEventListener('keydown', event => {
- if (event.target.tagName == "INPUT" || event.ctrlKey || event.altKey) return
- const result = results[focusIdx]
- switch (event.key) {
- case 'j': {
- refocus((focusIdx + 1) % results.length)
- break
- }
- case 'k': {
- refocus((focusIdx - 1 + results.length) % results.length)
- break
- }
- case 'l': {
- open(result, false)
- break
- }
- case 'h': {
- open(result, true)
- break
- }
- case 'g': {
- refocus(0)
- break
- }
- case 'G': {
- refocus(results.length - 1)
- break
- }
- }
- })
- }