【问题标题】:Way to Create Keyboard Shortcuts for Google Search Results? [closed]为 Google 搜索结果创建键盘快捷键的方法? [关闭]
【发布时间】:2017-01-20 06:18:29
【问题描述】:

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

我已经四处寻找方法来做到这一点,但我还没有走得更近。我可以使用哪些方式/扩展程序/语言来执行此功能?

至少,我想知道是否有人可以指出资源的方向或编程方法。我已将 Tampermonkey 扩展下载为 Chrome 扩展,但我无法创建或找到合适的 JS 代码来执行我想要的操作。我正在寻找的一个例子可以在这里找到:http://googlesystem.blogspot.com/2007/02/keyboard-shortcuts-for-google-search.html。不幸的是,在那里发现的脚本和链接已经过时并且非常陈旧(从 2007 年开始)。

【问题讨论】:

    标签: google-chrome keyboard-shortcuts google-search key-bindings tampermonkey


    【解决方案1】:

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

    // ==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
    }
    

    挑战是在页面之前处理事件,所以我在气泡链顶部使用了capturing listener window 对象,并使用@run-at: document-start 元键在页面之前注册处理程序注册了自己的。

    【讨论】:

    • 非常好的代码; +1 :) 我只是担心这种热情可能会导致新用户认为这是免费的代码编写服务。如果您查看 OP 的帖子,您会发现他有资格因多种原因(推荐/太宽泛)关闭。
    • 是的,我知道,我投票关闭了我在 google-chrome-extension 标签中看到的一半问题。
    • 他最初在 SuperUser (superuser.com/q/1123358/194976) 上发布了这个问题。我在那里评论说这是题外话,所以他在这里重试。
    猜你喜欢
    • 2015-04-15
    • 2013-06-29
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多