如何使用键盘浏览谷歌搜索结果(现在即时搜索已经过时了)

如何使用键盘浏览谷歌搜索结果(现在即时搜索已经过时了)

从今天起,Google 即时搜索死了。它以前的样子是这样的:

https://www.youtube.com/watch?v=ANVT56wlmTo

我从来不太在意打字时即时显示结果。不过,我每天都会用到它允许的键盘快捷键数百次。

对于那些从未使用过它的人 - 打开即时搜索后,您可以:

  • 搜索后按 Enter 键,然后使用向上/向下键将“指针”向下移动查看结果

  • 然后按“Enter”打开指向的搜索结果

  • 任何时候,在键盘上输入字母/数字都会重新聚焦在搜索栏上

  • 在突出显示结果的情况下按下 Enter 键可以与 ctrl 修饰符结合使用以在新选项卡中打开结果。

我发现鼠标很难用,所以尽量避免使用它。是否有工具或脚本可以复制即时搜索给我的键盘行为?

在即时搜索时代,人们已经提出过一些问题(并得到了回答)(例如以及我之前的问题这里),而我正在寻找具有相同功能的非 Google 替代品。

我在 Ubuntu 15.01 上使用 Chrome。

答案1

Google 已删除此功能(称为 Google 即时预测),因此您无法像以前那样将其关闭。

看到这个功能消失我非常难过,昨晚我写了一个 hack 来重新设计它。到目前为止,它仅适用于 Google Chrome,但可以适应所有其他浏览器:

  1. 安装 Chrome 扩展程序快捷键
  2. 点击 ShortKeys 菜单并选择“选项” 在此处输入图片描述
  3. 单击“添加”并填写以下字段:

键盘快捷键:标签

行为:运行 JavaScript

标记为:结果选择器

  1. 将以下 JavaScript 粘贴到要运行的 JavaScript 代码:

    document.selectedResultId=0
    function selectResult(newId){
        els = document.querySelectorAll("div.r h3")
        if(newId < 0 || newId >= els.length)
            return  //Could modify for page nav...?
        rp = document.getElementById("result-pointer")
        if(rp != null){
            rp.remove()
        }
        document.selectedResultId=newId
        el = els[newId]
        lnk = el.firstElementChild
        el.innerHTML = "<div id=\"result-pointer\" style=\"position:absolute;left:-15px;\">&gt;</div>" + el.innerHTML
        lnk.focus()
    }
    document.onkeyup=function(event){
        if(event.keyCode==38)
            selectResult(document.selectedResultId-1)
        if(event.keyCode==40)
            selectResult(document.selectedResultId+1)
        if(event.keyCode==13){
          var el = document.querySelectorAll("div.r h3")[document.selectedResultId]
          var lnk = el.parentElement
          var url = lnk.href
          if(event.ctrlKey){
            var win = window.open(url,"_blank")
            win.blur()
            window.open().close()
          }
          else{
            document.location = url
          }
        }
    }
    selectResult(0)
    
  2. 配置激活设置

在表单字段中时处于活动状态(已勾选)

网站(仅限特定网站)

URL(每行一个): *。谷歌。*

选项页面应如下所示

ShortKeys 选项页面

  1. 单击“保存”,然后关闭浏览器。

指示:

  • 当您重新启动时,当您按下 Tab 键时,您应该会看到搜索结果旁边出现一个小小的蓝色“>”。

  • 向上/向下箭头键使其循环显示结果。

  • 按“Enter”将导航到突出显示的结果。

  • 按“Ctrl+Enter”在新选项卡中打开结果。

祝您搜索愉快!

答案2

截至 2017 年 7 月 31 日,谷歌从搜索中彻底删除了该功能

我创建了开源 Web 搜索导航器扩展修复此问题并添加额外功能(如可配置的键盘快捷键)。

安装说明

希望您发现它有用,但无论如何 - 欢迎反馈!

答案3

我创建了一个 Chrome 扩展程序,它将重新添加主键盘功能(至少我使用过)。如果搜索框未聚焦,按任意键都会自动聚焦。此外,箭头键和 tab/shift+tab 将允许您在结果之间导航。希望这可以帮助我们保持高效,直到 Google(希望)重新添加该功能。

https://chrome.google.com/webstore/detail/google-search-result-keyb/iobmefdldoplhmonnnkchglfdeepnfhd?hl=en&gl=US

如果您想编辑扩展,以下是其代码:

(function() {
  'use strict';

  var isResultsPage = document.querySelector('html[itemtype="http://schema.org/SearchResultsPage"]');
  if (!isResultsPage) {
    return;
  }

  var searchbox = document.querySelector('form[role="search"] input[type="text"]:nth-of-type(1)'),
      results = document.querySelectorAll('h3 a'),
      KEY_UP = 38,
      KEY_DOWN = 40,
      KEY_TAB = 9;

  function focusResult(offset) {
    var focused = document.querySelector('h3 a:focus');

    // No result is currently focused. Focus the first one
    if (focused == null) {
      results[0].focus();
    }
    else {
      for (var i = 0; i < results.length; i++) {
        var result = results[i];
        if (result === focused) {
          var focusIndex = i + offset;
          if (focusIndex < 0) focusIndex = 0;
          if (focusIndex >= results.length) focusIndex = results.length - 1;
          results[focusIndex].focus();
        }
      }
    }
  }

  window.addEventListener('keydown', function(e) {
    e = e || window.event;

    var isSearchActive = searchbox === document.activeElement,
        keycode = e.keyCode,
        // From https://stackoverflow.com/questions/12467240/determine-if-javascript-e-keycode-is-a-printable-non-control-character
        isPrintable = (keycode > 47 && keycode < 58)   || // number keys
                      (keycode > 64 && keycode < 91)   || // letter keys
                      (keycode > 95 && keycode < 112)  || // numpad keys
                      (keycode > 185 && keycode < 193) || // ;=,-./` (in order)
                      (keycode > 218 && keycode < 223);   // [\]' (in order)

    if ((!isSearchActive && e.keyCode == KEY_DOWN) || (e.keyCode == KEY_TAB && !e.shiftKey)) {
      e.preventDefault();
      e.stopPropagation();
      focusResult(1); // Focus next
    }
    else if ((!isSearchActive && e.keyCode == KEY_UP) || (e.keyCode == KEY_TAB && e.shiftKey)) {
      e.preventDefault();
      e.stopPropagation();
      focusResult(-1); // Focus previous
    }
    else if (!isSearchActive && isPrintable) {
      // Otherwise, force caret to end of text and focus the search box
      searchbox.value = searchbox.value + " ";
      searchbox.focus();
    }
  });
})();

答案4

您可以尝试引入类似 Vim 的键绑定的扩展。有了它们,您就再也不需要使用鼠标了。例如,cVim是目前对 Chrome 来说功能最强大的浏览器,而Vimperator是针对 Firefox 来说功能最强大的浏览器。

f通过这样的扩展,您可以通过按下(默认)然后按一/二组合键来访问当前页面上的任何链接。

相关内容