如何使用键盘导航Google搜索结果(由于即时搜索已失效)


53

这个问题已经在这里有了答案:

截至今天,Google Instant Search 已失效。这是以前的样子:

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

打字时,我从不在乎即时显示结果。但是,我确实每天使用数百次键盘允许的快捷键。

对于从未使用过的用户-启用即时搜索,您可以:

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

  • 然后按“输入”以打开指向的搜索结果

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

  • 按下Enter键并突出显示结果,可以将其与c​​trl修饰符结合使用,以在新选项卡中打开结果。

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

在我正在寻找具有相同功能的非Google替代产品的同时,在即时搜索时代(例如thisthis和我以前的问题在这里)已经问过(并回答了)以前的问题。

我在Ubuntu 15.01上使用Chrome。


2
您没记错,它曾经可以正常工作。似乎它与即时搜索一起消失了。searchengineland.com/…。但是,您确定即时搜索仍然对您有用吗?对我来说,在我再按Enter之前它不会进行搜索。(我喜欢这种行为,但我希望像您一样向后拉蓝色的小箭头。)
Bloke

1
这非常令人失望..看来使用'/'返回搜索栏的热键也因即时搜索而消失了
itzjustricky

3
与您处于同一位置。奇怪的是,地球上最流行的网页搞砸了这种简单的UX设计。我敢肯定,lublessmonkey / tampermonkey脚本可以工作,但不是最理想的解决方案。
凯布尔

您仍然可以使用Tab键浏览搜索结果。
塞斯(Seth)

Answers:


24

Google删除了此功能(称为Google Instant Prediction),因此您不能像以前那样将其转换为现实。

我很悲伤地看到这个功能去,我写了一个黑客昨晚重新设计它。到目前为止,它仅适用于Google Chrome浏览器,但可以进行修改以与所有其他浏览器一起使用:

  1. 安装Chrome扩展程序ShortKeys
  2. 单击“快捷键”菜单,然后选择“选项” 在此处输入图片说明
  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. 配置激活设置

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

网站(仅特定网站)

URLS(每行一个):* .google。*

这是“选项”页面的外观

快捷键选项页面

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

说明:

  • 重新启动后,当您点击选项卡时,搜索结果应会出现一个蓝色的“>”。

  • 向上/向下箭头键使其在结果之间循环。

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

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

搜索愉快!


12

我创建了一个Chrome扩展程序,该扩展程序将重新添加主要的键盘功能(至少我曾经使用过)。如果搜索框未对准焦点,则按任意键将自动使其聚焦。此外,箭头键和Tab / Shift + Tab键可让您在结果之间导航。希望这可以帮助我们保持生产力,直到Google(希望)重新添加该功能。

https://chrome.google.com/webstore/detail/google-search-result-keyb/iobmefdldoplhmonnnkchglfdeepnfhd?hl=zh-CN&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();
    }
  });
})();

作者在此处发布了其扩展程序的源代码。它比上面的代码段稍微先进一些。
pcworld

此扩展程序很好用,几乎每天都使用它。
凌晨



1

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

使用此类扩展名,您可以通过按f(默认)后按一键/二键组合来访问当前页面上的任何链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.