为谷歌搜索结果创建键盘快捷方式的方法



我想知道是否有人知道一种为谷歌搜索结果创建键盘快捷键的方法。例如,我正在寻找一种方法,在我的键盘上用数字1打开第一个谷歌搜索结果,并为每个后续条目打开下一个数字。

我已经到处寻找方法来做到这一点,但我还没有更进一步。我可以使用哪些方法/扩展/语言来实现此功能?

至少,我想知道是否有人可以为我指出资源或编程方法的方向。我有Tampermonkey扩展下载为Chrome扩展,但我没能创建或找到适当的JS代码做我想要的。我正在寻找的一个例子可以在这里找到:http://googlesystem.blogspot.com/2007/02/keyboard-shortcuts-for-google-search.html。不幸的是,在那里找到的脚本和链接已经死了,而且非常古老(从2007年开始)。

这个想法引起了我的兴趣,所以这里有一个Tampermonkey的基本实现,通过特殊的.tld域为用户脚本工作在所有的谷歌域。

// ==UserScript==
// @name         Google digits
// @include      https://www.google.tld/*
// @run-at       document-start
// ==/UserScript==
// only work on search pages with #q= &q= ?q= 
if (location.href.match(/[#&?]q=/)) {
    window.addEventListener('keydown', function(e) {
        var digit = e.keyCode - 48;
        // 48 is the code for '0'
        if (digit >= 1 && digit <= 9 &&
            // 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')
        {
            // get all results in an array
            var links = document.querySelectorAll('h3.r a');
            // arrays are 0-based
            var link = links[digit - 1];
            if (link) {
                // go to the linked URL
                location.href = link.href;
                // prevent site from seeing this keyboard event
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
            }
        }
    }, true); // true means we capture the event before it's "bubbled" down
}

挑战在于在页面之前处理事件,因此我在气泡链的顶部使用了捕获侦听器window对象,并在页面注册自己的处理程序之前使用@run-at: document-start metakey注册处理程序。

相关内容

最新更新