从今天起,Google 即时搜索死了。它以前的样子是这样的:
https://www.youtube.com/watch?v=ANVT56wlmTo
我从来不太在意打字时即时显示结果。不过,我每天都会用到它允许的键盘快捷键数百次。
对于那些从未使用过它的人 - 打开即时搜索后,您可以:
搜索后按 Enter 键,然后使用向上/向下键将“指针”向下移动查看结果
然后按“Enter”打开指向的搜索结果
任何时候,在键盘上输入字母/数字都会重新聚焦在搜索栏上
在突出显示结果的情况下按下 Enter 键可以与 ctrl 修饰符结合使用以在新选项卡中打开结果。
我发现鼠标很难用,所以尽量避免使用它。是否有工具或脚本可以复制即时搜索给我的键盘行为?
在即时搜索时代,人们已经提出过一些问题(并得到了回答)(例如这,这以及我之前的问题这里),而我正在寻找具有相同功能的非 Google 替代品。
我在 Ubuntu 15.01 上使用 Chrome。
答案1
Google 已删除此功能(称为 Google 即时预测),因此您无法像以前那样将其关闭。
看到这个功能消失我非常难过,昨晚我写了一个 hack 来重新设计它。到目前为止,它仅适用于 Google Chrome,但可以适应所有其他浏览器:
- 安装 Chrome 扩展程序快捷键。
- 点击 ShortKeys 菜单并选择“选项”
- 单击“添加”并填写以下字段:
键盘快捷键:标签
行为:运行 JavaScript
标记为:结果选择器
将以下 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;\">></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)
配置激活设置:
在表单字段中时处于活动状态(已勾选)
网站(仅限特定网站)
URL(每行一个): *。谷歌。*
选项页面应如下所示
- 单击“保存”,然后关闭浏览器。
指示:
当您重新启动时,当您按下 Tab 键时,您应该会看到搜索结果旁边出现一个小小的蓝色“>”。
向上/向下箭头键使其循环显示结果。
按“Enter”将导航到突出显示的结果。
按“Ctrl+Enter”在新选项卡中打开结果。
祝您搜索愉快!
答案2
截至 2017 年 7 月 31 日,谷歌从搜索中彻底删除了该功能。
我创建了开源 Web 搜索导航器扩展修复此问题并添加额外功能(如可配置的键盘快捷键)。
看安装说明。
希望您发现它有用,但无论如何 - 欢迎反馈!
答案3
我创建了一个 Chrome 扩展程序,它将重新添加主键盘功能(至少我使用过)。如果搜索框未聚焦,按任意键都会自动聚焦。此外,箭头键和 tab/shift+tab 将允许您在结果之间导航。希望这可以帮助我们保持高效,直到 Google(希望)重新添加该功能。
如果您想编辑扩展,以下是其代码:
(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
通过这样的扩展,您可以通过按下(默认)然后按一/二组合键来访问当前页面上的任何链接。