web-dev-qa-db-ja.com

キーボードを使ってGoogleの検索結果をナビゲートする方法(今すぐインスタント検索は無効になっています)

今日の時点で、Googleインスタント検索 は停止しています 。これは、以前は次のようになっていました。

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

私がタイプしている間、私は結果のインスタント表示をあまり気にしませんでした。しかし、私は1日に何百回もキーボードショートカットを使用しました。

一度も使用したことのない人のために - インスタント検索を有効にすると、次のことが可能になります。

  • 検索後にEnterキーを押し、上/下キーを使用して結果全体を「ポインタ」下に移動します。

  • 次に「enter」を押して、ポイントされている検索結果を開きます。

  • どの時点でも、キーボードで文字/数字を入力すると検索バーに再度フォーカスされます。

  • 強調表示された結果でEnterキーを押すことは、新しいタブで結果を開くためにctrl修飾子と組み合わせることができます。

私はマウスを使うのが非常に難しいと思っていて、可能な限りそれを避けようとします。インスタント検索で得られたキーボードの動作を再現するために使用できるツールやスクリプトはありますか。

これまでの質問は、インスタント検索の時代に尋ねられた(そして答えられた)(例: thisthis そして私の前の質問 こちら )、Googleと同じ機能を持つ代替品を探しています。

Ubuntu 15.01でChromeを使用しています。

52
Bill Cheatham

Googleはこの機能(Google Instant Predictionと呼ばれる)を削除しました。そのため、これまで可能であったようにそれを実現することはできません。

私はこの機能がうまくいくのを見るのがとても悲しかったので、昨夜それを再設計するためのハックを書いた。これまでのところGoogle Chromeでしか動作しませんが、他のすべてで動作するように適応することができます。

  1. Chrome拡張機能 ShortKeys をインストールしてください。
  2. ShortKeysメニューをクリックして「オプション」を選択します enter image description here
  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(1行に1つ):* .google。*

これがオプションページの外観です。

ShortKeys Options Page

  1. 「保存」をクリックしてからブラウザを閉じます。

説明:

  • 再起動すると、Tabキーを押すと、検索結果に小さな青い ">"が表示されます。

  • 上/下矢印キーを押すと、結果が順番に表示されます。

  • Enterを押すとハイライトされた結果に移動します。

  • "Ctrl + Enter"を押すと新しいタブで結果が開きます。

ハッピーサーチ!

24
Robino

基本的なキーボード機能を追加するChrome拡張機能を作成しました(私は少なくとも使用しました)。検索ボックスがフォーカスされていない場合は、いずれかのキーを押すと自動的にフォーカスが置かれます。さらに、矢印キーとtab/shift + tabで結果間を移動できます。うまくいけば、これはGoogleが(うまくいけば)機能を追加するまで私たちが生産性を維持するのに役立ちます。

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

2017-07-31現在、 Googleはこの機能を検索から完全に削除しました

私は オープンソースのWeb Search Navigator拡張機能 を作成してこれを修正し、追加の機能(設定可能なキーボードショートカットなど)を追加しました。

インストール手順 をご覧ください。

あなたがそれが有用であると思うことを願っていますが、いずれにせよ - フィードバックは大歓迎です!

9
infokiller

Firefoxのために私はグーグル検索結果キーボードショートカットアドオンによってこの問題を解決する。 https://addons.mozilla.org/en-US/firefox/addon/google-search-result-shortcuts/?src=api

4
valior

あなたはVim風のキーバインドを導入する拡張を試すことができます。それらを使えば、二度とあなたのマウスを使う必要はないでしょう。たとえば、 cVim は現在Chromeで最も強力なものですが、VimperatorはFirefoxで使用されるものです。

このような拡張機能を使うと、(デフォルトでは)fを押し、続いて1/2のキーの組み合わせを押すことで、現在のページの任意のリンクにアクセスできます。

1
xji