-1

Мне было интересно, если кто-нибудь знает способ создания быстрых клавиш для результатов поиска Google. Например, я ищу способ открыть первый результат поиска Google с номером 1, на моей клавиатуре и для каждой последующей записи, которую нужно открыть со следующим номером.Способ создания сочетаний клавиш для результатов поиска Google?

Я искал высоко и низко для способов сделать это, но я не стал намного ближе. Какие способы/расширения/языки я могу использовать для выполнения этой функции?

По крайней мере, мне было интересно, может ли кто-нибудь указать мне в сторону ресурсов или способы запрограммировать это. У меня есть расширение Tampermonkey, загруженное как расширение Chrome, но я не смог создать или найти подходящий JS-код для выполнения того, что я хочу. Пример того, что я ищу, можно найти здесь: http://googlesystem.blogspot.com/2007/02/keyboard-shortcuts-for-google-search.html. К сожалению, найденные там сценарии и ссылки мертвы и невероятно стары (с 2007 года).

ответ

1

Эта идея заинтересовала меня, поэтому вот базовая реализация для Tampermonkey, которая работает во всех доменах Google через специальный домен .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 
} 

Задача состояла в том, чтобы обрабатывать события до того, как страница делает, поэтому я использовал capturing listener на вершине пузыря цепи, window объекта, и используется @run-at: document-start metakey зарегистрировать обработчик, прежде чем страница зарегистрирована его своя.

+0

Очень хороший код; +1 :) Я просто боюсь, что такой энтузиазм может побудить новых пользователей думать, что это бесплатная служба написания кода. Если вы проверяете сообщение OP, вы можете видеть, что он имеет право на закрытие по нескольким причинам (рекомендация/слишком широкая). –

+0

Да, я знаю, я голосую, чтобы закрыть половину вопросов, которые я вижу в теге google-chrome-extension. – wOxxOm

+0

Он фактически изначально разместил этот вопрос на SuperUser (http://superuser.com/q/1123358/194976). Я прокомментировал, что это оффтоп, поэтому он перепробовал здесь. –

Смежные вопросы