-1

我想知道是否有人知道如何爲Google搜索結果創建鍵盤快捷鍵。例如,我正在尋找一種方法,在鍵盤上打開第一個帶號碼1的谷歌搜索結果,並用下一個數字打開每個連續的條目。如何爲Google搜索結果創建鍵盤快捷鍵?

我已經搜索了高低的方法來做到這一點,但我沒有接近得多。我可以使用什麼方式/擴展/語言來執行此功能?

至少,我想知道是否有人能指點我的資源或編程方式。我將Tampermonkey擴展程序作爲Chrome擴展程序下載,但我無法創建或找到合適的JS代碼來執行我想要的操作。我正在尋找的一個例子可以在這裏找到:http://googlesystem.blogspot.com/2007/02/keyboard-shortcuts-for-google-search.html。不幸的是,在那裏發現的腳本和鏈接已經過時並且令人難以置信(從2007年起)。

回答

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 metakey註冊處理程序的頁面註冊前的擁有。

+0

非常好的代碼; +1 :)我只是擔心這種熱情可能會導致新用戶認爲這是一個免費的代碼編寫服務。如果你檢查OP的帖子,你可以看到他有資格因爲多種原因關閉(推薦/太寬泛)。 –

+0

是的,我知道,我投票結束了在google-chrome-extension標籤中看到的一半問題。 – wOxxOm

+0

他實際上最初在SuperUser(http://superuser.com/q/1123358/194976)上發佈了這個問題。我在那裏評論說這是不重要的,所以他在這裏重新嘗試。 –